GetGUIThreadInfo()返回TRUE,但GUITHREADINFO只包含零

时间:2015-05-23 12:56:00

标签: c windows winapi focus

我使用的是Windows 7和Microsoft Visual Studio 2010。 这是我下面的代码(我启动notepad.exe并希望找到有针对性的子窗口句柄:

STARTUPINFO         si  = { 0 };
PROCESS_INFORMATION pi  = { 0 };

memset(&si, 0, sizeof(si));
memset(&pi, 0, sizeof(pi));

si.cb = sizeof(si);

BOOL bResult = CreateProcess("c:\\windows\\syswow64\\notepad.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
WaitForInputIdle(pi.hProcess, INFINITE);
HWND hWnd = FindWindow("Notepad", NULL);

DWORD dwTID;

dwTID = GetWindowThreadProcessId(hWnd, NULL);
GUITHREADINFO info = { sizeof(info) };

AttachThreadInput(GetCurrentThreadId(), dwTID, TRUE);
GetGUIThreadInfo(dwTID, &info);
AttachThreadInput(GetCurrentThreadId(), dwTID, FALSE);

FindWindow()返回正确的hWnd;并且GetWindowThreadProcessId()返回窗口线程的正确TID(已在Spy ++中检查过)。 AttachThreadInput()GetGUIThreadInfo()都返回TRUE。但是info只包含零(除了cbSize成员,其中包含结构大小)。如果我使用GetFocus(),我仍然会收到NULL。

我做错了什么?

0 个答案:

没有答案