我正在做一点申请,我需要点击word文档中的某个位置。
我正在使用“sendMessage,虽然我也在使用”postMessage“获得相同的结果。
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
HWND win_handle = FindWindow(L"OpusApp", NULL);
if (win_handle != NULL)
{
POINT win_coords = {1310, 360};
POINT ctrl_coords = win_coords;
ScreenToClient(win_handle, &win_coords);
WCHAR windowsText1[200];
GetWindowText(win_handle, windowsText1, 200);
//SetCapture(win_handle);
LPARAM lParam = MAKELPARAM(win_coords.x, win_coords.y);
LRESULT hr_d = SendMessage(win_handle, WM_LBUTTONDOWN, 0, lParam);
LRESULT hr_u = SendMessage(win_handle, WM_LBUTTONUP, 0, lParam);
}
return 0;
}
有什么建议吗?
问候。
答案 0 :(得分:4)
首先,不应使用SendMessage或PostMessage发送输入。它可能适用于某些程序,但直接发送或发布消息不会更新与输入相关联的内部状态,这可能会使奇怪的事情发生,例如不检测输入。
这就是函数SendInput存在的原因。这将输入注入与鼠标驱动程序使用的相同级别,因此Windows将正确维护其状态。当然,这是全球性的投入。如果无法确保窗口位于前台,您可能需要查看UI Automation.