Ich versuche, an einem Projekt zu arbeiten, wo ich das Windows 7 Wallpaper entweder mit OpenGL/DirectX oder GDI animieren kann. Ich sah, wie sich die Windows-Desktop-Fenster werden angelegt, und ich herausgefunden das ganzeWas behandelt eigentlich die Zeichnung des Windows Wallpaper?
"Progman" -> "SHELLDLL_DefView" -> "SysListView32"
Hierarchie. Ich habe versucht, SysListView32 WndProc anhängen und versuchte mit den Nachrichten mit einem injizierten C# dll rum, so dass ich verhindern konnte, dass der Desktop das Hintergrundbild zu zeichnen, wenn ich gezwungen, es über die Systemsteuerung -> personalisieren Menü zu ändern. Nichts davon verhinderte, dass das Hintergrundbild aktualisiert wurde. Daher dachte ich, dass explorer.exe nicht wirklich das Zeichnen des Hintergrunds handhabt.
Um dies zu bestätigen, tötete ich explorer.exe und richte ein kleines C# -Programm ein, das das Hintergrundbild eines 10-Sekunden-Timers in einen zufälligen verwandelt. Wie ich erwartet hatte, änderte sich das Hintergrundbild, was mich zu der Annahme verleitete, dass explorer.exe nicht wirklich mit dem Zeichnen des Hintergrundbildes fertig wird!
Leider ist das, wo ich komplett verloren bin. Ich habe keine Ahnung, was sonst noch für das Zeichnen der Tapete verantwortlich ist und wie ich die Zeichnung übernehmen kann, damit ich mit der Zeichnung umgehen kann. Ich habe versucht, dies jetzt für ein paar Tage zu googeln, mit wenig Fortschritt. Ich hoffe, dass mich hier jemand in die richtige Richtung führen kann.
['GetDesktopWindow'] (https://msdn.microsoft.com/en-us/library/ms633504) gibt ein Handle für das Desktop-Fenster mit dem Hintergrundbild zurück. In Windows 7 hat dieses Fenster eine Kernel-Modus-Fensterprozedur "win32k! XxxDesktopWndProc" (von win32k.sys), die "win32k! XxxInternalPaintDesktop" aufruft. Ähnliche Funktionen sind 'win32k! XxxDrawWallpaper' und' win32k! XxxSetDeskWallpaper'. Es gibt auch den Benutzermodus ['PaintDesktop'] (https://msdn.microsoft.com/en-us/library/dd162758), der schließlich' win32k! XxxInternalPaintDesktop' aufruft. – eryksun
@eryksun: Dies sollte eine Antwort sein. – ybungalobill
Der vlc Media Player verfügt über eine Funktion, um ein Video als Hintergrundbild anzuzeigen. Sie könnten überprüfen, wie sie es tun (wahrscheinlich die Art, wie @eryksun beschrieben wird) –