NEO ::: TEAM
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

NEO ::: TEAM

New Evolution Owner
 
AccueilRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment :
Carte Fnac+ Jackpot avec 30€ offerts sur le ...
Voir le deal
19.99 €

 

 Comment exécuter une application extérieure ?

Aller en bas 
AuteurMessage
Admin
Fondateur
Fondateur
Admin


Nombre de messages : 197
Age : 40
Localisation : Tlemcen ( Algérie )
Date d'inscription : 04/12/2006

Comment exécuter une application extérieure ? Empty
MessageSujet: Comment exécuter une application extérieure ?   Comment exécuter une application extérieure ? Icon_minitimeVen 12 Jan - 6:12

Pour exécuter une application extérieure au programme il suffit d'utiliser la fonction suivante de l'API :
Code:
[/center]
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
Directory: PChar; ShowCmd: Integer): HINST; stdcall;[center]
Il faut ajouter l'unité ShellApi dans la clause uses de l'unité contenant la fonction. Par exemple :


Code:




uses [...], ShellApi;
Tous les paramètres chaînes doivent être des PAnsiChar ou PChar.

Rappel : Pour les versions 1 à 4 de Delphi, Il faut toujours transtyper explicitement les chaînes constantes :
Code:
[/center]
ShellExecute(0,PChar('open'),...)[center]
A partir de Delphi 5, le transtypage est inutile :
Code:
[/center]
ShellExecute(0,'open',...)[center]
Détail des paramétres :


  • hwnd : est le Handle de la fenêtre qui servira de parent pour les messagesbox de l'application. Toujours passer Application.Handle en cas de doute, 0 sinon.
  • Operation : Type d'opération effectuée sur le fichier, a moins de savoir ce que l'on fait, passer 'open'.
    Ce paramètre peut prendre les valeurs suivantes :
    'OPEN' ouvrir un document, ou exécuter une application
    'PRINT' pour imprimer un document
    'EXPLORE' pour utiliser l'explorateur Windows en utilisant le chemin donné par FileName
    'FIND' pour appeler la fenêtre de recherche en utilisant le chemin donné par FileName
  • FileName : Nom de l'application à lancer, du document à ouvrir/imprimer, du répertoire à explorer, etc. Chemin complet requis, sauf si Directory est correctement renseigné.
  • Parameters :
    Liste des paramètres dans le cas ou FileName désigne une application. Pour un document ou dans le cas où il n'y a pas de paramètres, mettre Nil
  • Directory : Répertoire par défaut utilisé dans le cas où FileName désigne une application. Correspond en général au chemin de l'élément exécuté, ou nil si le chemin est absolu ou si le chemin de démarrage n'a pas d'importance.
  • ShowCmd : Décrit comment la nouvelle fenêtre doit être ouverte. Les plus utiles sont SW_SHOW pour afficher l'élément exécuté, SW_SHOWMINIMIZED pour l'exécuter en fenêtre réduite et SW_HIDE pour cacher la fenêtre d'exécution. Voir l'aide en ligne pour plus d'informations.
Quelques exemples d'utilisations :
Lancer une application simplement :


Code:




ShellExecute(0,'OPEN','Wordpad.exe', Nil, Nil, SW_SHOW);
Lancer une application avec des paramètres :
Code:
[/center]
ShellExecute(0,'OPEN','Wordpad.exe','C:\temp\essai.txt',Nil, SW_SHOW);

// Exécution de la commande système "ipconfig /all"
ShellExecute(Application.Handle,'open','ipconfig','/all',nil,SW_SHOW);[center]
Lancer l'explorateur sur un répertoire précis :


Code:




