Wie ändere ich das aktuelle Windows-Design programmgesteuert?
Will ich zulassen, dass meine Benutzer zum Umschalten der aktuellen Benutzer-Thema zwischen Aero und "Windows-Klassisch" (1). Gibt es eine Möglichkeit, dass ich tun kann, das programmatisch?
Ich nicht wollen, um pop-up die "Eigenschaften von Anzeige", und ich bin skeptisch, was nur die änderung der registry. (Dies erfordert, sich Abmelden und wieder anmelden, damit die änderungen wirksam werden).
Anwendung Kürschner (mit der Codejock Bibliotheken) funktioniert auch nicht.
Gibt es eine Möglichkeit, dies zu tun?
Die Anwendung läuft/laufen auf einem Windows Server 2008 über RDP.
(1) Die Anwendung in Frage ist eine gehostete "Remote App", und ich möchten, dass Benutzer in der Lage sein, um das Aussehen der angezeigten Anwendung, um mit Ihren desktop.
InformationsquelleAutor der Frage seanyboy | 2009-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es mithilfe des folgenden Befehls:
Nachteil ist, dass dies zeigen wird, der theme-selector-dialog. Sie töten könnte, der dialog direkt nach.
InformationsquelleAutor der Antwort Campbell
Sicherlich gibt es gute Gründe für den Wunsch zu ändern, das aktuelle Thema programmgesteuert. E. g. ein automatisiertes test-tool können wechseln Sie zwischen verschiedenen Themen, um sicherzustellen, dass die Anwendung funktioniert einwandfrei mit allen von Ihnen.
Als Benutzer, können Sie das Thema ändern durch Doppelklick auf eine
.theme
- Datei im Windwos-Explorer, und schließen Sie die Control Panel applet, das erscheint. Sie können einfach den gleichen code. Die nachfolgenden Schritte funktionieren genauso gut für mich. Ich habe nur getestet auf Windows 7.SHGetKnownFolderPath()
um die "Local AppData" - Ordner für die Benutzer. Theme-Dateien sind gespeichert in derMicrosoft\Windows\Themes
Unterordner. Thema dort gespeicherten Dateien werden direkt angewendet, während die theme-Dateien an anderer Stelle gespeichert werden dupliziert, wenn Sie Sie ausführen kann. Also es ist am besten, um Dateien aus diesem Ordner nur die.ShellExecute()
zur Ausführung der.theme
Datei, die Sie in Schritt 1 gefunden.FindWindow('CabinetWClass', 'Personalization')
um das handle von dem Control Panel Fenster, das auftauchte, wenn das Thema angewendet wurde. Die "Personalisierung" - Beschriftung wird wahrscheinlich anders sein, auf nicht-US-englischen Versionen von Windows.PostMessage(HWND, WM_CLOSE, 0, 0)
schließen Sie das Fenster der Systemsteuerung.Dies ist nicht eine sehr elegante Lösung, aber es macht den job.
InformationsquelleAutor der Antwort Jan Goyvaerts
Ich weiß, das ist ein altes ticket, aber jemand hat mich gefragt, wie dieser heute. Also ab in Mike ' s post oben ich reinigte die Dinge, Kommentare und veröffentlichen die vollständige C# - Konsolenanwendung-code:
InformationsquelleAutor der Antwort isopropanol
Neben der post von "Jan Goyvaerts":
Ich SendMessage verwenden, statt PostMessage. Der Unterschied ist, dass SendMessage wartet, bis der Befehl durch das Fenster. Was bedeutet, dass in die SendMessages gibt, wissen Sie, dass das Thema dialog wird geschlossen.
Also, wenn Sie beginnen, es mit dem monströsen (aber genial) rundll32.exe Methode vorgeschlagen, von "Campbell". Sie sollten warten Sie eine Sekunde vor dem senden von WM_CLOSE. Ansonsten das Thema nicht eingestellt werden und die Anwendung schließt sich sofort.
Das code-snippet unten extrahiert eine Datei aus der Ressource (ein themepack). Dann führt die Rezeption.cpl mit rundll32.exe wartet 3 sceonds, dann sendet WM_CLOSE (0x0010), wartet, bis der Befehl zu verarbeiten (die Zeit, die für das Thema festgelegt werden).
InformationsquelleAutor der Antwort Mike de Klerk
Ich glaube, das beste, was Sie tun können, ist zu öffnen Sie Ihr Ziel .msstyles-Datei (in
c:\windows\resources\themes
), die pop-up-Eigenschaften von Anzeige-box. An dieser Stelle könnten Sie das erstellen von Unterklassen Fenster auf, programmatisch auf die richtigen Knöpfe.InformationsquelleAutor der Antwort Factor Mystic
Den Befehl für die neueren Windows-Versionen (Windows 8 und 8.1, habe es nicht versucht, auf W10 noch) ist:
oder mit vollständigen Pfaden:
Im Grunde ist es die Personalisierung CPL "öffnen" - Befehl .Thema & .themepack Erweiterungen entnommen aus registry...
Werden Sie noch am Ende mit der Personalisierung Fenster beeing öffnen, nachdem Sie diesen Befehl so zu schließen programmgesteuert Sie müssen verwenden Sie eine der vorgeschlagenen Methoden, die oben erwähnt... (ich persönlich bevorzuge das Powershell-Skript)
InformationsquelleAutor der Antwort Cube