2010-07-28 77 views
0

我想模拟鼠标点击一个窗口,但我想直接发布点击事件到窗口(而不是通过使用win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)模拟一般的鼠标点击)。什么是正确的方法来做到这一点?我试过以下,但它似乎并没有产生效果:python/win32:发送一个点击事件到窗口?

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是窗口的句柄正确。在这种情况下,我试图让文件菜单激活。

回答

0

如果window是拥有该菜单的窗口,则这将不起作用,因为WM_LBUTTONDOWN用于窗口的客户区,而菜单区域是非客户端。我没有测试过这个,但是您可以尝试发布WM_NCLBUTTONDOWN,而使用wParamHTMENU,并在屏幕坐标中显示鼠标位置。

另一种选择是仅使用GetSubMenuTrackPopupMenu。唯一的问题是如果你希望用户能够导航到其他子菜单。

相关问题