Position du curseur [Résolu]

speederman_ch 3 Messages postés lundi 3 janvier 2005Date d'inscription 22 novembre 2008 Dernière intervention - 16 déc. 2007 à 00:34 - Dernière réponse : nethacker 293 Messages postés mardi 2 mai 2006Date d'inscription 12 octobre 2011 Dernière intervention
- 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 ?
Afficher la suite 

11 réponses

Répondre au sujet
Malonesystems 26 Messages postés jeudi 3 août 2006Date d'inscription 21 avril 2011 Dernière intervention - 16 déc. 2007 à 14:46
+3
Utile
Salut,

Tu trouvera peut être ton bonheur ds cette source du site, ou au moins une bonne approche :
http://www.delphifr.com/codes/HOOK-CALENDRIER-AVEC-GESTION-AGENDA-DIRECTEMENT-SUR-VOTRE_22090.aspx

Bon dev,

Jim
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Malonesystems
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 16 déc. 2007 à 19:50
0
Utile
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>
Commenter la réponse de Nicolas___
nethacker 293 Messages postés mardi 2 mai 2006Date d'inscription 12 octobre 2011 Dernière intervention - 24 déc. 2007 à 20:30
0
Utile
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/
Commenter la réponse de nethacker
nethacker 293 Messages postés mardi 2 mai 2006Date d'inscription 12 octobre 2011 Dernière intervention - 24 déc. 2007 à 20:31
0
Utile
sinon y'a onmousemove qui permet de reccuperer la position quand le curseur bouge sur la form !
Commenter la réponse de nethacker
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 26 déc. 2007 à 10:25
0
Utile
@[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>
Commenter la réponse de Nicolas___
nethacker 293 Messages postés mardi 2 mai 2006Date d'inscription 12 octobre 2011 Dernière intervention - 29 déc. 2007 à 15:06
0
Utile
si tu peux en vérifiant tous les 1ms et non on utilisant "Onmousemove" la preuve regarde mon programme !
Commenter la réponse de nethacker
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 30 déc. 2007 à 10:41
0
Utile
"

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 
Commenter la réponse de Nicolas___
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 30 déc. 2007 à 10:41
0
Utile
Ya ce message qui c'est envoyé comme 1 *** mais prend la peine de le lire quand meme
Commenter la réponse de Nicolas___
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 30 déc. 2007 à 10:43
0
Utile
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 
Commenter la réponse de Nicolas___
nethacker 293 Messages postés mardi 2 mai 2006Date d'inscription 12 octobre 2011 Dernière intervention - 28 janv. 2008 à 17:05
0
Utile
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 ! "
Commenter la réponse de nethacker
nethacker 293 Messages postés mardi 2 mai 2006Date d'inscription 12 octobre 2011 Dernière intervention - 28 janv. 2008 à 17:08
0
Utile
@[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" !

Commenter la réponse de nethacker

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.