Я хочу, чтобы имитировать щелчок мышью по окну, но я хочу опубликовать событие click непосредственно в окне (не путем моделирования общего щелчка мыши с помощью 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
- правильный дескриптор окна. В этом случае я пытался заставить меню файла активироваться.
Если window
- это окно, в котором находится данное меню, это не сработает, потому что WM_LBUTTONDOWN
- для клиентской области окна, а область меню - неклиент. Я не тестировал это, но вы можете попробовать разместить WM_NCLBUTTONDOWN
вместо wParam
HTMENU
и положение мыши в координатах экрана.
Другой альтернативой было бы просто использовать GetSubMenu
и TrackPopupMenu
. Единственная проблема заключается в том, что вы хотите, чтобы пользователь мог перейти к другим подменю.