Bonjour,
J'utilise une commande Shell pour dézipper une base.
Le problème c'est que la commande passe la main à la ligne de code suivante
alors que je voudrais attendre la fin du dézippage pour continuer.
D'avance merci
Essaye de mettre un DoEvents après ton appel de shell C'est sensé redonner la main à Windows avant de reprendre le code.
A+
-----Message d'origine----- Bonjour, J'utilise une commande Shell pour dézipper une base. Le problème c'est que la commande passe la main à la
ligne de code suivante
alors que je voudrais attendre la fin du dézippage pour
continuer.
D'avance merci
.
didier TEST
"RENAUD Eric" a écrit dans le message de news:
Bonjour, J'utilise une commande Shell pour dézipper une base. Le problème c'est que la commande passe la main à la ligne de code
suivante
alors que je voudrais attendre la fin du dézippage pour continuer. D'avance merci
pour resousoudre ce petit probleme j'utilise de shell du script : Set oShell = CreateObject("WSCript.shell") Tmp = oShell.Run(CmdZip, 1, True) 1 pour affichage normal TRUE pour attendre je telaisse ajouter les DIM DJ
"RENAUD Eric" <erenaud@fr.fm> a écrit dans le message de
news:OEHElcupEHA.3988@tk2msftngp13.phx.gbl...
Bonjour,
J'utilise une commande Shell pour dézipper une base.
Le problème c'est que la commande passe la main à la ligne de code
suivante
alors que je voudrais attendre la fin du dézippage pour continuer.
D'avance merci
pour resousoudre ce petit probleme j'utilise de shell du script :
Set oShell = CreateObject("WSCript.shell")
Tmp = oShell.Run(CmdZip, 1, True)
1 pour affichage normal
TRUE pour attendre
je telaisse ajouter les DIM
DJ
Bonjour, J'utilise une commande Shell pour dézipper une base. Le problème c'est que la commande passe la main à la ligne de code
suivante
alors que je voudrais attendre la fin du dézippage pour continuer. D'avance merci
pour resousoudre ce petit probleme j'utilise de shell du script : Set oShell = CreateObject("WSCript.shell") Tmp = oShell.Run(CmdZip, 1, True) 1 pour affichage normal TRUE pour attendre je telaisse ajouter les DIM DJ
Quasimodo
RENAUD Eric has brought this to us :
Bonjour, J'utilise une commande Shell pour dézipper une base. Le problème c'est que la commande passe la main à la ligne de code suivante alors que je voudrais attendre la fin du dézippage pour continuer. D'avance merci
bonjour ou bonsoir, idéalement, passer par les librairies, vous pourez mieux controler l'éxecution de votre programme. Ariel Zip Compression Utility with Disk Spanning : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId087 Library ZLIb : http://www.winimage.com/zLibDll/ zlib home page : http://www.gzip.org/zlib/ Tools sur Developpez.com : http://vb.developpez.com/outils/
http://vb.developpez.com/faq/?page=Fichiers#zip Des exemples sur : http://www.planet-source-code.com/ ...
ou pour continuer dans votre code Ici un bonne exemple :
-- This is an automatic signature of MesNews. Site : http://mesnews.no-ip.com
RENAUD Eric has brought this to us :
Bonjour,
J'utilise une commande Shell pour dézipper une base.
Le problème c'est que la commande passe la main à la ligne de code suivante
alors que je voudrais attendre la fin du dézippage pour continuer.
D'avance merci
bonjour ou bonsoir,
idéalement, passer par les librairies, vous pourez mieux controler
l'éxecution de votre programme.
Ariel Zip Compression Utility with Disk Spanning :
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId087
Library ZLIb : http://www.winimage.com/zLibDll/
zlib home page : http://www.gzip.org/zlib/
Tools sur Developpez.com : http://vb.developpez.com/outils/
http://vb.developpez.com/faq/?page=Fichiers#zip
Des exemples sur :
http://www.planet-source-code.com/
...
ou pour continuer dans votre code
Ici un bonne exemple :
Bonjour, J'utilise une commande Shell pour dézipper une base. Le problème c'est que la commande passe la main à la ligne de code suivante alors que je voudrais attendre la fin du dézippage pour continuer. D'avance merci
bonjour ou bonsoir, idéalement, passer par les librairies, vous pourez mieux controler l'éxecution de votre programme. Ariel Zip Compression Utility with Disk Spanning : http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId087 Library ZLIb : http://www.winimage.com/zLibDll/ zlib home page : http://www.gzip.org/zlib/ Tools sur Developpez.com : http://vb.developpez.com/outils/
http://vb.developpez.com/faq/?page=Fichiers#zip Des exemples sur : http://www.planet-source-code.com/ ...
ou pour continuer dans votre code Ici un bonne exemple :
-- This is an automatic signature of MesNews. Site : http://mesnews.no-ip.com
tetofr
Salut,
Par API :
A déclarer :
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 Sub Sleep Lib "kernel32" ( _ ByVal dwMilliseconds As Long _ ) Private Declare Function CloseHandle Lib "kernel32" ( _ ByVal hObject As Long _ ) As Long
' Lance un executable et attend indéfiniment la fin de ' son exécution. L'appli est gelée (aucun évennement traité) ' tans que le process lancé n'est pas terminé.
Dim idProg As Long Dim hProg As Long Dim iExit As Long
' Lance le process à l'aide de la fonction VB Shell idProg = Shell("Calc.exe", vbNormalFocus)
' Récupère le process handle hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
' Arrète l'application complétement tant ' que le process n'est pas fini. Dim iResult As Long iResult = WaitForSingleObject(hProg, INFINITE) If iResult = WAIT_FAILED Then Err.Raise Err.LastDllError ' Recupère le code retour du process GetExitCodeProcess hProg, iExit
' Libération ressources du process CloseHandle hProg
' Affiche un message suivant le code retour du process If iExit Then MsgBox "Erreur execution : Exit Code = " & CStr(iExit) Else MsgBox "Execution OK." End If
2)
' Lance un executable et attend la fin de son exécution. ' L'appli continue de traiter les évennements qui lui ' arrivent pendant l'attente de la fin du process. ' Evidement, celà consomme plus de CPU que la première méthode.
Dim idProg As Long Dim hProg As Long Dim iExit As Long
' Lance le process à l'aide de la fonction VB Shell idProg = Shell("Calc.exe", vbNormalFocus)
' Récupère le process handle hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
' Cherche le code retour du process GetExitCodeProcess hProg, iExit ' Attend tant que le process n'est pas fini ' en laissant l'appli effectuer les traitement ' d'évennements et de refresh. Do While iExit = STILL_ACTIVE DoEvents ' Laisse Windows traiter les évennements Sleep 100 ' Pause de 100 millisecondes ' Ajuster le délai : compromis entre le temps ' de réponse aux évennements et la ' consomation CPU. GetExitCodeProcess hProg, iExit ' Cherche le code retour du process Loop
' Libération ressources du process CloseHandle hProg
' Affiche un message suivant le code retour du process If iExit Then MsgBox "Erreur execution : Exit Code = " & CStr(iExit) Else MsgBox "Execution OK." End If
A++
RENAUD Eric a écrit :
Bonjour, J'utilise une commande Shell pour dézipper une base. Le problème c'est que la commande passe la main à la ligne de code suivante alors que je voudrais attendre la fin du dézippage pour continuer. D'avance merci
Salut,
Par API :
A déclarer :
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 Sub Sleep Lib "kernel32" ( _
ByVal dwMilliseconds As Long _
)
Private Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long _
) As Long
' Lance un executable et attend indéfiniment la fin de
' son exécution. L'appli est gelée (aucun évennement traité)
' tans que le process lancé n'est pas terminé.
Dim idProg As Long
Dim hProg As Long
Dim iExit As Long
' Lance le process à l'aide de la fonction VB Shell
idProg = Shell("Calc.exe", vbNormalFocus)
' Récupère le process handle
hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
' Arrète l'application complétement tant
' que le process n'est pas fini.
Dim iResult As Long
iResult = WaitForSingleObject(hProg, INFINITE)
If iResult = WAIT_FAILED Then Err.Raise Err.LastDllError
' Recupère le code retour du process
GetExitCodeProcess hProg, iExit
' Libération ressources du process
CloseHandle hProg
' Affiche un message suivant le code retour du process
If iExit Then
MsgBox "Erreur execution : Exit Code = " & CStr(iExit)
Else
MsgBox "Execution OK."
End If
2)
' Lance un executable et attend la fin de son exécution.
' L'appli continue de traiter les évennements qui lui
' arrivent pendant l'attente de la fin du process.
' Evidement, celà consomme plus de CPU que la première méthode.
Dim idProg As Long
Dim hProg As Long
Dim iExit As Long
' Lance le process à l'aide de la fonction VB Shell
idProg = Shell("Calc.exe", vbNormalFocus)
' Récupère le process handle
hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
' Cherche le code retour du process
GetExitCodeProcess hProg, iExit
' Attend tant que le process n'est pas fini
' en laissant l'appli effectuer les traitement
' d'évennements et de refresh.
Do While iExit = STILL_ACTIVE
DoEvents ' Laisse Windows traiter les
évennements
Sleep 100 ' Pause de 100 millisecondes
' Ajuster le délai : compromis
entre le temps
' de réponse aux évennements et la
' consomation CPU.
GetExitCodeProcess hProg, iExit ' Cherche le code retour du process
Loop
' Libération ressources du process
CloseHandle hProg
' Affiche un message suivant le code retour du process
If iExit Then
MsgBox "Erreur execution : Exit Code = " & CStr(iExit)
Else
MsgBox "Execution OK."
End If
A++
RENAUD Eric a écrit :
Bonjour,
J'utilise une commande Shell pour dézipper une base.
Le problème c'est que la commande passe la main à la ligne de code suivante
alors que je voudrais attendre la fin du dézippage pour continuer.
D'avance merci
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 Sub Sleep Lib "kernel32" ( _ ByVal dwMilliseconds As Long _ ) Private Declare Function CloseHandle Lib "kernel32" ( _ ByVal hObject As Long _ ) As Long
' Lance un executable et attend indéfiniment la fin de ' son exécution. L'appli est gelée (aucun évennement traité) ' tans que le process lancé n'est pas terminé.
Dim idProg As Long Dim hProg As Long Dim iExit As Long
' Lance le process à l'aide de la fonction VB Shell idProg = Shell("Calc.exe", vbNormalFocus)
' Récupère le process handle hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
' Arrète l'application complétement tant ' que le process n'est pas fini. Dim iResult As Long iResult = WaitForSingleObject(hProg, INFINITE) If iResult = WAIT_FAILED Then Err.Raise Err.LastDllError ' Recupère le code retour du process GetExitCodeProcess hProg, iExit
' Libération ressources du process CloseHandle hProg
' Affiche un message suivant le code retour du process If iExit Then MsgBox "Erreur execution : Exit Code = " & CStr(iExit) Else MsgBox "Execution OK." End If
2)
' Lance un executable et attend la fin de son exécution. ' L'appli continue de traiter les évennements qui lui ' arrivent pendant l'attente de la fin du process. ' Evidement, celà consomme plus de CPU que la première méthode.
Dim idProg As Long Dim hProg As Long Dim iExit As Long
' Lance le process à l'aide de la fonction VB Shell idProg = Shell("Calc.exe", vbNormalFocus)
' Récupère le process handle hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
' Cherche le code retour du process GetExitCodeProcess hProg, iExit ' Attend tant que le process n'est pas fini ' en laissant l'appli effectuer les traitement ' d'évennements et de refresh. Do While iExit = STILL_ACTIVE DoEvents ' Laisse Windows traiter les évennements Sleep 100 ' Pause de 100 millisecondes ' Ajuster le délai : compromis entre le temps ' de réponse aux évennements et la ' consomation CPU. GetExitCodeProcess hProg, iExit ' Cherche le code retour du process Loop
' Libération ressources du process CloseHandle hProg
' Affiche un message suivant le code retour du process If iExit Then MsgBox "Erreur execution : Exit Code = " & CStr(iExit) Else MsgBox "Execution OK." End If
A++
RENAUD Eric a écrit :
Bonjour, J'utilise une commande Shell pour dézipper une base. Le problème c'est que la commande passe la main à la ligne de code suivante alors que je voudrais attendre la fin du dézippage pour continuer. D'avance merci