Controlador de protocolo personalizado en cromo

¿Cómo configuro un controlador de protocolo personalizado en Chrome? Algo como:

myprotocol: // archivo de prueba

Necesitaría esto para enviar una solicitud a http://example.com?query=testfile , y luego enviar la httpresponse a mi extensión.

El siguiente método registra una aplicación en un Esquema de URI. Por lo tanto, puede usar mycustproto: en su código HTML para activar una aplicación local. Funciona en una versión de Google Chrome 51.0.2704.79 m (64 bits).

Utilicé principalmente este método para imprimir documentos en silencio sin que apareciera el cuadro de diálogo de impresión. El resultado es bastante bueno y es una solución perfecta para integrar la aplicación externa con el navegador.

Código HTML (simple):

Click Me 

Código HTML (alternativo):

   $('#PrintBtn').on('click', function(event){ event.preventDefault(); window.location.href = 'mycustproto:dealer ' + $('#DealerName').val(); }); 

El esquema URI se verá así:

Puede crear el Esquema de URI manualmente en el registro, o ejecutar el archivo “mycustproto.reg” (ver a continuación).

 HKEY_CURRENT_USER\Software\Classes mycustproto (Default) = "URL:MyCustProto Protocol" URL Protocol = "" DefaultIcon (Default) = "myprogram.exe,1" shell open command (Default) = "C:\Program Files\MyProgram\myprogram.exe" "%1" 

Ejemplo de mycustproto.reg:

 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Classes\mycustproto] "URL Protocol"="\"\"" @="\"URL:MyCustProto Protocol\"" [HKEY_CURRENT_USER\Software\Classes\mycustproto\DefaultIcon] @="\"mycustproto.exe,1\"" [HKEY_CURRENT_USER\Software\Classes\mycustproto\shell] [HKEY_CURRENT_USER\Software\Classes\mycustproto\shell\open] [HKEY_CURRENT_USER\Software\Classes\mycustproto\shell\open\command] @="\"C:\\Program Files\\MyProgram\\myprogram.exe\" \"%1\"" 

Aplicación de consola C # – myprogram.exe:

 using System; using System.Collections.Generic; using System.Text; namespace myprogram { class Program { static string ProcessInput(string s) { // TODO Verify and validate the input // string as appropriate for your application. return s; } static void Main(string[] args) { Console.WriteLine("Raw command-line: \n\t" + Environment.CommandLine); Console.WriteLine("\n\nArguments:\n"); foreach (string s in args) { Console.WriteLine("\t" + ProcessInput(s)); } Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); } } } 

Intente ejecutar el progtwig primero para asegurarse de que el progtwig se haya colocado en la ruta correcta:

 cmd> "C:\Program Files\MyProgram\myprogram.exe" "https://stackoverflow.com/questions/7087728/custom-protocol-handler-in-chrome/mycustproto:Hello World" 

Haga clic en el enlace en su página HTML:

Verá una ventana emergente de advertencia por primera vez.

enter image description here

Para restablecer la configuración del controlador de protocolo externo en Chrome:

Si alguna vez ha aceptado el protocolo personalizado en Chrome y desea restablecer la configuración, haga esto (actualmente, no hay interfaz de usuario en Chrome para cambiar la configuración):

Edite ” Estado local ” este archivo en esta ruta:

 C:\Users\Username\AppData\Local\Google\Chrome\User Data\ 

o simplemente vaya a:

 %USERPROFILE%\AppData\Local\Google\Chrome\User Data\ 

Luego, busca esta cadena: protocol_handler

Verá el protocolo personalizado desde allí.

Nota: cierre su Google Chrome antes de editar el archivo. De lo contrario, el cambio que ha realizado será sobrescrito por Chrome.

Referencia:

https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

Chrome 13 ahora es compatible con la API navigator.registerProtocolHandler . Por ejemplo,

 navigator.registerProtocolHandler( 'web+custom', 'http://example.com/rph?q=%s', 'My App'); 

Tenga en cuenta que su nombre de protocolo debe comenzar con web+ , con algunas excepciones para los comunes (como mailto , etc.). Para obtener más información, consulte: http://updates.html5rocks.com/2011/06/Registering-a-custom-protocol-handler

Esta pregunta es antigua ahora, pero ha habido una actualización reciente de Chrome (al menos en lo que respecta a las aplicaciones empaquetadas) …

http://developer.chrome.com/apps/manifest/url_handlers

y

https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/url-handler

Le permite registrar un manejador para una URL (siempre que lo tenga). Lamentablemente, no hay un myprotocol:// pero al menos puedes hacerlo http://myprotocol.mysite.com y puedes crear una página web que myprotocol:// a las personas a la aplicación en la tienda de aplicaciones.

Así es como lo hice. Su aplicación necesitaría instalar unas pocas claves de registro en la instalación, luego, en cualquier navegador, puede simplemente vincularlo a foo: \ anythingHere.txt y abrirá su aplicación y le pasará ese valor.

Este no es mi código, solo algo que encontré en la web al buscar la misma pregunta. Simplemente cambie todo “foo” en el texto a continuación al nombre de protocolo que desee y cambie también la ruta a su exe.

(ponga esto en un archivo de texto como guardar como foo.reg en su escritorio, luego haga doble clic para instalar las teclas) —– Debajo de esta línea entra el archivo .reg (NO incluye esta línea) — —

 REGEDIT4 [HKEY_CLASSES_ROOT\foo] @="URL:foo Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\foo\shell] [HKEY_CLASSES_ROOT\foo\shell\open] [HKEY_CLASSES_ROOT\foo\shell\open\command] @="\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\" \"%1\""