在 pywinauto 中,如何右键单击系统托盘中的应用程序图标以打开上下文菜单?
In pywinauto, how can I right click my app icon in the system tray to open the context menu?
如何使用 pywinauto 右键单击系统托盘中的应用程序图标和 select 弹出菜单项之一?
我的应用程序位于 Windows 桌面系统托盘中,无法使用 .exe 文件加载。所以我必须右键单击系统托盘图标和 select 弹出菜单项之一才能获得应用程序的 GUI.I 正在尝试使用 python 64 位使用 pywinauto 来实现此目的。
这是我的代码。
app = Application(backend="uia").connect(path="explorer")
sys_tray = app.window(class_name="Shell_TrayWnd")
loc = sys_tray.child_window(title='App name').click()
这是将鼠标位置更改为所需应用程序的图标,但它不是右键单击它,我还想 select 从该弹出菜单中选择一个菜单项。
我怎样才能得到这个?
有方法.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 周内推出)。
评论 Vasily 的回答:因为 windows 和工具栏的名称是本地化的,代码将无法在语言环境不是英语的系统上运行。我通过替换
让这个在法语 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")
如何使用 pywinauto 右键单击系统托盘中的应用程序图标和 select 弹出菜单项之一?
我的应用程序位于 Windows 桌面系统托盘中,无法使用 .exe 文件加载。所以我必须右键单击系统托盘图标和 select 弹出菜单项之一才能获得应用程序的 GUI.I 正在尝试使用 python 64 位使用 pywinauto 来实现此目的。
这是我的代码。
app = Application(backend="uia").connect(path="explorer")
sys_tray = app.window(class_name="Shell_TrayWnd")
loc = sys_tray.child_window(title='App name').click()
这是将鼠标位置更改为所需应用程序的图标,但它不是右键单击它,我还想 select 从该弹出菜单中选择一个菜单项。 我怎样才能得到这个?
有方法.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 周内推出)。
评论 Vasily 的回答:因为 windows 和工具栏的名称是本地化的,代码将无法在语言环境不是英语的系统上运行。我通过替换
让这个在法语 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")