fisher 发表于 2016-1-9 21:30:58

_GUICtrlTab_ClickTab的一点小改动

本帖最后由 fisher 于 2016-1-9 22:16 编辑

做了一个小外挂,其中有点击选项卡标签(Tab).
原来都没有问题,都能点中。最近发现点不中了,仔细观察发现,鼠标移到左上角,就差那么一点。


找到<GuiTab.au3>,

Func _GUICtrlTab_ClickTab($hWnd, $iIndex, $sButton = "left", $bMove = False, $iClicks = 1, $iSpeed = 1)
        If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)

        Local $iX, $iY
        If Not $bMove Then
                ; Don't move mouse, use ControlClick()
                Local $hWinParent = _WinAPI_GetParent($hWnd)
                Local $avTabPos = _GUICtrlTab_GetItemRect($hWnd, $iIndex)
                ;$iX = $avTabPos + (($avTabPos - $avTabPos) / 2)
                ;$iY = $avTabPos + (($avTabPos - $avTabPos) / 2)
               
                $iX = $avTabPos + (($avTabPos - $avTabPos) / 2)+10
                $iY = $avTabPos + (($avTabPos - $avTabPos) / 2)+10
                ControlClick($hWinParent, "", $hWnd, $sButton, $iClicks, $iX, $iY)
        Else
                ; Original code to move mouse and click (requires active window)
                Local $tRect = _GUICtrlTab_GetItemRectEx($hWnd, $iIndex)
                Local $tPoint = _WinAPI_PointFromRect($tRect, True)
                $tPoint = _WinAPI_ClientToScreen($hWnd, $tPoint)
                _WinAPI_GetXYFromPoint($tPoint, $iX, $iY)
                Local $iMode = Opt("MouseCoordMode", 1)
                MouseClick($sButton, $iX+10, $iY+10, $iClicks, $iSpeed)
                Opt("MouseCoordMode", $iMode)
        EndIf
EndFunc   ;==>_GUICtrlTab_ClickTab

把原始函数修改了一下(粗体红字部分),把鼠标多移动了一点,问题解决。

车技一流 发表于 2016-1-14 21:08:24

谢谢分享,新手学习

xz00311 发表于 2016-1-25 13:47:09

如果有意外弹窗的估计会停止
页: [1]
查看完整版本: _GUICtrlTab_ClickTab的一点小改动