Hallo liebe Community,
ich habe mal wieder ein interessantes Problemchen. Ich baue gerade einen kleinen "Filemanager", der über das Windows Kontext-Menü gestartet werden soll. Das heißt man klickt mit Rechtsklick auf eine Datei und klickt im Menü "Filemanager..." an. Danach kann ich diese Datei hochladen und mir wird automatisch eine Mail generiert. So weit so gut zur Funktionalität.
Mein Problem ist nun: Wenn ich mehrere Dateien auswähle und den Kontextmenüeintrag von Windows nutze, öffnet mir Windows pro Datei eine Instanz der in der Registry verknüpften Applikation. Wie kann ich nun alle markierten Files erkennen? Ich möchte ja nicht jedes File einzeln hochladen lassen, sondern mehrere Files am Besten zippen lassen und dann erst hochladen.
Hat jemand eine Idee?
Hier die relevanten Skriptteile (wenn es funktioniert und ich fertig bin, stelle ich gerne den kompletten Filemanager zur Verfügung):
Spoiler anzeigen
global $installpath = "C:\Filemanager"
global $contextEntry = "Upload to Filemanager..."
RegWrite("HKEY_CLASSES_ROOT\*\shell\"&$contextEntry, "", "REG_SZ", "")
RegWrite("HKEY_CLASSES_ROOT\*\shell\"&$contextEntry, "Icon", "REG_EXPAND_SZ", $installpath&"\Filer.ico")
RegWrite("HKEY_CLASSES_ROOT\*\shell\"&$contextEntry&"\command", "", "REG_SZ", $installpath&'\Filer.exe "%1"')
Wenn ich jetzt "Upload to Filemanager..." im Kontextmenü von mehreren markierten Files klicke, öffnet es mir die Filer.exe mehrmals mit dem jeweiligen Dateipfad als Parameter.
Als Lösung hatte ich folgende Ansätze, die aber meiner Meinung nach noch etwas hinken:
1. FilerContext.exe => Diese Datei dann in der Registry eintragen. Diese Datei erstellt eine XML-Datei oder Text-datei mit den jeweiligen Dateipfaden, die übergeben wurden. Diese Datei kann dann von der Filer.exe ausgelesen werden. hmm.. Ihr merkt beim Lesen vermutlich schon woran es hakt.
2. FilerContext.exe => Diesmal übergibt die FilerContext.exe den an sie übergebenen Parameter an die Filer.exe, sofern der Prozess existiert. Da ist allerdings meine Frage: geht das!? Wenn ja wie?
Ich freue mich auf eure Unterstützung und kreativen Lösungsansätze!
Benni