La souris en dehors de la form

scano93 Messages postés 22 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 29 avril 2005 - 14 janv. 2005 à 20:33
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 14 janv. 2005 à 23:29
Salut à tous,



Ce thème me semble être le meilleur pour mon problème. Je m'explique :

Existe-t-il des API, des constantes, ou tout ce que vous voulez, pour
pouvoir executer quelque chose (par exemple msgbox "Vous avez cliquer
la !") si on clique sur la form (simple ça, je connais) mais si on
clique aussi sur le bureau ! Par exemple, sur une fenêtre msn, quand on
clique pour la mettre en premier plan (on est hors du cadre de la
form), la msgbox s'affiche ! Partout, qu'on clique, tout court !
J'éspère que vous comprenez, parce que je vois pas comment expliquer
mieux.

Quoi qu'il en soit, je repose ma question : existe-t-il des api ou
autre pour que le prog, même si il n'est plus en premier plan, prenne
en compte les click de la souris ?



Merci d'avance, @++ !

5 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 janv. 2005 à 20:36
Private
Declare
Function GetCursorPos
Lib
"user32" (lpPoint
As POINTAPI)
As
Long

Daniel
0
scano93 Messages postés 22 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 29 avril 2005
14 janv. 2005 à 20:48
Ouai, je connais cet api, mais il sert surtout à "envoyer" le curseur
de la souris à un endroit x , y, non ? comment peux-t-on s'en servir,
si c'est possible, pour que le programme gère les lcick même en dehors
de la form ?
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
14 janv. 2005 à 20:56
Salut,

Il faut que tu poses un hook sur la souris. Il faut que tu programme ça en C dans une dll native.

Fais une recherche de hook sur cpfrance, tu devrait trouver.

[mailto:D@runia D@runia]
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 janv. 2005 à 21:10
tu confonds avec SetCursorPos qui permet de positionner le curseur à l'endroit où on veut.
ici on utilise GetCursorPos qui permet de connaître la position du curseur n'importe où sur l'écran. j'ai rajouté aussi le handle de ce qui se trouve sous la souris. et avec GeyAsyncKeyState on peut savoir si un bouton a été appuyé.
contrôle a ajouter: un Timer et 2 TextBox.

Private Type POINTAPI
X As Long
Y As Long
End Type

Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Timer1_Timer()
Dim Pt As POINTAPI
Dim mWnd As Long
GetCursorPos Pt
Text1 = Pt.X & " - " & Pt.Y

mWnd = WindowFromPoint(Pt.X, Pt.Y)
Text2 = mWnd
If GetAsyncKeyState(1) < 0 Then Beep

End Sub

Daniel
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 janv. 2005 à 23:29
Et faudra mettre un timer tellement court pour surveiller la souris que ça va ruiner la CPU.
La seule methode correcte est celle indiquee par darunia, aucun timer et on laisse les performances intactes.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous