如何在系统托盘中右击应用程序的图标并使用pywinauto选择其中一个弹出菜单项?
我的应用程序在Windows桌面系统托盘上,无法使用.exe文件加载。因此,我必须右击系统托盘图标并选择一个弹出菜单项,以获得应用程序的图形用户界面。我试图使用pywinauto使用python 64位来实现这一点。
这是我的代码。
app = Application(backend="uia").connect(path="explorer")
sys_tray = app.window(class_name="Shell_TrayWnd")
loc = sys_tray.child_window(title='App name').click()
这是改变鼠标位置到所需的应用程序的图标,但它不是右击,我想从弹出的菜单项也。我怎么才能得到这个呢?
发布于 2019-02-07 05:53:16
有一个方法.click_input(button="right")
可以移动真实的光标并执行真实的点击。在您的示例中,它看起来是这样的(在Windows 10版本1803上):
#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将在最近两周内推出)。
发布于 2020-11-01 17:53:06
评论Vasily的回答:因为窗口和工具栏的名称是本地化的,所以代码不能在区域设置不是英语的系统上工作。我通过在法语Windows10系统上替换
main_tray_toolbar = d.Taskbar.child_window(title="User Promoted Notification Area", control_type="ToolBar")
使用
main_tray_toolbar = d.window(class_name='Shell_TrayWnd').child_window(class_name='ToolbarWindow32', control_type="ToolBar")
https://stackoverflow.com/questions/54545463
复制相似问题