C语言 WM_MOUSEMOVE职位问题



我正在开发一个程序,该程序应该在程序停留在后台时模拟程序的基本鼠标输入(这意味着,我想在其他窗口中使用实际的鼠标和键盘做其他事情,而目标接收输入)。我需要做的一件事是将鼠标移动到特定的 (x,y) 点。

它似乎在大多数情况下都有效,但在屏幕的某个区域,消息仅在某些时候正常工作。其他时候,它会移动到区域内一致但错误的其他点。我正在阅读有时它是相对的,但是如果我反复发送垃圾邮件,它似乎确实可以始终如一地工作。此外,在Spy++中阅读,我实际移动鼠标发送的消息使用似乎是绝对坐标。

我的函数在这里:

void mouseMove(short x, short y) {
PostMessage(wnd, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
}

最好是,我希望任何 (x,y) 是绝对的,这样我就可以将该区域视为任何其他区域。但是,将位置设置为相对于该区域左上角的坐标也可以。

我已经尝试了在WM_MOUSEMOVE之前在Spy++中看到的发送到窗口的几乎所有消息,但没有任何帮助。

我该如何解决这个问题?

编辑,因为详细信息可能无法证明足够的信息:

我按以下顺序发送这些消息:

  • WM_ACTIVATE 2 0
  • WM_MOUSEMOVE 0 MAKELPARAM(x,y)
  • WM_LBUTTONDOWN MK_LBUTTON MAKELPARAM(x,y)
  • WM_LBUTTONUP 0 MAKELPARAM(x,y)

我认为我最初的想法(糟糕的WM_SETCURSOR区域)是错误的,因为Spy++始终显示正在使用HTCLIENT

我发现很多人都在尝试这样做(后台输入),大多数人似乎被告知这是不可能的。这并非不可能,我认为如果有人能一劳永逸地回答如何正确做到这一点,那将是很多人的忙。

合成击键、鼠标动作和按钮单击。

UINT WINAPI SendInput(
_In_ UINT    nInputs,
_In_ LPINPUT pInputs,
_In_ int     cbSize
);

发布消息功能。在邮件队列中放置(发布)邮件 与创建指定窗口的线程相关联,并且 返回而不等待线程处理消息。

要使PostMessage正常工作,您需要将过程中作为可以使用SetWindowHook实现的目标,但是这些链接将完成这些工作:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/ms171542(v=vs.110).aspx

相关内容

  • 没有找到相关文章

最新更新