Como registro um protocolo personalizado no Windows para que, ao clicar em um link em um e-mail ou página da web, meu aplicativo seja aberto e os parâmetros da URL sejam passados para ele?
Como registro um protocolo personalizado no Windows para que, ao clicar em um link em um e-mail ou página da web, meu aplicativo seja aberto e os parâmetros da URL sejam passados para ele?
Respostas:
Vá para Start
então Find
digite regedit
-> deve abrirRegistry editor
Clique Right Mouseem HKEY_CLASSES_ROOT
e New
->Key
testus://sdfsdfsdf
) e clique Right Mouseem testus
-> então New
-> String Value
e adicione URL protocol
sem valor.New
-> Key
) e crie uma hierarquia como testus
-> shell
-> open
-> command
e command
mude (Default)
para o caminho onde .exe
você deseja iniciar, se você deseja passar parâmetros para o seu exe, encapsule o caminho para o exe em ""
e adicione "%1"
para se parecer com:"c:\testing\test.exe" "%1"
Internet Explorer
(não Chrome
ou Firefox
) e digite testus:have_you_seen_this_man
isso deve disparar seu .exe
(dar-lhe alguns prompts de que deseja fazer isso - diga Sim) e passar para args testus://have_you_seen_this_man
.Este é um exemplo de aplicativo de console para testar:
using System;
namespace Testing
{
class Program
{
static void Main(string[] args)
{
if (args!= null && args.Length > 0)
Console.WriteLine(args[0]);
Console.ReadKey();
}
}
}
Espero que isso economize algum tempo.
Acho que isso é abordado no MSDN, consulte Registrando um aplicativo em um protocolo de URL .
O link do MSDN é bom, mas as informações de segurança não estão completas. O registro do manipulador deve conter "% 1", não% 1. Esta é uma medida de segurança, porque algumas origens de URL decodificam incorretamente% 20 antes de chamar seu manipulador de protocolo personalizado.
PS. Você obterá o URL completo, não apenas os parâmetros de URL. Mas a URL pode estar sujeita a alguns maus tratos, além da já mencionada conversão de espaço% 20->. Ajuda ser conservador no design da sintaxe de URL. Não jogue aleatoriamente // ou você entrará na confusão que o arquivo: // é.