Rolf B: Textfile via Browsern im Editor öffnen

Beitrag lesen

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 Key open, darin einen Key command
  • 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 Wert open 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