Подтвердить что ты не робот

Что на самом деле обрабатывает рисунок обоев Windows?

Я пытаюсь работать над проектом, где я могу анимировать обои с окнами 7, либо с opengl/directx, либо с помощью GDI. Я посмотрел, как окна Windows окна выложены, и я понял, что все

"Progman" → "SHELLDLL_DefView" → "SysListView32"

иерархии. Я попытался подключить SysListView32 WndProc и попытался возиться с сообщениями с помощью вложенной С# dll, чтобы я мог помешать рабочему столу рисовать обои, когда я заставил его изменить с помощью панели управления → меню "Персонализация". Ничто из этого не остановило обои от обновления, поэтому я решил, что explorer.exe фактически не обрабатывает рисование обоев.

Чтобы подтвердить это, я убил explorer.exe и установил небольшую программу С#, которая меняет обои на 10-секундный таймер на случайный. Как я и ожидал, обои постоянно менялись, что заставило меня поверить, что explorer.exe фактически не обрабатывает рисунок обоев!

К сожалению, здесь я полностью потерялся. Я понятия не имею, что еще несет ответственность за рисование обоев, и как я могу взять на себя этот чертеж, чтобы обработать чертеж. Я попытался это сделать через несколько дней, но с небольшим успехом. Я надеюсь, что кто-то здесь поможет мне в правильном направлении.

4b9b3361

Ответ 1

Рабочий стол (включая Bitmap на нем) фактически нарисован самой оконной системой. Так что это в основном довольно глубокий и старый. Поэтому, согласно изменениям, которые произошли с NT4, я полагаю, что картина действительно выполняется в win32k.sys. Драйвер был создан для замены win32.dll, который бы сделал все в пользовательском режиме с переключением контекста.

Это говорит, что это соответствует тому, что эриксон прокомментировал на ваш вопрос: win32k!xxxInternalPaintDesktop - плохой парень.

Однако при этом необходимо будет получить DC рабочего стола HWND (0 afaik) и прикрепить его к вашему собственному чертежу. Не уверен, что вы можете превратить его в DirectX DC, но это зависит от вас, чтобы попробовать.

BTW. Можно переименовать и захватить внешние окна (HWND) и связанные с ними контексты устройств (DC). Однако вам может потребоваться привилегия или администратор. (проверена безопасность)

Ответ 2

Диспетчер окон рабочего стола отвечает за рисование обоев. Он реализован как служба Windows.