gpt4 book ai didi

c - WM_MOUSEMOVE 位置问题

转载 作者:行者123 更新时间:2023-11-30 19:09:29 25 4
gpt4 key购买 nike

我正在开发一个程序,该程序应该在程序停留在后台时模拟程序的基本鼠标输入(这意味着,我想在目标接收输入时使用实际的鼠标和键盘在其他窗口中执行其他操作) 。我需要做的一件事是将鼠标移动到特定的 (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

我发现很多人试图这样做(后台输入),但大多数人似乎被告知这是不可能的。这并非不可能,而且我认为如果有人能够一劳永逸地回答如何正确执行此操作,这将为很多人带来很大帮助。

最佳答案

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

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

PostMessage function. Places (posts) a message in the message queue associated with the thread that created the specified window and returns without waiting for the thread to process the message.

要使 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

关于c - WM_MOUSEMOVE 位置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43146953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com