python/win32:如何向窗口发送点击事件?
我想在一个窗口上模拟鼠标点击,但我想直接把点击事件发送到这个窗口,而不是通过一般的鼠标点击方式来模拟,比如用 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
。请问应该怎么做呢?我试过以下的方法,但似乎没有效果:
def MAKELONG(low, high):
return low | (high << 16)
win32gui.PostMessage(window,
win32con.WM_LBUTTONDOWN,
win32con.MK_LBUTTON,
MAKELONG(21,42))
time.sleep(0.05)
win32gui.PostMessage(window,
win32con.WM_LBUTTONUP,
0,
MAKELONG(21,42))
window
是这个窗口的正确句柄。在这个例子中,我是想让文件菜单激活。
1 个回答
0
如果说window
是拥有这个菜单的窗口,那么这样做是行不通的,因为WM_LBUTTONDOWN
是针对窗口的客户区域的,而菜单区域属于非客户区域。我没有测试过这个,不过你可以试试发送WM_NCLBUTTONDOWN
,并且wParam
设置为HTMENU
,同时使用屏幕坐标来表示鼠标位置。
另一种选择是直接使用GetSubMenu
和TrackPopupMenu
。不过这样做的唯一问题是,如果你希望用户能够继续浏览其他子菜单,就会有点麻烦。