我正在用C ++(Windows 7)创建程序,它通过读取屏幕并发回鼠标信号(仅左键单击)来控制一个特定窗口。我明显使用WinAPI。问题在于鼠标信号。我的目标是在实际光标位置上独立发送鼠标事件。 (即它可以在背景上运行"并且窗口不必是可见的)。
我使用SendMessage(或PostMessage)尝试了明显的解决方案:
PostMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
this_thread::sleep_for (std::chrono::milliseconds(100));
PostMessage(hwnd, WM_LBUTTONUP , MK_LBUTTON, MAKELPARAM(x, y));
我认为命令工作正常但是应用程序如何处理点击事件存在一些问题。它似乎没有考虑参数x,y,而是在调用WM_LBUTTONUP
时,它询问操作系统光标所在的位置并点击该位置。所以最后点击始终发生在光标的位置(如果它在窗口内)。
我还尝试在WM_MOUSEMOVE
之前发送WM_LBUTTONUP
事件,但它没有帮助。
这种行为真的很奇怪,我完全责怪应用程序而不是WinAPI。任何想法如何解决这个问题?我可以以某种方式欺骗窗口,以便它认为光标在其他地方吗?