Timer

Résolu
Vertefeuille Messages postés 19 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 20 janvier 2007 - 8 janv. 2007 à 21:39
Vertefeuille Messages postés 19 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 20 janvier 2007 - 8 janv. 2007 à 22:32
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 janv. 2007 à 22:27
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 #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 janv. 2007 à 21:44
"...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 #
0
Vertefeuille Messages postés 19 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 20 janvier 2007
8 janv. 2007 à 21:58
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...
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 janv. 2007 à 22:11
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 #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vertefeuille Messages postés 19 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 20 janvier 2007
8 janv. 2007 à 22:16
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 !
0
Vertefeuille Messages postés 19 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 20 janvier 2007
8 janv. 2007 à 22:22
ç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.
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
8 janv. 2007 à 22:29
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.
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
8 janv. 2007 à 22:30
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.
0
Vertefeuille Messages postés 19 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 20 janvier 2007
8 janv. 2007 à 22:32
Merci c'était bien KeyPreview qui doit être true !

Bonne soirée !
0
Rejoignez-nous