Condividi tramite


Estensione dei menu di scelta rapida

Facendo clic con il pulsante destro del mouse su un oggetto viene normalmente visualizzata una finestra di scelta rapida. Questo menu contiene un elenco di comandi che l'utente può selezionare per eseguire varie azioni sull'oggetto. In questa sezione viene fornita un'introduzione ai menu di scelta rapida per gli oggetti del file system.

Altre informazioni sono disponibili qui:

Menu di scelta rapida per gli oggetti file system

Quando un utente fa clic con il pulsante destro del mouse su un oggetto, ad esempio un file, visualizzato in Esplora risorse o sul desktop, viene visualizzato un menu di scelta rapida con un elenco di comandi. L'utente può quindi eseguire un'azione sul file, ad esempio l'apertura o l'eliminazione, selezionando il comando appropriato.

Poiché i menu di scelta rapida vengono spesso usati per la gestione dei file, shell fornisce un set di comandi predefiniti, ad esempio Taglia e Copia, visualizzati nel menu di scelta rapida per qualsiasi file. Si noti che anche se Open With è un comando predefinito, non viene visualizzato per alcuni tipi di file standard, ad esempio wav. La figura seguente della directory Documenti personali di esempio, usata anche come esempio in Personalizzazione delle icone, mostra un menu di scelta rapida predefinito visualizzato facendo clic con il pulsante destro del mouse su MyDocs4.xyz.

screen shot of the default shortcut menu for file system objects

Il motivo per cui MyDocs4.xyz mostra un menu di scelta rapida predefinito è che non è membro di un tipo di file registrato. D'altra parte, .txt è un tipo di file registrato. Se si fa clic con il pulsante destro del mouse su uno dei file con estensione txt, verrà visualizzato un menu di scelta rapida con due comandi aggiuntivi nella relativa sezione superiore: Apri e Stampa.

screen shot of the customized shortcut menu for file system objects

Dopo aver registrato un tipo di file, è possibile estendere il relativo menu di scelta rapida con comandi aggiuntivi. Vengono visualizzati sopra i comandi predefiniti quando si fa clic con il pulsante destro del mouse su qualsiasi file di quel tipo. Anche se la maggior parte dei comandi aggiunti in questo modo sono comuni, ad esempio Stampa o Apri, è possibile aggiungere qualsiasi comando che un utente potrebbe trovare utile.

Tutto ciò che è necessario per estendere il menu di scelta rapida per un tipo di file consiste nel creare una voce del Registro di sistema per ogni comando. Un approccio più sofisticato consiste nell'implementare un gestore di menu di scelta rapida, che consente di estendere il menu di scelta rapida per un tipo di file in base al file. Per altre informazioni, vedere Creazione di gestori di menu di scelta rapida.

Verbi del menu di scelta rapida

Ogni comando del menu di scelta rapida viene identificato nel Registro di sistema dal relativo verbo. Questi verbi sono uguali a quelli usati da ShellExecuteEx quando si avviano applicazioni a livello di codice. Per altre informazioni sull'uso di ShellExecuteEx, vedere la discussione sull'avvio di applicazioni.

Un verbo è una semplice stringa di testo usata dalla shell per identificare il comando associato. Ogni verbo corrisponde alla stringa di comando usata per avviare il comando in una finestra della console o in un file batch (con estensione bat). Ad esempio, il verbo aperto avvia normalmente un programma per aprire un file. La stringa di comando è in genere simile alla seguente:

"My Program.exe" "%1"

"%1" è il segnaposto standard per un parametro della riga di comando fornito con il nome file. Ad esempio, può specificare una determinata pagina da visualizzare in una visualizzazione a schede.

Nota

Se un elemento della stringa di comando contiene o può contenere spazi, deve essere racchiuso tra virgolette. In caso contrario, se l'elemento contiene uno spazio, non verrà analizzato correttamente. Ad esempio, "My Program.exe" avvierà correttamente l'applicazione. Se si usa My Program.exe, il sistema tenterà di avviare "My" con "Program.exe" come primo argomento della riga di comando. È consigliabile usare sempre le virgolette con argomenti come "%1" espansi in stringhe dalla shell, perché non è possibile essere certi che la stringa non conterrà uno spazio.

 

