Winapi SetWindowsHookEx HCBT_CREATEWND GetWindowText
任何人都知道如何获取已创建窗口的文本?我在Winapi SetWindowsHookEx HCBT_CREATEWND GetWindowText,winapi,setwindowshookex,Winapi,Setwindowshookex,任何人都知道如何获取已创建窗口的文本?我在CreateWindow上设置了钩子,但是GetWindowText返回空字符串 hCBTHook = SetWindowsHookEx(WH_CBT, (HOOKPROC) &CBTHook, g_appInstance, 0); LRESULT CALLBACK CBTHook(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode == HCBT_CREATEWND) {
CreateWindow
上设置了钩子,但是GetWindowText
返回空字符串
hCBTHook = SetWindowsHookEx(WH_CBT, (HOOKPROC) &CBTHook, g_appInstance, 0);
LRESULT CALLBACK CBTHook(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode == HCBT_CREATEWND)
{
HWND hwnd = (HWND)wParam;
CHAR buf[256];
GetWindowText(hwnd, buf, 256);
}
return CallNextHookEx(hCBTHook, nCode, wParam, lParam);
}
窗口可能还没有文本,在创建窗口的过程中很早就调用了回调。窗口的名称作为CREATESTRUCT
消息的一部分传入,该消息随WM_CREATE
一起发送,这将是窗口最早可以对文本进行处理的消息。即使要硬编码一些东西,它也必须在WM\u NCCREATE
中,这在调用回调时还没有发生
但是,回调本身也会被传递到
CREATESTRUCT
。如果传递给CreateWindow
的名称是您所要的,那么这对您也是一样的。可访问性挂钩在这类事情上工作得更好。