현재 Focussed Window 용 HWND 및 ThreadID를 얻으려고합니다.GetGuiThreadInfo()는 어떻게 작동합니까?
일반적으로 GetForegroundWindow()를 호출 한 다음 GetThreadProcessId()를 호출하면 정확한 정보를 얻을 수 있습니다.
IE8의 경우 HWnd GetForegroundwindow()는 IE 프레임의 HWND를 제공하지만 실제로 포커스 된 윈도우 (문서 객체 또는 Internet Explorer_server)는 다릅니다 (다른 프로세스에서 실행 중임). 따라서 GetForegroundWindow() 접근 방식은 작동하지 않습니다.
그래서 GetGuiThreadInfo (DWORD tid)를 사용하여 GetForegroundWindow에서 얻은 threadId를 전달했습니다.
DWORD tid = GetWindowThreadProcessId(GetForegroundWindow(),0);
GetGuiThreadInfo(tid,&guiThreadInfoObject);
HWND focus = guiThreadInfoObject.hwndFocus;
위의 방법을 사용하면 올바른 Internet Explorer_server 개체에 대한 올바른 HWND를 얻을 수 있습니다. 그러나 GetGuiThreadInfo()가 IE 프레임 인 다른 프로세스에서 스레드의 ThreadId를 가져오고 있다고해도, 나에게 다른 프로세스와 스레드에있는 Internet Explorer_server 개체에 대한 threadinfo를 얻을 수있는 방법이 무엇인지 이해할 수 있습니까?
감사
감사합니다. 지금 올바른 결과를 얻고 있습니다. 항상 그렇다는 뜻입니까? 이것은 GetGUIThreadInfo() 메서드의 예상되는 동작인지, IE8과 같은 다른 모든 응용 프로그램에서도 동일하게 동작하는지 확인하고 싶습니다. – Prakash
내가 말했듯이, 그것은 의미가 있지만, 명시 적으로 문서에 언급되어 있지 않습니다. – peterchen