C# -Win32 : 초점이 손실 된 후 가장 맨 위 창문을 손에 넣습니까?
문제
WPF 응용 프로그램에서 Win32 API를 파헤 치려고합니다 (Systray를 통해 실행).
Systray 아이콘을 클릭 할 때 사용자에게 ContextMenu를 제시합니다.
나는 그 창 (초점을 잃어버린 창)을 처리하고 싶고 다른 접근 방식으로 시도했습니다.
GetForeGroundWindow()
GetTopWindow()
GetDesktopWindow()
그러나 끝없이. 나는 현재 모든 프로세스를 통해 반복하고 메인 감도를 얻고 각 창의 zoRDER를 확인하고 있습니다.
그러나 나는 더 쉽고 똑똑한 방법이 있다고 생각했다. 단지 하나의 오래된 Petzold Tome에서 Google이나 리콜 할 수 없습니다.
또 다른 방법은 Systray 메뉴입니다 ~ 아니다 활성화 될 때 집중하기 위해?
감사!
해결책
가장 맨 위 창문을 얻을 수 있습니다 ~ 전에 메뉴 항목에 관계없이 사용자가 결국 선택하는 메뉴를 열었습니다.
그런 다음 최상위 창이 필요한 경우 메뉴를 열기 전에 얻은 값 만 사용할 수 있습니다.
다른 팁
설명 된 Z- 인덱스 반복보다 간단한 것이 있다고 생각하지 않습니다. Systray 메뉴 가지다 그렇지 않으면 사람들은 그것을 사용할 수 없기 때문에 집중합니다 (예 : 키보드). 그리고 초점이 맞춰지면 전경 창이되므로 기존 전경 창은 시스템의 다른 부인 창과 구별되지 않고 남겨집니다. 진실로, Z-Index Check IMHO만이 유일한 방법입니다.
제휴하지 않습니다 StackOverflow