Position du curseur [Résolu]

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

Votre réponse

11 réponses

Meilleure réponse
Malonesystems
Messages postés
26
Date d'inscription
jeudi 3 août 2006
Dernière intervention
21 avril 2011
- 16 déc. 2007 à 14:46
3
Merci
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

Merci Malonesystems 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Malonesystems
Nicolas___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 16 déc. 2007 à 19:50
0
Merci
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
Messages postés
293
Date d'inscription
mardi 2 mai 2006
Dernière intervention
12 octobre 2011
- 24 déc. 2007 à 20:30
0
Merci
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
Messages postés
293
Date d'inscription
mardi 2 mai 2006
Dernière intervention
12 octobre 2011
- 24 déc. 2007 à 20:31
0
Merci
sinon y'a onmousemove qui permet de reccuperer la position quand le curseur bouge sur la form !
Commenter la réponse de nethacker
Nicolas___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 26 déc. 2007 à 10:25
0
Merci
@[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
Messages postés
293
Date d'inscription
mardi 2 mai 2006
Dernière intervention
12 octobre 2011
- 29 déc. 2007 à 15:06
0
Merci
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___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 30 déc. 2007 à 10:41
0
Merci
"

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___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 30 déc. 2007 à 10:41
0
Merci
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___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 30 déc. 2007 à 10:43
0
Merci
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
Messages postés
293
Date d'inscription
mardi 2 mai 2006
Dernière intervention
12 octobre 2011
- 28 janv. 2008 à 17:05
0
Merci
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
Messages postés
293
Date d'inscription
mardi 2 mai 2006
Dernière intervention
12 octobre 2011
- 28 janv. 2008 à 17:08
0
Merci
@[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.