Anyboby知道如何获取已创建窗口的文本?我在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);
}
答案 0 :(得分:2)
窗口可能还没有文本,在窗口创建过程中很早就会调用回调。窗口的名称作为CREATESTRUCT
消息的一部分传入,WM_CREATE
消息是最早的窗口可以对文本进行操作。即使是硬编码的东西,它也必须在WM_NCCREATE
中,当你的回调被调用时,它仍然没有发生。
然而,回调本身也会传递CREATESTRUCT
。如果传递给CreateWindow
的名称就是您所追求的名称,那么available也是如此。