【问题标题】:python/win32: post a click event to a window?python/win32:将点击事件发布到窗口?
【发布时间】:2010-07-28 16:14:22
【问题描述】:

我想模拟鼠标点击窗口,但我想将点击事件直接发布到窗口(不是通过使用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 是窗口的正确句柄。在这种情况下,我试图激活文件菜单。

【问题讨论】:

    标签: python windows winapi


    【解决方案1】:

    如果window 是拥有菜单的窗口,这将不起作用,因为WM_LBUTTONDOWN 是窗口的客户区,而菜单区是非客户区。我尚未对此进行测试,但您可以尝试发布 WM_NCLBUTTONDOWN,使用 wParamHTMENU,并在屏幕坐标中显示鼠标位置。

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

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多