Kilka razy podchodziłem do tego problemu. A to kombinowałem z zakręconym JavaScriptem (bezskutecznie), a to z pluginem do Firefoxa (z powodzeniem). Aż trafiłem na artykuł o rejestrowaniu własnych protokołów, tak jak wbudowany http://
Aby przeglądarka rozpoznawała wywołanie typu winbox:192.168.88.1;admin;admin;
należy ten protokół zarejestrować w systemie.
Osobiście potrzebowałem kilku takich protokołów, przygotowałem mały zestaw skrypt+aplikacja aby ten proces zautomatyzować.
Plik konfiguracyjny url_launcher.config
:
(Nazwa pliku jest ważna, na sztywno wpisana w aplikacji url_launcher.exe
)
winbox;c:\bin\winbox.exe putty;C:\BIN\putty.exe quake;d:\games\Quake III Arena\quake3.exe
Pierwsza pozycja to nazwa protokołu, druga pozycja (oddzielona średnikiem) to ścieżka do pliku wykonywalnego obsługującego nasz protokół. Odpowiednie wpisy do rejestru wykonuje poniższy skrypt, wpisy są uzależnione od wpisów w pliku konfiguracyjnym.
Skrypturl_launcher.cmd
@echo off set URL_LAUNCHER_PATH=%~dp0 set URL_LAUNCHER_PATH=%URL_LAUNCHER_PATH:\=\\% echo Windows Registry Editor Version 5.00 > url_launcher.temp.reg FOR /F "eol= tokens=1,2 delims=;" %%I in (url_launcher.config) do ( ( echo [HKEY_CLASSES_ROOT\%%I] echo @="Winbox URI" echo "URL Protocol"="" echo [HKEY_CLASSES_ROOT\%%I\DefaultIcon] echo @="\"%%J\",0" echo [HKEY_CLASSES_ROOT\%%I\shell] echo @="open" echo [HKEY_CLASSES_ROOT\%%I\shell\open] echo [HKEY_CLASSES_ROOT\%%I\shell\open\command] echo @="\"%URL_LAUNCHER_PATH%url_launcher.exe\" \"%%1\"" ) >> url_launcher.temp.reg ) regedit /s url_launcher.temp.reg del url_launcher.temp.reg
Do tego wszystkiego, potrzebny jest mały programik, który obrobi dane wejściowe i wywoła nam aplikację docelową url_launcher.exe
Wracając do naszego protokołu winbox:192.168.88.1;admin;admin
, po wpisaniu go w pasku adresu przeglądarki i uruchomieniu, zostanie uruchomiony program z parametrami c:\bin\winbox.exe 192.168.88.1 admin admin
. Analogicznie z putty:8.8.8.8;-l;root
zostanie uruchomiony c:\bin\putty.exe 8.8.8.8 -l root
Aby wszystko zadziałało bezproblemowo, wszystkie pliki powinny znajdować się w tym samym katalogu.
I na zakończenie: to rozwiązanie jest uniwersalne, działa w każdej przeglądarce.