cs_jmonnier
Messages postés3Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention16 septembre 2009
-
3 oct. 2008 à 14:40
cs_jmonnier
Messages postés3Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention16 septembre 2009
-
6 oct. 2008 à 11:09
Bonjour,
Je voudrais lancer ces deux processus:
ShellExecute(GetActiveWindow,nil,PChar(chemin),PChar('-c -sd -user "'+sUser+'" -pwd "'+sMDP+'" "'+sConnexion+'"'),nil,sW_SHOWMINIMIZED);
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 3 oct. 2008 à 15:52
Salut
Sais tu combien de temps le 1er shell mets à s'executer/se fermer ?
si c'est fixe, tu peux faire un sleep(2000); par exmple (2000 = 2 secondes)
Si ce n'est pas fixe, est ce que ça ouvre, puis ferme une fenetre ?
Dans ce cas, tu peux "choper" la fenetre qui s'ouvre puis si elle se ferme (son handle est détruit) alors le 2eme se lance !
L_art_ment
Messages postés302Date d'inscriptionvendredi 21 septembre 2007StatutMembreDernière intervention 6 février 2013 3 oct. 2008 à 15:57
Bonjour,
Si les deux ShellExecute executent des lignes de commandes, j'ai une procedure qui lance la ligne de commande et attend qu'elle se finisse.
Si les deux ShellExecute font autre chose qu'executer des lignes de commandes alors je suis à côté de la plaque et je n'ai pas de meilleure réponse à t'apporter
procedure TForm1.Button1Click(Sender: TObject);
begin
If ShellExecute(GetActiveWindow,nil,PChar('notepad.exe'),Nil,nil,sW_SHOWMINIMIZED)>=32 Then
ShellExecute(GetActiveWindow,nil,PChar('C:\Program Files\VideoLAN\VLC\vlc.exe'),Nil,nil,sW_SHOWMINIMIZED);
end;
Chez moi NotePad s'ouvre et ensuite c'est VLC. Le laps de temps n'est pas énorme par contre.
cs_PHIL63
Messages postés76Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention10 août 2010 4 oct. 2008 à 08:27
Bonjour,
Cette fonction n'est pas de moi (j'aurais bien aimé ), que son auteur me pardonne de ne pas le cité (je ne sais plus qui c'est) mais elle fonctionne parfaitement en remplacement de ShellExecute quand on veux attendre la fin de l'exécution d'un programme.
Le paramètre "voir" permet d'afficher ou non le programme lancé (c'est pratique), les autres paramètres se passe d'explication .
Déclaration :
Function ExecuteWait(Programme, parametres :string;voir :Boolean):Boolean;
Implémentation :
// Fonction permettant de lancer un programme externe et d'attendre la fin de celui-ci avant de continuer
Function TForm1.ExecuteWait(Programme, parametres :string;voir :Boolean):Boolean;
var ShExecInfo : TShellExecuteInfo;
begin
try
FillChar(ShExecInfo, SizeOf(ShExecInfo), 0);
with ShExecInfo do
begin
cbSize := SizeOf(ShExecInfo);
fMask := SEE_MASK_NOCLOSEPROCESS;
lpFile := PChar(Programme); { le nom du programme }
lpParameters := PChar(Parametres); { Les paramètres }
lpVerb := 'open';
if voir = True then nShow := SW_SHOW else nShow := SW_HIDE;
end;
if ShellExecuteEx(@ShExecInfo) then
begin { on execute le programme }
WaitForSingleObject(ShExecInfo.hProcess, INFINITE); { on attends un temps indefinie que l'appli s'arrete }
end;
result := True;
except
result := False;
end;
end;
Philippe DROUET
Vous n’avez pas trouvé la réponse que vous recherchez ?