google-chrome-extension - plugin - tag analysis
Controlador de protocolo personalizado en cromo (4)
¿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.
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/""
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):
<a href="mycustproto:Hello World">Click Me</a>
Código HTML (alternativo):
<input id="DealerName" />
<button id="PrintBtn"></button>
$(''#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 programa primero para asegurarse de que el programa se haya colocado en la ruta correcta:
cmd> "C:/Program Files/MyProgram/myprogram.exe" "mycustproto:Hello World"
Haga clic en el enlace en su página HTML:
Verá una ventana emergente de advertencia por primera vez.
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
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.
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