Bonsoir à tous
Ce code n'attend pas la fin du processus :
A l'exécution, j'ai le message (un peu habituel chez moi) avec un CreateProcess() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Procedure Pilote_Editer_Listes; begin Form1.JvTrayIcon1.Active := True; Form1.JvTrayIcon1.Animated := True; Form1.JvTrayIcon1.BalloonHint('LISTER DOSSIERS DE PHOTOS','EDITION DES LISTES', btInfo, 5000, False); Form1.JvTrayIcon1.AcceptBalloons.ToString(True); Form1.JvCreateProcess1.Create(Form1); Form1.JvCreateProcess1.StartupInfo.ShowWindow := swNormal; Form1.JvCreateProcess1.CommandLine := 'EXPLORER.EXE ' + Nom_Rep_Sortie; // Explorer affiche le répertoire désigné par la variable Nom_Rep_Sortie Form1.JvCreateProcess1.WaitForTerminate := True; Form1.JvCreateProcess1.Run; Form1.JvTrayIcon1.HideApplication; WHile Form1.JvCreateProcess1.State = psWaiting do begin Application.ProcessMessages; end; Form1.JvTrayIcon1.ShowApplication; // N'attend pas la fin du processus appelé. Parce que c'est Explorer ? Form1.JvCreateProcess1.Free; Form1.JvTrayIcon1.Active := False; end;
Ce code, en revanche, fonctionne sans problème :
Ca bogue parce qu'il s'agit d'Explorer, qui ne se ferme jamais (en principe), ou bien parce que je réduis la fenêtre de l'application appelant Explorer ? Celle-ci n'obtempère pas à la minimisation, ni à Form1.Hide . J'ai ce fichu message d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Form1.JvCreateProcess1.CommandLine := 'D:\PROGRAMME.EXE'; Form1.JvCreateProcess1.WaitForTerminate := True; Form1.JvCreateProcess1.Run; WHile Form1.JvCreateProcess1.State = PsWaiting DO begin Application.ProcessMessages; // Attend bien la fin du processus, MAIS je ne cache pas la fenêtre de l'application end; SetForegroundWindow(Handle_App);
Je pige mal, là ...
Partager