首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从隐藏的系统托盘图标访问弹出菜单

如何从隐藏的系统托盘图标访问弹出菜单
EN

Stack Overflow用户
提问于 2019-11-06 00:52:32
回答 1查看 389关注 0票数 1

我使用以下代码访问隐藏图标,显示其弹出菜单,并单击“注销”菜单项:

代码语言:javascript
运行
复制
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())时:

代码语言:javascript
运行
复制
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([])'。那么我可以在弹出窗口中访问菜单项吗?

顺便说一句:它运行在windows1064位和python3.6上。

EN

回答 1

Stack Overflow用户

发布于 2020-06-23 00:10:19

未打磨/优化(但工作)的代码如下所示:

代码语言:javascript
运行
复制
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“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58715978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档