点击别的winform窗口的按钮
#region 点击别的窗口的按钮 [DllImport("user32.dll", EntryPoint = "FindWindowA", SetLastError = true)] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll", EntryPoint = "FindWindowEx", SetLastError = true)] private static extern IntPtr FindWindowEx(IntPtr hwndParent, uint hwndChildAfter, string lpszClass, string lpszWindow); [DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)] private static extern int SendMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam); [DllImport("user32.dll", EntryPoint = "SetForegroundWindow", SetLastError = true)] private static extern void SetForegroundWindow(IntPtr hwnd); public static void ClickOtherWindowsBtn(string targetWindowsTitile ,string btnText) { try { const int WM_CLICK = 0x00F5;//鼠标点击消息,各种消息的数值,可以参考MSDN IntPtr hwndTestChild = new IntPtr();//子窗体的句柄 IntPtr hwndbtnYes = new IntPtr();//子窗体上button的句柄 hwndTestChild = FindWindow(null, targetWindowsTitile);//获取子窗体的句柄 hwndbtnYes = FindWindowEx(hwndTestChild, 0, null, btnText);//获取子窗体上button的句柄 if (hwndTestChild != IntPtr.Zero) { SendMessage(hwndbtnYes, WM_CLICK, 0, 0);//给子窗体上button发送鼠标点击消息, } else { Console.WriteLine("没有找到按钮"); } } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } } #endregion