如何以编程方式检索" name"的等价物。在microsoft的inspect.exe中的字段?

时间:2017-02-03 19:32:09

标签: python windows winapi ctypes pywin32

我想以编程方式从系统托盘中的工具提示中检索信息。

This shows the tooltip I'm talking about

图像显示工具提示。

现在,我发现通过使用Microsoft的inspect.exe,这是一个基于Windows的工具,它可以让您选择任何UI元素并查看元素的辅助功能数据&#34> #34; ,理论上可以通过编程方式检索此值。

将鼠标悬停在工具栏中的潘多拉图标上会显示以下属性

Properties of the pandora icon control as shown by inspect.exe

它显示了一个属性" name"包含我需要的确切数据。我不确定如何使用win32api以编程方式检索此值。我已经对潘多拉图标感兴趣了。

此外,一个不同的ui间谍工具,UiSpy.exe称这个相同的属性" helpText" (不同的歌名:p)

enter image description here

我尝试使用getWindowText(pandoraSystrayIconHwnd),但会返回不同的文字。有谁知道这个"名称"值是,以及如何使用win32api检索它?这应该是可能的,因为inspect.exe是一个外部程序,可以以某种方式访问​​数据

我在Python中这样做,因为目标应用程序已经用Python编写。

2 个答案:

答案 0 :(得分:4)

这些间谍应用可能正在使用Active Accessibility和/或UI Automation

如果您关心鼠标位置,可以尝试在工具栏HWND上调用AccessibleObjectFromWindowAccessibleObjectFromPoint,然后拨打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