python-3.x - 如何从隐藏的系统托盘图标访问弹出菜单
问题描述
我使用以下代码访问隐藏图标并显示其弹出菜单并单击“注销”菜单项:
import time
from pywinauto.application import Application
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="Citrix Workspace").click_input(button='right').menu_item('Sign Out').click_input()
显示弹出菜单,但出现错误:AttributeError: 'NoneType' object has no attribute 'menu_item'
当我尝试添加此代码(而不是.menu_item('Sign Out').click_input()
)时:
connector = Application()
connector.connect(path="C:\\Program Files (x86)\\Citrix\\ICA Client\\SelfServicePlugin\\SelfService.exe")
connector.PopupMenu.MenuItem("Sign Out").ClickInput()
路径反映了负责系统托盘中图标的应用程序。我得到错误:MatchError: Could not find 'PopupMenu' in 'dict_keys([])'
。所以我可以在弹出窗口中访问 menuitem 吗?
顺便说一句:它在带有 python 3.6 的 windows 10 64 位上运行。
解决方案
未抛光/优化(但有效)的代码如下所示:
import pywinauto.application
import time
taskbar = pywinauto.application.Application(backend="uia").connect(path="explorer.exe")
windows_tray = taskbar.window(class_name="Shell_TrayWnd")
tray = windows_tray.child_window(title="Notification Chevron").wrapper_object()
tray.click()
time.sleep(1)
app_list_box = pywinauto.application.Application(backend="uia").connect(class_name="NotifyIconOverflowWindow")
app_list_box_win = app_list_box.window(class_name="NotifyIconOverflowWindow")
target_app = app_list_box_win.child_window(title = "Citrix Workspace")
target_app.click_input(button = "right")
citrix = pywinauto.application.Application().connect(path='Receiver.exe')
sign = citrix.PopupMenu.menu().get_menu_path("Sign In...")[0]
sign.click_input()
其中“Receiver.exe”是在系统托盘中运行的应用程序的可执行文件,其名称为“Citrix Workspace”。
推荐阅读
- java - 在 Android Studio 的片段中单击 recyclerview 中的 cardview
- sql - 如何重命名,甚至访问名称中带有空格的列?
- openedge - 为什么弹出窗口在 Linux 端不起作用?
- javascript - Javascript 模板字符串
- python - Pygame精灵碰撞检测不起作用
- c# - 使用 Spreadsheetlight.SFill.SetPattern 时缺少方法异常
- postgresql - 从一个非常大的 SELECT 查询中插入 INTO
- microcontroller - 遵循汇编代码中的内存位置
- c - 我是线程和信号量的新手,我似乎可以理解为什么我的代码不起作用,任何帮助将不胜感激
- html - 在导航栏上显示形状的问题