Ich habe mal wieder was Neues: eine Assembly und ein Tool, mit denen man unter Vista ganz normale Programme (Exe) als Module für die Systemsteuerung registrieren kann. Inklusive dieser netten Tasks, über die man direkt an spezielle Funktionen herankommt. Das setzt natürlich voraus, dass man diese Funktionen so programmiert, dass sie zum Beispiel per Parameter aufrufbar sind. Meine Demo-Anwendung ist ein simples TabControl-Programm, dass per "SECONDTAB" und "THIRDTAB" auch die beiden anderen Tabs anzeigen kann, etwa
Code:
ControlPanelDemo SECONDTAB
Die Assembly könnte benutzt werden, um diese Registrierung direkt von der eigenen Anwendung durchführen zu lassen. Oder man nimmt das Registrierungstool. Ich habe es im Beispielsetup verwendet. Wer es testen will, braucht Inno Setup. Aber bitte nicht die Reihenfolge ändern! Es ist wichtig, dass das Tool zuerst die Tasks-Datei erzeugt (wenn gewünscht), denn beim Registrieren der Exe wird geprüft, ob die Tasks-Datei vorhanden ist. Wenn nicht, wird der Eintrag nicht geschrieben, und die separaten Links erscheinen auch nicht.
Das Registrierungstool (CPRegister) nutzt Dateien der Assembly (ControlPanel.API). In der Projektdatei sind nur Verknüpfungen drin. Vorteil: wenn ich etwas aktualisiere, sind Assembly und Registrierungstool gleichzeitig auf dem neusten Stand.
Wer es ohne Setup versuchen will, muss die Demo, das Registrierungstool und die beiden
XML-Dateien aus dem Setupordner in ein Verzeichnis kopieren. Zuerst wird dann die Tasks-Datei erzeugt:
Code:
CPRegister /task:ControlPanelDemo.CTasks.xml
danach wird die Demo registriert
Code:
CPRegister /register:ControlPanelDemo.Register.xml
Wenn man die Systemsteuerung jetzt öffnet, sollte das neue Modul sichtbar sein; einmal bei
System und Wartung, und einmal bei
Netzwerk und Internet. Einer der Links hat das Schildsymbol, aber ohne Auswirkungen. Die
UAC-Funktion müsste man selbst programmieren. Zum Entfernen der Anwendung aus der Systemsteuerung dann nur
Code:
CPRegister /unregister:ControlPanelDemo.Register.xml
starten.
Zur Tasks-Datei noch: Soweit ich das sehen konnte, sind absolute Pfadangaben notwendig, damit später beim Klick auf den Link auch die passende Funktion ausgelöst wird. Da man vorher nicht weiß, wohin der Anwender die Demo usw. kopieren wird, ist das natürlich schlecht. Das Registrierungstool ermittelt deswegen seinen eigenen Pfad und erstellt einen absoluten Pfad für die Einträge im <command>-Knoten der
XML-Datei. Man kann daher ohne Pfade bzw. mit relativen Angaben arbeiten (je nachdem, wo sich die
XML-Datei befindet, und wo die Anwendung liegt). Das Setup bzw. das Tool passt den Pfad dann entsprechend an.
Vorschläge? Bugs? usw.