connaitre la fin d'un programme executé depuis une appli vb

connaitre la fin d'un programme executé depuis une appli vb - VB/VBA/VBS - Programmation

Marsh Posté le 25-07-2003 à 21:11:48    

voila...
 
comment faire pour connaitre la fin d'un programme lancé depuis une appli vb ?
 
je voudrais lancer deux programmes successivement... mais sequentiellement aussi... c'est à dire que le deuxieme doit se lancer uniquement quand le premier a terminé...
 
Si qqun sait comment faire..  
Merci...
 
P.S: j'avais trouvé un truc getModuleUsage.. mais jsais pas tro comment faire avec... Si qqun sait..

Reply

Marsh Posté le 25-07-2003 à 21:11:48   

Reply

Marsh Posté le 25-07-2003 à 22:17:21    

wouatouwouatou a écrit :

voila...
 
comment faire pour connaitre la fin d'un programme lancé depuis une appli vb ?
 
je voudrais lancer deux programmes successivement... mais sequentiellement aussi... c'est à dire que le deuxieme doit se lancer uniquement quand le premier a terminé...
 
Si qqun sait comment faire..  
Merci...
 
P.S: j'avais trouvé un truc getModuleUsage.. mais jsais pas tro comment faire avec... Si qqun sait..


 
regarde dans la signature, "API windows"; car je sais que l'on peut killer des programmes alors pourquoi pas détecter un qui ne fonctionne plus. Dans ton cas, tu auras, un programme qui tournera en tache de fond; pour permettre à l'autre de se lancer. Le rôle ? de savoir si le premier est fini. Au total tu en n'as trois...
 
sinon, va voir sur www.vbfrance.com et www.allapi.net


Message édité par cvb le 25-07-2003 à 22:18:43
Reply

Marsh Posté le 26-07-2003 à 08:10:28    

Il faut faire ca avec l'API WaitForSingleObjet.

Reply

Marsh Posté le 29-07-2003 à 11:01:54    

Comme ceci par exemple :
 
Private Function ShellWait(ByVal CmdLine As String) As Integer
 
    Dim Proc As PROCESS_INFORMATION
    Dim Start As STARTUPINFO
    Dim lgRet As Long
    '
    ' ... paramètre la structure ...
    '
    Start.cb = Len(Start)
    '
    ' ... créé un process et récupère un handle ...
    '
    lgRet = CreateProcessA(0&, CmdLine, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, Start, Proc)
    '
    ' ... actualise la barre de progression ...
    '
    Progression.Value = 50
    DoEvents
    '
    ' ... attends que le processus soit terminé ...
    '
    Do
        '
        ' ... teste si le processus n'est pas déjà terminé ...
        '
        If lgRet = WAIT_OBJECT_0 Then Exit Do
        DoEvents
        '
        ' ... attribut à lgret la valeur d'état du processus de la fonction ...
        '
        lgRet = MsgWaitForMultipleObjects(1&, Proc.hProcess, 0&, 1000, QS_ALLINPUT)
    Loop
    '
    ' ... ferme le handle ...
    '
    Call CloseHandle(Proc.hProcess)
    '
    ' ... retourne 0 si le processus est terminé ...
    '
    ShellWait = lgRet
 
End Function

Reply

Marsh Posté le 31-07-2003 à 13:26:37    

merci des reponses :jap:

Reply

Marsh Posté le 31-07-2003 à 14:11:41    

Sinon un bête WaitForSingleObject

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed