Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 20
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Eigenes URL-Protokoll registrieren


Autor: Rainbird
Sprache: C#
Bewertung:
8.62 (5 votes)
Anzahl der Aufrufe: 15734
  
Kick it on dotnet-kicks.de  

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.

Abgelegt unter: URL, URL Protokoll, URL Protocol, shell, execute, Parameter, ms-help.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 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");
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

SimonKnight6600 schrieb am:  07.11.2006 18:29:57

TOP Snippet! Genau das, was ich für ein aktuelles Projekt brauche :-)
Rainbird schrieb am:  08.11.2006 01:16:07

Danke!
markrene schrieb am:  22.02.2008 14:23:44

Hallo,

Super Snippet, aber leider funktioniert es nicht bei mir.

Es erscheint keine Fehlermeldung und wenn ich mir meine Registry anschaue, dann wurde kein Eintrag gemacht. Lese ich aber Skriptseitig die Einträge aus, ist der Key und subkey vorhanden. Woran kann das liegen?

Bitte um Hilfe!

Danke

Mark

protected void Page_Load(object sender, EventArgs e)
{
string protocolName = "aaaarunapp";
//string applicationPath = "%windir%\\system32\\calc.exe";
string applicationPath = @"C:\WINDOWS\system32\calc.exe";
string description = "Calculator";

// RegisterURLProtocol();
RegisterURLProtocol(protocolName, applicationPath, description);
}

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 + "<A>\\Shell</A>");
Registry.ClassesRoot.CreateSubKey(protocolName + "<A>\\Shell\\open</A>");
myKey = Registry.ClassesRoot.CreateSubKey(protocolName + "<A>\\Shell\\open\\command</A>");

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

}
Jan Welker schrieb am:  23.02.2008 10:27:47

Frag mal im Forum nach: dotnet-forum.de


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.