La méthode suivante enregistre une application dans un schéma URI. Ainsi, vous pouvez utiliser mycustproto: dans votre code HTML pour déclencher une application locale. Il fonctionne sur une version de Google Chrome 51.0.2704.79 m (64 bits).
J'ai principalement utilisé cette méthode pour imprimer un document en silence sans que la boîte de dialogue d'impression ne s'affiche. Le résultat est plutôt bon et constitue une solution transparente pour intégrer l'application externe au navigateur.
Code HTML (simple):
<a href="mycustproto:Hello World">Click Me</a>
Code HTML (alternative):
<input id="DealerName" />
<button id="PrintBtn"></button>
$('#PrintBtn').on('click', function(event){
event.preventDefault();
window.location.href = 'mycustproto:dealer ' + $('#DealerName').val();
});
Le schéma d'URI ressemblera à ceci:
Vous pouvez créer le schéma d'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"
Exemple 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\""
Application 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();
}
}
}
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" "mycustproto:Hello World"
Cliquez sur le lien sur votre page HTML:
Vous verrez une fenêtre contextuelle d'avertissement pour la première fois.
Pour réinitialiser le paramètre du gestionnaire de protocole externe dans Chrome:
Si vous avez déjà accepté le protocole personnalisé dans Chrome et que vous souhaitez réinitialiser le paramètre, procédez comme suit (actuellement, il n'y a pas d'interface utilisateur dans Chrome pour modifier le paramètre):
Editez " Local State " ce fichier sous ce chemin:
C:\Users\Username\AppData\Local\Google\Chrome\User Data\
ou allez simplement à:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\
Ensuite, recherchez cette chaîne: protocol_handler
Vous verrez le protocole personnalisé à partir de là.
Remarque: veuillez fermer votre Google Chrome avant de modifier le fichier. Sinon, la modification que vous avez apportée sera écrasée par Chrome.
Référence:
https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx