ShellExecuteA, fonction (shellapi.h)
Effectue une opération sur un fichier spécifié.
Syntaxe
HINSTANCE ShellExecuteA(
[in, optional] HWND hwnd,
[in, optional] LPCSTR lpOperation,
[in] LPCSTR lpFile,
[in, optional] LPCSTR lpParameters,
[in, optional] LPCSTR lpDirectory,
[in] INT nShowCmd
);
Paramètres
[in, optional] hwnd
Type : HWND
Handle de la fenêtre parente utilisée pour afficher une interface utilisateur ou des messages d’erreur. Cette valeur peut être NULL si l’opération n’est pas associée à une fenêtre.
[in, optional] lpOperation
Type : LPCTSTR
Pointeur vers une chaîne terminée par null, appelé dans ce cas un verbe, qui spécifie l’action à effectuer. L’ensemble de verbes disponibles dépend du fichier ou dossier particulier. En règle générale, les actions disponibles à partir du menu contextuel d’un objet sont des verbes disponibles. Les verbes suivants sont couramment utilisés :
modifier
Lance un éditeur et ouvre le document pour modification. Si lpFile n’est pas un fichier de document, la fonction échoue.
explorer
Explore un dossier spécifié par lpFile.
trouver
Lance une recherche commençant dans le répertoire spécifié par lpDirectory.
ouvrir
Ouvre l’élément spécifié par le paramètre lpFile . L’élément peut être un fichier ou un dossier.
Imprime le fichier spécifié par lpFile. Si lpFile n’est pas un fichier de document, la fonction échoue.
runas
Lance une application en tant qu’administrateur. Le contrôle de compte d’utilisateur (UAC) invite l’utilisateur à donner son consentement pour exécuter l’application avec élévation de privilèges ou entre les informations d’identification d’un compte d’administrateur utilisé pour exécuter l’application.
NULL
Le verbe par défaut est utilisé, s’il est disponible. Si ce n’est pas le cas, le verbe « ouvert » est utilisé. Si aucun verbe n’est disponible, le système utilise le premier verbe répertorié dans le Registre.
[in] lpFile
Type : LPCTSTR
Pointeur vers une chaîne terminée par null qui spécifie le fichier ou l’objet sur lequel exécuter le verbe spécifié. Pour spécifier un objet d’espace de noms Shell, passez le nom complet de l’analyse. Notez que tous les verbes ne sont pas pris en charge sur tous les objets. Par exemple, tous les types de documents ne prennent pas en charge le verbe « print ». Si un chemin relatif est utilisé pour le paramètre lpDirectory , n’utilisez pas de chemin relatif pour lpFile.
[in, optional] lpParameters
Type : LPCTSTR
Si lpFile spécifie un fichier exécutable, ce paramètre est un pointeur vers une chaîne terminée par null qui spécifie les paramètres à passer à l’application. Le format de cette chaîne est déterminé par le verbe à appeler. Si lpFile spécifie un fichier de document, lpParameters doit avoir la valeur NULL.
[in, optional] lpDirectory
Type : LPCTSTR
Pointeur vers une chaîne terminée par null qui spécifie le répertoire par défaut (de travail) de l’action. Si cette valeur est NULL, le répertoire de travail actuel est utilisé. Si un chemin relatif est fourni dans lpFile, n’utilisez pas de chemin relatif pour lpDirectory.
[in] nShowCmd
Type : INT
Indicateurs qui spécifient la façon dont une application doit être affichée lors de son ouverture. Si lpFile spécifie un fichier de document, l’indicateur est simplement passé à l’application associée. C’est à l’application de décider comment la gérer. Il peut s’agir de l’une des valeurs spécifiées dans le paramètre nCmdShow de la fonction ShowWindow.
Valeur retournée
Type : HINSTANCE
Si la fonction réussit, elle retourne une valeur supérieure à 32. Si la fonction échoue, elle retourne une valeur d’erreur qui indique la cause de l’échec. La valeur de retour est castée en tant que HINSTANCE pour la compatibilité descendante avec les applications Windows 16 bits. Ce n’est pas un vrai hinstance, cependant. Il peut être casté uniquement en INT_PTR et comparé à 32 ou aux codes d’erreur suivants ci-dessous.
Code de retour | Description |
---|---|
|
Le système d’exploitation n’a pas de mémoire ou de ressources. |
|
Le fichier spécifié est introuvable. |
|
Le chemin spécifié est introuvable. |
|
Le fichier .exe n’est pas valide (.exe non Win32 ou erreur dans .exe image). |
|
Le système d’exploitation a refusé l’accès au fichier spécifié. |
|
L’association de nom de fichier est incomplète ou non valide. |
|
La transaction DDE n’a pas pu être effectuée, car d’autres transactions DDE étaient en cours de traitement. |
|
Échec de la transaction DDE. |
|
La transaction DDE n’a pas pu être effectuée, car la demande a expiré. |
|
La DLL spécifiée est introuvable. |
|
Le fichier spécifié est introuvable. |
|
Aucune application n’est associée à l’extension de nom de fichier donnée. Cette erreur sera également retournée si vous tentez d’imprimer un fichier qui n’est pas imprimable. |
|
Il n’y avait pas assez de mémoire pour terminer l’opération. |
|
Le chemin spécifié est introuvable. |
|
Une violation de partage s’est produite. |
Appelez GetLastError pour obtenir des informations d’erreur étendues.
Remarques
Étant donné que ShellExecute 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 ShellExecute . 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)
Il existe certainement des cas où ShellExecute n’utilise pas l’un de ces types d’extension Shell et où 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.
Cette méthode vous permet d’exécuter toutes les commandes dans le menu contextuel d’un dossier ou stockées dans le Registre.
Pour ouvrir un dossier, utilisez l’un des appels suivants :
ShellExecute(handle, NULL, <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);
ou
ShellExecute(handle, "open", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);
Pour explorer un dossier, utilisez l’appel suivant :
ShellExecute(handle, "explore", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);
Pour lancer l’utilitaire Find de l’interpréteur de commandes pour un répertoire, utilisez l’appel suivant.
ShellExecute(handle, "find", <fully_qualified_path_to_folder>, NULL, NULL, 0);
Si lpOperation a la valeur NULL, la fonction ouvre le fichier spécifié par lpFile. Si lpOperation est « open » ou « explore », la fonction tente d’ouvrir ou d’explorer le dossier.
Pour obtenir des informations sur l’application lancée suite à l’appel de ShellExecute, utilisez ShellExecuteEx.
Notes
L’en-tête shellapi.h définit ShellExecute 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
Lancement d’applications (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)