Controle de la souris sous VBA

Signaler
Messages postés
6
Date d'inscription
vendredi 26 décembre 2008
Statut
Membre
Dernière intervention
25 février 2009
-
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
-
Bonjour,

Sur de nombreux forums j'ai vu que l'on pouvait contrôler sa souris n'importe où sous Windows
grâce à du code VBA (ici sous Excel).

Je place une copie de mon code à la fin du message.

Voici mon  problème:
-le déplacement de la souris marche (jusque là je ne suis pas si impressionné)
-le clic souris ne fonctionne pas : si la fenêtre active est Excel alors le clic se fait mais sur aucune autre fenêtre.

Ma question est : Y'a-t-il une erreur dans ce code et pourquoi cela ne fonctionne pas ?

-------------------------------------------------------------------------------------------------------------
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Declare Function SetCursorPos Lib "user32" ( _
                 ByVal x As Long, _
                 ByVal y As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long

 Const MOUSEEVENTF_LEFTDOWN = &H2
 Const MOUSEEVENTF_LEFTUP = &H4
 Const MOUSEEVENTF_ABSOLUTE = &H8000

Sub test()
Application.WindowState = xlMinimized
Call SetCursorPos(80, 90)
Call mouse_event(MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_ABSOLUTE, 80, 90, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP + MOUSEEVENTF_ABSOLUTE, 80, 90, 0, 0)
Application.WindowState = xlMaximized
End Sub
-------------------------------------------------------------------------------------------------------------
merci d'avance pour vos réponses.

1 réponse

Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Bonsoir,

Hum... le code marche très bien même sur un autre fenetre !

essayes ceci pour t'en convaincre :

=

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Declare Function SetCursorPos Lib "user32" ( _
                 ByVal X As Long, _
                 ByVal Y As Long) As Long



Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_ABSOLUTE = &H8000



Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long



Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1



Public Type POINTAPI
    X           As Long
    Y           As Long
End Type



Public Function ScreenResolution() As POINTAPI
ScreenResolution.X = GetSystemMetrics(SM_CXSCREEN)
ScreenResolution.Y = GetSystemMetrics(SM_CYSCREEN)
End Function



Sub test()
Call SetCursorPos(0, ScreenResolution.Y)
Call mouse_event(MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_ABSOLUTE, 0, 0, 0, 0)
End Sub


=

ce qui pointe la souris sur la barre demarrer de windows et fait un clique dessus, ce qui l'ouvre.

Amlicalement,
Us.