Мой вопрос касается протоколов URL.
Я зарегистрировал протокол URL с именем mcm , но заметил, что каждый раз, когда я запускаю его из любого веб-браузера, создается новый экземпляр приложения. Есть ли способ обработать запрос протокола в уже запущенном экземпляре?
Например, когда uTorrent использует протокол torrent , он обрабатывает запрос немедленно, без повторного запуска приложения. Мне не удалось найти в этом ничего интересного, поэтому я спрашиваю здесь ...
Вот код, который я использую для регистрации протокола:
private static void RegisterUrlProtocol()
{
UnregisterUrlProtocol();
RegistryKey rKey = Registry.ClassesRoot.OpenSubKey(UrlProtocol, true);
if (rKey == null)
{
rKey = Registry.ClassesRoot.CreateSubKey(UrlProtocol);
rKey.SetValue("", "URL: MazCraft Protocol");
rKey.SetValue("URL Protocol", "");
rKey = rKey.CreateSubKey(@"shell\open\command");
rKey.SetValue("", "\"" + Application.ExecutablePath + "\" %1");
}
if (rKey != null)
{
rKey.Close();
}
}
И код для чтения аргументов:
private static bool CheckForProtocolMessage()
{
string[] arguments = Environment.GetCommandLineArgs();
if (arguments.Length > 1)
{
string[] args = arguments[1].Split(':');
args[1] = args[1].Replace("//", "");
if (args[0].Trim().ToUpper() == "MCM" && args.Length > 1)
{
string[] actionDetail = args[1].Split('=');
if (actionDetail[0].Trim().ToUpper() == "INSTALL" && actionDetail.Length > 1)
{
string id = actionDetail[1].Trim().Replace("/", "");
Funcs.ID = id;
return true;
}
}
}
return false;
}
Любая помощь будет буду очень признателен :) Привет.