Attente de fin d'une commande Shell

Signaler
Messages postés
12
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
2 juillet 2002
-
Messages postés
3
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
16 avril 2003
-
Rebonjour ...

Un petit probleme a vous soumettre :

comment attendre la fin d'une execution lancee via la commande Shell?

Je m'explique: je lance avec la commandez shell un programme externe, et je voudrais aatendre la fin de l'execution de ce programme pour que les instruction du code VB reprennent. Comment faire si c'est possible ?

Merci a tous d'avance

7 réponses

Messages postés
6
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
16 mars 2003

J'ai le meme probleme!! :(

Si tu trouve... fait moi signe

merci

Sylvain

SUBARU WRX 2002 FUTURE OWNER
From : Qc, CANADA
0
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

-------------------------------
Réponse au message :
-------------------------------

> J'ai le meme probleme!! :(
>
> Si tu trouve... fait moi signe
>
> merci
>
> Sylvain
>
> SUBARU WRX 2002 FUTURE OWNER
> From : Qc, CANADA
>
et bien oui, j'ai la solution a ton probleme, envoie moi ton mail, je te donnerai les sources : ioupix@yahoo.fr
voilou
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Rebonjour ...
> >
> > Un petit probleme a vous soumettre :
> >
> > comment attendre la fin d'une execution lancee via la commande Shell?
> >
> > Je m'explique: je lance avec la commandez shell un programme externe, et je voudrais aatendre la fin de l'execution de ce programme pour que les instruction du code VB reprennent. Comment faire si c'est possible ?
> >
> > Merci a tous d'avance
>
0
Messages postés
3
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
16 avril 2003

> et bien oui, j'ai la solution a ton probleme, envoie moi ton mail, je te donnerai les sources : ioupix@yahoo.fr
> voilou

Pourrais tu en faire profiter tout le monde si le code n'est pas trop important. Merci d'avance :-)
0
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

oui oui, je peux:

tu mets tout ca dans un module :

'Déclaration des fonctions pour l'ouverture d'une application avec la commande
'Shell, et attente de la fermeture de l'application ouverte pour continuer à
'éxécuter le code VB.
Const PROCESS_ALL_ACCESS& = &H1F0FFF
Const STILL_ACTIVE& = &H103&
Const INFINITE& = &HFFFF

Private Declare Function GetWindowsDirectory _
Lib "kernel32" _
Alias "GetWindowsDirectoryA" ( _
ByVal lpBuffer As String, _
ByVal nSize As Long _
) As Long

Private Declare Function OpenProcess _
Lib "kernel32" ( _
ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long _
) As Long

Private Declare Function WaitForSingleObject _
Lib "kernel32" ( _
ByVal hHandle As Long, _
ByVal dwMilliseconds As Long _
) As Long

Private Declare Function GetExitCodeProcess _
Lib "kernel32" ( _
ByVal hProcess As Long, _
lpExitCode As Long _
) As Long

Private Declare Function CloseHandle _
Lib "kernel32" ( _
ByVal hObject As Long _
) As Long

Function fWait(ByVal lProgID As Long) As Long
' Wait until proggie exit code <>
' STILL_ACTIVE&
Dim lExitCode As Long, hdlProg As Long
' Get proggie handle
hdlProg = OpenProcess(PROCESS_ALL_ACCESS, False, lProgID)
' Get current proggie exit code
GetExitCodeProcess hdlProg, lExitCode

Do While lExitCode = STILL_ACTIVE&

DoEvents
GetExitCodeProcess hdlProg, lExitCode
Loop
CloseHandle hdlProg
fWait = lExitCode
End Function

Private Function fGetWinDir() As String
' Wrapper to return OS Path
Dim lRet As Long, lSize As Long, sBuf As String * 512
lSize = 512
lRet = GetWindowsDirectory(sBuf, lSize)
fGetWinDir = Left(sBuf, InStr(1, sBuf, Chr(0)) - 1)
End Function

Pour l'uitiliser :

Dim ID_PROG, Indic_Sortie As Long

ID_PROG = Shell("C:\truc\machin.exe " & LigneDeCommande, vbMinimizedNoFocus)
Indic_Sortie = fWait(ID_PROG)

voila, normalement ca marche ....
0
Messages postés
3
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
16 avril 2003

Merci beaucoup :-)
0
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

dis moi si ca marche ...
0
Messages postés
3
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
16 avril 2003

Ca fonctionne parfaitement :-)
merci encore
0