2015-01-21 4 views
-1

어쨌든 응용 프로그램의 특정 전경 창을 가져올 수 있습니까? 예를 들어, 전체 Skype 응용 프로그램 중 HWND이 아니라 현재이 응용 프로그램의 일부 내부 창 (대화창의 텍스트 편집) 일 수 있습니다.응용 프로그램의 특정 전경 창을 얻는 방법

미리 감사드립니다.

+1

[GetActiveWindow] (https : // msdn. microsoft.com/en-us/library/windows/desktop/ms646292.aspx). 각 스레드 (또는 입력 연결 스레드 그룹)에는 활성 창이 있으므로 응용 프로그램은 여러 개의 활성 창을 동시에 가질 수 있습니다. – IInspectable

+1

현재 응용 프로그램의 최상위 활성 창을 반환하지 않겠습니까? 그는 어떤 애플리케이션의 현재 포커스가있는 창에 접근하려고합니다 ... 그러면'GUITHREADINFO.hwndFocus'가 그 대답이 될까요? 아니면 @FrozenHeart가 자동화에 더 적합한 것이 될 수있는 일을하고 싶습니까? – andlabs

답변

0

EnumChildWindows를 사용할 수 있습니다.

기본적으로 원하는 특성을 가진 것을 찾을 때까지 지정된 창에있는 하위 창을 통과합니다.

BOOL CALLBACK findChildWithClass(HWND hwndTest,LPARAM lParam) { 
    char *pszClass = (char *)lParam; 
    char szClass[64]; 
    GetClassName(hwndTest,szClass,64); 
    if (strlen(szClass) < 1) return TRUE; 
    if (0 == _strnicmp(pszClass,szClass,min(strlen(pszClass),strlen(szClass)))) { 
     hwndFoundChild = hwndTest; 
     return FALSE; 
    } 
    EnumChildWindows(hwndTest,findChildWithClass,lParam); 
    if (hwndFoundChild) 
     return FALSE; 
    return TRUE; 
    } 

그래서, 기능 "findChildWithClass : 다른 곳

EnumChildWindows(HWND_PARENT,findChildWithClass,(LPARAM)"NetUIHWND"); 

그리고 - 그리고 여기 코드는 모든 응용 프로그램 윈도우의"부모 "HWND_DESKTOP

것을 알고하는 것이 좋다 "는 지정된 부모의 다음 자식에 대한 핸들을 사용하여 Windows에서 반복적으로 호출됩니다. 해당 하위 창의 특성이 찾고있는 것과 일치하는 경우 (이 경우 클래스 이름) 함수는 전역 정적 값을 설정하고 FALSE를 반환하여 열거를 중지해야 함을 나타냅니다.

Spy ++를 사용하여 모든 창의 클래스 이름을 가져올 수 있습니다.이 경우 spy ++를 사용하여 MS Word 프레임 창 이름을 찾습니다. 그러나 특정 코드는 전송 된 모든 자식의 모든 하위를 볼 것이기 때문에이를 사용하는 MS Word의 "내부"창도 찾을 수 있습니다. 또한 클래스 이름을 사용할 필요가 없습니다. 아마도 윈도우의 다른 부분 (창 내용)은 창 (Skype?)을 발견하려고하는 응용 프로그램에 고유합니다.

+0

* 모든 응용 프로그램 창의 "상위"는 HWND_DESKTOP *입니다. 그건 사실이 아니야. 최상위 창에는 부모가 없습니다. 그리고 일반적으로 그들은 소유자도 없습니다. –

+0

실제로 HWND_DESKTOP은 0입니다. EnumChildWindows를이 값과 함께 사용하면 실제로 모든 최상위 창을 찾습니다. –

+0

나는 고쳐졌다. 나는 혼란 스러웠다. 나는'HWND_DESKTOP'이 실제 윈도우가 될 것이라고 생각했지만 그렇지 않습니다. FWIW 나는 질문자가 당신의 대답에서 찾을 수있는 것 이외의 것을 알고 싶어한다고 생각합니다. 그러나 나는 그 질문이 분명하다고 생각하지 않는다. askers 다른 질문을 보면서 나는 asker가 입력을받을 창을 알고 싶어한다고 생각한다 : http://stackoverflow.com/questions/28067103/how-to-capture-any-specific-key-pressing-from-all-running-applications -in-window –

관련 문제