Desktop erweitern
So geht's: Kontextmenüs selbstgemacht
Die
Kontextmenüs unter Windows sind
problemlos um eigene Einträge erweiterbar
schon ein Zweizeiler genügt.
Eines der
schönsten Dinge an der Arbeitsoberfläche von
Windows ist die
Möglichkeit, darauf die unterschiedlichsten
Objekte abzulegen. Aber oftmals ist nach
intensiver Arbeit gerade der Desktop komplett mit
unzähligen Fenstern bedeckt, so dass man nur nach
vielen Mausklicks an die darauf abgelegten
Dateien gelangt. Als Lösung für diesen
lästigen Umstand könnte man sich einen Eintrag
im Kontextmenü des Startknopfes vorstellen, der
den betreffenden Ordner öffnet denn
schließlich ist die Arbeitsoberfläche nichts
anderes als ein ganz normales Verzeichnis.
Eine gute Idee,
nur wird sie von Windows zunächst nicht geboten.
Dennoch gibt es eine Möglichkeit hierfür, da sichdie Shell dank ihres modularen Aufbaus im
Handumdrehen erweitern lässt auch um
Einträge in den diversen Kontextmenüs.
Mit zwei
Zeilen ist man dabei ...
Der Schlüssel zu eigenen
Kontextmenüeinträgen liegt wie so oft
in der Registrierung von Windows. Unter
HKEY_CLASSES_ROOT sind alle dem System bekannten
Objekttypen eingetragen. Dabei kann es sich um
ganz normale Dateitypen wie beispielsweise .txt
handeln. Aber es sind auch allgemeinere Einträge
vorhanden, etwa *, Folder oder Drive. Diese
stehen für beliebige Dateien, Ordner und
Laufwerke. Je nach Bezug kann nun für den
betreffenden Objekttyp ein Eintrag für dessen
Kontextmenü vereinbart werden, die im
Unterschlüssel Shell aufgenommen werden. Soll
beispielsweise im Kontextmenü von Ordnern ein
zusätzlicher Eintrag aufgenommen werden, so
lautet der betreffende Schlüssel HKEY_CLASSES_ROOT \Folder \Shell (zum
Verständnis: Auch der Startknopf von Windows gehört zur Gattung der Ordner). Um nun
den eingangs erwähnten Eintrag zum Öffnen des
Desktop-Ordners zu verwirklichen, sind folgende
Schritte nötig:
- Zunächst
ist der Registrierungseditor regedit.exe
zu starten und damit der Schlüssel
HKEY_CLASSES_ROOT \Folder \Shell zu
öffnen.
- Hierin wird
dann ein Unterschlüssel mit beliebigen
Namen angelegt, beispielsweise OeffneDesktop. Bei der Namensgebung ist
allerdings darauf zu achten, dass keine
Umlaute oder sonstige Sonderzeichen
verwendet werden.
- Im dritten
Schritt ist diesem neuen Schlüssel dann
eine Zeichenkette mit dem Text für den
Kontextmenüeintrag zuzuweisen,
beispielsweise Öffne &Desktop.
Hierbei sind Umlaute und dergleichen
zugelassen. Mit dem Ampersand (&)
kann zudem festgelegt werden, welches
Zeichen als Hotkey fungieren soll
in diesem Fall ist es das D von
»Desktop«.
- Der
Schlüssel OeffneDesktop erhält nun
einen weiteren Unterschlüssel namens
Command.
- Wie der
Name bereits vermuten läßt, erhält
dieser Unterschlüssel eine Zeichenkette
mit dem auszuführenden Befehl. Zum
Öffnen des
Arbeitsoberflächenverzeichnisses ist
hier Explorer c:\windows\desktop
einzutragen.

