Ticket #1589: __GUICtrlTab_ClickTab.au3

File __GUICtrlTab_ClickTab.au3, 2.2 KB (added by exodius <exodius@…>, 15 years ago)

GUICtrlTab_ClickTab by PsaltyDS

Line 
1; #FUNCTION# =====================================================
2; Name...........: __GUICtrlTab_ClickTab
3; Description ...: Clicks a tab
4; Syntax.........: _GUICtrlTab_ClickTab($hWnd, $iIndex[, $sButton = "left"[, $fMove = False[,
5;               $iClicks = 1[, $iSpeed = 1]]]])
6; Parameters ....: $hWnd        - Handle to control
7;                 $iIndex     - Specifies the zero based index of the item
8;                 $fButton   - Button to click with
9;                 $fMove       - If True, the mouse will be moved.
10;                          - If False, the mouse does not move.
11;                 $iClicks   - Number of clicks
12;                 $iSpeed     - Mouse movement speed
13; Return values .:
14; Author ........: Paul Campbell (PaulIA)
15; Modified.......: Gary Frost (gafrost)
16;               : PsaltyDS - Modified to use ControlClick() when $fMove = False so window
17;                    does not have to be active
18; Remarks .......:
19; Related .......:
20; Link ..........;
21; Example .......; Yes
22; ================================================================
23Func __GUICtrlTab_ClickTab($hwnd, $iIndex, $sButton = "left", $fMove = False, $iClicks = 1, $iSpeed = 1)
24    Local $iX, $iY, $tPoint, $tRect, $iMode, $aPos, $hWinParent, $avTabPos
25    If $Debug_TAB Then _GUICtrlTab_ValidateClassName($hwnd)
26    If Not IsHWnd($hwnd) Then $hwnd = GUICtrlGetHandle($hwnd)
27
28    If Not $fMove Then
29        ; Don't move mouse, use ControlClick()
30        $hWinParent = _WinAPI_GetParent($hwnd)
31        $avTabPos = _GUICtrlTab_GetItemRect($hwnd, $iIndex)
32        $iX = $avTabPos[0] + (($avTabPos[2] - $avTabPos[0]) / 2)
33        $iY = $avTabPos[1] + (($avTabPos[3] - $avTabPos[1]) / 2)
34        ControlClick($hWinParent, "", $hwnd, $sButton, $iClicks, $iX, $iY)
35    Else
36        ; Original code to move mouse and click (requires active window)
37        $tRect = _GUICtrlTab_GetItemRectEx($hwnd, $iIndex)
38        $tPoint = _WinAPI_PointFromRect($tRect, True)
39        $tPoint = _WinAPI_ClientToScreen($hwnd, $tPoint)
40        _WinAPI_GetXYFromPoint($tPoint, $iX, $iY)
41        $iMode = Opt("MouseCoordMode", 1)
42        MouseClick($sButton, $iX, $iY, $iClicks, $iSpeed)
43        Opt("MouseCoordMode", $iMode)
44    EndIf
45EndFunc ;==>__GUICtrlTab_ClickTab