获取Windows中任何应用程序的屏幕位置的任何UI元素

时间:2010-05-13 20:23:22

标签: c# .net user-interface winapi

是否可以使用任何编程语言(可能使用Microsoft SDK)获取任何应用程序的窗口中的UI元素的屏幕位置?如果是这样,你能否提供一个例子的指导?谢谢你,这几天让我感到痛苦!

请考虑它是外部应用程序。例如,如果我打开MS word,我的应用程序应该能够获得“Bold”按钮的屏幕位置。

到目前为止,我相信我需要使用钩子。

1 个答案:

答案 0 :(得分:2)

要获得外部应用程序中控件的位置,您基本上必须执行以下步骤:

  • 调用枚举所有顶级窗口的EnumWindows
  • 对于您感兴趣的顶级窗口,请致电EnumChildWindows
  • 为要检索其位置的子窗口(控件)调用GetWindowRect

这方面的细节取决于你正在努力实现的目标。

另外,您可以将Windows自动化API(http://msdn.microsoft.com/en-us/library/dd561932(VS.85).aspx)与GetCurrentPorpertyValue(UIA_BoundingRectanglePropertyId, result)一起使用。

我不知道是否有这个函数的托管包装器,但你可以回退到P / Invoke。

还要了解Windows SDK(http://msdn.microsoft.com/en-us/library/ms727247.aspx)附带的UI Spy工具。