Das war schon
alles! Wird jetzt mit der rechten Maustaste auf
den Startknopf oder das Icon eines Verzeichnisses
geklickt, erscheint auch der Eintrag Öffne
Desktop. Ein weiterer Klick darauf, und der
gewünschte Ordner wird geöffnet.
Wer den Umgang
mit dem Registrierungseditor weniger schätzt und
statt dessen lieber mit fertigen Scripts
arbeitet, erreicht das gleiche Ergebnis mit
folgendem Text:
REGEDIT4
[HKEY_CLASSES_ROOT\Folder\shell\OeffneDesktop]
@="Öffne &Desktop"
[HKEY_CLASSES_ROOT\Folder\shell\OeffneDesktop\command]
@="Explorer.exe C:\\WINDOWS\\Desktop"
Wird er unter
beliebigem Namen, aber mit der Endung .reg
gespeichert, so genügt ein Doppelklick auf diese
Datei, und schon sind die entsprechenden
Einträge gemacht und das Kontextmenü
erweitert. Man lasse sich nicht durch die vielen
Rückstriche (\) verwirren, denn teilweise
handelt es sich nur um Ersatzzeichen. So steht \\
für einen einzelnen Rückstrich und \" für
ein Anführungszeichen.
Übrigens: Die
in Microsofts Power Toys enthaltenen Tools
»Explore here« und »DOS here« zum Öffnen des
Explorers beziehungsweise einer DOS-Box über das
Kontextmenü eines Ordners funktionieren exakt
genauso:
REGEDIT4
[HKEY_CLASSES_ROOT\Directory\shell\DosHere]
@="Command &Prompt Here"
[HKEY_CLASSES_ROOT\Directory\shell\DosHere\command]
@="C:\\WINDOWS\\command.com /k cd
\"%1\""
Eine weitere
praktische Anwendung für ein »aufgebohrtes«
Kontextmenü wäre das Öffnen beliebiger Dateien
mit dem Standard-Editor. Denn die vielen
Textdateien wie beispielsweise readme.now, file_id.diz oder scandisk.log lassen sich nicht
ohne weiteres mit einem Doppelklick öffnen
und wer will schon all diese Typen in die
Registrierung mit aufnehmen? Hier die Lösung:
REGEDIT4
[HKEY_CLASSES_ROOT\*\shell\MitNpOeffnen]
@="Mit &Notepad öffnen"
[HKEY_CLASSES_ROOT\*\shell\MitNpOeffnen\command]
@="notepad.exe \"%1\""
Als Dateityp
wurde bewußt der Stern verwendet. Dadurch hält
der Anwender in den Kontextmenüs einer jeden
Datei den Eintrag Mit Notepad öffnen, so dass er fortan für alle
Fälle gewappnet ist. Noch ein Wort zur letzten Listingzeile.
Das erste und letzte Anführungszeichen darin grenzen die
Zeichenkette an sich ein. Die Zeichenfolge \"%1\" wird bei der
Eintragung in die Registrierung dann in "%1" aufgelöst. Für %1
wird später der Name des betreffenden Objekts eingesetzt. Da es
sich dabei mitunter um einen langen Dateinamen mit Leerzeichen
handeln kann, muß dieser in Anführungszeichen gesetzt werden
sonst wird der Name in mehrere Parameter
aufgesplittet, und Notepad erhält
fälschlicherweise nur den ersten Teilnamen.
Etwas
Luxus
Alle bisher gezeigten Beispiele haben
allerdings einen gemeinsamen Nachteil: Sie lassen
sich nur mit Mühe wieder deinstallieren. Um der
Sache diesen Stachel zu nehmen, kann auf die
Hilfe von Windows-INF-Dateien zurückgegriffen
werden:
[version]
signature="$CHICAGO$"
[DefaultInstall]
AddReg = OeffneDesktop.AddReg
CopyFiles = OeffneDesktop.CopyFiles.Inf
[DefaultUninstall]
DelReg = OeffneDesktop.AddReg
DelFiles = OeffneDesktop.CopyFiles.Inf
[SourceDisksNames]
55="Öffne Desktop", "", 1
[SourceDisksFiles]
ZeigDtop.Inf=55
[DestinationDirs]
OeffneDesktop.CopyFiles.Inf = 17
[OeffneDesktop.CopyFiles.Inf]
ZeigDtop.Inf
[OeffneDesktop.AddReg]
HKCR, Folder\shell\OeffneDesktop, , , "%OeffneDesktopMenuEntry%"
HKCR, Folder\shell\OeffneDesktop\command, , , "Explorer.exe
%10%\Desktop"
HKCR, Drive\shell\OeffneDesktop, , , "%OeffneDesktopMenuEntry%"
HKCR, Drive\shell\OeffneDesktop\command, , , "Explorer.exe
%10%\Desktop"
HKLM, %Uninstall%, DisplayName, , "%OeffneDesktopUninstEntry%"
HKLM, %Uninstall%, UninstallString, , "RunDll
setupx.dll, InstallHinfSection DefaultUninstall
132 %17%\ZeigDtop.Inf"
[Strings]
OeffneDesktopMenuEntry = "Öffne
&Desktop"
OeffneDesktopUninstEntry = "Öffne Desktop
(Entfernen)"
Uninstall=
"Software\Microsoft\Windows\CurrentVersion\ ...
Uninstall\OeffneDesktop"
Richtig
eingesetzt hat man damit nicht nur die
Möglichkeit, die entsprechenden
Registrierungseinträge vom System selbst
vornehmen zu lassen, sondern auch eine
entsprechende Deinstallationsroutine einzubauen.
Die Installation startet man über den Eintrag
Installieren des betreffenden Kontextmenüs
die Deinstallation über den Punkt
Software in der Systemsteuerung.
Als Basis
hierfür können die entsprechenden INF-Scripts
von Explore here und DOS here aus den bereits
genannten Power Toys dienen. Hierbei ist aber
dringend auf ein paar Dinge zu achten, da sich
das Script sonst nicht installieren läßt (und
die Fehlermeldungen mehr als irreführend sind):
- Die Namen
von Registrierungsschlüsseln dürfen
keine Umlaute oder Sonderzeichen
enthalten, innerhalb von Zeichenketten
(Sektion [Strings] und so weiter) sind
diese aber erlaubt.
- Der
Dateiname der INF-Datei selbst darf kein
langer Dateiname sein. Das Verzeichnis,
in dem sich die INF-Datei befindet, darf
ebenfalls keine langen Namen enthalten.
Zum Verständnis
noch ein paar klärende Worte zu den in den
INF-Beispielen verwendeten Standardvariablen:
HKLM
bedeutet HKEY_LOCAL_MACHINE
HKCR bedeutet HKEY_CLASSES_ROOT
10 steht für das Windows-Verzeichnis
17 steht für das INF-Verzeichnis
55 steht für das aktuelle Verzeichnis
Weitere
Beispiele
Alle zu diesem Artikel gehörenden
Beispieldateien sind hier im Anschluss als ZIP-Packerarchiv beziehbar.
Zusätzlich sind u.a. noch folgende
Kontextmenüerweiterungen enthalten:
startenc.inf für den Start des Norton Commanders
in einem bestimmten Verzeichnis (in Anlehnung an
DOS here)
neuordnr.inf zum (schnelleren) Anlegen
eines neuen Ordners.
|