Condividi tramite


Come creare menu a cascata con la voce di registro ExtendedSubCommandsKey

In Windows 7 e versioni successive è possibile usare la sottochiave ExtendedSubCommandsKey per creare menu a catena estesi.

La schermata seguente è un esempio di menu a cascata esteso.

schermata che mostra il menu a cascata esteso per i dispositivi

Poiché HKEY_CLASSES_ROOT è una combinazione di HKEY_CURRENT_USER e HKEY_LOCAL_MACHINE, è possibile registrare i subverbs nella sottochiave HKEY_CURRENT_USER\Software\Classi. Il vantaggio di farlo è che l'autorizzazione con privilegi elevati non è necessaria. Altre associazioni di file possono riutilizzare questo intero set di verbi specificando la stessa sottochiave ExtendedSubCommandsKey. Se non è necessario riutilizzare questo set di verbi, è possibile elencare i verbi sotto l'elemento padre. In questo caso, assicurarsi che il valore predefinito dell'elemento padre sia vuoto, come illustrato nell'esempio della voce del Registro di sistema in questa sezione.

Disposizioni

Passaggio 1:

Creare una sottochiave in HKEY_CLASSES_ROOT\ProgID\shell\CascadeMenuKey e assegnare a CascadeMenuKey un nome, ad esempio CascadeTest. Aggiungere quindi una voce MUIVerb di tipo REG_SZ e assegnargli un nome, ad esempio Test Cascade Menu 2, come illustrato nell'esempio del Registro di sistema seguente.

HKEY_CLASSES_ROOT
   txtfile
      shell
         CascadeTest
            MUIVerb = Test Cascade Menu 2

Passaggio 2:

Nella sottochiave CascadeTest creata, aggiungi una sottochiave ExtendedSubCommandsKey e quindi aggiungi i sottocomandi del documento (di tipo REG_SZ); per esempio:

HKEY_CLASSES_ROOT
   txtfile
      Shell
         Test Cascade Menu 2
            (Default)
            ExtendedSubCommandsKey
               Layout
               Properties
               Select all

Assicurarsi che il valore predefinito della sottochiave Menu a catena di test 2 sia vuoto e visualizzato come (valore non impostato).

Passaggio 3:

Popolare i sottoverbi usando una delle implementazioni di verbi statici seguenti. Si noti che la sottochiave CommandFlags rappresenta i valori EXPCMDFLAGS. Se si desidera aggiungere un separatore prima o dopo la voce di menu a catena, usare ECF_SEPARATORBEFORE (0x20) o ECF_SEPARATORAFTER (0x40). Per una descrizione di questi flag di Windows 7 e versioni successive, vedere IExplorerCommand::GetFlags. ECF_SEPARATORBEFORE funziona solo per le voci di menu di primo livello. MUIVerb è di tipo REG_SZe CommandFlags è di tipo REG_DWORD.

HKEY_CLASSES_ROOT
   txtile
      Shell
         Test Cascade Menu 2
            (Default)
            ExtendedSubCommandsKey
               Shell
                  cmd1
                     MUIVerb = Notepad
                     command
                        (Default) = %SystemRoot%\system32\notepad.exe %1
                  cmd2
                     MUIVerb = Wordpad
                     CommandFlags = 0x20
                     command
                        (Default) = C:\Program Files\Windows NT\Accessories\wordpad.exe %1

Osservazioni

Il seguente screenshot è un'illustrazione degli esempi precedenti delle voci del Registro di sistema.

schermata che mostra un esempio di menu a cascata che mostra le scelte del Blocco note e del wordpad