我正在尝试使用Winapi检索Calculator(calc.exe)上的按钮文本。我已挂钩WH_CALLWNDPROC并且钩子工作正常。但是我无法检索任何按钮的文本(比如数字7)。我正在使用GetDlgItemText:
TCHAR text[256];
GetDlgItemText((HWND)0x7068c, 0x89, text, strlen(text));
这里0x7068c是数字7按钮的父窗口句柄,而0x89是它的控制ID。虽然我可以通过编程方式单击它,但不会返回任何文本。
我做错了什么?我尝试将SendMessage与WM_GETTEXT一起使用,但它仍然无效。我想采用这种方法并从其他应用程序中的按钮,文本框中检索文本。
答案 0 :(得分:6)
您可以简单地使用辅助功能:
#include "windows.h"
#include "Oleacc.h"
#include "atlbase.h"
#pragma comment(lib,"Oleacc.lib")
int main()
{
CComPtr<IAccessible> pAcc;
VARIANT varChild;
if (SUCCEEDED(AccessibleObjectFromWindow((HWND)0x000d18e0,
OBJID_WINDOW,IID_IAccessible, reinterpret_cast<void**>(&pAcc))))
{
CComBSTR bstrName;
varChild.vt = VT_I4;
varChild.lVal = CHILDID_SELF;
if (SUCCEEDED(pAcc->get_accName(varChild, &bstrName)))
{
wprintf(L"%s", bstrName.m_str);
}
}
return 0;
}
答案 1 :(得分:1)