我如何右键单击系统托盘中的应用程序图标,然后使用pywinauto选择弹出菜单项之一?
我的应用程序位于Windows桌面系统托盘上,无法使用.exe文件加载。因此,我必须右键单击systemtray图标并选择弹出菜单项之一才能获取应用程序的GUI。我试图使用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()
这会将鼠标位置更改为所需的应用程序图标,但右键单击鼠标不正确,我也想从该弹出菜单中选择一个菜单项。 我怎么能得到这个?
答案 0 :(得分:1)
评论Vasily的答案:由于窗口和工具栏的名称已本地化,因此该代码在语言环境不是英语的系统上将不起作用。通过替换
,我将其用于法国Windows 10系统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")
答案 1 :(得分:0)
有一种方法.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()
注释了有用的调试打印信息(所有.child_window
规范都刚刚从dump_tree()
输出中复制了出来)。还有一种d.windows()
方法仅适用于master分支(pywinauto 0.6.6将在最近的2周内推出)。