﻿;-- TIME_STAMP   2023-03-13 15:51:14

#include <WinAPISys.au3>
#include <GuiTab.au3>


HotKeySet("!{F7}", _getInfoCurrTab) ; <Alt><F7> Info aktiver Tab in Konsole ausgeben
HotKeySet("!{F8}", _End)            ; <Alt><F8> Beenden

While True
    Sleep(10)
WEnd


Func _End()
    Exit
EndFunc


Func _getInfoCurrTab()
    Local $mInfo = _SciTE_GetTabInfo()
    If Not @error Then
        ConsoleWrite("hwnd SciTE:    " & $mInfo.hSciTE & @CRLF)
        ConsoleWrite("Titel SciTE:   " & $mInfo.Title & @CRLF)
        ConsoleWrite("hwnd Tab:      " & $mInfo.hTab & @CRLF)
        ConsoleWrite("Rect Tab:      " & $mInfo.RectTab.Left & ', ' & $mInfo.RectTab.Top & ', ' & _
                                         $mInfo.RectTab.Right & ', ' & $mInfo.RectTab.Bottom & @CRLF)
        ConsoleWrite("Style Tab:     " & $mInfo.Style & @CRLF)
        ConsoleWrite("StyleEx Tab:   " & $mInfo.StyleEx & @CRLF)
        ConsoleWrite("Index TabItem: " & $mInfo.Index & @CRLF)
        ConsoleWrite("Text TabItem:  " & $mInfo.Item & @CRLF)
        ; Rect Tab-Item ist relativ zum Tab-Ctrl
        ConsoleWrite("Rect TabItem:  " & $mInfo.RectItem.Left & ', ' & $mInfo.RectItem.Top & ', ' & _
                                         $mInfo.RectItem.Right & ', ' & $mInfo.RectItem.Bottom & @CRLF & @CRLF)
    EndIf
EndFunc


Func _SciTE_GetTabInfo()
    Local $hScite, $aResult, $aChild, $hWndTab = Null
    Local $mResult[]
    $hScite = WinGetHandle('[ACTIVE]')
    $aResult = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $hScite, "wstr", "", "int", 4096)
    If Not @error And $aResult[2] = 'SciTEWindow' Then
        $aChild = _WinAPI_EnumChildWindows($hScite) ; only visible
        If Not @error Then
            For $i = 1 To $aChild[0][0]
                If $aChild[$i][1] = "SciTeTabCtrl" Then
                    $hWndTab = $aChild[$i][0]
                    ExitLoop
                EndIf
            Next
        EndIf
        If $hWndTab <> Null Then
            $mResult.hSciTE   = $hScite
            $mResult.Title    = WinGetTitle($hScite)
            $mResult.hTab     = $hWndTab
            $mResult.RectTab  = _WinAPI_GetWindowRect($hWndTab)
            $mResult.Style    = _WinAPI_GetWindowLong ($hWndTab, $GWL_STYLE)
            $mResult.StyleEx  = _WinAPI_GetWindowLong ($hWndTab, $GWL_EXSTYLE)
            $mResult.Index    = _GUICtrlTab_GetCurFocus($hWndTab)
            $mResult.Item     = _GUICtrlTab_GetItemText($hWndTab, $mResult.Index)
            $mResult.RectItem = _GUICtrlTab_GetItemRectEx($hWndTab, $mResult.Index)
            Return $mResult
        EndIf
    EndIf
    Return SetError(1)
EndFunc