如何使用pywinauto获取托盘中的图标数
How to get count of icons in tray using pywinauto
我有一个应用程序,当我单击 .exe 文件时它位于托盘中。
我无法点击位于系统托盘中的我的应用程序。因为当我使用 inspector.exe 检查时它没有 class_name 或 id 或任何东西。所以我决定使用图标索引单击它。因为我不确定当我 运行 这个特定程序时托盘中有多少图标。所以我想在单击 .exe 文件之前获取图标的计数。如果计数是 x 那么我可以在单击实际单击我想要的图标的 .exe 后单击索引 x 图标。
任何人都可以帮助我计算图标的数量。我尝试使用 child_window(class_name="") 多次,但它只返回一个对象而不是列表。
下面是我的代码:
from pywinauto.application 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(1)
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(class_name="", found_index=x).click_input()
非常感谢您的帮助:)
这没有给出计数并完成所需的工作。
以下代码将遍历系统托盘中可用的应用程序,并通过检查其名称来单击所需的应用程序。
from pywinauto.application import Application
import time
app = Application(backend="uia").connect(path="explorer.exe")
taskBar = app.window(class_name='Shell_TrayWnd')
trayIcon = taskBar["Notification Chevron"].wrapper_object()
trayIcon.click()
time.sleep(0.25)
trayWindowContainer = Application(backend="uia").connect(class_name="NotifyIconOverflowWindow")
trayWindow = trayWindowContainer.window(class_name="NotifyIconOverflowWindow")
trayWindow.wait('visible', timeout=30, retry_interval=3)
breakLoop: bool = False
for notification_area in trayWindow.children():
for app_in_tray in notification_area.children():
if "<App_name>" in str(app_in_tray):
app_in_tray.click_input()
breakLoop = True
break
if breakLoop:
break
我有一个应用程序,当我单击 .exe 文件时它位于托盘中。 我无法点击位于系统托盘中的我的应用程序。因为当我使用 inspector.exe 检查时它没有 class_name 或 id 或任何东西。所以我决定使用图标索引单击它。因为我不确定当我 运行 这个特定程序时托盘中有多少图标。所以我想在单击 .exe 文件之前获取图标的计数。如果计数是 x 那么我可以在单击实际单击我想要的图标的 .exe 后单击索引 x 图标。 任何人都可以帮助我计算图标的数量。我尝试使用 child_window(class_name="") 多次,但它只返回一个对象而不是列表。
下面是我的代码:
from pywinauto.application 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(1)
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(class_name="", found_index=x).click_input()
非常感谢您的帮助:)
这没有给出计数并完成所需的工作。 以下代码将遍历系统托盘中可用的应用程序,并通过检查其名称来单击所需的应用程序。
from pywinauto.application import Application
import time
app = Application(backend="uia").connect(path="explorer.exe")
taskBar = app.window(class_name='Shell_TrayWnd')
trayIcon = taskBar["Notification Chevron"].wrapper_object()
trayIcon.click()
time.sleep(0.25)
trayWindowContainer = Application(backend="uia").connect(class_name="NotifyIconOverflowWindow")
trayWindow = trayWindowContainer.window(class_name="NotifyIconOverflowWindow")
trayWindow.wait('visible', timeout=30, retry_interval=3)
breakLoop: bool = False
for notification_area in trayWindow.children():
for app_in_tray in notification_area.children():
if "<App_name>" in str(app_in_tray):
app_in_tray.click_input()
breakLoop = True
break
if breakLoop:
break