Structure CMINVOKECOMMANDINFOEX (shobjidl_core.h)
Contient des informations étendues sur une commande de menu contextuel. Cette structure est une version étendue de CMINVOKECOMMANDINFO qui permet d’utiliser des valeurs Unicode.
Syntaxe
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;
Membres
cbSize
Type : DWORD
Taille de cette structure, en octets. Ce membre doit être renseigné par les appelants de IContextMenu ::InvokeCommand et testé par les implémentations pour savoir que la structure est une structure CMINVOKECOMMANDINFOEX plutôt que CMINVOKECOMMANDINFO.
fMask
Type : DWORD
Zéro, ou un ou plusieurs des indicateurs suivants sont définis pour indiquer le comportement souhaité et indiquer que d’autres champs de la structure doivent être utilisés.
CMIC_MASK_HOTKEY
Le membre dwHotKey est valide.
CMIC_MASK_ICON
Le membre hIcon est valide. À partir de Windows Vista, cet indicateur n’est pas utilisé.
CMIC_MASK_FLAG_NO_UI
L’implémentation de IContextMenu ::InvokeCommand ne peut pas afficher les éléments de l’interface utilisateur (par exemple, les messages d’erreur) lors de l’exécution d’une commande.
CMIC_MASK_UNICODE
Le gestionnaire de menu contextuel doit utiliser les membres lpVerbW, lpParametersW, lpDirectoryW et lpTitleW au lieu de leurs équivalents ANSI. Étant donné que certains gestionnaires de menus contextuels peuvent ne pas prendre en charge Unicode, vous devez également passer des chaînes ANSI valides dans les membres lpVerb, lpParameters, lpDirectory et lpTitle .
CMIC_MASK_NO_CONSOLE
Si un gestionnaire de menu contextuel doit créer un processus, il crée normalement une console. La définition de l’indicateur CMIC_MASK_NO_CONSOLE supprime la création d’une console.
CMIC_MASK_HASLINKNAME
Le membre lpTitle contient un chemin d’accès complet à un fichier de raccourcis. Utilisez conjointement avec CMIC_MASK_HASTITLE.
CMIC_MASK_HASTITLE
Le membre lpTitle est valide.
CMIC_MASK_FLAG_SEP_VDM
Cet indicateur est valide uniquement lorsqu’il fait référence à une application Windows 16 bits. S’il est défini, l’application vers laquelle le raccourci pointe s’exécute dans une machine virtuelle DOS privée (VDM). Consultez la section Notes.
CMIC_MASK_ASYNCOK
L’implémentation de IContextMenu ::InvokeCommand peut être dérivée d’un nouveau thread ou d’un nouveau processus pour gérer l’appel et n’a pas besoin de bloquer à l’achèvement de la fonction appelée. Par exemple, si le verbe est « supprimer », l’appel IContextMenu ::InvokeCommand peut retourner avant que tous les éléments aient été supprimés. Étant donné qu’il s’agit d’un avis, les applications appelantes qui spécifient cet indicateur ne peuvent pas garantir que cette demande sera respectée si elles ne sont pas familiarisées avec l’implémentation du verbe qu’elles appellent.
CMIC_MASK_NOASYNC
Windows Vista et versions ultérieures. L’implémentation de IContextMenu ::InvokeCommand doit être synchrone et ne doit pas être retournée avant d’être terminée. Étant donné que cela est recommandé, les applications appelantes qui spécifient cet indicateur ne peuvent pas garantir que cette requête sera respectée si elles ne sont pas familiarisées avec l’implémentation du verbe qu’elles appellent.
CMIC_MASK_SHIFT_DOWN
La touche Maj est enfoncée. Utilisez cette option au lieu d’interroger l’état actuel du clavier qui a peut-être changé depuis l’appel du verbe.
CMIC_MASK_CONTROL_DOWN
Appuyez sur la touche Ctrl. Utilisez cette option au lieu d’interroger l’état actuel du clavier qui a peut-être changé depuis l’appel du verbe.
CMIC_MASK_FLAG_LOG_USAGE
Indique que l’implémentation de IContextMenu ::InvokeCommand peut vouloir effectuer le suivi de l’élément appelé pour des fonctionnalités telles que le menu « Documents récents ».
CMIC_MASK_NOZONECHECKS
N’effectuez pas de case activée de zone. Cet indicateur permet à ShellExecuteEx de contourner la vérification de zone mise en place par IAttachmentExecute.
CMIC_MASK_PTINVOKE
Le membre ptInvoke est valide.
hwnd
Type : HWND
Handle de la fenêtre propriétaire du menu contextuel. Une extension peut également utiliser ce handle comme propriétaire de toutes les boîtes de message ou boîtes de dialogue qu’elle affiche. Les appelants doivent spécifier un HWND légitime qui peut être utilisé comme fenêtre propriétaire pour toute interface utilisateur qui peut être affichée. L’échec de la spécification d’un HWND lors de l’appel à partir d’un thread d’interface utilisateur (avec des fenêtres déjà créées) entraîne une réentrance et des bogues possibles dans l’implémentation d’un appel IContextMenu ::InvokeCommand .
lpVerb
Type : LPCSTR
Adresse d’une chaîne terminée par null qui spécifie le nom indépendant de la langue de la commande à exécuter. Ce membre est généralement une chaîne lorsqu’une commande est activée par une application. Le système fournit des valeurs constantes prédéfinies pour les chaînes de commande suivantes.
Constant | Chaîne de commande |
---|---|
CMDSTR_RUNAS | « RunAs » |
CMDSTR_PRINT | « Imprimer » |
CMDSTR_PREVIEW | « Préversion » |
CMDSTR_OPEN | « Ouvrir » |
Il ne s’agit pas d’un ensemble fixe ; de nouveaux verbes canoniques peuvent être inventés par les gestionnaires de menus contextuels et les applications peuvent les appeler.
S’il existe un verbe canonique et qu’un gestionnaire de menu n’implémente pas le verbe canonique, il doit retourner un code d’échec pour permettre au gestionnaire suivant de pouvoir gérer ce verbe. Si vous ne le faites pas, les fonctionnalités du système, y compris ShellExecute, sont rompues.
Sinon, plutôt qu’un pointeur, ce paramètre peut être MAKEINTRESOURCE(offset) où offset est le décalage d’identificateur de menu de la commande à exécuter. Les implémentations peuvent utiliser la macro IS_INTRESOURCE pour détecter que cette alternative est utilisée. L’interpréteur de commandes utilise cette alternative lorsque l’utilisateur choisit une commande de menu.
lpParameters
Type : LPCSTR
Paramètres facultatifs. Ce membre est toujours NULL pour les éléments de menu insérés par une extension Shell.
lpDirectory
Type : LPCSTR
Nom de répertoire de travail facultatif. Ce membre est toujours NULL pour les éléments de menu insérés par une extension Shell.
nShow
Type : int
Ensemble de valeurs SW_ à passer à la fonction ShowWindow si la commande affiche une fenêtre ou démarre une application.
dwHotKey
Type : DWORD
Raccourci clavier facultatif à affecter à n’importe quelle application activée par la commande . Si le membre fMask ne spécifie pas CMIC_MASK_HOTKEY, ce membre est ignoré.
hIcon
Type : HANDLE
Icône à utiliser pour toute application activée par la commande . Si le membre fMask ne spécifie pas CMIC_MASK_ICON, ce membre est ignoré.
lpTitle
Type : LPCSTR
Un titre ASCII.
lpVerbW
Type : LPCWSTR
Verbe Unicode, pour les commandes qui peuvent l’utiliser.
lpParametersW
Type : LPCWSTR
Paramètres Unicode, pour les commandes qui peuvent l’utiliser.
lpDirectoryW
Type : LPCWSTR
Un répertoire Unicode, pour les commandes qui peuvent l’utiliser.
lpTitleW
Type : LPCWSTR
Un titre Unicode.
ptInvoke
Type : POINT
Point où la commande est appelée. Si le membre fMask ne spécifie pas CMIC_MASK_PTINVOKE, ce membre est ignoré. Ce membre n’est pas valide avant Internet Explorer 4.0.
Remarques
Bien que la déclaration IContextMenu ::InvokeCommand spécifie une structure CMINVOKECOMMANDINFO pour le paramètre pici , elle peut également accepter une structure CMINVOKECOMMANDINFOEX . Si vous implémentez cette méthode, vous devez inspecter cbSize pour déterminer la structure qui a été passée.
Par défaut, toutes les applications Windows 16 bits s’exécutent en tant que threads dans un seul VDM partagé. L’avantage de l’exécution séparément est qu’un plantage ne termine que le seul VDM ; Tous les autres programmes exécutés sur des machines virtuelles distinctes continuent de fonctionner normalement. En outre, les applications Windows 16 bits exécutées dans des machines virtuelles distinctes ont des files d’attente d’entrée distinctes. Cela signifie que si une application cesse de répondre momentanément, les applications dans des machines virtuelles distinctes continuent de recevoir des entrées. L’inconvénient d’une exécution séparée est qu’elle utilise beaucoup plus de mémoire.
CMINVOKECOMMANDINFOEX lui-même est défini dans Shobjidl.h, mais vous devez également inclure Shellapi.h pour avoir un accès complet à tous les indicateurs.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel, Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | shobjidl_core.h (incluez Shobjidl.h) |