Страницы

Поиск по вопросам

суббота, 30 ноября 2019 г.

Как запустить мою программу при открытии ссылки в браузере?

#c_sharp #url


Есть программа, нужно сделать ссылку для неё, например, как у Steam: steam://open/friends.
Она должна открываться в браузере и запускать нужное мне окно; Подскажите, как это
делается, пожалуйста. 
    


Ответы

Ответ 1



Я буду объяснять на примере другой программы – sales logix (аббревиатура - slx), она регистрирует свой протокол slx:// например, ссылка может быть такой: slx://account/12345. Штука реально крутая: можно было по почте кинуть такую ссылку коллеге и у него по клику на линке открывалось приложение с окном по клиента ID=12345. Если вы хотите создать собственный протокол – то вам нужно две вещи сделать: зарегистрировать протокол в операционной системе и программу, которая его будет обрабатывать; прописать в программе обработку протокола. По этой ссылке вам предлагают вариант регистрации протокола через правку реестра (и так удобнее в корпоративном мире – раскатать reg-файл по нужным компам политиками Active Directory, чем руками ходить каждый настраивать), но если очень хочется без магии реестра и руками – то где-то в панели управления есть пункт типа "программы по умолчанию". Копирую пример reg-файла, на случай если линк протухнет: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\slx] @="SalesLogix Protocol Handler" "URL Protocol"="" [HKEY_CLASSES_ROOT\slx\DefaultIcon] @="C:\\Program Files\\SalesLogix\\salesLogix.exe" [HKEY_CLASSES_ROOT\slx\shell] [HKEY_CLASSES_ROOT\slx\shell\open] [HKEY_CLASSES_ROOT\slx\shell\open\command] @="\"C:\\Program Files\\SalesLogix\\SalesLogixUrlLink.exe\" %1" Ну и нужно собственно в своей программе сделать поддержку этого протокола. Я думаю, что это абсолютно понятно, как сделать – в каждой программе есть метод Main: static void Main(string[] param) Вам нужно парсить переданные аргументы командной строки и, в соответствии с вашей логикой обрабатывать. Если на компьютере будет установлена программа и зарегистрирован протокол, то вызываться будет и с веб-страники, и из почты. Можно даже в ярлыки эту ссылку вписывать, как это делает стим – и тоже будет работать. Update. Передаваемая ссылка будет в args[0] целиком, парсить её нужно будет самостоятельно, отделяя протокол. Тест тривиальный: В c:\temp\proba01.exe: static void Main(string[] args) { var i = 0; foreach (var ar in args) { Console.WriteLine($"{i} = {ar}"); i++; } Console.ReadLine(); } Делаем обработчик: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\s2x] @="SalesLogix Protocol Handler" "URL Protocol"="" [HKEY_CLASSES_ROOT\s2x\DefaultIcon] @="C:\\temp\\proba01.exe" [HKEY_CLASSES_ROOT\s2x\shell] [HKEY_CLASSES_ROOT\s2x\shell\open] [HKEY_CLASSES_ROOT\s2x\shell\open\command] @="\"C:\\temp\\proba01.exe\" %1" Демо-страница: test На выходе имеем:

Комментариев нет:

Отправить комментарий