여기 당신이 '백그라운드 프로세스'는 무엇을 의미하는 취소,하지만 아니에요는 몇 가지 아이디어입니다 :
사용 EnumWindows 당신에게 모든 바탕 화면에서 최상위의 Hwnd을 얻을 수 있습니다. 여기에는 필터링하지 말아야 할 것들이 많이 포함됩니다. Spy ++를 사용하여 HWND 트리가 어떤 모양인지, 여기에서 찾을 수있는 HWND 종류를 확인하십시오.
이 세트에서 보이지 않는 HWND를 필터링하거나 무시해야합니다 (IsWindowVisible을 사용하거나 WS_VISIBLE 스타일).
또한 WS_POPUP이 설정된 창을 필 터링합니다. 툴팁, 메뉴 팝업, 부동 툴바 등과 같은 것들입니다.
현재 활성 창을 필터링하려면 (아직 모르는 경우) idThread = 0 인 GetGUIThreadInfo를 사용하십시오. GUIHREADINFO.hwndActive는 활성 윈도우를 반환하므로, 최상위 HWND가 비활성 윈도우가 아닙니다.
특별히 최소화 된 창을 찾고있는 경우 IsIconic(hwnd)을 사용하여 검색 할 수 있습니다.
마지막으로 '배경'으로 간주되는 창을 발견하면 GetWindowText를 사용하여 제목을 가져 오거나 GetWindowThreadProcessId를 사용하여 프로세스 ID를 가져올 수 있습니다.
'EnumWindows' 및'SetForegroundWindow'에 대한 작업과 비슷합니다. – chris
* Windows 시스템이 전경 프로세스에 의해 황폐화 된 시대에 한 가지 기능이있었습니다 ... 그리고 그 이름은'SetForegroundWindow'입니다! * – Default
예, SetForegroundWindow는 내 윈도우를 맨 위에 표시합니다. 그러나 백그라운드 프로세스를 식별 할 수있는 방법이 있습니까? – Guru