Position du curseur

Résolu
speederman_ch Messages postés 3 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 22 novembre 2008 - 16 déc. 2007 à 00:34
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011 - 28 janv. 2008 à 17:08
Bonjour à tous,

Comment capter un évènement de la souris en dehors de la fenêtre d'une application (Delphi)
Comme  :  Quel est sa  position
                Quel Bouton est Enfoncer ?

10 réponses

Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
16 déc. 2007 à 19:50
Pour connaître la position de la souris, il suffit d'utiliser la fonction GetCursorPos(var P: TPoint)

<code class="delphi_keyword1">var

Position: TPoint;
begin

GetCursorPos(Position);
Showmessage(
'
Les
coordonnées
de
la
souris
sont
X:
'
+
IntToStr(Position.X) +
'
et
Y:
'
+ IntToStr(Position.Y));
end
;

</code>

Il est possible de tester à tout moment l'état d'une touche du clavier ou d'un bouton de la souris grâce à la fonction API :

<code class="delphi_keyword1">function
GetAsyncKeyState(vKey:
Integer
): SHORT;
stdcall
;
</code>


Cette fonction retourne l'état de la touche, le bit 15 du résultat est
à un si la touche ( ou le bouton ) est actuellement enfoncée. Le test
fonctionne aussi même si l'application n'est pas active. Le numéro de
touche passé en paramètre doit être le code de touche virtuel. Delphi
définit les constantes VK_xxxx pour chaque touche du clavier.


Par exemple pour tester l'état du bouton gauche de la souris :

<code class="delphi_keyword1">procedure
TForm1.Timer1Timer(Sender: TObject);
begin

If
(GetAsyncKeyState(VK_LBUTTON)
And
$
8000
)<>
0

Then
Label1.Caption :=
'
Enfoncé
'

Else
Label1.Caption :=
'
Relâché
'
;
end
;

je suis fort n'est ce pas ???
Non pas du tout j'ai taper dans google souris delphi , la premiere page c ca

http://www.developpez.com/delphi/faq/?page=souris

c'etait trop dur de le faire
</code>
0
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
24 déc. 2007 à 20:30
si la souris n'est pas sur la form tu peux pas le savoir sans mettre un Ttimer qui evrifie chaque "ms" la position du curseur !
Voila j'ai tout mis dans ce dossier !
http://membres.lycos.fr/nukedthz/cursor/
0
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
24 déc. 2007 à 20:31
sinon y'a onmousemove qui permet de reccuperer la position quand le curseur bouge sur la form !
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 déc. 2007 à 10:25
@[auteur/NETHACKER/763771.aspx nethacker]
si la souris n'est pas sur la form tu peux pas le savoir sans mettre un
Ttimer qui evrifie chaque "ms" la position du curseur !

<code class="delphi_keyword1">procedure
TForm1.Timer1Timer(Sender: TObject);

begin

If
(GetAsyncKeyState(VK_LBUTTON)
And
$
8000
)<>
0

Then
Label1.Caption :=
'
Enfoncé
'

Else
Label1.Caption :=
'
Relâché
'
;
end
;

Et c quoi ca , un chou !
</code>
0

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

Posez votre question
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
29 déc. 2007 à 15:06
si tu peux en vérifiant tous les 1ms et non on utilisant "Onmousemove" la preuve regarde mon programme !
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
30 déc. 2007 à 10:41
"

si tu peux en vérifiant tous les 1ms et non on utilisant "Onmousemove" la preuve regarde mon programme ! "


Bon si tu traduis en francais , ca veut dire que j'utilise OnMouseMove !


Or j'utilise un TIMER !
Mais je n'utilise pas


OnMouseMove

!!!







<code class="delphi_keyword1">procedure



TForm1.Timer1Timer(Sender: TObject);




begin



If
(GetAsyncKeyState(VK_LBUTTON)
And
$
8000
)<>
0

Then
Label1.Caption :=
'
Enfoncé
'

Else
Label1.Caption :=
'
Relâché
'
;
end
;



Ou est ce que tu vois OnMouseMove la dedans !!!

Mois je vois un timer
( et oui tu peux mettre 1 ms dans
le create de la form tu fais timer1.interval := x ms ! )

Bon si t'as toujours pas compris ...
Ou alors c'est que tu écris l'inverse de ta pensée

Et je re-souligne

</code>




<code class="delphi_keyword1">procedure
TForm1.Timer1Timer(Sender: TObject);

</code>




Timer ...

Ciao 
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
30 déc. 2007 à 10:41
Ya ce message qui c'est envoyé comme 1 *** mais prend la peine de le lire quand meme
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
30 déc. 2007 à 10:43
Je Re-fais 1 essai ...

"

si tu peux en vérifiant tous les 1ms et non on utilisant "Onmousemove" la preuve regarde mon programme ! "


Bon si tu traduis en francais , ca veut dire que j'utilise OnMouseMove !


Or j'utilise un TIMER !
Mais je n'utilise pas


OnMouseMove

!!!







<code class="delphi_keyword1">procedure


TForm1.Timer1Timer(Sender: TObject);



begin



If
(GetAsyncKeyState(VK_LBUTTON)
And
$
8000
)<>
0

Then
Label1.Caption :=
'
Enfoncé
'

Else
Label1.Caption :=
'
Relâché
'
;
end
;



Ou est ce que tu vois OnMouseMove la dedans !!!

Mois je vois un timer
( et oui tu peux mettre 1 ms dans
le create de la form tu fais timer1.interval := x ms ! )

Bon si t'as toujours pas compris ...
Ou alors c'est que tu écris l'inverse de ta pensée

Et je re-souligne

</code>




<code class="delphi_keyword1">procedure
TForm1.Timer1Timer(Sender: TObject);
</code>















Timer ...

Ciao 
0
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
28 janv. 2008 à 17:05
Désolé y'avait pas de Onmousemove mais c'est pas une raison pour quoter mon message plusieurs fois et me dire que c'est pas du francais j'ai juste oublié une virgule et une faute de frappe au lieu de "e" j'ai mis "o" !

" si tu peux en vérifiant tous les 1ms
et non on utilisant "Onmousemove" la preuve regarde mon programme ! "

" Si, tu peux en vérifiant tous les 1ms
et non en utilisant "Onmousemove"  ! la preuve regarde mon programme ! "
0
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
28 janv. 2008 à 17:08
@[auteur/NETHACKER/763771.aspx nethacker]
si la souris n'est pas sur la form tu peux pas le savoir sans mettre un Ttimer qui evrifie chaque "ms" la position du curseur !




<code class="delphi_keyword1">procedure

TForm1.Timer1Timer(Sender: TObject);


begin



If
(GetAsyncKeyState(VK_LBUTTON)
And
$
8000
)<>
0

Then
Label1.Caption :=
'
Enfoncé
'

Else
Label1.Caption :=
'
Relâché
'
;
end
;

Et c quoi ca , un chou !

</code>




sinon y'a onmousemove qui permet de reccuperer la position
quand le curseur bouge sur la form !

Et j'en passe sur tes "je suis fort n'est ce pas"


 et le "Chou" !

0
Rejoignez-nous