ShellExecuteExA, fonction (shellapi.h)

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

Syntaxe

BOOL ShellExecuteExA(
  [in, out] SHELLEXECUTEINFOA *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 de retour

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 aux extensions Shell (sources de données, gestionnaires de menus contextuels, implémentations détaillées) qui sont activées à l’aide du modèle objet de composant (COM), COM doit être initialisé avant ShellExecuteEx est appelé. Certaines extensions Shell nécessitent le type STA (Single-Threaded Apartment) COM. Dans ce cas, COM doit être initialisé comme indiqué ici :

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

Il existe des instances où ShellExecuteEx n’utilise pas l’un de ces types d’extension Shell et que ces instances ne nécessitent pas que COM soit initialisé du tout. Néanmoins, il est recommandé d’initialiser toujours COM avant d’utiliser cette fonction.

Lorsque des DLL sont chargées dans votre processus, vous obtenez un verrou appelé verrou chargeur. La fonction DllMain s’exécute toujours sous le verrou du chargeur. Il est important de ne pas appeler ShellExecuteEx pendant que vous maintenez 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, en risque d’interblocage et donc d’un thread non répond.

Avec plusieurs moniteurs, si vous spécifiez un HWND et définissez le membre lpVerb de la structure SHELLEXECUTEINFO pointée par lpExecInfo sur « Properties », toutes les fenêtres créées par ShellExecuteEx peuvent ne pas apparaître dans la position correcte.

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é comme un HINSTANCE pour la compatibilité avec les applications Windows 16 bits, il n’est pas un vrai HINSTANCE. Il ne peut être casté qu’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 pour la 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é n’a pas été trouvé.
ERROR_PATH_NOT_FOUND Le chemin d’accès spécifié n’a pas été trouvé.
ERROR_DDE_FAIL Échec de la transaction DDE (Dynamic Data Exchange).
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 pour exécuter 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 Il n’y a pas suffisamment de mémoire 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 l’activation des URL passées. Vous pouvez également spécifier les protocoles pris en charge par votre application. Pour plus d’informations, consultez d’inscription d’application.

la 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éments avec les services de ce site. Pour plus d’informations, consultez lancement d’applications (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO).

Note

L’en-tête shellapi.h définit ShellExecuteEx comme 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. Le mélange 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’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