ShellExecute(0,'EXPLORE','C:\MonRépertoire\', Nil, Nil, SW_SHOW);
Ouvrir un document :
Code:
[/center]
ShellExecute(0,'OPEN','C:\Temp\Monfichier.txt', Nil, Nil, SW_SHOW);[center]
Imprimer un document :


Code:




ShellExecute(0,'PRINT','C:\Temp\Monfichier.doc', Nil, Nil, SW_SHOW);
Appeler la fenêtre de recherche de Windows :
Code:
[/center]
ShellExecute(Application.handle, 'find', 'c:\temp', Nil, Nil, SW_SHOWNORMAL);[center]
Exécuter un fichier Batch :

Pour exécuter un fichier Batch, il faut passer le nom du fichier à l'interpréteur de commande. Pour ceci, le paramètre FileName doit être égal à PChar(GetEnvironmentVariable('ComSpec')), et le paramètre Parameters doit être égal à '/C FichierBatch.bat ParamètresDuBatch'. Cette méthode permet d'exécuter un batch sans erreurs, de Windows 95 à Windows XP.

Exécution du batch "C:\bin\batch.bat", ayant les paramètres "-param1 -param2" :


Code:




ShellExecute(
Application.Handle,
'open',
PChar(GetEnvironmentVariable('ComSpec')),
'/C batch.bat -param1 -param2',
'c:\bin',
SW_SHOW);
Exécution d'un batch "c:\bin\batch.bat" comme s'il était exécuté depuis le répertoire "c:\travail", avec les paramètres "-param1" :


Code:




ShellExecute(
Application.Handle,
'open',
PChar(GetEnvironmentVariable('ComSpec')),
'/C c:\bin\batch.bat -param1',
'c:\travail',
SW_SHOW);
Récupération et conversion des informations d'un raccourci Windows :
- Clic droit sur le raccourci, puis "Propriétés".
- Pour la commande ShellExecute, les paramètres seront :
hwnd : Application.Handle
Operation : 'open'
FileName : Le contenu de la ligne "Cible".
Parameters : S'il y a des paramètres après l'exécutable dans "Cible", mettez-les ici et pas dans FileName.
Directory : Le contenu de la ligne "Démarrer dans".
ShowCmd : Suivant la liste "Exécuter" :


  • Fenêtre normale : mettre SW_SHOW.
  • Réduite : mettre SW_SHOWMINIMIZED.
  • Agrandie : mettre SW_SHOWMAXIMIZED.

Exemple de raccourci :
Cible = "C:\Program Files\Microsoft IntelliPoint\dplaunch.exe" Mouse CPL
Démarrer dans = "C:\Program Files\Microsoft IntelliPoint\"
Exécuter : Fenêtre normale

L'appel sera :
Code:




ShellExecute(
Application.Handle,
'open',
'C:\Program Files\Microsoft IntelliPoint\dplaunch.exe',
'Mouse CPL',
'C:\Program Files\Microsoft IntelliPoint\',
SW_SHOW);
Exécuter un programme console en utilisant les redirections.
Code:
ShellExecute(0,nil, PChar(GetEnvironmentVariable('ComSpec')), PChar('/C Net View > Resultat.txt'), nil, 0);
Le résultat de la fonction ShellExecute est un entier. S'il est inférieur ou égal à 32, l'exécution a échoué. S'il est strictement supérieur à 32, le processus a été lancé correctement. Pour surveiller la fin du processus engendré, il est conseillé d'utiliser CreateProcess au lieu de ShellExecute.
Les codes d'erreur de ShellExecute sont symboliques. Ils correspondent à ceci sur une cible Win32 :



  • 0 : Erreur critique (mauvais paramètres en général, les vérifier tous). Si les paramètres sont corrects, un crash système est imminent.
  • ERROR_BAD_FORMAT : Le fichier n'est pas un exécutable (vérifier FileName).
  • SE_ERR_ACCESSDENIED : Accès au fichier refusé (vérifier les droits de l'utilisateur).
  • SE_ERR_ASSOCINCOMPLETE : Le type de document n'est pas correctement géré (vérifier Filename ou réinstaller l'application gérant le document).
  • SE_ERR_DDEBUSY : Serveur DDE occupé. Réessayer plus tard.
  • SE_ERR_DDEFAIL : La transaction DDE a échoué. Demander s'il faut refaire un essai ou pas.
  • SE_ERR_DDETIMEOUT : La transaction DDE a été trop longue. Demander s'il faut refaire un essai ou pas.
  • SE_ERR_DLLNOTFOUND : Une DLL requise n'a pas été trouvée (vérifier FileName et Directory).
  • SE_ERR_FNF : Le fichier n'a pas été trouvé (vérifier FileName et Directory).
  • SE_ERR_NOASSOC : L'extension du fichier n'est pas gérée (il manque une application à l'utilisateur, lui demander de l'installer).
  • SE_ERR_OOM : Plus assez de mémoire pour effectuer l'opération (demander à l'utilisateur de fermer des applications, ou libérer de la mémoire).
  • SE_ERR_PNF : Chemin non-trouvé (vérifier Directory, parfois aussi FileName).
  • SE_ERR_SHARE : Une erreur de partage s'est produite (le fichier est utilisé par quelqu'un d'autre, ou par un autre programme, en mode exclusif).




On peut tester directement le code d'erreur :


Code:




Var
Code : Cardinal ;
Begin
// On appelle ShellExecute "normalement".
Code := ShellExecute (.....) ;

// Ensuite, on vérifie si l'exécution a été correcte :
// Deux méthodes possibles : avec ou sans exceptions.
If (Code<=32) Then
// Affichage du message d'erreur "propre", sans exceptions.
// Le résultat de SysErrorMessage est une chaîne normale, dans la langue de l'OS.
ShowMessage(SysErrorMessage(Code));

If (Code<=32) Then
// Affichage du message d'erreur "hard", AVEC levée d'exception.
// Remplacer par RaiseLastWin32Error sur les anciennes versions de Delphi.
RaiseLastOSError;
End;



Remarque : la fonction WinExec ne doit plus être utilisée, elle n'est présente que pour des soucis de compatibilité.


Revenir en haut Aller en bas
https://neo-team.forumactif.com
 
Comment exécuter une application extérieure ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Comment obtenir le code de sortie de l'application ?
» Comment fermer une application externe ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
NEO ::: TEAM :: Informatique :: Les RADs :: Borland Delphi 4,5,6,7-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser