Tastenkombinationen in Kontextmenüs (Windows 10)

510
jippyjoe4

Ich habe also auf meinem Desktop eine Datei mit einer neuen Erweiterung erstellt, und das Kontextmenü sieht folgendermaßen aus:

enter image description here

Ich kann das Kontextmenü mit der Menütaste auf meiner Tastatur aufrufen und einige der Elemente im Kontextmenü auswählen, indem Sie die Tasten danach drücken. Dies gibt mir natürlich die Möglichkeit, Tastenkombinationen zu erstellen. Ich verstehe jedoch nicht ganz, wie sie funktionieren. Nehmen Sie das folgende Beispiel.

Wenn ich eine Datei mit dem Namen "item.newextension" erstelle und dann die folgende Registrierungsdatei importiere:

Windows Registry Editor Version 5.00  [HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.newextension\shell\Edit\command] @="notepad.exe \"%1\""  [HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.newextension\shell\Contemplate\command] @="mspaint.exe \"%1\"" 

Ich bekomme einige inkonsistente und interessante Ergebnisse. Um auf derselben Seite zu sein, sieht mein Kontextmenü jetzt so aus:

enter image description here

Wenn ich das Kontextmenü öffne und die Taste "e" drücke, wird der Notizblock sofort geöffnet. Wenn ich das Kontextmenü öffne und die Taste "c" drücke, wechselt das Kontextmenü zwischen "contemplate" und "copy", wählt es jedoch erst, wenn ich die Eingabetaste drücke.

Wenn ich genau hinschaue, ist mir klar, dass unter jedem Buchstaben im Kontextmenüeintrag eine kleine Zeile angezeigt wird, die der Taste entspricht, die zur Auswahl gedrückt werden muss. Wenn eine Überschneidung vorliegt, wechselt das wiederholte Drücken dieser Taste zwischen den beiden Tasten. Ich habe also ein paar Fragen:

  1. Wie kann ich beim Erstellen eigener Kontextmenüeinträge wie in der REG-Datei auswählen, welcher Schlüssel für die Auswahl dieses Eintrags verantwortlich ist?
  2. Kann ich vorhandene Tastenkombinationen für Dinge wie "Verknüpfung erstellen" und "Kopieren" ändern, oder müssen sie immer "s" bzw. "c" sein?

Ich bin auf Windows 10 1803 Build 17134 als Referenz.

2

1 Antwort auf die Frage

2
Ben N

Wenn mehrere Kontextmenüelemente mit demselben Hotkey vorhanden sind, können Sie durch Drücken dieses Hotkeys zwischen ihnen umschalten. Wenn ein Hotkey nur einem Element entspricht, wird das Element sofort durch Drücken ausgelöst.

Offensichtlich verwendet Windows den ersten Buchstaben des Textes des Elements als Hotkey. Sie können dies überschreiben, indem &Sie vor dem Buchstaben, den Sie als Hotkey verwenden möchten, ein kaufmännisches Und ( ) eingeben. Dies muss jedoch im Standardwert des Registrierungsschlüssels des Befehls erfolgen, nicht im Namen des Schlüssels. In diesem Bild habe ich versucht, Oden Hotkey für "Bearbeiten" in und den Hotkey für "Bearbeiten" zu ändern I:

using an ampersand in the key name or the default value seems to work

Beide scheinen zu funktionieren, indem die obige Konfiguration dieses Kontextmenü erzeugt:

the changes take effect visually

Wenn Sie Osofort drücken, Iwird Contemplate ausgelöst. Wenn Sie jedoch keinen anderen Menüpunkt verwenden, wird durch Drücken von nichts bewirkt I. Wenn Sie Edit so ändern, dass ein kaufmännisches und ein kaufmännischer Schlüsselname verwendet wird, der Standardwert Ed&itist, funktioniert er wie erwartet.

Es gibt keine einfache Möglichkeit, die integrierten Kontextmenüelemente wie Kopieren zu ändern. Sie befinden sich nicht in der Registrierung und werden stattdessen vom Explorer generiert. Möglicherweise können Sie eine Shell-Erweiterung schreiben, die die SetMenuItemInfoentsprechenden Menüinformationsstrukturen verwendet, um sie zur Laufzeit zu ändern. Für eine ältere Antwort habe ich eine Shell-Erweiterung geschrieben, um die Symbole der integrierten Elemente zu ändern, die möglicherweise einen guten Ausgangspunkt darstellen.