Olá, Juauvitor, bem vindo ao Planilhando!
Para vc enviar pressionamento de botões do mouse, use uma combinação de duas API's. Com uma delas (SetCursorPos) vc posiciona o "mouse" no local a ser clicado (posição x e y) e com a outra (mouse_event) vc emula o pressionamento do mouse. Veja que tem duas versões para declarar as API's, conforme seu sistema seja 32 ou 64 bits. Seguem também as rotinas para pressionamento do botão direito e duplo-click, caso haja interesse:
'Para 32bits:
'Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
'Public 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)
'Para 64bits:
Public Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Public Declare PtrSafe Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As LongPtr)
'Para ambos:
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Public Const MOUSEEVENTF_RIGHTUP As Long = &H10
_____________________
Private Sub SimularClickEsquerdoNormal()
SetCursorPos 50, 50 ''Move o cursor para as coordenadas x e y para posicionar no local clicável
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
_____________________
Private Sub SimularDuploClick() 'Duplo click rápido
SetCursorPos 50, 50 ''Move o cursor para as coordenadas x e y para posicionar no local clicável
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
_____________________
Private Sub SimularClickBotãoDireitoMouse()
SetCursorPos 50, 50 'Move o cursor para as coordenadas x e y para posicionar no local clicável
mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
End Sub
Veja que usei as coordenadas x e y como sendo 50,50. Ajuste como necessário. Se não for necessário posicionar antes de clicar, pode eliminar a function SetCursorPos na declaração e dentro das procedures.
Atte, Edson.
Postado : 10/06/2016 12:29 am