python / win32: опубликовать событие щелчка в окне?

1

Я хочу, чтобы имитировать щелчок мышью по окну, но я хочу опубликовать событие 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 - правильный дескриптор окна. В этом случае я пытался заставить меню файла активироваться.

Теги:
winapi

1 ответ

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню