Verben und Dateizuordnungen

Wenn ein Benutzer mit der rechten Maustaste auf ein Shell-Objekt klickt, z. B. eine Datei, zeigt die Shell ein Kontextmenü an. Dieses Menü enthält eine Liste von Befehlen, die der Benutzer auswählen kann, um verschiedene Aktionen für das Element auszuführen. Diese Befehle werden auch als Kontextmenüelemente oder Verben bezeichnet. Kontextmenüs können angepasst werden.

Dieses Thema ist wie folgt organisiert:

Einführung in Kontextmenüs für Dateisystemobjekte

Da Kontextmenüs häufig für die Dateiverwaltung verwendet werden, stellt die Shell eine Reihe von Standardbefehlen bereit, z. B . Ausschneiden und Kopieren, die im Kontextmenü für jedes Dateisystemobjekt wie eine Datei oder einen Ordner angezeigt werden.

Das folgende Beispiel veranschaulicht ein Standard-Kontextmenü, das durch Klicken mit der rechten Maustaste MyFile.xyz-ms angezeigt wird.

Screenshot des Standard-Kontextmenüs

Der Grund dafür, dass ein Standard-Kontextmenü für MyFile.xyz-ms angezeigt wird, liegt daran, dass .xyz-ms kein Mitglied eines registrierten Dateityps ist. Im Gegensatz dazu ist .txt ein registrierter Dateityp. Wenn Sie mit der rechten Maustaste auf eine .txt Datei klicken, wird ein Kontextmenü mit drei zusätzlichen Befehlen im oberen Abschnitt angezeigt: Drucken, Bearbeiten und Öffnen mit.

Screenshot des Kontextmenüs für eine Datei mit einem registrierten Dateityp

Um das Kontextmenü für einen Dateityp zu erweitern, müssen Sie für jeden Befehl einen Registrierungseintrag erstellen. Ein komplexerer Ansatz besteht darin, einen Kontextmenühandler (Verb) zu implementieren, mit dem Sie das Kontextmenü für einen Dateityp dateiweise erweitern können. Weitere Informationen finden Sie unter Erstellen von Kontextmenühandlern und Kontextmenüreferenz.

Hinzufügen von Befehlen zu einem Kontextmenü

Ein Kontextmenühandler ist ein Dateityphandler, der einem vorhandenen Kontextmenü Befehle hinzufügt. Kontextmenühandler werden einem Dateityp zugeordnet und immer dann aufgerufen, wenn ein Kontextmenü für ein Element der -Klasse angezeigt wird. Die Shell überprüft die Registrierung, um festzustellen, ob der Dateityp einem Kontextmenühandler zugeordnet ist. Wenn dies der Grund ist, fragt die Shell die Handler nach zusätzlichen Kontextmenüelementen ab.

Kontextmenüverben

Jeder Befehl im Kontextmenü wird in der Registrierung anhand seines Verbs identifiziert. Diese Verben sind identisch mit denen, die von ShellExecuteEx beim programmgesteuerten Starten von Anwendungen verwendet werden.

Ein Verb ist eine einfache Textzeichenfolge, die von der Shell verwendet wird, um den zugeordneten Befehl zu identifizieren. Jedes Verb entspricht der Befehlszeichenfolge, die zum Starten des Befehls in einem Konsolenfenster oder einer Batchdatei (.bat) verwendet wird.

Beispielsweise startet das geöffnete Verb normalerweise ein Programm, um eine Datei zu öffnen. Die Befehlszeichenfolge sieht in der Regel wie folgt aus:

"My Program.exe" "%1"

Wenn ein Element der Befehlszeichenfolge Leerzeichen enthält oder enthalten kann, muss es in Anführungszeichen eingeschlossen werden. Andernfalls wird das Element, wenn es ein Leerzeichen enthält, nicht ordnungsgemäß analysiert. Für instance startet "My Program.exe" die Anwendung ordnungsgemäß. Wenn Sie My Program.exe ohne Anführungszeichen verwenden, versucht das System, My mit Program.exe als erstes Befehlszeilenargument zu starten. Sie sollten immer Anführungszeichen mit Argumenten wie "%1" verwenden, die von der Shell auf Zeichenfolgen erweitert werden, da Sie nicht sicher sein können, dass die Zeichenfolge kein Leerzeichen enthält.

Verben kann auch ein Anzeigename zugeordnet sein, der im Kontextmenü anstelle der Verbzeichenfolge selbst angezeigt wird. Die Anzeigezeichenfolge für openas lautet beispielsweise Open With. Wie normale Menüzeichenfolgen, einschließlich eines Amper- und Zeichens in der Anzeigezeichenfolge, ermöglicht die Tastaturauswahl des Befehls.

Streamen von Nicht-Dateisystemelementen und OpenSearch-Ergebnissen.

