Execution d'un batch avec Shell: Form n'apparait pas!!!

leduc_s7 Messages postés 3 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 19 novembre 2003 - 18 nov. 2003 à 04:44
leduc_s7 Messages postés 3 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 19 novembre 2003 - 19 nov. 2003 à 20:38
Je suis tombe par hasard sur ce site et ca m'a donne le gout d'essayer le Visual Basic. J'ai quelques connaissances en DOS mais aucune en VB.

Mon idee etait de faire un Form qui executerait un batch file DOS et d'en suivre la progression avec une ProgressBar.

Avec des petits bouts de code pris sur le site, j'ai fait ceci...
Voici le code:

-----------------------------------------
Private Sub Form_Load()
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
Shell "go.bat", vbHide
Do While PB < 100
Open "temp.txt" For Input As 1
Input #1, b
PB = b
Close #1
Loop
Label1.Caption = "Process complete"
' Command1.Caption = "&Done"
End Sub
--------------------------------
Private Sub Label1_Click()

End Sub
--------------------------------
Private Sub PB_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

End Sub
-----------------------------------
Pour suivre la progression de mon batch file, j'ai pense rediriger des "echo" de valeurs numeriques tout au long du batch dans un fichier txt (temp.txt). Avec une boucle (en VB), je vais lire la valeur dans le fichier qui me sert de pourcentage pour ma progessbar. Ex.: Si j'ai dix taches a effectuer, j'ecris "10" apres la premiere, "20" pour la deuxieme, donc 10%, 20%, etc...

Mon probleme est que le form ne s'affiche seulement qu'a la fin du batch... au caption "Progress complete". J'ai pense que p-e ma boucle me causait probleme. Quelqu'un me disait que c'etait p-e une question de focus.

Bref, j'ai pas trouve solution a mon probleme mais je pense que ca ne doit pas etre grand chose.

Merci de m'aider.

Y-a-t'il autres manieres de suivre la progression de programmes DOS?? Est-ce normal le "_click" sur Label1 et le "_MouseDown" sur PB??

4 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
18 nov. 2003 à 09:21
:big) Neodante :big)

Mets un petit DoEvents dans ta boucle afin de lâcher ton monopole sur le système ...
Au pire Refresh ... 8-)
@+
0
leduc_s7 Messages postés 3 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 19 novembre 2003
19 nov. 2003 à 05:28
J'ai essaye avec les DoEvents et les Refresh a plusieurs endroits et j'obtiens les memes resultats... :(

Si je mets le code dans un bouton, ca fonctionne bien par contre mais j'ai besoin que le batch s'execute au demarrage du programme. Il faudrait p-e que je trouve un moyen de m'assurer d'afficher le form avant que le batch s'execute.
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
19 nov. 2003 à 09:05
:big) Neodante :big)

Me.Show dans ta procédure, car tu dois mettre ton code dans le Load (qui s'effectue avant l'affichage) ... donc rien ne s'affiche ou du moins c'est pas raffraichit ...
@+
0
leduc_s7 Messages postés 3 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 19 novembre 2003
19 nov. 2003 à 20:38
Ca fonctionne a merveille...
J'ai du mettre un petit Refresh aussi car le Form restait a moitie transparent.
Merci!
0
Rejoignez-nous