ShellExecuteExW, fonction (shellapi.h)

Effectue une opération sur un fichier spécifié.

Syntaxe

BOOL ShellExecuteExW(
  [in, out] SHELLEXECUTEINFOW *pExecInfo
);

Paramètres

[in, out] pExecInfo

Type : SHELLEXECUTEINFO*

Pointeur vers une structure SHELLEXECUTEINFO qui contient et reçoit des informations sur l’application en cours d’exécution.

Valeur retournée

Type : BOOL

Retourne TRUE en cas de réussite ; sinon, FALSE. Appelez GetLastError pour obtenir des informations d’erreur étendues.

Remarques

Étant donné que ShellExecuteEx peut déléguer l’exécution à des extensions Shell (sources de données, gestionnaires de menus contextuels, implémentations de verbes) activées à l’aide du modèle COM (Component Object Model), COM doit être initialisé avant l’appel de ShellExecuteEx . Certaines extensions shell nécessitent le type d’appartement monothread (STA) COM. Dans ce cas, COM doit être initialisé comme indiqué ici :

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

Dans certains cas, ShellExecuteEx n’utilise pas l’un de ces types d’extension Shell et ces instances ne nécessitent pas du tout l’initialisation de COM. Néanmoins, il est recommandé d’initialiser com avant d’utiliser cette fonction.

Lorsque des DLL sont chargées dans votre processus, vous obtenez un verrou appelé verrou de chargeur. La fonction DllMain s’exécute toujours sous le verrou du chargeur. Il est important de ne pas appeler ShellExecuteEx pendant que vous tenez un verrou de chargeur. Étant donné que ShellExecuteEx est extensible, vous pouvez charger du code qui ne fonctionne pas correctement en présence d’un verrou de chargeur, au risque d’un interblocage et donc d’un thread qui ne répond pas.

Avec plusieurs moniteurs, si vous spécifiez un HWND et que vous définissez le membre lpVerb de la structure SHELLEXECUTEINFO pointée par lpExecInfo sur « Propriétés », les fenêtres créées par ShellExecuteEx risquent de ne pas apparaître à la bonne position.

Si la fonction réussit, elle définit le membre hInstApp de la structure SHELLEXECUTEINFO sur une valeur supérieure à 32. Si la fonction échoue, hInstApp est défini sur la valeur d’erreur SE_ERR_XXX qui indique le mieux la cause de l’échec. Bien que hInstApp soit déclaré en tant que HINSTANCE pour la compatibilité avec les applications Windows 16 bits, il ne s’agit pas d’un véritable HINSTANCE. Il peut être converti uniquement en int et ne peut être comparé qu’à la valeur 32 ou aux codes d’erreur SE_ERR_XXX.

Les valeurs d’erreur SE_ERR_XXX sont fournies à des fins de compatibilité avec ShellExecute. Pour récupérer des informations d’erreur plus précises, utilisez GetLastError. Il peut retourner l’une des valeurs suivantes.

Erreur Description
ERROR_FILE_NOT_FOUND Le fichier spécifié est introuvable.
ERROR_PATH_NOT_FOUND Le chemin spécifié est introuvable.
ERROR_DDE_FAIL La transaction DDE (Dynamic Data Exchange) a échoué.
ERROR_NO_ASSOCIATION Aucune application n’est associée à l’extension de nom de fichier spécifiée.
ERROR_ACCESS_DENIED L’accès au fichier spécifié est refusé.
ERROR_DLL_NOT_FOUND L’un des fichiers de bibliothèque nécessaires à l’exécution de l’application est introuvable.
ERROR_CANCELLED La fonction a invité l’utilisateur à fournir des informations supplémentaires, mais l’utilisateur a annulé la demande.
ERROR_NOT_ENOUGH_MEMORY La mémoire est insuffisante pour effectuer l’action spécifiée.
ERROR_SHARING_VIOLATION Une violation de partage s’est produite.
 

Ouverture d’éléments à partir d’une URL Vous pouvez inscrire votre application pour l’activer lors de la transmission d’URL. Vous pouvez également spécifier les protocoles pris en charge par votre application. Pour plus d’informations, consultez Inscription d’application .

Prise en charge de la chaîne de site À partir de Windows 8, vous pouvez fournir un pointeur de chaîne de site vers la fonction ShellExecuteEx pour prendre en charge l’activation d’élément avec les services de ce site. Pour plus d’informations, consultez Lancement d’applications (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO).

Notes

L’en-tête shellapi.h définit ShellExecuteEx en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête shellapi.h
Bibliothèque Shell32.lib
DLL Shell32.dll (version 3.51 ou ultérieure)

Voir aussi

CoInitializeEx

IShellExecuteHook

Lancement d’applications (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)

ShellExecute