C# -Win32 : 초점이 손실 된 후 가장 맨 위 창문을 손에 넣습니까?

StackOverflow https://stackoverflow.com/questions/633831

  •  10-07-2019
  •  | 
  •  

문제

WPF 응용 프로그램에서 Win32 API를 파헤 치려고합니다 (Systray를 통해 실행).

Systray 아이콘을 클릭 할 때 사용자에게 ContextMenu를 제시합니다.

나는 그 창 (초점을 잃어버린 창)을 처리하고 싶고 다른 접근 방식으로 시도했습니다.

GetForeGroundWindow()
GetTopWindow()
GetDesktopWindow()

그러나 끝없이. 나는 현재 모든 프로세스를 통해 반복하고 메인 감도를 얻고 각 창의 zoRDER를 확인하고 있습니다.

그러나 나는 더 쉽고 똑똑한 방법이 있다고 생각했다. 단지 하나의 오래된 Petzold Tome에서 Google이나 리콜 할 수 없습니다.

또 다른 방법은 Systray 메뉴입니다 ~ 아니다 활성화 될 때 집중하기 위해?

감사!

도움이 되었습니까?

해결책

가장 맨 위 창문을 얻을 수 있습니다 ~ 전에 메뉴 항목에 관계없이 사용자가 결국 선택하는 메뉴를 열었습니다.

그런 다음 최상위 창이 필요한 경우 메뉴를 열기 전에 얻은 값 만 사용할 수 있습니다.

다른 팁

설명 된 Z- 인덱스 반복보다 간단한 것이 있다고 생각하지 않습니다. Systray 메뉴 가지다 그렇지 않으면 사람들은 그것을 사용할 수 없기 때문에 집중합니다 (예 : 키보드). 그리고 초점이 맞춰지면 전경 창이되므로 기존 전경 창은 시스템의 다른 부인 창과 구별되지 않고 남겨집니다. 진실로, Z-Index Check IMHO만이 유일한 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top