2009-07-27 2 views
0

J'ai ce code:MouseEvent ne fonctionne pas sendmessage

Private Const MOUSEEVENTF_LEFTDOWN = &H2 
Private Const MOUSEEVENTF_LEFTUP = &H4 

Dim WindowHandle As Long = FindWindow(vbNullString, "Ultima Online") 

SendMessage(WindowHandle, MOUSEEVENTF_LEFTDOWN, 0, 0) 
SendMessage(WindowHandle, MOUSEEVENTF_LEFTUP, 0, 0) 

Je sais que devient l'amende WindowHandle, parce que je fait une statment conditionnelle qui apparaît messageBox si WindowHandle = 0

Le problème est que ce n'est pas en envoyant le clic de souris sur la fenêtre.

Répondre

0

Vous devez utiliser différentes constantes pour SendMessage:

Private Const WM_LBUTTONDOWN = &H201 
Private Const WM_LBUTTONUP = &H202 

Dim WindowHandle As Long = FindWindow(vbNullString, "Ultima Online") 

SendMessage(WindowHandle, WM_LBUTTONDOWN, 0, 0) 
SendMessage(WindowHandle, WM_LBUTTONUP, 0, 0) 

Notez que vous aussi envoyer les coordonnées à 0,0 - mais je suppose que cela est bien beau.

constantes PSThese que vous utilisez actuellement sont pour la fonction mouse_event qui est peu plus bas niveau:

Private Const MOUSEEVENTF_LEFTDOWN = &H2 
Private Const MOUSEEVENTF_LEFTUP = &H4 
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) 

mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 
+0

Son ne fonctionne toujours pas, dois-je faire la fenêtre « Ultima Online » active ou quelque chose ? –