Moje pytanie dotyczy wszystkich protokołów URL.Obsługa protokołu URL bez ponownego uruchamiania aplikacji
Zarejestrowałem URL Protokół nazywane MCM, ale zauważyłem, że za każdym razem go uruchomić z poziomu dowolnej przeglądarki internetowej, t tworzy nową instancję aplikacji. Czy istnieje sposób na obsłużenie żądania protokołu w już działającej instancji?
Na przykład, gdy uTorrent używa protokołu torrent Obsługuje żądanie natychmiast, bez ponownego uruchamiania aplikacji. Ja naprawdę nie mogłem znaleźć nic ciekawego o nim, więc pytam tutaj ...
Oto kod używać do rejestrowania protokołu:
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();
}
}
a kod czytać argumenty:
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;
}
Każda pomoc byłaby bardzo doceniana :) Pozdrowienia.
założę jeśli spojrzeć byś zobacz drugą instancję ładowania, wykryj istniejącą instancję i komunikuj się z nią przez I PC nowa linia poleceń –
zobaczyć również http://stackoverflow.com/questions/917883/c-sharp-how-to-single-instance-application-that-accepts-new-parameters –
Oh I rzeczywiście znaleźć co mam chciał. Dzięki Alex :) –