我写了一些代码来观察窗口标题的变化。它适用于我的 Windows 7 中的不同窗口。我像这样使用 SetWinEventHook:
SetWinEventHook(EVENT_OBJECT_NAMECHANGE,
EVENT_OBJECT_NAMECHANGE,
0,
WinEventCallback,
processId,
threadId,
WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS | WINEVENT_SKIPOWNTHREAD);
打回来:
void CALLBACK WinEventCallback(HWINEVENTHOOK hWinEventHook,
DWORD dwEvent,
HWND hwnd,
LONG idObject,
LONG idChild,
DWORD dwEventThread,
DWORD dwmsEventTime)
{
qDebug("Window %p", hwnd);
...
GetWindowText(hwnd, ...);
}
对于一个特定的窗口,我一直看到调试消息“Window 0x0”,例如,我在回调中将窗口句柄设置为零。在这种情况下 GetWindowText 失败。所有其他窗口工作正常。问题是为什么?我在 Spy++ 中没有看到任何特别之处: