2017-02-03 29 views
1

我想以编程方式从系统托盘中的工具提示中检索信息。如何以编程方式检索microsoft inspect.exe中“name”字段的等效项?

This shows the tooltip I'm talking about

该图像显示工具提示。现在

,我发现,通过使用微软的inspect.exe,这是“基于Windows的工具,可以选择任何UI元素并查看元素的辅助数据”,它是在理论上可以检索这值以编程方式。

悬停在工具栏上的潘多拉图标显示我以下属性

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

它显示了一个包含我所需要的确切数据的一个“名称”属性。我不确定如何使用win32api以编程方式检索此值。我已经有一个hwnd到潘多拉图标。

此外,不同的UI间谍工具,UiSpy.exe称此相同的属性 “帮助文件”(不同的歌曲名称:P)

enter image description here

我使用getWindowText(pandoraSystrayIconHwnd)试过,但返回不同的文本。有谁知道这个“名称”值是什么,以及如何使用win32api检索它?因为inspect.exe是可以访问的数据莫名其妙

我在Python这样做,因为目标应用是用Python编写已经是一个外部程序应该是可能的。

+0

你只对当前播放的歌曲感兴趣吗? – andlabs

+0

@andlabs最后,是 – Azeirah

+0

然后@安德斯答案中的“其他选择”链接就是你想要的。 – andlabs

回答

3

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

如果您关心鼠标位置,然后致电IAccessible::get_accName,您可以尝试拨打工具栏HWND或AccessibleObjectFromPoint上的AccessibleObjectFromWindow

请记住,托盘图标工具栏的类名称和窗口层次结构没有记录。

如果你只关心潘多拉而不关心其他应用程序,那么我强烈建议你首先寻找otheralternatives。也许他们有一个隐藏的窗口,标题等。

如果你不介意黑客,那么你可以看看TraySaver,它是开源的,知道存储在托盘中每个图标的数据的内部格式工具栏。请记住,它很旧,可能无法在较新版本的Windows上运行。如果你走这条路(我不推荐它),那么你必须记住,你需要支持32位和64位Explorer。

+0

可以将[Inspect](https://msdn.microsoft.com/en-us/library/windows/desktop/dd318521.aspx)工具配置为使用* Microsoft Active Accesibility *或更新的* UI Automation *接口。左上角的组合框用于在两种模式之间切换。 – IInspectable

+0

我感兴趣的属性使用UI自动化可以访问,我非常接近MSAA。我选择了这种冒险的方式,因为我有兴趣以这种方式阅读多个应用程序。 – Azeirah

0

也许GUI自动化库pywinauto可以帮助你。它使用Win32 API或UI Automation(根据您的选择)。核心概念在Getting Started Guide中描述。

方法.window_text()返回的结果与Inspect.exe中显示的Name属性完全相同。

要与托盘区域图标进行交互,您可以使用this example on StackOverflow

相关问题