Як зареєструвати користувальницький протокол у Windows, щоб при натисканні посилання в електронному листі чи на веб-сторінці мою програму було відкрито, а параметри з URL-адреси передані їй?
Як зареєструвати користувальницький протокол у Windows, щоб при натисканні посилання в електронному листі чи на веб-сторінці мою програму було відкрито, а параметри з URL-адреси передані їй?
Відповіді:
Перейдіть до type Start
in -> воно має відкритисяFind
regedit
Registry editor
Натисніть Right Mouseна HKEY_CLASSES_ROOT
потім New
->Key
testus://sdfsdfsdf
) , а потім натисніть Right Mouseна testus
-> потім New
-> String Value
і додати URL protocol
без значення.New
-> Key
), і створіть ієрархію, як testus
-> shell
-> open
->, command
і всередині command
змініть (Default)
шлях, де .exe
ви хочете запустити, якщо ви хочете передати параметри своєму exe, тоді оберніть шлях до exe в ""
і додати, "%1"
щоб виглядати так:"c:\testing\test.exe" "%1"
Internet Explorer
(not Chrome
or Firefox
) і введіть, testus:have_you_seen_this_man
це має запустити ваш .exe
(дасть вам деякі підказки, що ви хочете це зробити - скажіть Так) і перейти в аргументи testus://have_you_seen_this_man
.Ось зразок консольної програми для тестування:
using System;
namespace Testing
{
class Program
{
static void Main(string[] args)
{
if (args!= null && args.Length > 0)
Console.WriteLine(args[0]);
Console.ReadKey();
}
}
}
Сподіваюся, це заощадить ваш час.
Я думаю, що це висвітлено у MSDN, будь ласка, див. Реєстрація програми у протоколі URL .
Посилання MSDN приємне, але інформація про безпеку там не повна. Реєстрація обробника повинна містити "% 1", а не% 1. Це міра безпеки, оскільки деякі джерела URL-адрес неправильно декодують% 20 перед тим, як викликати власний обробник протоколу.
PS. Ви отримаєте всю URL-адресу, а не лише параметри URL-адреси. Але URL-адреса може зазнати певного поводження, крім уже згаданого перетворення% 20-> пробілу. Це допомагає бути консервативним у дизайні синтаксису URL-адреси. Не кидайте випадкові //, інакше ви потрапите в хаос, яким є файл: //.