[Windows] Eigenes Kontextmenü

Hi,

heute mal zu etwas, das Ich persönlich sehr praktisch finde: Das ändern des Kontextmenüs. Was ein Kontextmenü ist, weißt du denke Ich. Falls nicht: Das ist das Menü das aufklappt, wenn auf beisp. eine Datei Rechtsgeklickt wird.
Für weniger versierte wird das kaum spannend sein, aber wenn du es noch nicht wusstest: Es gibt die Möglichkeit, dort selbst Einträge anzulegen. Nehmen wir als Beispiel einmal eine Datei. Du führst einen Rechtsklick aus, und über das Kontextmenü stehen Optionen wie z.B. ‚Öffnen‘, ‚Löschen‘, ‚Umbenennen‘, ‚Kopieren‘ und dergleichen zur Verfügung. Und dort kannst du eigens einen Eintrag anlegen. Darauf, hierfür einen eigenen Artikel in meinem Blog zu gestalten, bin Ich heute gekommen, als Ich den Pfad einer Datei kopieren wollte. So ohne weiteres ist das gar nicht möglich, denn in den Eigenschaften steht auch nur der Pfad, nicht der Dateiname selbst. Daher hab‘ Ich mir dafür etwas in’s Kontextmenü geschrieben, und wie Ich das gemacht habe, will Ich dir nun einmal zeigen.

Eigenes Kontextmenü (für Dateien) anlegen
Dafür musst du in den Registrierungs-Editor. Wie du dorthin gelangst? Ganz einfach, du navigierst Richtung C:WindowsSystem32 und startest dort die Datei ‚regedit.exe‘ mit Administratorrechten. Alternativ drücke [Win+R] und schreibe ‚regedt32‘ und Drücke [Enter].

Dort hangelst du dich zum Pfad HKEY_CLASSES_ROOT/*/Shell. Hier erstellst du einen neuen Schlüssel indem du auf /Shell rechtsklickst und über Neu->Schlüssel einen neuen Schlüssel anlegst. Benenne diesen nun. Der Name den du hier einträgst, ist der, der später im Kontextmenü zu sehen sein wird. Ich nenne es hier einmal ‚Dateipfad kopieren‘.

Führe nun auf dem eben erstellten Schlüssel ‚Dateipfad kopieren‘ einen Rechtsklick aus und erstelle auch hier einen neuen Schlüssel, diesen musst(!) du ‚command‘ nennen. Du siehst nun im rechten Fenster den Standardwert ‚(Standard)‘ vom Typ ‚REG_SZ‘, also eine einfache Zeichenfolge. Ein Wert ist noch nicht gesetzt. Dort schreibst du den Befehl, welcher ausgeführt werden soll, wenn später im Kontextmenü draufgeklickt wird. Wenn du dich in der Eingabeaufforderung ein bisschen auskennst, hast du hier keine Probleme.

Was wir wollen, ist, den Pfad zur jeweiligen Datei in die Zwischenablage zu kopieren.
Mache einen Doppelklick auf ‚(Standard)‘ und schreibe in das Textfeld folgendes:

c:windowssystem32cmd.exe /c echo „%1″|clip

Der Befehl sorgt dafür, dass der Dateipfad (%1) in die Zwischenablage kopiert wird.
So sollte das im Registrierungs-Editor bei dir nun auch aussehen:


Originalgröße

Und wenn das bei dir genauso ist, hast du es bereits geschafft. Such dir auf deinem PC nun irgendeine Datei aus, klicke rechts darauf und dann auf „Dateipfad kopieren“. Der Dateipfad ist nun in der Zwischenablage und kann in jedem Textfeld über Rechtsklick->Einfügen oder alternativ die Tastenkombi [STRG+V] wieder eingefügt werden.

Die Sache mit dem Kontextmenü kannst du für alle Dateien (wie hier eben über HKEY_CLASSES_ROOT/*/Shell), aber auch für Ordner/Verzeichnisse organisieren. Für Verzeichnisse gibt es mit Reg-Editor den Pfad /HKEY_CLASSES_ROOT/Folder/Shell.
Daher hier noch einige (nützliche?) Dinge die du in’s Kontextmenü einbauen kannst:

Name (Vorschlag) Befehl Anwendbar auf..
Ordnerinhalt löschen c:windowssystem32cmd.exe /c del „%1*.*“ /s /q /f Verzeichnisse
Eingabeaufforderung hier öffnen c:windowssystem32cmd.exe /k cd „%1“ Verzeichnisse
Dateiinhalt kopieren c:windowssystem32cmd.exe /c type „%1″|clip Dateien

Du kannst diese Schlüssel und dazugehörigen Werte einfacher in den Registrierungs-Editor bringen, indem du die .reg-Dateien, die Ich hier vorbereitet hab‘, HIER herunterlädst. Klick einfach doppelt drauf, dann tragen sich die 3 Schlüssel (aus der Tabelle) selbst ein. Mehr dazu steht in der Readme.txt 😉
Lass dir auch selbst noch was einfallen, möglich ist alles 😉

Grüße
Marius

3 Kommentare

  1. Hallo,
    danke für deinen Beitrag. Nach in etwa sowas hatte ich gesucht. Mein genaues Problem kann ich hiermit aber nicht lösen. Ich erkläre mal, vieleicht kannst du ja helfen 🙂 :

    Ich würde gern ein eigenes Kontextmenü definieren, welches nur für bestimmte Dateitypen gültig ist(zb. für .jpg,.png.gif)

  2. Hallo Marius,

    guter Artikel. Ich versuche im Moment eine Erweiterung in das Kontextmenü einzubauen, welches eine Datei in eine mySQL datenbank abspeichert. Dabei soll die Datei, auf die ich rechtsklicke zu einen Blob gemacht werden und dann eben in die Datenbank übertragen werden.

    Jetzt weiß ich jedoch nicht wie ich bestimmte Funktionen den Kontextmenü zuweise. Bei Internet research finde ich nur wie eine .exe in das Kontextmenü eingebunden werden kann.

    Bedeuted das jetzt, dass ich ein Programm schreiben muss welches dies erledigt?

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.