【发布时间】:2016-10-03 23:54:02
【问题描述】:
我正在使用 python 的 win32 模块创建一个简单的 click() 方法,它应该模拟鼠标点击,但不幸的是我的方法不起作用。
def click(x, y):
hWnd = win32gui.FindWindow(None, "SomeWindowTitle")
lParam = win32api.MAKELONG(x, y)
win32gui.PostMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, lParam);
win32gui.PostMessage(hWnd, WM_LBUTTONUP, MK_LBUTTON, lParam);
...
timer = Timer(30, click, [x, y])
timer.start()
感谢每一个提示!
【问题讨论】:
-
UIPI 很可能阻止了这些消息。在任何情况下,您都应该使用
mouse_event()或SendInput()而不是PostMessage()。 -
MK_LBUTTONisn't a validwParamforWM_LBUTTONUP。我认为WM_LBUTTONDOWN也不需要它。 -
You can’t simulate keyboard input with PostMessage。同样的原则也适用于此。您可能想改用UI Automation。如果这确实由于 UIPI 边界而被拒绝,那么 UI 自动化是处理这个问题的唯一明智的方法。
-
@computerfreaker 嗯谢谢!没有查找 WM_LBUTTONUP,因为我认为它与 WM_LBUTTONDOWN 相同,我之前检查过...
-
@IInspectable 谢谢!我只是感到困惑,因为我看到一些other examples 人们使用 PostMessage() 或 SendMessage() 发送输入。我还没有在其中一个 pywin32 模块中找到 SendInput 或 UI 自动化,但我会更深入地了解它!