Gestionnaire de protocole personnalisé en chrome

Comment configurer un gestionnaire de protocole personnalisé en chrome? Quelque chose comme:

monprotocole: // fichier de test

J’en aurais besoin pour envoyer une demande à http://example.com?query=testfile , puis envoyer la réponse http à mon extension.

La méthode suivante enregistre une application dans un schéma URI. Donc, vous pouvez utiliser mycustproto: dans votre code HTML pour déclencher une application locale. Il fonctionne sur une version Google Chrome 51.0.2704.79 m (64 bits).

J’ai principalement utilisé cette méthode pour imprimer des documents en mode silencieux sans que la boîte de dialog d’impression apparaisse. Le résultat est plutôt bon et constitue une solution transparente pour intégrer l’application externe au navigateur.

Code HTML (simple):

Click Me 

Code HTML (alternative):

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

Le schéma URI ressemblera à ceci:

Vous pouvez créer le schéma URI manuellement dans le registre ou exécuter le fichier “mycustproto.reg” (voir ci-dessous).

 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" 

mycustproto.reg exemple:

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

Application console C # – myprogram.exe:

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

Essayez d’abord d’exécuter le programme pour vous assurer que le programme a été placé dans le bon chemin:

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

Cliquez sur le lien sur votre page HTML:

Vous verrez une fenêtre contextuelle d’avertissement pour la première fois.

entrer la description de l'image ici

Pour réinitialiser le paramètre de gestionnaire de protocole externe dans Chrome:

Si vous avez déjà accepté le protocole personnalisé dans Chrome et que vous souhaitez le réinitialiser, faites-le (actuellement, aucune interface utilisateur dans Chrome ne permet de modifier le paramètre):

Editez ” Local State ” ce fichier sous ce chemin:

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

ou simplement aller à:

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

Ensuite, recherchez cette chaîne: protocol_handler

Vous verrez le protocole personnalisé à partir de là.

Remarque: fermez votre Google Chrome avant de modifier le fichier. Sinon, les modifications que vous avez apscopes seront écrasées par Chrome.

Référence:

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

Chrome 13 prend désormais en charge l’API navigator.registerProtocolHandler . Par exemple,

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

Notez que le nom de votre protocole doit commencer par web+ , à quelques exceptions près pour les plus courantes (comme mailto , etc.). Pour plus de détails, voir: http://updates.html5rocks.com/2011/06/Registering-a-custom-protocol-handler

Cette question est ancienne maintenant, mais il y a eu une mise à jour récente de Chrome (du moins en ce qui concerne les applications packagées) …

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

et

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

Il vous permet d’enregistrer un gestionnaire pour une URL (tant que vous en êtes propriétaire). Malheureusement pas myprotocol:// mais au moins vous pouvez faire http://myprotocol.mysite.com et pouvez créer une page Web qui pointe les gens vers l’application dans l’App Store.

C’est comme ça que je l’ai fait. Votre application devra installer quelques clés de reg lors de l’installation, puis dans n’importe quel navigateur, vous pourrez simplement créer un lien vers foo: \ anythingHere.txt pour ouvrir votre application et lui transmettre cette valeur.

Ce n’est pas mon code, juste quelque chose que j’ai trouvé sur le web lors de la recherche de la même question. Changez simplement tous les “foo” dans le texte ci-dessous pour le nom du protocole que vous voulez et changez également le chemin vers votre exe.

(insérez-le dans un fichier texte en tant que sauvegarde sous foo.reg sur votre bureau, puis double-cliquez dessus pour installer les clés) —– En dessous de cette ligne se trouve le fichier .reg (n’incluant PAS cette ligne) — —

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