I verbi possono anche avere una stringa di visualizzazione associata, che viene visualizzata nel menu di scelta rapida anziché nella stringa del verbo stesso. Ad esempio, la stringa di visualizzazione per openas è Open With. Come le normali stringhe di menu, inclusa una e commerciale (&) nella stringa di visualizzazione consente la selezione della tastiera del comando.

Verbi canonici

In generale, le applicazioni sono responsabili della fornitura di stringhe di visualizzazione localizzate per i verbi definiti. Tuttavia, per fornire un grado di indipendenza del linguaggio, il sistema definisce un set standard di verbi comunemente usati denominati verbi canonici. Un verbo canonico può essere usato con qualsiasi lingua e il sistema genera automaticamente una stringa di visualizzazione localizzata correttamente. Ad esempio, la stringa di visualizzazione del verbo aperto verrà impostata su Open in un sistema inglese e su Öffnen in un sistema tedesco.

I verbi canonici includono:

Valore Descrizione
apre Apre il file o la cartella.
Opennew Apre il file o la cartella in una nuova finestra.
print Stampa il file.
Esplorare Apre Esplora risorse con la cartella selezionata.
find Apre la finestra di dialogo Ricerca di Windows con la cartella impostata come percorso di ricerca predefinito.
openas Apre la finestra di dialogo Apri con .
proprietà Apre la finestra delle proprietà dell'oggetto.

 

Il verbo printto è anche canonico ma non viene mai visualizzato. Consente all'utente di stampare un file trascinandolo in un oggetto stampante.

Verbi estesi

Quando l'utente fa clic con il pulsante destro del mouse su un oggetto, il menu di scelta rapida contiene tutti i verbi normali. Tuttavia, potrebbero essere presenti comandi che si desidera supportare ma che non sono stati visualizzati in ogni menu di scelta rapida. Ad esempio, è possibile avere comandi che non vengono comunemente usati o destinati a utenti esperti. Per questo motivo, è anche possibile definire uno o più verbi estesi. Questi verbi sono anche stringhe di caratteri e sono simili ai verbi normali. Si distinguono dai verbi normali nel modo in cui vengono registrati. Per avere accesso ai comandi associati ai verbi estesi, l'utente deve fare clic con il pulsante destro del mouse su un oggetto premendo MAIUSC. I verbi estesi verranno quindi visualizzati insieme ai verbi normali.

Estensione del menu di scelta rapida per un tipo di file

Il modo più semplice per estendere il menu di scelta rapida per un tipo di file è con il Registro di sistema. A tale scopo, aggiungere una sottochiave shell sotto la chiave per ProgID dell'applicazione associata al tipo di file. Facoltativamente, è possibile definire un verbo predefinito per il tipo di file impostando il valore predefinito della sottochiave shell .

Il verbo predefinito viene visualizzato per primo nel menu di scelta rapida. Lo scopo è fornire alla shell un verbo che può usare quando ShellExecuteEx viene chiamato ma non viene specificato alcun verbo. Shell non seleziona necessariamente il verbo predefinito quando ShellExecuteEx viene usato in questo modo. Per Shell versioni 5.0 e successive, disponibili nei sistemi Windows 2000 e versioni successive, Shell usa il primo verbo disponibile nell'elenco seguente. Se non sono disponibili, l'operazione ha esito negativo.

  • Verbo aperto
  • Verbo predefinito
  • Primo verbo nel Registro di sistema
  • Verbo openwith

Per le versioni di Shell precedenti alla versione 5.0, omettere il terzo elemento.

