В pywinauto, как я могу щелкнуть правой кнопкой мыши значок моего приложения на панели задач, чтобы открыть контекстное меню? - PullRequest
0 голосов
/ 06 февраля 2019

Как я могу щелкнуть правой кнопкой мыши значок приложения в системном трее и выбрать один из пунктов всплывающего меню с помощью pywinauto?

У меня есть приложение в системном трее Windows Desktop, которое нельзя загрузить с помощью .exeфайл.Поэтому я должен щелкнуть правой кнопкой мыши значок системного трея и выбрать один из пунктов всплывающего меню, чтобы получить графический интерфейс приложения. Я пытался добиться этого с помощью pywinauto с использованием Python 64 bit.

Вот мой код.

app = Application(backend="uia").connect(path="explorer")
sys_tray = app.window(class_name="Shell_TrayWnd")
loc = sys_tray.child_window(title='App name').click()

Это меняет положение мыши на иконку нужного приложения, но это не щелчок правой кнопкой мыши по этому, и я хочу выбрать один пункт меню из этого всплывающего окна.как я могу получить это?

1 Ответ

0 голосов
/ 07 февраля 2019

Существует метод .click_input(button="right"), который перемещает реальный курсор и выполняет настоящий щелчок.В вашем случае это выглядело бы так (в Windows 10 версии 1803):

#from __future__ import print_function
from pywinauto import Desktop

d = Desktop(backend='uia')
#d.Taskbar.dump_tree()
main_tray_toolbar = d.Taskbar.child_window(title="User Promoted Notification Area", control_type="ToolBar")
#print(main_tray_toolbar.texts())

icon = main_tray_toolbar.child_window(title_re="Cisco AnyConnect Secure Mobility Client.*", control_type="Button")
icon.click_input(button="right")

#d.ContextMenu.dump_tree()
d.ContextMenu.wait('visible', timeout=10) # flexibly wait up to 10 sec.
d.ContextMenu.child_window(title="About", control_type="MenuItem").invoke()

Полезные отладочные комментарии прокомментированы (все спецификации .child_window были только что скопированы из вывода dump_tree()).Существует также метод d.windows(), который доступен только для основной ветки (pywinauto 0.6.6 выйдет в ближайшие 2 недели).

...