Как проверить, закрывают ли полностью открытые окна рабочий стол?

Я пишу программу на C # .net, которая изменяет фон рабочего стола только тогда, когда рабочий стол не виден пользователю, т.е. полностью покрыт каким-то образом открытыми в данный момент окнами.

В идеале решение запускало бы событие всякий раз, когда обнаруживало изменение видимости рабочего стола, но сейчас я даже не знаю, как проверить видимость в первую очередь, кроме сканирования каждого пикселя (невероятно неэффективно) или периодического зацикливания через все открытые окна и проверка их размеров (все еще неэффективно, и я понятия не имею, как реализовать.)

Я дурачился с Windows.Forms.Screen и методами user32.dll, перечисленными здесь , но не смогли придумать ничего эффективного.

Большое спасибо всем, кто достаточно любезен, чтобы помочь!

7
задан PieFlinger 22 August 2011 в 23:57
поделиться