den sichtbaren Text vom Register auslesen, ControlGetVisibleText

  • Hallo,

    ich versuche herauszufinden, wie man den sichtbaren Text eines Registers auslesen könnte. Mit Au3info.exe erfährt man den visible text. Mit der Funktion ControlGetText erhält man zwar von Buttons, Edits, o.ä. den Text, aber nicht vom Register (ClassNameNN: SysListView321).

    Mit

    [autoit]

    ControlCommand( "title", "text", controlID, "CurrentTab", "" )

    [/autoit]

    erhält man zwar die Tabnummer, aber wie erhält man den Text des Tabs?

    Hat jemand eine Idee?

    2 Mal editiert, zuletzt von viktorkl (6. Juli 2010 um 01:39)

  • Was willst du denn genau bekommen den Titel des Tab-Items oder wie ?

    Geht meines Erachtens nicht direkt auszulesen könnte man aber so machen.

    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    Example()

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

    Func Example()
    Local $tab, $tab0OK, $tab0input
    Local $tabs[3], $tab1combo, $tab1OK, $tab2OK, $msg, $tabsel, $tabname[3]

    GUICreate("My GUI Tab", 250, 150); will create a dialog box that when displayed is centered

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

    GUISetBkColor(0x00E0FFFF)
    GUISetFont(9, 300)

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

    $tab = GUICtrlCreateTab(10, 10, 200, 100)
    $tabname[0]="tab0"
    $tabname[1]="tab----1"
    $tabname[2]="tab2"
    $tabs[0] = GUICtrlCreateTabItem($tabname[0])
    GUICtrlCreateLabel("label0", 30, 80, 50, 20)
    $tab0OK = GUICtrlCreateButton("OK0", 20, 50, 50, 20)
    $tab0input = GUICtrlCreateInput("default", 80, 50, 70, 20)

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

    $tabs[1] = GUICtrlCreateTabItem($tabname[1])
    GUICtrlCreateLabel("label1", 30, 80, 50, 20)
    $tab1combo = GUICtrlCreateCombo("", 20, 50, 60, 120)
    GUICtrlSetData(-1, "Trids|CyberSlug|Larry|Jon|Tylo", "Jon"); default Jon
    $tab1OK = GUICtrlCreateButton("OK1", 80, 50, 50, 20)

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

    $tabs[2] = GUICtrlCreateTabItem($tabname[2])
    GUICtrlSetState(-1, $GUI_SHOW); will be display first
    GUICtrlCreateLabel("label2", 30, 80, 50, 20)
    $tab2OK = GUICtrlCreateButton("OK2", 140, 50, 50)

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

    GUICtrlCreateTabItem(""); end tabitem definition

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

    GUICtrlCreateLabel("Click on tab and see the title", 20, 130, 250, 20)

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

    GUISetState()

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

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

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    If $msg = $tab Then
    ; display the clicked tab
    WinSetTitle("My GUI Tab", "", "My GUI Tab" &'-'& $tabname[GUICtrlRead($tab)] &'-'& GUICtrlRead($tab,1))


    ;Titel
    Msgbox(0,'', 'tabname:'&$tabname[GUICtrlRead($tab)]&Chr(10)&'ControlID:'&GUICtrlRead($tab,1))


    EndIf
    WEnd
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von mehrsolala (28. Januar 2009 um 16:20)

  • danke mehrsolala!

    Hast recht - letztlich wollte ich den Tab-Namen so extrahieren, da er in der ersten Zeile des visible Tabtextes steht. Das jedoch nicht von eigener GUI, sondern von Windows-Fenstern allgemein.

    Vielleicht kann man sich irgendwelcher dlls bedienen, wollte mir die Suche ersparen. Dachte, dass eventuell jemand sich mit Registern in dieser Hinsicht beschäftigt hat.

  • Hab es momentan so realisiert, dass ich die Tabnummer vorgebe und so oft in die entsprechende Richtung wechsele, bis der angegebene Tab erreicht ist. Schön wäre eine Referenz über Tabnamen.

    [autoit]


    Func changeToTab($winTitle, $Ctrl, $tabNr)
    $curTab = ControlCommand($winTitle, "", $Ctrl, "CurrentTab", "")
    $step = 1
    $richtung = "TabRight"
    if $tabNr < $curTab then
    $step = -1
    $richtung = "TabLeft"
    EndIf

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

    for $i = $curTab+$step To $tabNr Step $step
    ControlCommand( "", "", "SysTabControl321", $richtung, "" )
    sleep(50)
    Next
    EndFunc

    [/autoit]