miércoles, 19 de marzo de 2014

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

2 comentarios:

Anónimo dijo...

que tal.. intento probar tu solucion.. en lo personal necesito ejecutar un .exe
.. intente reemplazar lo que tu tienes como programa.bat por mi aplicacion.exe .. pero no me funciono...

"c:\directorio\programa.bat
con nuestro código."

En el marcador.. agrege

appurl://c:\directorio aplicacion\aplicacion.exe


"appurl://lo-que-queramos-pasar-a-programaba.bat"

inclusive al momento de hacer llamar la aplicacion con el
window.location.assign
le puse

window.location.assign("appurl://c:\directorio aplicacion\aplicacion.exe");

"window.location.assign("appurl://algo");"


podrias ayudarme para ver si algo anda mal? mi version de chrom: Versión 34.0.1847.131 m

de antemano mil gracias

ariel
lcrt_1@hotmail.com

Unknown dijo...

El truco funciona perfectamente. falto decir que para que funcione se debe crear un MARCADOR, pues desde la barra de direcciones NO FUNCIONA en Chrome (En firefox sí)a lo mejor es por la integración con el buscador web. Si necesitan crear accesos a varios programas, pues se crean varios protocolos appurl1, appurl2 ... y como se sabe se puede lanzar cualquier aplicación desde un batch. y hasta se pueden ocultar la ventana del CMD.