【发布时间】:2011-01-17 16:19:14
【问题描述】:
我正在尝试在第三方应用程序中生成点击事件。作为开始,我尝试在计算器中模拟点击。这是代码”
IntPtr hwnd = IntPtr.Zero;
IntPtr hwndChild = IntPtr.Zero;
//Get a handle for the Calculator Application main window
hwnd = FindWindow(null, "Calculator");
hwndChild = FindWindowEx(hwnd, IntPtr.Zero, "Button", "1");
//send BN_CLICKED message
SendMessage(hwndChild, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
但是使用这段代码我没有得到按钮的句柄。有人可以帮忙吗。有没有其他方法可以模拟第三方应用程序的按钮点击?
谢谢。
【问题讨论】:
-
BM_CLICK 不应该是 WM_CLICK 吗?
-
我认为翻转是正确的,因为您需要将其作为窗口消息发送,如果您想轻松做到这一点,您可以使用 Spy++ 查找名称甚至特定句柄,然后将其放入您的代码中。
-
@FlipScript:我认为它们都有效,不是吗?
-
@FlipScript, @Jesus:实际上,
BM_CLICK是正确的按钮。 Win32 API 中没有通用的WM_CLICK消息,因为并非所有控件都支持“单击”的概念。 -
您确定您的计算器应用程序使用单独的窗口作为其按钮。有时他们只是将按钮直接绘制到画布上,然后使用命中测试。你检查过间谍吗?
标签: c# winapi click handle simulate