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
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
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
lancement d’applications (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)