C# Programm in das Kontextmenü von Ordner --> aktuellen Ordner als Parameter übergeben

-=Renegade=-

Lt. Junior Grade
Registriert
Nov. 2006
Beiträge
427
Hallo,

Also, ich denke der Titel sagt im groben schon aus woran es bei mir gerade scheitert.

Ich würde ein Programm gerne in das Kontextmenü bei Ordnern hinzufügen. Das sollte so weit auch gehen, das Problem, das ich momentan habe, ist folgendes:

Wie kann ich den aktuellen Ordner (also der angeklickt wurde) als Parameter an das C# Programm übergeben?
Wie muss die Main Routine im C# Programm aussehen, dass das Programm sowohl mit dem Ordner als Parameter wie auch ganz ohne Parameter (also durch normales ausführen der .exe) gestartet werden kann?


Vielen Dank im Voraus,

so long
 
Ich würde es mit windows handles probieren: Mit einem mouse-down-event könntest du das aktive Fenster holen. In VBA z.B. geht das mit der "GetActiveWindow"-Funktion aus der user32.dll. Diese Funktion gibt das Handle as long-Zahl wieder. Dieser Zahl wäre der Parameter. Vielleicht gibt es auch eine Art "GetActiveDirectory"-Funktion, die den Pfad als String holt.
 
HKEY_CLASSES_ROOT\Folder\shell\<DeinEintrag>\

Standardwert = Alles was du aufrufen willst "%1"

%1 würde in das aktuell ausgewählte Element evaluieren.

edit: Vielleicht mal ein direktes Beispiel: Mit dem Eintrag lass ich pngout rekursiv durch Verzeichnisse wandern (über ein Batch-File):

Code:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\OptimizeRecursive]
@="PNGs &rekursiv optimieren"

[HKEY_CLASSES_ROOT\Folder\shell\OptimizeRecursive\command]
@="\"D:\\.path\\OptimizePNGDirRecursive.bat\" \"%1\""
 
Ein Artikel in dem Deine Probleme beispielhaft (mit fertigem Code in C#) gelöst werden findest Du unter

http://www.codeproject.com/Articles/15171/Simple-shell-context-menu

-=Renegade=- schrieb:
Wie kann ich den aktuellen Ordner (also der angeklickt wurde) als Parameter an das C# Programm übergeben?
Geht über "%L" (siehe auch Artikel).

-=Renegade=- schrieb:
Wie muss die Main Routine im C# Programm aussehen, dass das Programm sowohl mit dem Ordner als Parameter wie auch ganz ohne Parameter (also durch normales ausführen der .exe) gestartet werden kann?
Siehe auch Artikel (Stichwort "args" von "static void Main(string[] args)" )


HTH

BigNum
 
Zurück
Oben