Synchroniser l'exécution d'une tâche dos avec un programme vb

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 648 fois - Téléchargée 71 fois

Contenu du snippet

Le but de la manip consite à attendre la fin de l'exécution d'un programme DOS
avant de continuer le déroulement de votre programme VB

Source / Exemple :


Option Explicit

Private Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Function ExecuterCommandeDOS(commandeDOS As String) As Boolean
    Dim codeRetour As Double   'Code retour de la commande Shell
    Dim flFin As Long
    
    ExecuterCommandeDOS = False
    
    On Error GoTo Fin
    codeRetour = Shell(commandeDOS, vbNormalFocus)
    If codeRetour > 0 Then
        'Boucle d'attente de la fin d'exécution
        Do
            flFin = OpenProcess(PROCESS_QUERY_INFORMATION, False, codeRetour)
            ' Attente 200 millisecondes afin de ne pas consommer tout le temps CPU
            Sleep (200)
            DoEvents
        Loop While flFin <> 0
        ExecuterCommandeDOS = True
    End If
Fin:
End Function
Private Sub Command1_Click()
    Dim flExecutionOK As Boolean
    Dim commandeDOS As String
    
    commandeDOS = "calc"
    flExecutionOK = ExecuterCommandeDOS(commandeDOS)
    If flExecutionOK = True Then
        MsgBox "L'exécution de la commande " & commandeDOS & " est terminée avec succès"
    Else
        MsgBox "L'exécution de la commande " & commandeDOS & " a échouée"
    End If
End Sub

A voir également

Ajouter un commentaire

Commentaires

SgtJazz
Messages postés
18
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
20 décembre 2005
-
Probleme avec l'execution de parametre pres la commande.
En gros si j'utilise ta fonction pour faire ExecuterCommandeDOS(pkzip c:\test.zip c:\fichier.doc) ca ne fonctionne pas. qqu.un a une solution a ca?
cs_Lamsar
Messages postés
1
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
27 mars 2003
-
Super ! Code détourné pour attendre l'éxécution d'une fenêtre DOS avant utilisation du sendkeys. Merci !
cs_leonide
Messages postés
3
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
21 mai 2003
-
comment on s en sert ??
pokbizou
Messages postés
13
Date d'inscription
lundi 6 mai 2002
Statut
Membre
Dernière intervention
13 novembre 2003
-
ça marche nickel, merci
Pokbizou
cs_Pekinio
Messages postés
161
Date d'inscription
mercredi 11 avril 2001
Statut
Membre
Dernière intervention
10 mars 2002
-
ca veut sûrement dire ca : fmw.sinedtideotspslootsg:c

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.