0

我认为这个问题的标题很清楚。

        const int WM_KEYDOWN = 0x100;
        const int WM_KEYUP = 0x101;
        const int WM_SYSCOMMAND = 0x018;
        const int SC_CLOSE = 0x053;
        const int WM_MOUSEMOVE = 0x200;
        int WindowToFind = FindWindow(null, "Untitled - Paint");
        PostMessage(WindowToFind, WM_MOUSEMOVE, 400, 500);
        PostMessage(WindowToFind, WM_KEYDOWN, ((int)Keys.LButton), 0);
        PostMessage(WindowToFind, WM_KEYUP, ((int)Keys.LButton), 0);

以上,是当前代码。这不起作用。(但是,如果我想按 A,postmessage 确实会发布实际的键,它会这样做。但是它在鼠标上失败,或者我失败了)

我还必须指出,我什至不知道 lparam 实际上是什么,我只是习惯将它设置为 null 并将 wparam 设置为键。我什至不确定我是否应该使用 wm_mousemove,因为它看起来像是“接收”而不是实际设置位置。然后我读到 Lparam 应该设置为包含 x 和 y,如 500 * 0x10000 + 500,而 wparam 为 0 等,它没有帮助。谷歌搜索其他方式也没有帮助。我真的不在乎方法,我只想在另一个没有焦点的窗口上按鼠标左键,在某个位置。

4

1 回答 1

0

也许您正在寻找SendInput ( P/Invoke )

P/Invoke 上的示例代码还显示了如果您想以编程方式提供另一个窗口焦点(不确定这是否是您要完成的任务),如何使用FindWindowSetForegroundWindow 。

于 2012-07-24T15:21:52.320 回答