我想以编程方式从系统托盘中的工具提示中检索信息。
图像显示工具提示。
现在,我发现通过使用Microsoft的inspect.exe,这是一个基于Windows的工具,它可以让您选择任何UI元素并查看元素的辅助功能数据&#34> #34; ,理论上可以通过编程方式检索此值。
将鼠标悬停在工具栏中的潘多拉图标上会显示以下属性
它显示了一个属性" name"包含我需要的确切数据。我不确定如何使用win32api以编程方式检索此值。我已经对潘多拉图标感兴趣了。
此外,一个不同的ui间谍工具,UiSpy.exe称这个相同的属性" helpText" (不同的歌名:p)
我尝试使用getWindowText(pandoraSystrayIconHwnd)
,但会返回不同的文字。有谁知道这个"名称"值是,以及如何使用win32api检索它?这应该是可能的,因为inspect.exe是一个外部程序,可以以某种方式访问数据
我在Python中这样做,因为目标应用程序已经用Python编写。
答案 0 :(得分:4)
这些间谍应用可能正在使用Active Accessibility和/或UI Automation。
如果您关心鼠标位置,可以尝试在工具栏HWND上调用AccessibleObjectFromWindow或AccessibleObjectFromPoint,然后拨打IAccessible::get_accName。
请记住,托盘图标工具栏的类名和窗口层次结构未记录。
如果您只关心Pandora而非其他应用程序,那么我强烈建议您首先查找other alternatives。也许他们有一个隐藏的窗口,标题等。
如果您不介意黑客,那么您可以查看TraySaver,它是开源的,并且知道托盘工具栏中每个图标存储的数据的内部格式。请记住,它已经很老了,可能无法在较新版本的Windows上运行。如果你走这条路(我不推荐它),你必须记住你需要支持32位和64位资源管理器。
答案 1 :(得分:0)
也许GUI自动化库pywinauto可以帮到你。它使用Win32 API或UI Automation(根据您的选择)。核心概念在Getting Started Guide中描述。
方法.window_text()
返回与Inspect.exe中显示的Name
属性完全相同。
要与托盘区域图标进行互动,您可以使用this example on StackOverflow。