Timer [Résolu]

Signaler
Messages postés
19
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
20 janvier 2007
-
Messages postés
19
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
20 janvier 2007
-
Salut,
Voici mon problème, à vous de le résoudre
J'ai dans mon code un sub Timer1_Tick dans lequel je fais une capture d'écran toutes les "x" msecondes (c'est une opération qui demande pas mal de mémoire...). J'aimerai arrêter le Timer1 quand j'appuye sur une touche, comment je fais ?

J'ai déjà essayer KeyPress, KeyDown et un Application.DoEvents() mais ça ne veut pas prendre en compte ma touche quand elle est préssée. Je précise que le timer se trouve bien sur la Form qui doit recevoir la touche.

Que faut-il faire pour que ma touche soit reconnue en dehors de la boucle du Timer1 ?

Merci pour vos réponses

9 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
j'ai oublier de te preciser de vérifier que la propriété KeyPreview de ta form doit etre à true. Si tu as des controls qui euvent prendre le focus sur ta form, si keypreview est à false, c'est le controle qui a le focus qui récupèrera l'entrée clavier.

Avec keypreview à true, c'est la form qui intercepte l'entrée clavier avant de la passer au controle actif.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
"...Voici mon problème, à vous de le résoudre..." Déjà tu commence mal, on va peut-etre pouvoir t'aider, quant à te faire le boulot .....

Ensuite, on subit en ce moment une greve illimité des boules de crystals, par conséquent il nous est assez difficile de deviner l'impossible.

Par conséquent, si tu voulais bien donner le bout de code qui pose problème, tu pourrais peut-etre espérer avoir un petit peu d'aide.

Et à l'occasion va faire un tour sur le règlement, ça peut pas faire de mal.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
19
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
20 janvier 2007

Le voila :





Private






Sub
Timer1_Tick(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
Timer1.Tick


Dim
pos

As
POINTAPI


Dim
ret

As



Integer

Application.DoEvents()

ret = GetCursorPos(pos)


TextBox1.Text =




CStr
(pos.x)
TextBox2.Text =

CStr
(pos.y)screenGif = Capture()

Label4.BackColor = screenGif.GetPixel(pos.x, pos.y)


End



Sub

PrivateSub Form1_KeyDown1(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyEventArgs) HandlesMe.KeyDown

If e.KeyData.ToString =
"k"
Then      ctrl3 =

True
      Timer1.Stop()

End
If

End
Sub

Ma touche ne provoque aucune action...
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
Es-tu sur que ton code execute bien le Timer1.Stop ???? Je ne pense pas. Pour moi ton test n'est pas correct. Il faudrait que tu fasse une comparairaison de chaines pas seulement un test

Pourquoi ne pas faire : If e.KeyCode = Keys.K then ????? Perso ça me parait nettement plur propre

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
19
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
20 janvier 2007

Et je ne commence pas mal, de l'aide c'est quoi ? C'est répondre à ma question pas faire un code ! De plus mon bout de code n'est pas indispensable pour comprendre : j'ai un timer et j'aimerai l'arreter par une touche (ça ne ressemble pas à un "faire le boulot" comme tu dis). Et merci pour l'accueil, ça fait toujours plaisir !
Messages postés
19
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
20 janvier 2007

ça ne fonctionne pas non plus, j'ai même mis un point d'arrêt au moment de l'évaluation de If e.KeyCode = Keys.K mais il ne passe même pas par keydown apparement.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Faisons un peu de débuggage...
1) Est-ce que ton form à bien le focus (la barre de titre est bleue) lorsque tu appuyes sur k ?
2) Est-ce que la propriété KeyPreview de ton form est bien mise à True ? Sinon ce sont les contrôles ayant le focus qui recoivent le message de la touche.

A partir de là, si KeyDown n'est pas déclenché, c'est que tu as un problème de clavier.

3) Vérifie le test à faire en mettant par exemple MsgBox(e.KeyCode) dans l'évènement KeyDown.

Julien.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Grillé de 91 secondes... Pasque j'ai été trop bête d'aller vérifier dans VB2005 si KeyPreview marchait toujours de la même manière :p....

Julien.
Messages postés
19
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
20 janvier 2007

Merci c'était bien KeyPreview qui doit être true !

Bonne soirée !