¿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 el formulario de acceso a mi extensión.
¿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 el formulario de acceso a mi extensión.
Respuestas:
El siguiente método registra una aplicación en un esquema URI. Entonces, 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 (alternativa):
<input id="DealerName" />
<button id="PrintBtn"></button>
$('#PrintBtn').on('click', function(event){
event.preventDefault();
window.location.href = 'mycustproto:dealer ' + $('#DealerName').val();
});
El esquema de URI se verá así:
Puede crear el esquema URI manualmente en el registro o ejecutar el archivo "mycustproto.reg" (ver más abajo).
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 se haya colocado en la ruta correcta:
cmd> "C:\Program Files\MyProgram\myprogram.exe" "mycustproto:Hello World"
Haga clic en el enlace de 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 aceptó el protocolo personalizado en Chrome y desea restablecer la configuración, haga esto (actualmente, no hay una 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, busque esta cadena: protocol_handler
Verá el protocolo personalizado desde allí.
Nota: cierre su Google Chrome antes de editar el archivo. De lo contrario, Chrome sobrescribirá el cambio que ha realizado.
Referencia:
https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx
Preferences
archivo, ubicado en%localappdata%\Google\Chrome\User Data\Default
Chrome 13 ahora es compatible con la navigator.registerProtocolHandler
API. Por ejemplo,
navigator.registerProtocolHandler(
'web+custom', 'http://example.com/rph?q=%s', 'My App');
Tenga en cuenta que el nombre de su protocolo debe comenzar con web+
, con algunas excepciones para los más comunes (como mailto
, etc.). Para obtener más detalles, consulte: http://updates.html5rocks.com/2011/06/Registering-a-custom-protocol-handler
torrent:
y steam:
entonces? ¿Las aplicaciones empaquetadas de Chrome también tienen esta restricción?
chrome.webNavigation
API, los tel:
enlaces nunca se informan.
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 controlador para una URL (siempre que sea de su propiedad). Lamentablemente, no, myprotocol://
pero al menos puede hacerlo http://myprotocol.mysite.com
y puede crear una página web allí que dirija a las personas a la aplicación en la tienda de aplicaciones.
Así es como lo hice. Su aplicación necesitaría instalar algunas claves de registro en la instalación, luego, en cualquier navegador, puede simplemente vincular 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 por el 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 en él para instalar las claves) ----- Debajo de esta línea se encuentra 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\""
No estoy seguro de si este es el lugar correcto para mi respuesta, pero como encontré muy pocos hilos útiles y este fue uno de ellos, estoy publicando mi solución aquí.
Problema : quería que Linux Mint 19.2 Cinnamon abriera Evolution al hacer clic en mailto
enlaces en Chromium. Gmail se registró como controlador predeterminado en chrome: // settings / handlers y no pude elegir ningún otro controlador.
Solución : use xdg-settings en la consola
xdg-settings set default-url-scheme-handler mailto org.gnome.Evolution.desktop
La solución se encontró aquí https://alt.os.linux.ubuntu.narkive.com/U3Gy7inF/kubuntu-mailto-links-in-chrome-doesn-t-open-evolution y se adaptó para mi caso.
abierto
C:\Users\<Username>\AppData\Local\Google\Chrome\User Data\Default
abrir y Preferences
luego buscar excluded_schemes
, lo encontrará en 'protocol_handler' elimine este esquema (s) excluido para restablecer Chrome para abrir la URL con la aplicación predeterminada