Python 使用PostMessage模拟鼠标单击
我正在使用python的win32模块创建一个简单的click()方法,该方法应该模拟鼠标单击,但不幸的是,我的方法不起作用Python 使用PostMessage模拟鼠标单击,python,winapi,pywin32,Python,Winapi,Pywin32,我正在使用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); win3
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()
我感谢每一个提示 我现在可以用了。。上面的代码运行良好,我唯一不知道的是,我是从屏幕坐标中的
win32api.GetCursorPos()
获取光标位置的,但是win32gui.PostMessage()
需要hWnd的相对坐标。只需使用ScreenToClient()
将其转换就可以了。我现在就可以让它工作了。。上面的代码运行良好,我唯一不知道的是,我是从屏幕坐标中的win32api.GetCursorPos()
获取光标位置的,但是win32gui.PostMessage()
需要hWnd的相对坐标。只需使用ScreenToClient()
将其转换就可以了。很可能是阻止了消息。在任何情况下,都应该使用mouse\u event()
或SendInput()
而不是PostMessage()
。。我想你也不需要它。。这里也适用同样的原则。你可能想用它来代替。如果这真的因为UIPI边界而被拒绝,那么UI自动化是处理这个问题的唯一明智的方法。@computerfreaker Mhh谢谢!没有为WM_LBUTTONUP查找,因为我认为它将与WM_lbuttonown一样,我之前检查过它…@IInspectable感谢您!我只是感到困惑,因为我看到一些人使用PostMessage()或SendMessage()发送输入。我还没有在其中一个pywin32模块中找到SendInput或UI自动化,但我将更深入地了解它!最有可能的是阻止消息。在任何情况下,都应该使用mouse\u event()
或SendInput()
而不是PostMessage()
。。我想你也不需要它。。这里也适用同样的原则。你可能想用它来代替。如果这真的因为UIPI边界而被拒绝,那么UI自动化是处理这个问题的唯一明智的方法。@computerfreaker Mhh谢谢!没有为WM_LBUTTONUP查找,因为我认为它将与WM_lbuttonown一样,我之前检查过它…@IInspectable感谢您!我只是感到困惑,因为我看到一些人使用PostMessage()或SendMessage()发送输入。我还没有在其中一个pywin32模块中找到SendInput或UI自动化,但我将更深入地了解它!这个答案救了我一天!这个答案救了我一天!报答