Voici comment récupérer les actions exécutées par la souris sur n'importe quelle fenêtre Windows (à la différence de la fonction Windev "Evénement" qui n'est active que sur les fenêtres Windev) :

Dans les déclarations globales de la fenêtre "maFenetre" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
CONSTANTE
	WH_MOUSE_LL = 14
	WM_LBUTTONDOWN = 513
	WM_LBUTTONUP = 514
	WM_RBUTTONDOWN = 516
	WM_RBUTTONUP = 517
	WM_MOUSEMOVE = 512
	WM_MOUSEWHEEL = 522
FIN
 
iHook est un entier système = 0
Dans le code d'initialisation de la fenête "maFenetre" :

On crée un "Hook" Windows :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
iHook = API("user32","SetWindowsHookExA",WH_MOUSE_LL,&MouseEvent,Instance(),0)
Dans le code de fermeture de la fenête "maFenetre" :

On détruit le "Hook" Windows :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
API("user32","UnhookWindowsHookEx",iHook)
Dans le code de la fonction MouseEvent locale à la fenêtre "maFenetre" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
PROCEDURE MouseEvent(iIdHook est un entier,wParam est un entier,iLParam est un entier)
 
SELON wParam
 
	//Bouton gauche enfoncé
	CAS WM_LBUTTONDOWN	//513
 
		Trace("Bouton gauche enfoncé")
 
                //Récupérer le handle de la fenêtre Windows cliquée
		strPOINT est une structure
			x est un entier
			y est un entier
		FIN
 
		stPoint est une strPOINT
		stPoint.x = PoidsFaible(CurseurPos(cpEcran))
		stPoint.y = PoidsFort(CurseurPos(cpEcran))
 
		iHandle est un entier système
		iHandle = API("USER32","WindowFromPoint",stPoint)
 
		Trace(iHandle+" | "+SysFenTitre(iHandle))
 
	//Bouton gauche relaché
	CAS WM_LBUTTONUP	//514
		Trace("Bouton gauche relaché")
 
	//Bouton droit enfoncé
	CAS WM_RBUTTONDOWN	//516
		Trace("Bouton droit enfoncé")
 
	//Bouton droit relaché
	CAS WM_RBUTTONUP//517
		Trace("Bouton droit relaché")
 
	//Déplacement souris
	CAS WM_MOUSEMOVE	//512
		Trace("Déplacement souris")
 
	//Roulette souris
	CAS WM_MOUSEWHEEL	//522
		Trace("Roulette souris")		
FIN
Bonne prog