Attendre la fin d'un programme [VB] - Programmation
Marsh Posté le 11-10-2001 à 09:10:27
slt,
Tu dblclik sur la form (pas un des objets, sur la form en elle même), tu choisis dans la liste déroulante ('déclaration' je crois) "unload" au lieu de "load".
Ensuite tu tapes ton code qui doit s'exécuter à la fin du prog, et il s'exécute lorsque la form s'unload (se ferme, quoi...)
J'espère que t'as compris mon élocution bizarre ;-)
juju
Marsh Posté le 11-10-2001 à 09:20:40
J'ai du mal m'exprimer.
Je lance un prog d'installation par la commande shell.
Le pb c'est que le code continue a s'exectuer alors que le programme d'installation n'est pas fini. Je veux attendre que ce programme d'installation soit fini pour continuer mon code.
Pour te donner un exemple concret:
Si dans une boucle tu fais apparaitre une form, il faut que celle si soit modale.
Si elle est modale, alors la boucle s'arrete et attends que tu fermes la fenetre. SI elle n'est pas modale, alors la boucle continue et tu ne peux rien faire dans ta fenetre.
Je veux ouvrir un prog comme une fenetre en modal.
Voila...
Marsh Posté le 11-10-2001 à 09:31:48
Il me semble que dans ShellExecute, il y a une option pour attendre que ce soit fini (pour l'appli "shell_exécutée" ).
?
http://forum.hardware.fr/forum2.ph [...] &owntopic=
Marsh Posté le 11-10-2001 à 09:47:40
Apparemment il s'arrete pas non plus.
Dans le msdn j'ai rien trouve qui disait que le programme etait lance de maniere synchrone.
J'ai la ligne de commande suivante:
ShellExecute 0, vbStringNull, "C:\Winnt\system32\calc.exe", vbStringNull, vbStringNull, SW_SHOWNORMAL
Marsh Posté le 11-10-2001 à 10:13:27
Tu devrais trouver des exemples de code lancant un programme et attendant la fin de son execution sur un certain nombre de sites consacrés à VB. Tu pourras trouver une liste de sites la :
http://www.vbug.co.uk/wlink/OtherVB.asp
Sinon pour ton problème tu peux utiliser les fonctions de l'api Win32 pour lancer et attendre la fin d'execution de ton application. Les fonctions a utilier sont :
- CreateProcess pour créer un process executant l'application externe
- WaitForSingleObject ou WaitForMultipleObjects pour attendre la fin d'execution selon le cas.
Je te conseille fortement de regarder l'aide online du MSDN pour ces fonctions et les concepts de synchronisation dans Win32.
Process et Threads :
http://msdn.microsoft.com/library/ [...] d_3mgj.asp
Synchronisation :
http://msdn.microsoft.com/library/ [...] o_08z7.asp
Marsh Posté le 11-10-2001 à 10:40:35
J'etais justement en train de chercher des infos sur WaitForSingleObject.
Ca risque d'etre un peu plus complique que prevu.
Merci pour tes infos je vais aller y jeter un coup d'oeil
Marsh Posté le 11-10-2001 à 10:45:09
truc a la con : tu peux pas faire un FindWindow (c'est du c mais doit avoir l eq en vb) et tant que trouve la fenetre du programme d'install tu poireaute ?
Marsh Posté le 11-10-2001 à 10:58:32
Ben le programme marche deja.
Il teste les processus et fait une boucle tant que les processus sont la.
Mais c'est pas optimise
Marsh Posté le 11-10-2001 à 11:57:49
Merci encore Guru pour tes infos, ca marche niquel maintenant
Marsh Posté le 11-10-2001 à 08:37:14
Salut a tous
Il faudrait que je balance un prog avec shell en vb, mais que le code ne s'execute seulement quand le prog lance se termine.
Quelqu'un sait faire ca ?
MErci