Как получить конкретную иконку в системном трее, используя pywinauto? - PullRequest
0 голосов
/ 22 мая 2018

Например, значок Slack из области уведомлений:

slack example icon

А как мы можем получить конкретную иконку в случае опции «показывать скрытые» иконки?

Ответы [ 2 ]

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

Используйте этот код пользователя (Модифицированный sunil-kumar код)

from pywinauto import Application
import time

app = Application(backend="uia").connect(path="explorer.exe")
st = app.window(class_name="Shell_TrayWnd")
t = st.child_window(title="Notification Chevron").wrapper_object()
t.click()

time.sleep(0.25)

list_box = Application(backend="uia").connect(class_name="NotifyIconOverflowWindow")
list_box_win = list_box.window(class_name="NotifyIconOverflowWindow")
list_box_win.wait('visible', timeout=30, retry_interval=3)

list_box_win.child_window(title="APPLICATION NAME").click()
0 голосов
/ 28 мая 2018

Это сработало для меня,

Если значок вашего приложения виден на панели задач

app = Application(backend="uia").connect(path="explorer.exe")
sys_tray = app.window(class_name="Shell_TrayWnd")
sys_tray.child_window(title=<your icon>).click()

Значок приложения в футляре, который в скрытом трее

app = Application(backend="uia").connect(path="explorer.exe")
st = app.window(class_name="Shell_TrayWnd")
t = st.child_window(title="Notification Chevron").wrapper_object()
t.click()

# Handle notify icon  overflow window

list_box = Application(backend="uia").connect(class_name="NotifyIconOverflowWindow")
list_box_win = list_box.window(class_name="NotifyIconOverflowWindow")
list_box_win.wait('visible', timeout=30, retry_interval=3)

# Select required option from drop-down 

ddm = desk.create_window(best_match="DropDownMenu")
desk.wait_for_window_to_appear(ddm, wait_for='ready', timeout=20, retry_interval=2)
ddm.child_window(title=<select option>, control_type="MenuItem").click_input()
...