OVH Cloud OVH Cloud

Durée d'un processus

5 réponses
Avatar
Nicolas
Bonjour,

J'utilise la commande suivante

Var =3D Shell("C:\Program Files\WinZip\wzzip -a c:\fic.zip=20
c:\fic.txt")

J'aimerais intercepter la dur=E9e du processus provoqu=E9 par=20
l'execution de cette commande

En effet j'ai d'autres instructions ensuite, et je=20
voudrais attendre la fin du zippage du fichier pour=20
poursuivre. Je pr=E9cise que le zippage peut prendre=20
plusieurs secondes et que si je met une instruction juste=20
apr=E8s, il l'execute aussitot sans attendre la fin du=20
zippage.

J'ai bien pens=E9 =E0 mettre un sleep, mais pour cela il me=20
faut connaitre la dur=E9e du processus.

Comment faire ?

Merci pour toute aide

Nicolas

5 réponses

Avatar
François Picalausa
Bonjour/soir,

essaye ceci:
http://support.microsoft.com/default.aspx?scid9796

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Nicolas" a écrit dans le message de
news:0a9301c39a33$30e24290$
Bonjour,

J'utilise la commande suivante

Var = Shell("C:Program FilesWinZipwzzip -a c:fic.zip
c:fic.txt")

J'aimerais intercepter la durée du processus provoqué par
l'execution de cette commande

En effet j'ai d'autres instructions ensuite, et je
voudrais attendre la fin du zippage du fichier pour
poursuivre. Je précise que le zippage peut prendre
plusieurs secondes et que si je met une instruction juste
après, il l'execute aussitot sans attendre la fin du
zippage.

J'ai bien pensé à mettre un sleep, mais pour cela il me
faut connaitre la durée du processus.

Comment faire ?

Merci pour toute aide

Nicolas


Avatar
Zoury
Salut Nicolas! :O)

: J'aimerais intercepter la durée du processus provoqué par
: l'execution de cette commande

J'imagine que tu ne veux pas que ton programmation bloque durant le
traitement?

Car une solution plausible aurait été de lancer cette ligne de commande à
l'aide de CreateProcess ayant pris soin d'activer un timer tout juste avant
avec l'API SetTimer. Ce timer pourrait, à chaque seconde par exemple,
additionné 1 à une variable globale de type Long. Ensuite tu attends la fin
du traitement avec l'API WaitForSingleObject. Quand l'exécution se termine
tu n'aurais plus qu'à arrêter le timer avec KillTimer et lire le contenu de
ta variable qui te renvoi le temps d'exécution en secondes...

Remarques que tu pourrais appliquer le même concept, tout mettre ça dans un
ActiveX Exe qui lui te permettrait de ne *pas* geler ton application durant
le traitement.

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Nicolas
Voici ma ligne de commande :

"C:Program FilesWinZipwzzip -a fichier.zip fichier.txt"

J'ai testé la prog issu de
http://support.microsoft.com/default.aspx?scid9796

Ca ne donne rien ...


Nicolas
Avatar
Zoury
J'ai mal lu. :O)

Tu n'as pas besoin du timer.. mais le reste s'applique dans ce cas.
L'exemple fournit par François est en plein ce que j'avais en tête.. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Jérôme FONTAINE
Essai l'utilisation de l API SHELLWAIT.

Tu trouveras un exemple ici
http://www.vbfrance.com/code.aspx?ID…51

Jérôme


"Nicolas" a écrit dans le message de
news:0a9301c39a33$30e24290$
Bonjour,

J'utilise la commande suivante

Var = Shell("C:Program FilesWinZipwzzip -a c:fic.zip
c:fic.txt")

J'aimerais intercepter la durée du processus provoqué par
l'execution de cette commande

En effet j'ai d'autres instructions ensuite, et je
voudrais attendre la fin du zippage du fichier pour
poursuivre. Je précise que le zippage peut prendre
plusieurs secondes et que si je met une instruction juste
après, il l'execute aussitot sans attendre la fin du
zippage.

J'ai bien pensé à mettre un sleep, mais pour cela il me
faut connaitre la durée du processus.

Comment faire ?

Merci pour toute aide

Nicolas