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.
CMIC_MASK_HASTITLE
Il membro lpTitle è valido.
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.
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) |