0

我正在做一个小应用,我需要单击 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;
}

有什么建议吗?

问候。

4

1 回答 1

4

首先,您不应该使用 SendMessage 或 PostMessage 来发送输入。它可能适用于某些程序,但直接发送或发布消息不会更新与输入相关联的内部状态,这可能会导致奇怪的事情发生,例如未检测到输入。

这就是函数SendInput存在的原因。这会在鼠标驱动程序使用的同一级别上注入输入,因此 Windows 将正确维护其状态。当然,这是用于全局输入。如果无法确保窗口位于前台,您可能需要查看UI 自动化。

于 2013-05-03T17:58:27.670 回答