2011-08-22 57 views
7

我正在用C#.net編寫一個程序,它只在桌面對用戶不可見時才改變桌面背景,即當前打開的窗口以某種方式完全覆蓋桌面背景。如何檢查打開的窗口是否完全遮擋桌面?

理想情況下,只要檢測到桌面可見性發生變化,解決方案就會觸發一個事件,但現在T'm甚至不知道如何首先檢查可見性,而不是掃描每個像素(令人難以置信的低效率)或定期循環瀏覽所有打開的窗口並檢查它們的尺寸(仍然效率低下,我不知道如何實現)。

我一直在與Windows.Forms.Screen和user32.dll方法列出here,但避難所沒有找到任何有效的辦法。

非常感謝任何人的幫助!

+5

Windows 7任務欄是透明的。所以它永遠不會完全看不見。你不能以其他方式避免EnumWindows + GetWindowRect。哦,Aero躺在窗戶的大小上。你爲什麼不改變它。 –

+1

這是一個有趣的場景。我不會想到僅在不可見時更改背景。 – Amy

+0

如果桌面完全覆蓋,但通過1%不透明窗口會發生什麼情況? 99%的不透明度? – AakashM

回答