El truco está en salvar un marcador en la barra de marcadores cuya url es un ejecutable o un bat que está en el sistema local.
Para evitar que el navegador nos muestre el contenido del fichero en vez de ejecutarlo, tenemos que crear un nuevo "protocolo" que en realidad no es más que la ejecución de una shell para nuestro programa.
Para crear el protocolo, creamos una entrada de registro como, por ejemplo, appurl.reg
Windows Registry Editor Version 5.00y lo registramos (click derecho-> Combinar). Esto nos crea el "protocolo" appurl. Ahora creamos el fichero
[HKEY_CLASSES_ROOT\appurl]
@="URL:AutoHotKey AppURL Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\appurl\DefaultIcon]
@="appurl.exe,1"
[HKEY_CLASSES_ROOT\appurl\shell]
[HKEY_CLASSES_ROOT\appurl\shell\open]
[HKEY_CLASSES_ROOT\appurl\shell\open\command]
@="\"C:\\directorio\\programa.bat\" \"%1\""
c:\directorio\programa.batcon nuestro código.
Finalmente, en el chrome vamos a Marcadores->Añadir página y en la url ponemos
appurl://lo-que-queramos-pasar-a-programaba.bat
Si queremos llamar al protocolo desde chrome, podemos usar
window.location.assign("appurl://algo");
Referencias:
http://www.autohotkey.com/board/topic/71831-application-url-launch-local-application-from-browser/
http://stackoverflow.com/questions/2330545/is-it-possible-to-open-custom-url-scheme-with-google-chrome