Lancer une application et attendre sa fermeture

Soyez le premier à donner votre avis sur cette source.

Vue 13 949 fois - Téléchargée 743 fois

Description

Cette fonction vous permet de lancer un fichier via son executable associer ou un executable directement puis d'attendre la fermerture de l'executable lancé.

Source / Exemple :


uses ShellApi;

function LaunchAndWait(sFile: String; wShowWin: Word): Boolean;
var
  cExe: array [0..255] of Char;
  sExe: string;
  pcFile: PChar;
  StartInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  Result:=True;
  FindExecutable(PChar(ExtractFileName(sFile)), PChar(ExtractFilePath(sFile)), cExe);
  sExe:= string(cExe);
  if UpperCase(ExtractFileName(sExe))<>UpperCase(ExtractFileName(sFile))
  then pcFile:=PChar(' "'+sFile+'"')
  else pcFile:=nil;
  ZeroMemory(@StartInfo, SizeOf(StartInfo));
  with StartInfo do begin
    cb:=SizeOf(StartInfo);
    dwFlags:=STARTF_USESHOWWINDOW;
    wShowWindow:=wShowWin;
  end;
  if CreateProcess(PChar(sExe), pcFile, nil, nil, True, 0, nil, nil, StartInfo, ProcessInfo)
  then WaitForSingleObject(ProcessInfo.hProcess, INFINITE)
  else Result:=False;
end;

Conclusion :


Ce source n'est pas de moi. J'ai juste rajouter wShowWin permettant de choisir la taille de la fenetre a ouvrir, et encor on ma aider!
M'enfin c'est le resultat qui compte apres tout!

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
152
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
29 avril 2009

salut ,

j'ai fait une petite modif a ta fonction pour les paramètre car j'avais essayer de lui transmettre mais j'avais un soucis :s

le code que je vais te poster le résoud :)

function LaunchAndWait(sFile,sParam: String; wShowWin: Word): Boolean;
var
cExe: array [0..255] of Char;
StartInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
Result:=True;
FindExecutable(PChar(ExtractFileName(sFile)), PChar(ExtractFilePath(sFile)), cExe);
ZeroMemory(@StartInfo, SizeOf(StartInfo));
with StartInfo do begin
cb:=SizeOf(StartInfo);
dwFlags:=STARTF_USESHOWWINDOW;
wShowWindow:=wShowWin;
end;
if CreateProcess(cExe, pchar(sparam), nil, nil, True, 0, nil, nil, StartInfo, ProcessInfo)
then WaitForSingleObject(ProcessInfo.hProcess, INFINITE)
else Result:=False;
end;

un peut de code en moin mais les paramètres passe nickel la :p
Messages postés
15
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
30 mars 2010

hi,
pourrait-on expliquer cette function ,??!!
Messages postés
1724
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2020
6
Très, très utile !
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Tres bonne source.

Merci.

Juste une remarque c'est bien de dire que la source n'est pas de toi mais ca serait sympa de donner le nom ou le lien de l'auteur.

Note : 9/10

Bonne prog,
JMP77.
Messages postés
2
Date d'inscription
samedi 9 février 2002
Statut
Membre
Dernière intervention
23 mars 2003

C'est cool merci pour la fonction, ca marche mais il reste un petit probleme, comment faire passer un parametre a l'application ?
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.