O método a seguir registra um aplicativo em um Esquema de URI. Portanto, você pode usar mycustproto: em seu código HTML para acionar um aplicativo local. Ele funciona em um Google Chrome versão 51.0.2704.79 m (64 bits).
Usei esse método principalmente para imprimir documentos silenciosamente, sem que a caixa de diálogo de impressão fosse exibida. O resultado é muito bom e é uma solução perfeita para integrar o aplicativo externo com o navegador.
Código HTML (simples):
<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();
});
Esquema de URI será semelhante a este:
Você pode criar o Esquema de URI manualmente no registro ou executar o arquivo "mycustproto.reg" (veja abaixo).
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"
exemplo 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\""
Aplicativo de 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();
}
}
}
Tente executar o programa primeiro para verificar se ele foi colocado no caminho correto:
cmd> "C:\Program Files\MyProgram\myprogram.exe" "mycustproto:Hello World"
Clique no link em sua página HTML:
Você verá uma janela pop-up de aviso pela primeira vez.
Para redefinir a configuração do manipulador de protocolo externo no Chrome:
Se você já aceitou o protocolo personalizado no Chrome e gostaria de redefinir a configuração, faça isso (atualmente, não há IU no Chrome para alterar a configuração):
Edite o " Estado Local " este arquivo neste caminho:
C:\Users\Username\AppData\Local\Google\Chrome\User Data\
ou simplesmente vá para:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\
Em seguida, pesquise por esta string: protocol_handler
Você verá o protocolo personalizado a partir daí.
Observação: feche o Google Chrome antes de editar o arquivo. Caso contrário, a alteração que você fez será substituída pelo Chrome.
Referência:
https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx