Struttura CMINVOKECOMMANDINFOEX (shobjidl_core.h)

Contiene informazioni estese su un comando di menu di scelta rapida. Questa struttura è una versione estesa di CMINVOKECOMMANDINFO che consente l'uso di valori Unicode.

Sintassi

typedef struct _CMINVOKECOMMANDINFOEX {
  DWORD   cbSize;
  DWORD   fMask;
  HWND    hwnd;
  LPCSTR  lpVerb;
  LPCSTR  lpParameters;
  LPCSTR  lpDirectory;
  int     nShow;
  DWORD   dwHotKey;
  HANDLE  hIcon;
  LPCSTR  lpTitle;
  LPCWSTR lpVerbW;
  LPCWSTR lpParametersW;
  LPCWSTR lpDirectoryW;
  LPCWSTR lpTitleW;
  POINT   ptInvoke;
} CMINVOKECOMMANDINFOEX;

Members

cbSize

Tipo: DWORD

Dimensioni di questa struttura, in byte. Questo membro deve essere compilato dai chiamanti di IContextMenu::InvokeCommand e testato dalle implementazioni per sapere che la struttura è una struttura CMINVOKECOMMANDINFOEX anziché CMINVOKECOMMANDINFOINFO.

fMask

Tipo: DWORD

Zero o uno o più dei flag seguenti sono impostati per indicare il comportamento desiderato e indicare che devono essere usati altri campi nella struttura.

CMIC_MASK_HOTKEY

Il membro dwHotKey è valido.

CMIC_MASK_ICON

Il membro hIcon è valido. A partire da Windows Vista questo flag non viene usato.

CMIC_MASK_FLAG_NO_UI

L'implementazione di IContextMenu::InvokeCommand non consente di visualizzare elementi dell'interfaccia utente (ad esempio, messaggi di errore) durante l'esecuzione di un comando.

CMIC_MASK_UNICODE

Il gestore del menu di scelta rapida deve usare i membri lpVerbW, lpParametersW, lpDirectoryW e lpTitleW anziché i relativi equivalenti ANSI. Poiché alcuni gestori di menu di scelta rapida potrebbero non supportare Unicode, è necessario passare anche stringhe ANSI valide nei membri lpVerb, lpParameters, lpDirectory e lpTitle .

CMIC_MASK_NO_CONSOLE

Se un gestore di menu di scelta rapida deve creare un nuovo processo, in genere creerà una nuova console. L'impostazione del flag CMIC_MASK_NO_CONSOLE elimina la creazione di una nuova console.

CMIC_MASK_HASLINKNAME

Il membro lpTitle contiene un percorso completo di un file di collegamento. Usare in combinazione con CMIC_MASK_HASTITLE.

Nota Questo valore non è supportato nei sistemi Windows Vista e versioni successive.
 

CMIC_MASK_HASTITLE

Il membro lpTitle è valido.

Nota Questo valore non è supportato nei sistemi Windows Vista e versioni successive.
 

CMIC_MASK_FLAG_SEP_VDM

Questo flag è valido solo quando si fa riferimento a un'applicazione basata su Windows a 16 bit. Se impostata, l'applicazione a cui punta il collegamento viene eseguita in una macchina virtuale privata (VDM). Vedere la sezione Osservazioni.

CMIC_MASK_ASYNCOK

L'implementazione di IContextMenu::InvokeCommand può attivare un nuovo thread o processo per gestire la chiamata e non deve bloccare il completamento della funzione richiamata. Ad esempio, se il verbo è "delete" la chiamata IContextMenu::InvokeCommand può restituire prima che tutti gli elementi siano stati eliminati. Poiché si tratta di un avviso, la chiamata di applicazioni che specificano questo flag non può garantire che questa richiesta venga rispettata se non hanno familiarità con l'implementazione del verbo che richiamano.

CMIC_MASK_NOASYNC

Windows Vista e versioni successive. L'implementazione di IContextMenu::InvokeCommand deve essere sincrona e non deve essere restituita prima del completamento. Poiché ciò è consigliato, la chiamata di applicazioni che specificano questo flag non può garantire che questa richiesta venga rispettata se non hanno familiarità con l'implementazione del verbo che richiamano.

CMIC_MASK_SHIFT_DOWN

Il tasto MAIUSC viene premuto. Usare questa opzione anziché eseguire il polling dello stato corrente della tastiera che può essere stata modificata dopo la chiamata del verbo.

CMIC_MASK_CONTROL_DOWN

Il tasto CTRL viene premuto. Usare questa opzione anziché eseguire il polling dello stato corrente della tastiera che può essere stata modificata dopo la chiamata del verbo.

CMIC_MASK_FLAG_LOG_USAGE

Indica che l'implementazione di IContextMenu::InvokeCommand potrebbe voler tenere traccia dell'elemento richiamato per funzionalità come il menu "Documenti recenti".

CMIC_MASK_NOZONECHECKS

Non eseguire un controllo della zona. Questo flag consente a ShellExecuteEx di ignorare il controllo della zona inserito da IAttachmentExecute.

CMIC_MASK_PTINVOKE

Il membro ptInvoke è valido.

hwnd

Tipo: HWND

Handle per la finestra proprietaria del menu di scelta rapida. Un'estensione può anche usare questo handle come proprietario di qualsiasi finestra di messaggio o finestra di dialogo visualizzata. I chiamanti devono specificare un HWND legittimo che può essere usato come finestra del proprietario per qualsiasi interfaccia utente che può essere visualizzata. Se non si specifica un HWND quando si chiama da un thread dell'interfaccia utente (uno con finestre già create), la reentrancy e i possibili bug nell'implementazione di una chiamata IContextMenu::InvokeCommand .

lpVerb

Tipo: LPCSTR

Indirizzo di una stringa con terminazione Null che specifica il nome indipendente dalla lingua del comando da eseguire. Questo membro è in genere una stringa quando un comando viene attivato da un'applicazione. Il sistema fornisce valori costanti predefiniti per le stringhe di comando seguenti.

Costante Stringa di comando
CMDSTR_RUNAS "RunAs"
CMDSTR_PRINT "Stampa"
CMDSTR_PREVIEW "Anteprima"
CMDSTR_OPEN "Apri"
 

Questo non è un set fisso; I nuovi verbi canonici possono essere inventati dai gestori di menu di scelta rapida e le applicazioni possono richiamarli.

Se esiste un verbo canonico e un gestore di menu non implementa il verbo canonico, deve restituire un codice di errore per consentire al gestore successivo di gestire questo verbo. Se non si esegue questa operazione, la funzionalità verrà interrotta nel sistema, incluso ShellExecute.

In alternativa, anziché un puntatore, questo parametro può essere MAKEINTRESOURCE(offset) dove offset è l'offset dell'identificatore di menu del comando da eseguire. Le implementazioni possono usare la macro IS_INTRESOURCE per rilevare che questa alternativa è in uso. Shell usa questa alternativa quando l'utente sceglie un comando di menu.

lpParameters

Tipo: LPCSTR

Parametri facoltativi. Questo membro è sempre NULL per le voci di menu inserite da un'estensione shell.

lpDirectory

Tipo: LPCSTR

Nome facoltativo della directory di lavoro. Questo membro è sempre NULL per le voci di menu inserite da un'estensione shell.

nShow

Tipo: int

Set di valori SW_ da passare alla funzione ShowWindow se il comando visualizza una finestra o avvia un'applicazione.

dwHotKey

Tipo: DWORD

Scelta rapida da tastiera facoltativa da assegnare a qualsiasi applicazione attivata dal comando . Se il membro fMask non specifica CMIC_MASK_HOTKEY, questo membro viene ignorato.

hIcon

Tipo: HANDLE

Icona da usare per qualsiasi applicazione attivata dal comando . Se il membro fMask non specifica CMIC_MASK_ICON, questo membro viene ignorato.

lpTitle

Tipo: LPCSTR

Titolo ASCII.

lpVerbW

Tipo: LPCWSTR

Verbo Unicode, per i comandi che possono usarlo.

lpParametersW

Tipo: LPCWSTR

Parametri Unicode, per tali comandi che possono usarli.

lpDirectoryW

Tipo: LPCWSTR

Una directory Unicode, per tali comandi che possono usarla.

lpTitleW

Tipo: LPCWSTR

Titolo Unicode.

ptInvoke

Tipo: POINT

Punto in cui viene richiamato il comando. Se il membro fMask non specifica CMIC_MASK_PTINVOKE, questo membro viene ignorato. Questo membro non è valido prima di Internet Explorer 4.0.

Commenti

Anche se la dichiarazione IContextMenu::InvokeCommand specifica una struttura CMINVOKECOMMANDINFO per il parametro pici , può anche accettare una struttura CMINVOKECOMMANDINFOEX . Se si implementa questo metodo, è necessario controllare cbSize per determinare quale struttura è stata passata.

Per impostazione predefinita, tutte le applicazioni basate su Windows a 16 bit vengono eseguite come thread in una singola VDM condivisa. Il vantaggio di eseguire separatamente è che un arresto anomalo termina solo il singolo VDM; tutti gli altri programmi in esecuzione in macchine virtuali distinte continuano a funzionare normalmente. Inoltre, le applicazioni basate su Windows a 16 bit eseguite in macchine virtuali separate hanno code di input separate. Ciò significa che se un'applicazione smette di rispondere in modo momentaneo, le applicazioni in macchine virtuali separate continuano a ricevere l'input. Lo svantaggio dell'esecuzione separatamente è che richiede molto più memoria a tale scopo.

CMINVOKECOMMANDINFOEX è definito in Shobjidl.h, ma è necessario includere anche Shellapi.h per avere accesso completo a tutti i flag.

Nota Prima di Windows Vista, questa struttura è stata dichiarata in Shlobj.h.
 

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional, Windows XP [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione shobjidl_core.h (include Shobjidl.h)