Sotto la sottochiave shell creare una sottochiave per ogni verbo da aggiungere. Ognuna di queste sottochiavi avrà un valore REG_SZ impostato sulla stringa di visualizzazione del verbo. È possibile omettere la stringa di visualizzazione per i verbi canonici perché il sistema visualizzerà automaticamente una stringa localizzata correttamente. Se si omette la stringa di visualizzazione per verbi noncanonici, verrà visualizzata la stringa del verbo. Per ogni sottochiave verbo, creare una sottochiave del comando con il valore predefinito impostato sulla stringa di comando.

La figura seguente mostra un menu di scelta rapida per il tipo di file con estensione myp usato in Tipi di file e Personalizzazione delle icone. Ora dispone di verbi aperti, doit, stampa e printto nel menu di scelta rapida, con doit come verbo predefinito. Il menu di scelta rapida è simile al seguente.

screen shot of the customized shortcut menu

Le voci del Registro di sistema usate per estendere il menu di scelta rapida illustrato nella figura precedente sono:

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
   MyProgram.1
      (Default) = MyProgram Application
      Shell
         (Default) = doit
         open
            command
               (Default) = C:\MyDir\MyProgram.exe "%1"
         doit
            (Default) = &Do It
            command
               (Default) = C:\MyDir\MyProgram.exe /d "%1"
         print
            command
               (Default) = C:\MyDir\MyProgram.exe /p "%1"
         printto
            command
               (Default) = C:\MyDir\MyProgram.exe /p "%1" "%2" %3 %4

Anche se il comando Open With è sopra il primo separatore, viene creato automaticamente dal sistema e non richiede una voce del Registro di sistema. Il sistema crea automaticamente nomi visualizzati per i verbi canonici aperti e stampati. Poiché doit non è un verbo canonico, viene assegnato un nome visualizzato, "&Do It", che può essere selezionato premendo il tasto D. Il verbo printto non viene visualizzato nel menu di scelta rapida, ma include che consente all'utente di stampare i file rilasciandoli su un'icona della stampante. In questo esempio% 1 rappresenta il nome del file e %2 il nome della stampante.

I verbi possono essere eliminati tramite le impostazioni dei criteri aggiungendo un valore SuppressPolicy alla chiave del verbo. Impostare il valore di SuppressionPolicy sull'ID criterio. Se il criterio è attivato, il verbo e la voce di menu di scelta rapida associata vengono eliminati. Per i possibili valori id criterio, vedere l'enumerazione RESTRICTIONS .

Estensione del menu di scelta rapida per oggetti shell predefiniti

Molti oggetti Shell predefiniti dispongono di menu di scelta rapida che possono essere estesi. Registrare il comando nello stesso modo in cui si registrano i tipi di file tipici, ma usare il nome dell'oggetto predefinito come nome del tipo di file.

Un elenco di oggetti predefiniti è disponibile nella sezione Oggetti shell predefiniti di Creazione di gestori dell'estensione shell. Gli oggetti Shell predefiniti i cui menu di scelta rapida possono essere estesi aggiungendo verbi nel Registro di sistema sono contrassegnati nella tabella con la parola "Verbo".

Registrazione di un'applicazione per gestire tipi di file arbitrari

Le sezioni precedenti di questo documento hanno illustrato come definire le voci di menu di scelta rapida per un particolare tipo di file. Tra le altre cose, la definizione del menu di scelta rapida consente di specificare come l'applicazione associata apre un membro del tipo di file. Tuttavia, come illustrato in Tipi di file, le applicazioni possono anche registrare una procedura predefinita separata da usare quando un utente tenta di usare l'applicazione per aprire un tipo di file non associato all'applicazione. Questo argomento viene illustrato qui perché si registra la procedura predefinita nello stesso modo in cui si registrano voci di menu di scelta rapida.

La procedura predefinita serve due scopi di base. Uno consiste nel specificare come deve essere richiamata l'applicazione per aprire un tipo di file arbitrario. È possibile, ad esempio, usare un flag della riga di comando per indicare che è in corso l'apertura di un tipo di file sconosciuto. L'altro scopo è definire le varie caratteristiche di un tipo di file, ad esempio le voci di menu di scelta rapida e l'icona. Se un utente associa l'applicazione a un tipo di file aggiuntivo, tale tipo avrà queste caratteristiche. Se il tipo di file aggiuntivo è stato precedentemente associato a un'altra applicazione, queste caratteristiche sostituiranno gli originali.

