Обработка протокола URL без перезапуска приложений

Мой вопрос касается протоколов 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;
}

Любая помощь будет буду очень признателен :) Привет.

11
задан John Saunders 2 October 2013 в 02:40
поделиться