Comment puis-je enregistrer un protocole personnalisé avec Windows afin que lorsque vous cliquez sur un lien dans un e-mail ou sur une page Web, mon application soit ouverte et les paramètres de l'URL lui soient transmis?
Je pense que cela est couvert dans MSDN, veuillez voir Enregistrement d'une application dans un protocole URL .
Allez dans Start
puis dans Find
tapez regedit
-> il devrait ouvrir Registry editor
Cliquez sur Right Mouse sur HKEY_CLASSES_ROOT
puis New
-> Key
testus://sdfsdfsdf
) puis clique Right Mouse sur testus
-> puis New
-> String Value
et ajouter URL protocol
sans valeur.New
-> Key
) et créez une hiérarchie comme testus
-> Shell
-> open
-> command
et à l'intérieur command
change (Default)
vers le chemin où .exe
que vous voulez lancer est, si vous voulez passer des paramètres à votre exe, puis envelopper le chemin vers exe dans ""
et ajouter "%1"
ressembler à: "c:\testing\test.exe" "%1"
Internet Explorer
(pas Chrome
ou Firefox
) et entrez testus:have_you_seen_this_man
cela devrait déclencher votre .exe
(donnez-vous des invites vous invitant à le faire - dites Oui) et passez à args testus://have_you_seen_this_man
.Voici un exemple d'application console à tester:
using System;
namespace Testing
{
class Program
{
static void Main(string[] args)
{
if (args!= null && args.Length > 0)
Console.WriteLine(args[0]);
Console.ReadKey();
}
}
}
J'espère que cela vous fera gagner du temps.
Le lien MSDN est sympa, mais les informations de sécurité ne sont pas complètes. L'inscription du gestionnaire doit contenir "% 1", pas% 1. Il s'agit d'une mesure de sécurité, car certaines sources d'URL décodent incorrectement% 20 avant d'appeler votre gestionnaire de protocole personnalisé.
PS. Vous obtiendrez l'URL complète, pas seulement les paramètres d'URL. Mais l'URL peut être soumise à des mauvais traitements, en plus de la conversion d'espace déjà mentionnée% 20->. Il est utile d'être prudent dans la conception de votre syntaxe d'URL. Ne jetez pas // de façon aléatoire ou vous vous retrouverez dans le désordre de ce fichier: //.