Per registrare la procedura predefinita, inserire le stesse chiavi del Registro di sistema create per il ProgID dell'applicazione nella sottochiave dell'applicazione di HKEY_CLASedizione StandardS_ROOT\Applications. È anche possibile includere un valore FriendlyAppName per fornire al sistema un nome descrittivo per l'applicazione. Il nome descrittivo dell'applicazione può anche essere estratto dal file eseguibile, ma solo se il valore FriendlyAppName è assente. Il frammento del Registro di sistema seguente mostra una procedura predefinita di esempio per MyProgram.exe che definisce un nome descrittivo e diverse voci di menu di scelta rapida. Le stringhe di comando includono il flag /a per notificare all'applicazione che sta aprendo un tipo di file arbitrario. Se si include una sottochiave DefaultIcon , è consigliabile usare un'icona generica.

HKEY_CLASSES_ROOT
   Applications
      MyProgram.exe
         FriendlyAppName = Friendly Name
         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" %3 %4

Estensione del nuovo sottomenu

Quando un utente apre il menu File in Esplora risorse, il primo comando è Nuovo. Selezionando questo comando viene visualizzato un sottomenu. Per impostazione predefinita, contiene due comandi, Folder e Shortcut, che consentono agli utenti di creare sottocartelle e collegamenti. Questo sottomenu può essere esteso per includere i comandi di creazione di file per qualsiasi tipo di file.

Per aggiungere un comando di creazione file al sottomenu Nuovo , ai file dell'applicazione deve essere associato un tipo di file. Includere una sottochiave ShellNew sotto la chiave per l'estensione del nome file. Quando è selezionato il comando Nuovo del menu File, shell lo aggiungerà al sottomenu Nuovo. La stringa di visualizzazione del comando sarà la stringa descrittiva assegnata al ProgID del programma.

Assegnare uno o più valori di dati alla sottochiave ShellNew per specificare il metodo di creazione del file. I valori disponibili seguono.

Valore Descrizione
Comando Esegue un'applicazione. Si tratta di un valore REG_SZ che specifica il percorso dell'applicazione da eseguire. Ad esempio, è possibile impostarlo per avviare una procedura guidata.
Dati Crea un file contenente i dati specificati. I dati sono un valore REG_BINARY con i dati del file. I dati vengono ignorati se viene specificato NullFile o FileName.
FileName Crea un file che rappresenta una copia di un file specificato. FileName è un valore REG_SZ , impostato sul percorso completo del file da copiare.
NullFile Crea un file vuoto. NullFile non viene assegnato un valore. Se si specifica NullFile, i valori Data e FileName vengono ignorati.

 

La figura seguente mostra il sottomenu Nuovo per il tipo di file myp usato come esempio in Tipi di file e Personalizzazione delle icone. Ora ha un comando MyProgram Application. Quando un utente seleziona MyProgram Application dal sottomenu Nuovo , shell crea un file denominato "New MyProgram Application.myp" e lo passa a MyProgram.exe.

screen shot of the custom new menu

La voce del Registro di sistema è ora la seguente:

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
      MyProgram.1
         ShellNew
            NullFile
   MyProgram.1
      (Default) = MyProgram Application
      DefaultIcon
         (Default) = C:\MyDir\MyProgram.exe,2
      Shell
         (Default) = doit
         open
            command
               (Default) = C:\MyDir\MyProgram.exe "%1"
         doit
            (Default) = &Do It
            command
               (Default) = C:\MyDir\MyProgram.exe /d "%1"
         print
            command
               (Default) = C:\MyDir\MyProgram.exe /p "%1"
         printto
            command
               (Default) = C:\MyDir\MyProgram.exe /p "%1" "%2" %3 %4