romainvv
Messages postés46Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention22 mai 2009
-
18 mai 2007 à 17:08
romainvv
Messages postés46Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention22 mai 2009
-
21 mai 2007 à 20:00
Bonjour,
Voila j'ai donc un button1 qui s'appelle "action" dans lequel je fais des actions (si c'est comme ca que ce s'appelle)
CODE vb 2005 :
Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click
Do
SendKeys.Send(TextBox1.Text)
Loop
Voila maintenant quand j'appuie sur le "Stop" = Buttom2 j'aimerai quel la boucle s'arrète :
CODE vb 2005 :
Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click
Do until Button2.click
SendKeys.Send(TextBox1.Text)
Loop
Mais voila il me dit que Button2.click bla bla bla est un évenement et donc ca va pas . Alors j'ai cherché un peu, le mot qui revenait le plus souvent était RaiseEvent mais bon sans plus.
Quelqu'un à une petite idée ?
Merci
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 18 mai 2007 à 17:30
Bonjour,
C'est facile à résoudre avec une booléenne
adapte ceci à VB.Net
Private couic As Boolean
Private Sub Command1_Click()
Do While Not couic
'ici ton instruction
DoEvents ' attention : ce Doevents est important ici
Loop
End Sub
Private Sub Command2_Click()
couic = Not couic
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 18 mai 2007 à 22:21
déjà (puisque tu es sous VB.Net et bien que je ne connaisse personnellement rien à VB.Net ) :
"Private Declare Function GetTickCount Lib"kernel32" () As Long "
ce Long en rouge devrait être un Integer, il me semble ....
(Leçon mille fois donnée par Casy... non ?)
romainvv
Messages postés46Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention22 mai 2009 19 mai 2007 à 08:28
J'avais bien mis un espace dans mon script je ne sais pas pourquoi il l'a mis sans espace sans doute une érreur de copié collé...
Enfin aussi non tu me dis integer j'ai essayé c'est possible pour PublicSub xWait (ByVal MilsecToWait As Integer)
Mais pas pour Dim lngEndingTime As Long car il est l addition de GetTickCount() + (MilsecToWait) et GetTickCount() est un chiffre énorme quand j'ai essayé de voir ce que c'était. D'ailleur si je mets Dim lngEndingTime As Interger il me dit que ca va pas pcq le nbr est trop grand (enfin c'était ca l'idée)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 19 mai 2007 à 09:12
Bon, là je ne sais pas (ne connais pas VB.Net...)
Mais montre-moi ce que contient
1) GetTickcount au départ
2) ce que contient lngendingtime avec une valeur d'attente de 1000 et avec une valeur d'attente de 10000
3) ce que contient GetTickcount() quand plus grand que lngEndingTime
je vais essayer de comprendre....
Enfin : es-tu fraiment certain d'avoir, sous VB.Net à mettre tes parentèses à GetTickcount () ?
Car, sous VB6, on ne les mettrait pas ...
Pour y voir clair : fais-moi également un msgbox de
romainvv
Messages postés46Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention22 mai 2009 19 mai 2007 à 20:39
1) Message box en affichant la valeur de GetTickcount : 1408740767121017
juste avant Dim lngEndingTime As Long
mais il change à chaque démarrage.
3) Message box en affichant la valeur de GetTickcount : 1409827393911561
juste avant Do
While GetTickCount() < lngEndingTime il est différent de celui du dessus et change à chaque fois.
Message box en affichant la valeur de GetTickcount : 1409827393921561
juste avant My
.Application.DoEvents() il est différent de celui des 2 autres et change à chaque fois.
Tout ca avec xWait(10000)
2) La valeur de lngEndingTime juste avant
lngEndingTime = GetTickCount() + (MilsecToWait) est égale à zéro (normal) .
2) La valeur de lngEndingTime juste après
lngEndingTime = GetTickCount() + (MilsecToWait) est égale à 1393991848548334 .
4) GetTickcount () sans () c'est à dire GetTickcount tout court ça ne change rien.
5) Sans les parenthèses à MilsecToWait sa donne rien non plus.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 19 mai 2007 à 21:22
Bonsoir,
Il est absolument normal que la valeur renviyée par la fonction GerTickCount change sans cesse et de façon croissante.
Il est par contre anormal que, pour deux mesures prises à la suite :
tu aies un lngEndingTime (= GetTickCount() + (MilsecToWait)) qui soit plust petit (1393991848548334) que le gettickcount lui-même (1409827393921561)
Pige pas, là !!! (à moins que tu aies mal pris tes mesures, c'est impossible)
romainvv
Messages postés46Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention22 mai 2009 19 mai 2007 à 22:42
Voila des nouvelles mesures plus cohérentes :
1534772294966841
1535266216325412
1535266216245412
tjrs pour xWait(10000)
Bon voila je suis perdu je vais trouvé le chemin de mon lit
romainvv
Messages postés46Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention22 mai 2009 21 mai 2007 à 20:00
Et bien et bien ,
j'ai lu tout ca j'ai rien compris ...
non , si je comprend bien le faite que ma fonction attende d'office toujours 250ms c'est due à " même résolution de synchro de l'horloge donc AUCUNE précision à la milliseconde. "
Mais 250ms c'est pas un peu énorme comme imprécision ? Surtout que cet valeur va changé en fonction du pc alors ?
Enfin j'ai compris ce qu'est GetTickCount. Et en y réfléchisant ca ne devrait pas être :
If GetTickCount() > lngEndingTime // avec suppérieur