Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - ShellExecute

Présentation

La fonction API (Application Programming Interface) "ShellExecute" permet d'effectuer certaines opérations sur un fichier spécifique. Ce fichier peut être un fichier exécutable ou un simple document comme par exemple un fichier texte, image, son,...
Cette fonction permet entre autres de lancer une application externe (Paint, NotePad,...).


Les caractèristiques de la fonction "ShellExecute"

Pour utiliser la fonction "ShellExecute", il faut commencer à connaitre chaque paramètre qu'elle contient.
La syntaxe de la fonction "ShellExecute" est la suivante :

function ShellExecuteW(hWnd:HWND;Operation,FileName,Parameters,Directory: PWideChar;ShowCmd:Integer);

Ce tableau donne une description des différents paramètres employés par la fonction ShellExecute.


Paramètre
Description
hWND
Handle de la fenêtre parent.
Operation
Type d'opération sur un fichier ou un dossier.
FileName
Nom complet du fichier ou du dossier. 
Parameters
Paramètres passé au fichier exécutable spécifié par le paramètre "FileName".
Directory
Dossier par défaut.
ShowCmd
Détermine comment la fenêtre d'application va s'ouvrir.

On peut également noter que cette fonction renvoit en cas d'erreur un nombre inférieur ou égale à 32.

Pour connaitre exactement la nature de cette erreur, vous pouvez utiliser la fonction "GetLastError" comme ceci :

if ShellExecute(Handle,'open',PChar('c:\test.exe'),nil,nil,SW_SHOWNORMAL)<=32 then
ShowMessage(SysErrorMessage(GetLastError));

L'erreur la plus classique (ce qui correspond à la valeur "ERROR_FILE_NOT_FOUND") survient lorsque le fichier n'est pas trouvé. C'est pour cela, qu'il faut indiquer le chemin complet du fichier (sauf si le fichier se trouve dans un répertoire Windows) par l'intermédiaire du paramètre "FileName".



Le paramètre "Operation"

Ce tableau montre les différents valeurs que peut prendre le paramètre "Operation".

Valeur
Description
edit
Ouvre le fichier spécifier par le paramètre "FileName" avec l'éditeur par défaut.
explore
Explore le dossier spécifié par le paramètre "FileName" avec l'explorateur Windows.
find
Ouvre la boite de dialogue de recherche au dossier spécifié par le paramètre "FileName".
open
Ouvre le fichier spécifié par le paramètre "FileName".
print
Imprime le fichier spécifié par le paramètre "FileName".

Vous devez donc être vigilant avec le paramètre "Operation" puisque certaines valeurs fonctionnent seulement avec soit comme chemin un fichier soit un dossier.


Employer la fonction "ShellExecute"

Pour commencer, vous devez déclarer dans la partie "Uses" de votre programme l'unité "ShellAPI" qui permet d'utiliser la fonction "ShellExecute".

Uses ShellAPI; //Unité à déclarer pour utiliser la fonction "ShellExecute"

Voici quelques exemples d'utilisation de la fonction ShellExecute en Delphi.

Lancer une application

ShellExecute(Handle,'open',PChar('c:\test.exe'),nil,nil,SW_SHOW);

Handle : Handle de la fenêtre (ce qui correspond ici à "Form1.Handle").
open : valeur du paramètre "Operation" vue précédemment qui permet d'ouvrir l'application.
PChar('C:\test.exe') : indique le fichier ou l'application à ouvrir. A noté qu'il n'est pas nécessaire dans ce cas de mettre "PChar". Par contre, si vous passer par des variables de type "String" comme pour l'exemple "Envoyer un email à partir de votre logiciel de messagerie", vous devrez alors absolument mettre "PChar(mavariable)".
nil : est un mot réservé au langage Pascal. Il permet de ne rien désigner. On trouve parfois les cractères " ' ' " qui réalise la même chose.
SW_SHOW : valeur du paramètre "ShowCmd" de la fonction "ShellExecute". Cette valeur permet d'activer la fenêtre et de régler sa position et sa taille.
Il existe 12 valeurs possibles pour ce paramètre. Vous pouvez par exemple minimiser la fenêtre lorsque vous lancer une application grâce à "SW_SHOWMINIMIZED".

Pour connaitre tous les valeurs de ses différents paramètres, reportez vous dans la section "En savoir plus..." de ce tutorial.

Lancer une application et ouvrir un fichier


En l'occurence, dans cette exemple, l'application est NotePad et le fichier à ouvrir est "c:\test.txt".

ShellExecute(Handle,'open',PChar('NotePad'),PChar('c:\test.txt'),nil,SW_SHOW);

Comme vous pouvez le remarquer, le fichier texte est passé en paramètre pour que celui-ci s'ouvre avec l'application, en l'occurence "NotePad".

Ouvrir l'explorateur Windows dans un dossier précis

ShellExecute(Handle,'explore',PChar('c:\test\'),nil,nil,SW_SHOW);

Imprimer le contenu d'un fichier texte

ShellExecute(Handle,'print',PChar('c:\test.txt'),nil,nil,SW_SHOW);

Se rendre sur une page web avec le navigateur par défaut

ShellExecute(Handle,'open',PChar('http://delphipage.free.fr/'),nil,nil,SW_SHOW);

Envoyer un email à partir de votre logiciel de messagerie

Var email,destinataire,sujet,messge:String;
begin
destinataire:='monemail@monemail.fr';
sujet:='Mon titre';
messge:='Mon message';
email:='mailto:'+destinataire+'?subject='+sujet+'&body='+messge;
ShellExecute (Handle,'open',PChar(email),nil,nil,SW_SHOW);
end;


En savoir plus...

Pour en savoir d'avantage sur cette fonction, vous pouvez utiliser le fichier d'aide "win32.hlp" fournit avec Delphi et disponible dans le répertoire "Fichier Communs\Borland Shared\MSHelp".
Vous pouvez également vous rendre sur le site de Microsoft.

Tous droits réservés - Contacts
Haut de la page