Ejecutar aplicación local desde el navegador (Chrome en windows)


Este pequeño workaround nos permitirá ejecutar una aplicación local desde "el navegador" sin que al usuario le parezca que "sale" de él. Es útil si tenemos que lanzar algo en batch.

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.00

[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\""
y lo registramos (click derecho-> Combinar). Esto nos crea el "protocolo" appurl. Ahora creamos el fichero
c:\directorio\programa.bat
con 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