Die folgende Methode registriert eine Anwendung in einem URI-Schema. Sie können also mycustproto: in Ihrem HTML-Code verwenden, um eine lokale Anwendung auszulösen. Es funktioniert auf einer Google Chrome-Version 51.0.2704.79 m (64-Bit).
Ich habe diese Methode hauptsächlich zum stillen Drucken von Dokumenten verwendet, ohne dass der Druckdialog angezeigt wurde. Das Ergebnis ist ziemlich gut und eine nahtlose Lösung zur Integration der externen Anwendung in den Browser.
HTML-Code (einfach):
<a href="mycustproto:Hello World">Click Me</a>
HTML-Code (alternativ):
<input id="DealerName" />
<button id="PrintBtn"></button>
$('#PrintBtn').on('click', function(event){
event.preventDefault();
window.location.href = 'mycustproto:dealer ' + $('#DealerName').val();
});
Das URI-Schema sieht folgendermaßen aus:
Sie können das URI-Schema manuell in der Registrierung erstellen oder die Datei "mycustproto.reg" ausführen (siehe unten).
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 Beispiel:
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\""
C # -Konsolenanwendung - 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();
}
}
}
Versuchen Sie zuerst, das Programm auszuführen, um sicherzustellen, dass das Programm im richtigen Pfad platziert wurde:
cmd> "C:\Program Files\MyProgram\myprogram.exe" "mycustproto:Hello World"
Klicken Sie auf den Link auf Ihrer HTML-Seite:
Zum ersten Mal wird ein Warnfenster angezeigt.
So setzen Sie die Einstellung für den externen Protokollhandler in Chrome zurück:
Wenn Sie das benutzerdefinierte Protokoll in Chrome jemals akzeptiert haben und die Einstellung zurücksetzen möchten, gehen Sie folgendermaßen vor (derzeit gibt es in Chrome keine Benutzeroberfläche zum Ändern der Einstellung):
Bearbeiten Sie " Local State " dieser Datei unter folgendem Pfad:
C:\Users\Username\AppData\Local\Google\Chrome\User Data\
oder gehen Sie einfach zu:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\
Suchen Sie dann nach dieser Zeichenfolge: protocol_handler
Von dort aus sehen Sie das benutzerdefinierte Protokoll.
Hinweis: Schließen Sie Google Chrome, bevor Sie die Datei bearbeiten. Andernfalls wird die von Ihnen vorgenommene Änderung von Chrome überschrieben.
Referenz:
https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx