2011-08-22 4 views
7

바탕 화면이 사용자에게 보이지 않는 경우, 즉 현재 열려있는 창에 의해 어떤 방식 으로든 완전히 덮여있는 경우에만 바탕 화면 배경을 변경하는 C# .net 프로그램을 작성하고 있습니다.열린 창문으로 바탕 화면이 완전히 폐색되었는지 여부는 어떻게 확인합니까?

이상적으로 솔루션은 데스크탑 가시성의 변화를 감지 할 때마다 이벤트를 발생 시키지만, 당장은 모든 픽셀을 스캔 (엄청나게 비효율적)하거나 주기적으로 검사하는 것 이외에 처음부터 가시성을 확인하는 방법조차 모릅니다 열려있는 모든 창을 반복하고 치수를 확인합니다 (아직 비효율적이며 구현 방법을 모르겠습니다).

나는 Windows.Forms.Screen 및 user32.dll 메서드가 속지 않았지만 here으로 나열되어 있지만 천국 효과가있는 것을 알아낼 수 없었습니다.

많은 도움을 주신 분께 감사드립니다.

+5

Windows 7 작업 표시 줄은 투명합니다. 그래서 결코 완전히 보이지 않습니다. 그렇지 않으면 EnumWindows + GetWindowRect를 피할 수 없습니다. 에어로는 창 크기에 대해 거짓말입니다. 왜 그냥 바꾸지 않는거야? –

+1

이것은 흥미로운 시나리오입니다. 나는 그것이 보이지 않을 때에 만 배경을 바꾸는 것을 생각하지 않았을 것이다. – Amy

+0

바탕 화면이 완전히 덮여 있지만 불투명도가 1 % 인 창은 어떻게됩니까? 불투명도 99 %? – AakashM

답변

관련 문제