Laden...

Eigenes URL-Protokoll registrieren

Erstellt von Rainbird vor 16 Jahren Letzter Beitrag vor 13 Jahren 7.576 Views
Rainbird Themenstarter:in
3.728 Beiträge seit 2005
vor 16 Jahren
Eigenes URL-Protokoll registrieren

Beschreibung:

HTTP-URLs kennt jeder. Die Windows-Shell ermöglicht es aber auch, eigene URL-Protokolle zu definieren. Davon machen einige Programme, wie z.B. die Visual Studio Hilfe gebrauch (ms-help:// ...). Mit ein paar Registry-Einträgen kann man auch ein eigenes URL-Protokoll einrichten. Damit lassen sich eigene Anwendungen per URL aus jeder Software ansprechen.

// using Microsoft.Win32; nicht vergessen!

/// <summary>
/// Registriert ein benutzerdefiniertes URL-Protokoll für die Verwendung mit der
/// Windows-Shell, dem Internet Explorer und Office.
/// 
/// Beispiel für einen URL eines benutzerdefinierten URL-Protokolls:
/// 
///   rainbird://RemoteControl/OpenFridge/GetBeer
/// </summary>
/// <param name="protocolName">Name des Protokolls (z.B. "rainbird" für "rainbird://...")</param>
/// <param name="applicationPath">Vollständiger Dateisystem-Pfad zur EXE-Datei, die den URL bei Aufruf verarbeitet (Der komplette URL wird als Befehlszeilenparameter übergteben)</param>
/// <param name="description">Beschreibung (z.B. "URL:Rainbird Custom URL")</param>
public void RegisterURLProtocol(string protocolName, string applicationPath, string description)
{
    // Neuer Schlüssel für das gewünschte URL Protokoll erstellen
    RegistryKey myKey=Registry.ClassesRoot.CreateSubKey(protocolName);

    // Protokoll zuweisen
    myKey.SetValue(null, description);
    myKey.SetValue("URL Protocol", string.Empty);

    // Shellwerte eintragen
    Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell");
    Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open");
    myKey = Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open\\command");

    // Anwendung festlegen, die das URL-Protokoll behandelt
    myKey.SetValue(null, "\"" + applicationPath,  + "\" %1");
}

Schlagwörter: URL, URL Protokoll, URL Protocol, shell, execute, Parameter, ms-help

Quelle: .NET-Snippets

2.891 Beiträge seit 2004
vor 13 Jahren

Kleine Anmerkung zur letzten Codezeile im Snippet ("Anwendung festlegen, die das URL-Protokoll behandelt"):*Da ist ein Komma zu viel (nach applicationPath) *Da der URL Leerzeichen enthalten kann, muss - um sicher zu gehen - das %1 noch in Anführungsstriche gesetzt werden. Firefox und der Windows-Explorer ersetzen zwar Leerzeichen durch %20, der InternetExplorer aber tut dies z.B. nicht.

Mein Vorschlag:


myKey.SetValue(null,"\"" + applicationPath+"\" \"%1\"");