[英]Get text from a button in an application using win32 C++ and hooks
我試圖使用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一起使用,但它仍然無效。 我想采用這種方法並從其他應用程序中的按鈕,文本框中檢索文本。
您可以簡單地使用輔助功能:
#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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.