- Einführung
-
Während der letzten Verbesserung des Programms
ChangeAge kam ich auf die glorreiche Idee, Dateien direkt an jenes Programm
schicken zu wollen. Doch das ist leichter gesagt als getan, denn die grundsätzliche
Schwierigkeit besteht darin, aus der Fülle der Möglichkeiten die passende
herauszufiltern. Also machte ich mich auf die Suche und wurde in der Tat fündig.
- Beschreibung
-
Bei ContextMenu handelt es sich um eine sogenannte Shell–Extension,
also um eine Erweiterung des Windows–Explorers. Diese Erweiterung wird nun
so erreicht, dass sich ContextMenu im Kontextmenü
des Explorers einträgt und man hierdurch einen weiteren Menüpunkt erhält.
Dadurch können ohne weitere Umwege eine oder mehrere Dateien an ein so registriertes
Programm geschickt werden.
Nun besteht der Clou bei ContextMenu darin, dass das zu
registrierende Programm über eine INI–Datei konfiguriert wird. Dies erleichtert
natürlich den Umgang mit dieser Explorer–Erweiterung enorm, da lästiges
Anpassen und Kompilieren des Quellcodes hierdurch gänzlich entfällt.
- Konfiguration
-
Bevor man ContextMenu auf dem Zielsystem installieren
kann, muss zuvor die Konfigurationsdatei erst einmal entsprechend anpasst werden.
Für diese Anpassung sind jedoch noch einige Kenntnisse notwendig, auf die an
dieser Stelle etwas genauer eingegangen werden soll.
Name der Konfigurationsdatei
Die Konfiguration der Explorer–Erweiterung ContextMenu
wird über eine simple INI–Datei gesteuert. Das haben erfahrene Entwickler
mit Sicherheit bereits vermutet. Doch ist der Konfigurationsdateiname nicht von
vornherein festgelegt! Vielmehr folgt dieser Dateiname dem Dateinamen der Binärdatei,
also dem Namen der DLL.
Mit anderen Worten, wenn der Name der DLL zum Beispiel myshex.dll
lauten würde, dann wird ContextMenu während
der Registrierungsphase auch versuchen, eine INI–Datei mit dem Namen myshex.ini zu finden, um deren Inhalt auszuwerten. Wird
zum Zeitpunkt der Registrierung keine gleichnamige Datei gefunden, dann werden automatisch
alle Standardwerte in der Windows–Registry eingetragen.
Aufbau der Konfigurationsdatei
Grundsätzlich besteht der Inhalt der ContextMenu–Konfigurationsdatei
aus zwei voneinander unabhängigen Gruppen, den sogenannten Sections.
Dabei beschreibt die Konfigurationsgruppe [ShellExtension]
alle Einträge, die zur Registrierung dieser Erweiterung im Umfeld des Windows–Explorer
benötigt werden. Alle Parameter zur Beschreibung des eigentlichen Menüs
werden in der Konfigurationsgruppe [MenuItem] zusammengefasst.
Hier nun erst einmal ein Beispiel der Konfigurationsdatei für
ContextMenu.
[ShellExtension]
Name = <shell extension's
name>
Description = <shell extension's description>
[MenuItem]
Name = <menu item's display text>
Help = <menu item's help string>
Icon = <menu item's bitmap file>
Execute = <name of the executable>
|
Vermutlich sind die Bedeutungen der jeweiligen Parameter selbsterklärend. Dennoch
kann die kurze Beschreibung der einzelnen Werte nicht schaden.
Parameter der Gruppe [ShellExtension]
|
Name
|
Der eindeutige Name der Shell–Extension. Der Standartwert ist
pdcmse.
|
|
Description
|
Eine Kurzbeschreibung, die Sinn und Zweck der Extension näher erläutert.
Der Standartwert ist PD Shell Extension.
|
Parameter der Gruppe [MenuItem]
|
Name
|
Der Anzeigetext im Kontextmenü des Windows–Explorers. Der Standartwert
ist Send to <PDCMSE>.
|
|
Help
|
Ein Hilfetext, der in der Statusbar des Windows–Explorers angezeigt wird.
Der Standartwert ist Send selected file(s) to <PDCMSE>.
|
|
Icon
|
Der Name des Bildes, das neben dem Menüeintrag angezeigt werden soll. Achtung:
Hier werden nur Bitmaps unterstützt! Weiterhin muss sich die Bitmap–Datei
noch im selben Ver- zeichnis befinden, in dem sich auch die DLL befindet. Der Standartwert
ist deficon.bmp.
|
|
Execute
|
Der Name des Programms, das bei Auswahl dieses Menüs aufgerufen werden soll.
Die Angabe des vollständigen Pfades ist hier möglich. Der Standartwert
ist notepad.exe.
|
- Installation
-
Nachdem die Konfiguration von ContextMenu vorgenommen
wurde, ist die eigentliche Installation recht einfach durchzuführen. Denn hierfür
wird der gesamte Inhalt des Downloads in das jeweilige Zielverzeichnis kopiert und
darin dann das windowseigene Registrierungstool regsvr32.exe
mit dem Namen der DLL aufgerufen. Konnte die Installation durchgeführt werden,
kann man direkt im Anschluss den neu erstellten Eintrag im Kontextmenü des
Explorers testen. Folgende Abbildung zeigt das geänderte Explorermenü,
wenn die zum Download zählenden Dateien unverändert verwendet wurden.
Ebenfalls im Download enthalten sind zwei Batch–Dateien, mit deren Hilfe die
Installation und auch die De–Installation von ContextMenu
durchgeführt werden kann. Daher empfiehlt sich eine Verwendung der entsprechenden
Skriptdatei, statt diese Aktionen "händische" auszuführen. Auch
spricht die Lösung der unten beschriebenen 64–Bit–Problematik für
die Benutzung des Skripts register.cmd zu Registrierung
von ContextMenu.
- Bekannte Probleme
-
Es besteht ein gewisses Konfliktpotential, wenn die DLL auf dem Zielsystem bereits
installiert ist und diese dann nochmals installiert wird! Denn hierdurch werden
ohne Nachfrage die zuvor eingestellten Settings durch die erneute Installation überschrieben.
Der Grund hierfür ist recht einfach zu erklären. Durch die Neuinstallation
wird zur Registrierung des Shell–Interfaces die gleiche Klassenidentifikation
(CLSID) verwendet. Das ist gemäß Definition des Component
Object Models nicht gestattet. Zur Lösung dieses Problems kann man
nur den Quellcode von ContextMenu entsprechend ändern,
um dort eine neue Klassenidentifikation einzupflegen.
- Achtung!
-
Auf 64–Bit–Windowssystemen ist die Installation der 64–Bit–Variante
dieser Shell–Extension unbedingt erforderlich, da durch den
Windows On Windows Redirector die Verwendung der 32–Bit–Version
unterdrückt wird.
Viel Spaß mit dieser Erweiterung des Windows–Explorers…
|