Controle de la souris sous VBA

openfire666 Messages postés 6 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 25 février 2009 - 26 déc. 2008 à 16:37
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 27 déc. 2008 à 22:22
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

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
27 déc. 2008 à 22:22
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.
0
Rejoignez-nous