La mia domanda riguarda tutti i protocolli URL.Gestione protocollo URL senza riavvio applicazione
Ho registrato un protocollo URL chiamato mcm, ma ho notato che ogni volta che l'eseguo da qualsiasi browser web, t crea una nuova istanza dell'applicazione. C'è un modo per gestire la richiesta di protocollo in un'istanza già in esecuzione?
Ad esempio, quando uTorrent utilizza il protocollo torrent Gestisce immediatamente la richiesta senza eseguire nuovamente l'applicazione. Non potevo davvero trovare qualcosa di interessante su di esso, quindi mi sto chiedendo qui ...
Ecco il codice che uso per registrare il protocollo:
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();
}
}
E il codice per leggere gli argomenti:
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;
}
Qualsiasi aiuto sarebbe molto apprezzato :) Saluti.
Scommetto che se si guarda si farebbe vedere una seconda istanza di caricamento utorrent, rilevando un'istanza esistente di se stessi e comunicando a ciò tramite I PC la nuova riga di comando –
Vedere anche http://stackoverflow.com/questions/917883/c-sharp-how-to-single-instance-application-that-accepts-new-parameters –
Oh, in realtà ho trovato quello che ho ricercato. Grazie Alex :) –