Ich liebe, dass Windows jetzt virtuelle Desktops eingebaut hat, aber ich habe einige Funktionen, die ich hinzufügen / ändern möchte. (erzwinge die Anzeige eines Fensters auf allen Desktops, starte die Task-Ansicht mit einem Hotkey, verwende Desktops pro Monitor usw.)
Ich habe nach Anwendungen und Entwicklerreferenzen gesucht, um mir beim Anpassen meiner Desktops zu helfen, aber ich hatte kein Glück.
Hat eine Idee, wo ich anfangen sollte?
Der programmatische Zugriff auf die virtuelle Desktop-Funktion ist sehr begrenzt, Microsoft hat nur die IVirtualDesktopManager COM-Schnittstelle. Nicht annähernd genug, um etwas Nützliches zu erreichen. Ich habe einen C # -Code geschrieben, basierend auf den Reverse-Engineering-Arbeiten von NickoTin . Ich kann nicht viel Russisch in seinem Blogbeitrag lesen, aber sein C ++ Code war ziemlich genau.
Ich muss betonen, dass es sich bei diesem Code nicht um etwas handelt, das Sie in einem Produkt festlegen möchten. Microsoft fühlt sich immer frei, undokumentierte Apis zu ändern, wann immer ihnen danach ist. Und es besteht ein Laufzeitrisiko, dieser Code interagiert nicht unbedingt gut, wenn der Benutzer auch an den virtuellen Desktops herumbastelt. Denken Sie immer daran, dass ein virtueller Desktop jederzeit angezeigt und ausgeblendet werden kann und nicht mit Ihrem Code synchronisiert ist.
Erstellen Sie ein neues C # -Klassenbibliotheksprojekt. Ich poste zuerst ComInterop.cs, es enthält die COM-Schnittstellendeklarationen, die den C ++ - Deklarationen von NickoTin entsprechen:
%Vor%Next ist Desktop.cs, es enthält die freundlichen C # -Klassen, die Sie in Ihrem Code verwenden können:
%Vor%Und schließlich ein kleines Winforms-Testprojekt, mit dem ich den Code getestet habe. Lassen Sie einfach 4 Knöpfe auf einem Formular fallen und nennen Sie sie ButtonLeft / Right / Create / Destroy:
%Vor%Die einzige echte Eigenart, die mir beim Testen aufgefallen ist, ist, dass das Verschieben eines Fensters von einem Desktop auf einen anderen den unteren Rand der Z-Reihenfolge bewegt, wenn Sie zuerst den Desktop wechseln und dann den Fenster. Kein Problem, wenn du es anders herum machst.
Tags und Links c# windows windows-10