Я пытаюсь получить HWND и ThreadID для текущего сфокусированного окна.
Обычно GetForegroundWindow (), а затем вызов GetThreadProcessId () дает мне правильную информацию.
Но в случае IE8 HWnd GetForegroundwindow () дает мне HWND фрейма IE, но на самом деле сфокусированное окно (объект документа или Internet Explorer_server) отличается (работает в другом процессе). Так что подход GetForegroundWindow () не работает.
Итак, я использовал GetGuiThreadInfo (DWORD tid) и передал ему threadId, полученный из GetForegroundWindow ... что-то вроде этого;
DWORD tid = GetWindowThreadProcessId(GetForegroundWindow(),0);
GetGuiThreadInfo(tid,&guiThreadInfoObject);
HWND focus = guiThreadInfoObject.hwndFocus;
Используя вышеупомянутый подход, я получаю правильный HWND для объекта Internet Explorer_server, который является правильным.
Однако я не понял, хотя GetGuiThreadInfo () получает ThreadId потока в другом процессе, то есть IE Frame, как он может получить информацию из потока об объекте Internet Explorer_server, который находится в другом процессе и потоке?
Спасибо