需要控件ID才玩的转啊...

 经测试:
#include <SendMessage.au3>
_SendMessage(ControlGetHandle("未命名","","[CLASS:Afx:1000000:8; INSTANCE:1]"), 0x201, 1,_MakeLong(500, 500) )
Func _MakeLong($LoWord, $HiWord)
        Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc
向画图板发送一个鼠标点击,同理只能向控件发送点击,需要获得控件句柄
它等同于
        Func _MakeLong($LoWord, $HiWord)
        Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc

; I = PostMessage(hwnd, WM_LBUTTONDOWN, 0, (mX And &HFFFF) + (mY And &HFFFF) * &H10000)

Func _MouseClick($hWnd, $button, $x, $y, $times=1, $delay=250)
        If $hWnd = 0 Then
                SetError(-1)
                Return
        EndIf
        
        Local $ix
        Local $lParam = _MakeLong($x, $y)
        Local $user32 = DllOpen("user32.dll")
        
        $button = StringLower($button)
        
        If $button = "left" Then
                For $ix = 1 To $times
                        DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x200, "int", 0, "long", $lParam)
                        DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x201, "int", 1, "long", $lParam)
                        DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x202, "int", 0, "long", $lParam)
                                        ; I = PostMessage(hwnd, WM_LBUTTONDOWN, 0, (mX And &HFFFF) + (mY And &HFFFF) * &H10000)               
                        If $ix < $times Then Sleep($delay)
                Next
        ElseIf $button = "right" Then
                For $ix = 1 To $times
                        DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x200, "int", 0, "long", $lParam)
                        DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x204, "int", 2, "long", $lParam)
                        DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x205, "int", 0, "long", $lParam)
                        
                        If $ix < $times Then Sleep($delay)
                Next
        Else
                SetError(-2)
                If $user32 <> -1 Then DllClose($user32)
                Return
        EndIf
        If $user32 <> -1 Then DllClose($user32)
EndFunc

;'lp = Y * 65536 + X
_MouseClick(ControlGetHandle("未命名","","[CLASS:Afx:1000000:8; INSTANCE:1]"), "left", 500,500)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值