使用win32c++和钩子从应用程序中的按钮获取文本
Get text from a button in an application using win32 C++ and hooks
我正在尝试使用Winapi检索计算器(calc.exe)上的按钮文本。我已经钩了WH_CALLWNDPROC和钩子工作正常。但是我无法检索任何按钮的文本(说数字7)。我使用GetDlgItemText:
TCHAR text[256];
GetDlgItemText((HWND)0x7068c, 0x89, text, strlen(text));
这里0x7068c是数字7按钮的父窗口句柄,而0x89是它的控件id。不返回任何文本,但我可以通过编程方式单击它。
我做错了什么?我试图使用SendMessage与WM_GETTEXT,但它仍然不起作用。我想采取这种方法,并从按钮,文本框在其他应用程序检索文本。
您可以简单地使用Accessibility:
#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;
}
我终于成功地做到了这一点,通过使用EasyHook挂钩DrawTextW, drawtexw, ExtTextOutW API函数检索文本按钮,标签等。在钩子函数中,我能够检索文本。这个帖子对我帮助很大。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 使用 UIAutomation 获取按钮的路径
- 如何获取资源文件中对话框的按钮控件的大小和位置
- Window.h c ++如何从开关内的数组中获取按钮的索引
- 如何从第三方程序中通过鼠标悬停获取按钮文本
- 通过浏览按钮仅获取文件夹路径
- 如何在单选按钮分组框中获取用户的选择以进行进一步处理
- 如何获取指向颜色按钮的指针
- 如何在 wxWidgets 中获取功能区中切换按钮的状态
- 通过 CGI 获取 html 提交按钮的名称
- Qt:从QTableWidget中的按钮获取文本
- 获取所选单选按钮的索引
- 使用win32c++和钩子从应用程序中的按钮获取文本
- 获取按钮的文本时,点击任何一个从按钮
- 如何获取标题栏窗口控件的 RECT(最大化、最小化、关闭按钮)?我尝试制作自定义颜色标题栏
- 我可以用什么函数来获取按钮的把手