Freigeben über


Verben und Dateizuordnungen

Wenn ein Benutzer mit der rechten Maustaste auf ein Shell-Objekt wie eine Datei klickt, 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.

Im folgenden Beispiel wird ein Standardverknüpfungsmenü veranschaulicht, das durch Klicken mit der rechten Maustaste MyFile.xyz-msangezeigt wird.

Screenshot des standardverknüpfungsmenü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 Mitöffnen .

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 auf Dateibasis erweitern können. Weitere Informationen finden Sie unter Erstellen von Kontextmenühandlernund Kontextmenüreferenz.

Hinzufügen von Befehlen zu einem Kontextmenü

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

Kontextmenüverben

Jeder Befehl im Kontextmenü wird in der Registrierung durch sein Verb identifiziert. Diese Verben entsprechen 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 zum Öffnen einer Datei. 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 das Element ein Leerzeichen enthält, nicht richtig analysiert. Beispielsweise 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 können auch einen Anzeigenamen zugeordnet haben, der im Kontextmenü anstelle der Verbzeichenfolge selbst angezeigt wird. Beispielsweise ist die Anzeigezeichenfolge für openas Open With. Wie normale Menüzeichenfolgen, einschließlich eines kaufmännischen Und-Zeichens in der Anzeigezeichenfolge, ermöglicht die Tastaturauswahl des Befehls.

Streamen sie Nicht-Dateisystemelemente und OpenSearch-Ergebnisse.

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 in Windows Explorer anzeigen. Der OpenSearch v1.1-Standard definiert einfache Dateiformate, mit denen beschrieben werden kann, wie ein Client den Webdienst für den Datenspeicher abfragen und wie der Dienst Ergebnisse zurückgeben soll, die vom Client gerendert werden sollen.

Möglicherweise müssen Sie Nicht-Dateisystemelemente streamen, um zu vermeiden, dass Elemente im Falle von OpenSearch- Ergebnissen heruntergeladen werden müssen. Das Feature für die Sammelsuche ermöglicht das Durchsuchen von Elementen von Nicht-Dateisystemspeicherorten, die OpenSearch unterstützen, z. B. SharePoint und andere webdienstgestützte Websites. Beim Aufrufen von Verben für diese Elemente lädt das System eine temporäre Version des Elements herunter und übergibt es an die Verbimplementierung. Verbimplementierer werden ermutigt, die Notwendigkeit zu vermeiden, die Datei herunterzuladen, indem sie die Gruppe von URL-Schemas registrieren, die das Verb zum Streamen der Elemente unterstützt. Verben verwenden dazu den SupportedProtocols Registrierungsschlüssel.

Registrieren einer Anwendung zum Behandeln beliebiger Dateitypen

Wenn Sie Kontextmenüelemente für einen bestimmten Dateityp definieren, 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 die Registrierung von Kontextmenüelementen. 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 z. B. ein Befehlszeilenflagge 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 unter dem Unterschlüssel der Anwendung HKEY_CLASSES_ROOT\Applicationserstellt haben. Sie können auch einen FriendlyAppName- Wert einschließen, um das System mit einem 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.

Im folgenden Beispielregistrierungseintrag wird eine Standardprozedur für MyProgram.exe veranschaulicht, die einen Anzeigenamen und mehrere Kontextmenüelemente definiert. Die Befehlszeichenfolgen enthalten das /a Flag, um die Anwendung zu benachrichtigen, dass sie einen beliebigen Dateityp öffnet. 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 von dynamischen Verben

Kontextmenüs und Kontextmenühandler

Kontextmenüreferenz