Hallo Robert-rex,
Das Zeug ist hier dokumentiert.
Konkret geht das so:
- REGEDIT öffnen
- In HKEY_CLASSES_ROOT einen neuen Schlüssel namens
trex
einrichten - Unter trex einen Key
shell
anlegen, darin einen Keyopen
, darin einen Keycommand
- Darin unter (Standard) einen Namen für's Protokoll vergeben (beliebig)
- Einen Zeichenfolge-Wert (REG_SZ) mit Namen
URL Protocol
anlegen, Inhalt leer
- bei
shell
unter(Standard)
den Wertopen
eintragen
- bei
command
unter(Standard)
die auszuführende Befehlszeile eintragen
Und jetzt kommt etwas Arbeit, denn der dort angegebene Befehl bekommt die URL 1:1 und url-codiert aus dem Browser übergeben. Steht da also z.B. trex:D:/files/datei.txt
, dann kommt das genau so an. Inclusive der Anführungszeichen.
Etwas schlimmer: Steht da "trex:D:\files\datei.txt
, sind die Backslashes als %5C codiert. Gegenmaßnahme: Vom Server immer die Vorwärtsschrägstriche schicken, die meisten Programme kommen damit klar. Wenn nicht, muss man das %5C im Treiberscript wieder nach \
zurückübersetzen.
Das Treiberscript muss darüber hinaus das trex: Präfix entfernen. Das ist in Windows NT Batches relativ simpel. Mein Notepad++ Treiber sieht so aus:
@echo off
set name=%1
C:\t.nt\notepad++\notepad++.exe "%name:~6%
C:\t.nt ist aus Gründen, deren Historie in die 80er zurückreicht, mein Ordner für diverse Tools. Damals war ein PATH auf 250 Stellen begrenzt, mein PATH war übervoll, meine Toolscripte lagen darum in C:\T
. Irgendwann kam WinNT, und der Ordner hieß dann C:\T.NT
. Dabei ist es geblieben, dieser Ordner hat bisher jeden Computerumzug treu mitgemacht 😂.
Was tut das Script?
Zeile 1: Standardmantra für jedes produktive Windows Script
Zeile 2: Parameter 1 in eine Umgebungsvariable übertragen. Muss sein, weil der :~ Operator für %1 nicht funktioniert.
Zeile 3: Notepad++ aufrufen und "%name:~6%
als Parameter übergeben.
%var:~start,len% ist die Substring-Operation in Windows Batches. Der Start ist nullbasierend, die Länge ist optional. Es werden die ersten 6 Zeichen übersprungen, also diese Zeichenfolge: "trex:
. Da auf diese Weise das Anführungszeichen auch verschwindet, muss es danach wieder hinzugefügt werden, deshalb steht da "%name:~6%
und nicht %name:~6%
. Näheres zur Variablenakrobatik in Windows Batches findet man auf der Kommandozeile mit "help set", "help if" und "help for".
Setze den Editor deines Vertrauens ein, speichere das Script an einer Dir genehmen Stelle, und ändere im command
Key den hinterlegten Befehl so ab, dass CMD /C das Script aufruft. Testen kannst Du es von der Windows Befehlszeile aus. Wenn das Script trex.cmd heißt, gib in dem Ordner, wo es liegt, einfach
trex "trex:dateiname"
ein - mit einem passenden Dateinamen natürlich.
Wenn Windows das Script als URL Handler aufruft, ist der Windows Systemordner das aktuelle Verzeichnis. Du solltest also immer nur Dateien mit absolutem Pfad übergeben.
Wenn Du den URL Handler bei jemand anderem installieren willst, exportiere im REGEDIT den trex-Schlüssel und importiere ihn auf dem Zielgerät. Das Treiberscript muss natürlich auch dahin.
Ich würde annehmen, dass das Treiberscript auch von einem Netzwerklaufwerk geladen werden kann…
Good Luck!
Rolf
sumpsi - posui - obstruxi