In Windows 7 und höher wird die Verbindung externer Quellen mit dem Windows-Client über das OpenSearch-Protokoll unterstützt. Auf diese Weise können Benutzer einen Remotedatenspeicher durchsuchen und Ergebnisse innerhalb von Windows Explorer anzeigen. Der OpenSearch v1.1-Standard definiert einfache Dateiformate, die verwendet werden können, um zu beschreiben, wie ein Client den Webdienst für den Datenspeicher abfragen und wie der Dienst Ergebnisse zurückgibt, die vom Client gerendert werden sollen.

Möglicherweise müssen Sie Nicht-Dateisystemelemente streamen, um das Herunterladen von Elementen im Fall von OpenSearch-Ergebnissen zu vermeiden. Die Verbundsuche ermöglicht das Durchsuchen von Elementen aus Nicht-Dateisystemspeicherorten, die OpenSearch unterstützen, z. B. SharePoint und andere websites, die von Webdiensten unterstützt werden. Beim Aufrufen von Verben für diese Elemente lädt das System eine temporäre Version des Elements herunter und übergibt sie an die Verbimplementierung. Verbimplementierer sollten vermeiden, dass die Datei heruntergeladen werden muss, indem sie den Satz von URL-Schemas registrieren, die das Verb zum Streamen der Elemente unterstützt. Verben verwenden dazu den Registrierungsschlüssel SupportedProtocols .

Registrieren einer Anwendung zur Behandlung beliebiger Dateitypen

Durch das Definieren von Kontextmenüelementen für einen bestimmten Dateityp können Sie angeben, wie die zugeordnete Anwendung ein Element des Dateityps öffnet. Anwendungen können jedoch auch eine separate Standardprozedur registrieren, die verwendet werden soll, wenn ein Benutzer versucht, die Anwendung zum Öffnen eines Dateityps zu verwenden, der nicht der Anwendung zugeordnet ist. Sie registrieren die Standardprozedur auf die gleiche Weise, wie Sie Kontextmenüelemente registrieren. Ausführlichere Informationen zum Definieren von Kontextmenüelementen finden Sie unter Erstellen von Kontextmenühandlern.

Das Standardverfahren dient zwei grundlegenden Zwecken. Eine besteht darin, anzugeben, wie Ihre Anwendung aufgerufen werden soll, um einen beliebigen Dateityp zu öffnen. Sie können für instance ein Befehlszeilenflag verwenden, um anzugeben, dass ein unbekannter Dateityp geöffnet wird. Der andere Zweck besteht darin, die verschiedenen Merkmale eines Dateityps zu definieren, z. B. die Kontextmenüelemente und das Symbol. Wenn ein Benutzer Ihre Anwendung einem zusätzlichen Dateityp zuordnet, weist diese Klasse diese Merkmale auf. Wenn der zusätzliche Dateityp zuvor einer anderen Anwendung zugeordnet war, ersetzen diese Merkmale die Originale.

Um die Standardprozedur zu registrieren, platzieren Sie die gleichen Registrierungsschlüssel, die Sie für die ProgID Ihrer Anwendung erstellt haben, unter dem Unterschlüssel der AnwendungHKEY_CLASSES_ROOT\Applications. Sie können auch einen FriendlyAppName-Wert einschließen, um dem System einen Anzeigenamen für Ihre Anwendung bereitzustellen. Der Anzeigename der Anwendung kann auch aus der ausführbaren Datei extrahiert werden, aber nur, wenn der FriendlyAppName-Wert nicht vorhanden ist.

Der folgende Beispielregistrierungseintrag veranschaulicht ein Standardverfahren für MyProgram.exe , das einen Anzeigenamen und mehrere Kontextmenüelemente definiert. Die Befehlszeichenfolgen enthalten das Flag /a , um die Anwendung zu benachrichtigen, dass ein beliebiger Dateityp geöffnet wird. Wenn Sie einen DefaultIcon-Unterschlüssel einschließen, sollten Sie ein generisches Symbol verwenden.

HKEY_CLASSES_ROOT
   MyProgram.exe
      shell
         open
            command
               (Default) = C:\MyDir\MyProgram.exe /a "%1"
         print
            command
               (Default) = C:\MyDir\MyProgram.exe /a /p "%1"
         printto
            command
               (Default) = C:\MyDir\MyProgram.exe /a /p "%1" "%2"

Zusätzliche Ressourcen

Bewährte Methoden für Kontextmenühandler und Mehrfachauswahlverben

Auswählen eines statischen oder dynamischen Verbs für das Kontextmenü

Erstellen von Kontextmenühandlern

Anpassen eines Kontextmenüs mithilfe dynamischer Verben

Kontextmenüs und Kontextmenühandler

Kontextmenüreferenz