Attendre qu'une commande shell sois terminer avent de passer a la ligne de code

SgtJazz Messages postés 18 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 20 décembre 2005 - 8 avril 2004 à 03:11
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 8 avril 2004 à 10:33
salutation a tous. Dans la programation d'un logiciel backup cibler sur fichiers. je cherche le moyen d,attendre la fin d,une commande shell avent de passer a une autre. dans ce ka si il sajit d'un bon vieux pkzip.

Dim RetVal
RetVal = Shell("pkzip C:\test.zip c:\test.ut2", 1)
' avent que la ligne suivante sois executer,, je veux terminer la commande shell precedante

MsgBox "done"



pour ceux qui serais tenter de me dire d'utiliser un module de compression pour remplacer ma commande shell. je desire ne pas avoir recour a cette solution.

un gros Merci,
SgtJazz

4 réponses

SgtJazz Messages postés 18 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 20 décembre 2005
8 avril 2004 à 04:01
j'ai oublier de specifier que toutes les sources qui parle du sujet fonctionne seulement si il n'y a pas de parametre
si je fesais shell("pkzip",1) ca fonctionnerais mais Shell("pkzip C:\test.zip c:\test.ut2", 1) ca marche pas

des sugestions?

un gros Merci,
SgtJazz
0
gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
8 avril 2004 à 08:07
Salut,

J'ai trouvé un module qui permet d'exécuter une commande shell et d'attendre la fin du process. Donne mopi ton adresse e-mail pour que je puisse te l'envoyer.

A+
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
8 avril 2004 à 08:21
Petite implementation simple du ShellWait :

Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject 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 GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

Sub ShellWait(ByVal vCommand As String)
Dim mPath As String
Dim mProcess As Long
Dim mRet As Long
Dim mPID As Long
mPath = String(1024, 0)
GetShortPathName vCommand, mPath, Len(mPath)
mPath = Left$(mPath, lstrlen(mPath))
mPID = Shell(mPath, vbNormalFocus)
mProcess = OpenProcess(&H1F0FFF, 0, mPID)
Do
mRet = WaitForSingleObject(mProcess, 1000)
If mRet <> &H102& Then Exit Do
DoEvents
Loop
CloseHandle mProcess
End Sub

@+

E.B.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
8 avril 2004 à 10:33
J'ai déposé une source sur ce sujet ici même

Christophe R.
0
Rejoignez-nous