首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在pywinauto中,如何右键单击系统托盘中的应用程序图标来打开上下文菜单?

在pywinauto中,如何右键单击系统托盘中的应用程序图标来打开上下文菜单?
EN

Stack Overflow用户
提问于 2019-02-06 09:27:12
回答 2查看 2.2K关注 0票数 0

如何在系统托盘中右击应用程序的图标并使用pywinauto选择其中一个弹出菜单项?

我的应用程序在Windows桌面系统托盘上,无法使用.exe文件加载。因此,我必须右击系统托盘图标并选择一个弹出菜单项,以获得应用程序的图形用户界面。我试图使用pywinauto使用python 64位来实现这一点。

这是我的代码。

代码语言:javascript
运行
复制
app = Application(backend="uia").connect(path="explorer")
sys_tray = app.window(class_name="Shell_TrayWnd")
loc = sys_tray.child_window(title='App name').click()

这是改变鼠标位置到所需的应用程序的图标,但它不是右击,我想从弹出的菜单项也。我怎么才能得到这个呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-07 05:53:16

有一个方法.click_input(button="right")可以移动真实的光标并执行真实的点击。在您的示例中,它看起来是这样的(在Windows 10版本1803上):

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

注释了有用的调试打印(刚从dump_tree()输出中复制了所有.child_window规范)。还有一种方法d.windows()仅适用于主分支(pywinauto 0.6.6将在最近两周内推出)。

票数 1
EN

Stack Overflow用户

发布于 2020-11-01 17:53:06

评论Vasily的回答:因为窗口和工具栏的名称是本地化的,所以代码不能在区域设置不是英语的系统上工作。我通过在法语Windows10系统上替换

代码语言:javascript
运行
复制
main_tray_toolbar = d.Taskbar.child_window(title="User Promoted Notification Area", control_type="ToolBar")

使用

代码语言:javascript
运行
复制
main_tray_toolbar = d.window(class_name='Shell_TrayWnd').child_window(class_name='ToolbarWindow32', control_type="ToolBar")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54545463

复制
相关文章

相似问题

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