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.

Note Cette valeur n’est pas prise en charge dans Windows Vista et les systèmes ultérieurs.
 

CMIC_MASK_HASTITLE

Le membre lpTitle est valide.

Note Cette valeur n’est pas prise en charge dans Windows Vista et les systèmes ultérieurs.
 

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.

Note Avant Windows Vista, cette structure était déclarée dans Shlobj.h.
 

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)