Name eines angeklickten Steuerelements ermitteln

  • Habe folgenden Code:

    Spoiler anzeigen
    [autoit]

    If _IsPressed("01", $dll) Then
    $NewWinTitle = WinGetTitle("[active]")
    If $NewWinTitle <> $WinTitle Then
    $WinTitle = $NewWinTitle
    FileWrite (@DesktopDir & "\Test.txt", 'WinWait(' & $WinTitle & ', "")' & @CRLF & 'Sleep(2000)' & @CRLF)
    EndIf
    $WinText = WinGetText($WinTitle)
    $Control = ControlGetFocus ($WinTitle , "")
    $ControlText = ControlGetText($WinTitle , "", $Control)

    [/autoit] [autoit][/autoit] [autoit]

    FileWrite(@DesktopDir & "\Test.txt", ';"' & $ControlText & '" wird angeklickt' & @CRLF)
    FileWrite(@DesktopDir & "\Test.txt", 'ControlClick(' & $WinTitle & ', "", ' & $Control & ')' & @CRLF)
    EndIf

    [/autoit]

    Je nach Steuerelement liefert $Control = ControlGetFocus ($WinTitle , "") nichts oder nichts brauchbares zurück. Das AutoIt Window Info zeigt die Controls aber korrekt an.
    Als Beispiel sei das Programm TeamViewer genannt. Dort wird "TeamViewer Panel (minimiert)" als Steuerelement zurückgegeben wenn auf die Combobox oder die Optionsfelder nach dem Programmstart geklickt wird.