Passage délicat "select case" et contrôles processus
Billybobbonnet
Messages postés148Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 9 novembre 2013
-
2 mars 2007 à 14:49
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 2016
-
3 mars 2007 à 09:13
Bonjour à tous,
Moi je suis débutant, mais ce code ne me semble pas être du code de débutant, la preuve en est que je suis largué. Voilà le problème, je veux lancer plusieurs scripts à la suite et lancer le suivant quand le précédent se termine. Pour ça , j'ai trouvé un bout de code qui utilise le wmi et qui me refile la liste des processus lancés. Je prends donc cette liste et en fonction d'elle, je coordonne le lancement de mes scripts.
Vu que les opérations a réaliser sont nombreuses et très conditionnées, j'ai utilisé un select case. Alors voilà le bout de code mais je précise quelques petites choses avant:
- etape = 1 (déclaré dans le sub d'avant)
- Pour la variable continue voir à la fin- Une petite question: If element.Name "VirtualDub.exe" Null peut-il vouloir dire "si je ne trouve pas virtualdub.exe dans la liste des processus?"
- Une autre question: Là en principe, le timer fait qu'il y a une boucle jusqu'à ce que l'étape 5 soit atteinte, et que continue = 0, je me trompe?
Le code
Private Sub Timer()
Timer1.Interval = 1000
'Attendre la fin de VirtualDub
Set liste = GetObject("winmgmts:").InstancesOf("Win32_Process") 'Récupération des processus en cours d'exécution
For Each element In liste
Select Case etape
Case 1 'j'attends que virtualdub se lance
If element.Name = "VirtualDub.exe" Then
etape = 2
End If
Case 2 'virtualdub lancé, j'attends qu'il s'arrête If element.Name "VirtualDub.exe" Null Then
etape = 3
Shape2.Visible = True
End If
Case 3 'Virtualdub arrété, on passe à la suite
Call execution
MsgBox "QT", vbOKOnly
etape = 4
Shape3.Visible = True
Case 4 ' j'attends que QTscript s'arrête If element.Name "QTscript.exe" Null Then
etape = 5
End If
Case 5 'QTscript terminé, on passe à la suite (continue = 0 dc la boucle du timer s'arrête)
Call DVCscript
Shape4.Visible = True
Patientez.Caption = "Patientez"
Patientez.Enabled = False
continue = 0
End Select
If continue = 1 Then
Timer1.Interval = 1000
Else:
Timer1.Interval = 0
End If
End Sub
Pouvez vous m'aider à purger ce code des éventuelles erreurs svp? Un ptit coup de main svp?
Billybobbonnet
Messages postés148Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 9 novembre 2013 2 mars 2007 à 15:35
Deux problèmes identifiés:
1)j'ai oublié next après End select, ça arrive ;)
2) Le deuxième est plus sérieux, lorsque je lance l'execution pas à pas, on dirait que même quand virtualdub tourne, il n'est pas détecté comme élément de la liste. En tout cas, je déduis ça du fait que je reste bloqué à case1.
A titre d'info et pour rendre à césar ce qui est à césar, j'ai chopé cette ligne là http://www.vbfrance.com/code.aspx?ID=1311 . A la ligne 285. J'ai bien entendu déclaré les variables nécessaires.
Si tu fais bien du VB6 je te conseil d'aller dans le forum aproprié ...
Si tu fais du vb.net (2005) tu es au bonne endroit, mais avant de t'aider j'aimerais que tu nous dises tu code en quelle version ?
Billybobbonnet
Messages postés148Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 9 novembre 2013 2 mars 2007 à 16:17
Désolé, je n'ai pas fait attention, je pensais être dans la section VB6! Je reposte le même sujet dans le forum VB6 et je vous fais toutes mes excuses!
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 2 mars 2007 à 22:27
les methodes ne sont pas les memes
j'arrive a lire du VB6 mais pas a programmer dans ce language
2003 pour moi est complement different de VB6 il y a cert beaucoup de similitude sur les procedures banale ...
tendi que 2005 est tres proche de 2003 mais c'est encore une autre façon de programmer
enfin bon c'est juste mon avis
pour moi une section (rubrique) d'un forum doit respecter son contenue ou son label !
je me trouve actuement dans section "Thèmes / VB.NET et VB 2005"
j'ai simplement dit qu'il ce trouvais pas dans la bonne "section" et non dans le mauvais forum !
Le forum est composé de section qui sont comportés elles memes de rubriques non ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 2 mars 2007 à 22:47
Je suis d'accord avec toi, il faut poster dans la bonne rubrique. D'ailleurs c'est un des points du règlement.
"...j'ai simplement dit qu'il ce trouvais pas dans la bonne "section" et non dans le mauvais forum !..." Si, enfin indirectement, tu as dis exactement "...Si tu fais bien du VB6 je te conseil d'aller dans le forum aproprié ..."
Enfin bon, ya pas matière à batailler. Ca ne servirait à rien et ça ne va pas faire avancer les choses. C'était juste un coup de gueule de ma part, car ce type réponses légèrement érronée renvient de plus en plus souvent. Ainsi que le type de réponse "Ici tu es sur le forum untel" quand la question est en fait posée dans le bar, donc sur l'ensemble des forums de CodeS-SourceS
Le sujet est clos, pour moi c'est le we, je serais de retour Lundi seulement.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #