【问题标题】:How to get a handle of a label in a window如何在窗口中获取标签的句柄
【发布时间】:2021-12-08 06:57:58
【问题描述】:

如何获取窗口中标签的句柄。 我尝试了 spy4win 和 spy++,它们不起作用。

【问题讨论】:

  • 请注意,如果正在考虑的程序使用多种 .net 风格(基本上任何基于 xaml 的)单个组件将没有自己的 HWND,您需要以其他方式与它们交互.本地程序的最佳选择可能是 UIA。
  • 但是为什么按钮或者进度条有HWND呢?
  • 并非所有控件都是窗口化的。如果这是一个 Delphi VCL 应用程序(并且应用程序图标有点说明它是),那么它将具有您观察到的行为。

标签: winapi


【解决方案1】:

如果 Spy++ 无法识别 UI 元素的 HWND,则不存在。一些 UI 工具包(如 Qt)使用无窗口控件。

在这种情况下,您唯一的选择是使用UI Automation。它提供了一个框架,用于识别不依赖本机窗口的用户界面元素。您可以使用Inspect.exe 工具来验证相关应用程序是否实现了所需的接口。

如果应用程序没有实现 UI 自动化接口,除了截屏并尝试根据像素数据识别 UI 元素以及通过OCR 提取文本之外,您几乎无能为力。

【讨论】:

  • 由Delphi语言编写,带有TLabel类。
  • 编程语言和 UI 框架都没有任何相关性。最终,任何 GUI 实现都必须调用操作系统,只有两种情况需要考虑:程序使用原生控件,或者程序不使用原生控件。如果它使用本机控件,则程序可以检索控件的本机窗口句柄 (HWND)。如果没有,则程序无法检索本机窗口句柄。没有什么可取回的。你在后一个括号中。
猜你喜欢
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多