我使用的是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。
我做错了什么?