【发布时间】:2015-09-30 13:09:00
【问题描述】:
我正在尝试使用 Winapi 检索计算器 (calc.exe) 上的按钮文本。我已经钩住了 WH_CALLWNDPROC 并且钩子工作正常。但我无法检索任何按钮的文本(比如数字 7)。我正在使用 GetDlgItemText:
TCHAR text[256];
GetDlgItemText((HWND)0x7068c, 0x89, text, strlen(text));
这里 0x7068c 是数字 7 按钮的父窗口句柄,而 0x89 是它的控件 ID。虽然我可以通过编程方式单击它,但没有返回任何文本。
我做错了什么?我尝试将 SendMessage 与 WM_GETTEXT 一起使用,但它仍然不起作用。我想采用这种方法并从其他应用程序中的按钮、文本框中检索文本。
【问题讨论】:
-
请给出拒绝的理由
-
您为什么希望能够做到这一点?
-
钩子是不必要的。但这不是重点。为什么你认为这些按钮的窗口文本是按钮的编号?真正的问题是什么?你不可能对 calc.exe 真正感兴趣。此外,每个版本的 Windows 都有不同的 calc.exe。你为什么不使用 UI 自动化?
-
@DavidHeffernan 按钮只是一个普通窗口。不应该吗?我已经在 Spy++ 中检查了它的属性
-
钩子帮不了你。这是一个自定义类是吗?所以,我再问一次,是什么让你相信这个自定义类将按钮的显示标题保留在它的窗口文本中?我再次指出,有许多不同版本的 calc.exe。再一次,您的目标应用程序几乎肯定会以不同的方式实现。现在不会有 calc 的自定义按钮类了吧?我是在浪费时间吗?