python / win32: опубликовать событие щелчка в окне? - PullRequest
1 голос
/ 28 июля 2010

Я хочу смоделировать щелчок мышью по окну, но я хочу опубликовать событие щелчка непосредственно в окне (не путем имитации общего щелчка мышью с использованием 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 голосов
/ 22 августа 2010

Если window является окном, которому принадлежит меню, это не будет работать, потому что WM_LBUTTONDOWN для клиентской области окна, а область меню не является клиентской.Я не проверял это, но вы могли бы вместо этого постить WM_NCLBUTTONDOWN с wParam из HTMENU и позицией мыши в экранных координатах.

Другой альтернативой было бы просто использовать GetSubMenuи TrackPopupMenu.Единственная проблема с этим, если вы хотите, чтобы пользователь затем мог переходить к другим подменю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...