Gestore di protocollo personalizzato in chrome

Come posso impostare un gestore di protocollo personalizzato in chrome? Qualcosa di simile a:

myprotocol: // testfile

Avrei bisogno di questo per inviare una richiesta a http://example.com?query=testfile , quindi inviare httpresponse alla mia estensione.

Il seguente metodo registra un’applicazione a uno schema URI. Quindi, puoi usare mycustproto: nel tuo codice HTML per triggersre un’applicazione locale. Funziona su Google Chrome versione 51.0.2704.79 m (64 bit).

Ho usato principalmente questo metodo per stampare documenti in modo silenzioso senza che la finestra di dialogo di stampa spuntasse. Il risultato è piuttosto buono ed è una soluzione perfetta per integrare l’applicazione esterna con il browser.

Codice HTML (semplice):

Click Me 

Codice HTML (alternativo):

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

Lo schema URI sarà simile a questo:

È ansible creare manualmente lo schema URI nel registro o eseguire il file “mycustproto.reg” (vedere di seguito).

 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" 

esempio 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\"" 

Applicazione console 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(); } } } 

Prova ad avviare il programma per assicurarti che il programma sia stato posizionato nel percorso corretto:

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

Fai clic sul link nella tua pagina HTML:

Verrà visualizzato un popup della finestra di avviso per la prima volta.

inserisci la descrizione dell'immagine qui

Per ripristinare le impostazioni del gestore di protocollo esterno in Chrome:

Se hai mai accettato il protocollo personalizzato in Chrome e desideri reimpostare l’impostazione, esegui questa operazione (al momento non è presente alcuna interfaccia utente in Chrome per modificare le impostazioni):

Modifica ” Stato locale ” questo file sotto questo percorso:

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

o semplicemente vai a:

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

Quindi, cerca questa stringa: protocol_handler

Vedrai il protocollo personalizzato da lì.

Nota . Chiudi il tuo Google Chrome prima di modificare il file. In caso contrario, le modifiche apportate verranno sovrascritte da Chrome.

Riferimento:

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

Chrome 13 ora supporta l’API navigator.registerProtocolHandler . Per esempio,

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

Si noti che il nome del protocollo deve iniziare con web+ , con alcune eccezioni per quelli comuni (come mailto , ecc.). Per maggiori dettagli, consultare: http://updates.html5rocks.com/2011/06/Registrazione-a-custom-protocol-handler

Questa domanda è vecchia ora, ma c’è stato un recente aggiornamento a Chrome (almeno per quanto riguarda le app in pacchetto) …

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

e

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

Ti permette di registrare un gestore per un URL (purché tu lo possieda). Purtroppo no myprotocol:// ma almeno puoi fare http://myprotocol.mysite.com e puoi creare una pagina web lì che rimanda le persone all’app nell’app store.

Questo è come l’ho fatto. La tua app dovrebbe installare alcune chiavi di reg sull’installazione, quindi in qualsiasi browser puoi semplicemente collegarti a foo: \ anythingHere.txt e aprirà la tua app e passerà quel valore.

Questo non è il mio codice, solo qualcosa che ho trovato sul web quando ho cercato la stessa domanda. Basta cambiare tutti i “foo” nel testo qui sotto al nome del protocollo che vuoi e cambiare il percorso del tuo exe.

(inserisci questo in un file di testo come salva foo.reg sul desktop, quindi fai doppio clic per installare le chiavi) —– Sotto questa riga entra nel file .reg (NON includendo questa riga) — —

 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\""