leistungen  •  referenzen  •  download
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…

kontakt  •  impressum