Thanks for this nice library ts-soft
I modified the AW_ControlClick to support custom coordinates like
Autoit ControlClick
Code: Select all
Macro AW_ControlClick(title, controlID, Button = #PB_Button_Left, clicks = 1, x = -1, y = -1)
AW_ControlClick3(title, controlID, Button, clicks, x, y)
EndMacro
Macro MAKELPARAM(x, y)
(y<<16) | x
EndMacro
ProcedureDLL AW_ControlClick3(title.s, controlID.s, Button, clicks, x, y)
Protected i
Protected *param.AW_WinParameter
*param = AW_FindWindow(title)
If *param\hWnd
*param = AW_FindControl(*param\hWnd, controlID.s)
If *param\hWnd
Select Button
Case #PB_Button_Left
For i = 1 To clicks
If x > -1 And y > -1
PostMessage_(*param\hWnd, #WM_LBUTTONDOWN, 0, MAKELPARAM(x, y))
PostMessage_(*param\hWnd, #WM_LBUTTONUP, 0, MAKELPARAM(x, y))
Else
PostMessage_(*param\hWnd, #WM_LBUTTONDOWN, 0, 0)
PostMessage_(*param\hWnd, #WM_LBUTTONUP, 0, 0)
EndIf
If i < clicks
Delay(GetDoubleClickTime_())
EndIf
Next
ProcedureReturn #True
Case #PB_Button_Right
For i = 1 To clicks
If x > -1 And y > -1
PostMessage_(*param\hWnd, #WM_RBUTTONDOWN, 0, MAKELPARAM(x, y))
PostMessage_(*param\hWnd, #WM_RBUTTONUP, 0, MAKELPARAM(x, y))
Else
PostMessage_(*param\hWnd, #WM_RBUTTONDOWN, 0, 0)
PostMessage_(*param\hWnd, #WM_RBUTTONUP, 0, 0)
EndIf
If i < clicks
Delay(GetDoubleClickTime_())
EndIf
Next
ProcedureReturn #True
EndSelect
EndIf
EndIf
EndProcedure