一、C#代碼實現 本案例使用的是c# winform .NET Framework 4.7.2 首先我們聲明一個尋找窗體的函數 [DllImport("User32.dll", EntryPoint = "FindWindow")] public static extern IntPtr FindW ...
一、C#代碼實現
本案例使用的是c# winform .NET Framework 4.7.2
首先我們聲明一個尋找窗體的函數
[DllImport("User32.dll", EntryPoint = "FindWindow")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
然後我們調用此函數去尋找要操作的窗體程式
IntPtr ParenthWnd = new IntPtr(0); ParenthWnd = YSQ.FindWindow(null, "123");
第一個參數是窗體的類名、第二個參數是窗體的標題,二者必須要有一個。這裡推薦vs自帶的 spy++ 工具查看窗體參數
然後我們再聲明一個尋找窗體里按鈕的函數
[DllImport("User32.dll", EntryPoint = "FindWindowEx")] public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);
參數說明:
hwndParent
|
主窗體句柄、第一步調用 FindWindow 函數返回的值 |
hwndChildAfter
|
子窗體的句柄,可空 |
lpClassName
|
要尋找的控制項的類名 |
lpWindowName
|
要尋找的控制項的標題 |
然後我們調用此函數尋找窗體里的 “連接” 按鈕。
IntPtr btnPtr = YSQ.FindWindowEx(ParenthWnd, IntPtr.Zero, "Button", "連接");
YSQ.PostMessage(btnPtr, 0x201, 0, 0);
YSQ.PostMessage(btnPtr, 0x202, 0, 0);
textBox1.AppendText($"點擊【連接】按鈕,按鈕句柄:{btnPtr}\r\n\r\n");
然後我們還需要定義一個給窗體發送消息的函數
[DllImport("User32.Dll", EntryPoint = "PostMessageA")] public static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
然後調用 PostMessage 函數發送滑鼠按下的消息
YSQ.PostMessage(btnPtr, 0x201, 0, 0); YSQ.PostMessage(btnPtr, 0x202, 0, 0);
//按下滑鼠左鍵
WM_LBUTTONDOWN = 0x201
//釋放滑鼠左鍵
WM_LBUTTONUP = 0x202
更多函數代碼請移步MSDN官網查看
這樣就實現了點擊其他程式里的按鈕操作!
github:https://github.com/2629180692
博客園:http://www.cnblogs.com/wurendao
完成日期 ©2020-02-10 無人島
遇到什麼問題歡迎到下麵評論里提出或者聯繫我哦!
【轉載文章務必保留出處和署名,謝謝!】