Text des aktiven Controls ermitteln

  • Guten Abend liebe AutoIt Profis,

    ich möchte den Text des aktiven Controls ermitteln (s. Bild) - im Window Info wird es als TrayGrid ausgewiesen - kennt das jemand?
    Ich habe bereits mit ControlListView versucht an den Namen zu kommen, ohne Erfolg! Und mit ControlGetText bin ich mir nicht sicher wie und ob es geht.

    $a = ControlListView("PS Tray Factory", "&Help", "", "GetSelected")
    $b = ControlListView("PS Tray Factory", "&Help", "", "GetText, $a)
    MsgBox(0, "Text", $b)

    Was mache ich verkehrt? Kann mir jemand helfen?

    Danke im Vorraus - Michael

  • Bevor er sich damit zufrieden gibt dass es evtl nicht geht sollte man ControlListView erstmal richtig benutzen :P
    Geb mal den classnameNN an und lass den text leer und führe es unbedingt als 32bit (x86) denn unter 64bit funktioniert diese Funktion nicht.

    Bei GetText musst du auch noch Item und Subitem angeben:

    [autoit]

    ControlListView("PS Tray Factory","","TPSTrayGrid1","GetSelected")
    ControlListView("PS Tray Factory","","TPSTrayGrid1","GetText",0,0)

    [/autoit]
  • Danke, für Eure Antworten!

    Ich habe mich auch nicht "beschwert", dass eine Funktion nicht funktioniert, sondern (dachte ich zumindest) klar zum Ausdruck gebracht, dass ich eben nicht genau weiß, wie und ob es funktioniert... Habe vor 8 Wochen das erste Mal von AutoIt gehört und bin somit noch äußerst "grün" in jeder Funktion!

    Milla: Den Versuch ohne Text nur mit ClassNN habe ich beim zufälligen Herumprobieren schon gehabt - auch ohne Erfolg
    Ich verstehe aber nicht, was es mit der 64-Bit Funktion auf sich hat - das bräuchte ich bitte Anfängerverständlich (mein BS ist XP SP3 - Home 32 Bit)

    Danke, dass ihr Euch mit den "Anfängerproblemchen" überhaupt abgebt - aber irgendwann hat ja schließlich jeder mal angefangen ...

    Gruß Michael

  • Ich hab mich auch lange mit der Funktion rumgeschlagen mal und dabei eben gemerkt, dass sie unter 64bit nicht funktioniert. Allerdings hat sie bei mir so wie ichs gepostet habe geklappt ohne Probleme - unter 32bit

  • Also, bei mir klappt es leider nicht. Hab's gerade probiert.
    Nicht lachen, aber ich verstehe auch nicht, warum der "Item" und "SubItem" Wert bei Deinen Beispiel beide male genullt ist. Nach meinem Verständnis ermittle ich mit dem "GetSelected" die "Positon" in der Liste, die ich an eine Variable übergebe (so wie in meinem 1. Post). Also müsste ich doch diese "Position" auch übergeben - oder liege ich jetzt völlig daneben? Die MsgBox hatte ich nur zum Überprüfen des Ergebnisses benutzt - um bei meinem Beispiel zu bleiben kommt auch schon bei $a nichts (leer) heraus.

    Hast Du zufällig auch das Tray Factory - oder meintest Du, dass Du die Funktion bei anderen Gelegenheiten so wie beschrieben genutzt hast?


    Ich habe übrigens mit ControlGetFocus

    $a = ControlGetFocus("PS Tray Factory","","TPSTrayGrid1")

    $a = 1 als Rückgabewert bekommen - dann sollte sich das "verpfriemelte" Control doch wohl auch irgendwie seinen Namen entlocken lassen - oder?

    Gruß Michael

    Einmal editiert, zuletzt von kilo (19. Dezember 2010 um 21:29)

  • Bei GetSelected bekommst du den Index des gerade ausgewählten items und mit gettext kannst du dir den text von genau einem column holen daher item subitem(0 basiert, deswegen 0)

  • Nicht jedes Control ist auch mit den AutoIt Control Funktionen kompatibel


    Dies scheint hier zuzutreffen!

    Habs leider auch nicht hinbekommen ?(

    Spoiler anzeigen
    [autoit]

    $title = "PS Tray"

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

    $hWin = WinGetHandle($title)
    If @error Then _Exit()

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

    $sControlNameNN = "TPSTrayGrid1"

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

    WinActivate($hWin)
    Sleep(2000)

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

    $text = WinGetText($hWin)
    MsgBox(0, "TEXT", $text)

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

    $text = ControlGetText($hWin, "", $sControlNameNN)
    MsgBox(0, "TEXT", $text)

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

    $text = ControlListView($hWin, "", $sControlNameNN, "SelectAll")
    MsgBox(0, "TEXT", $text)

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

    $text = ControlListView($hWin,"",$sControlNameNN, "GetSelected")
    MsgBox(0, "TEXT", $text)

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

    $text = ControlListView($hWin, "", $sControlNameNN, "GetText", 0, 0)
    MsgBox(0, "TEXT", $text)

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

    $text = ControlCommand($hWin, "", $sControlNameNN, "GetCurrentSelection", "")
    MsgBox(0, "TEXT", $text)

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

    $text = ControlCommand($hWin, "", $sControlNameNN, "GetSelected", "")
    MsgBox(0, "TEXT", $text)

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

    Func _Exit()
    MsgBox(0, "Error", "Programm abruch!")
    Exit
    EndFunc

    [/autoit]
  • Wenn's nicht sein soll, dann soll es so sein... Vielen Dank dennoch für Eure Antworten und Mühen (insbesondere Cyberdyne)!

    Bin derweil auch nicht untätig gewesen und habe noch einen Ansatz über "_GUICtrlListView_GetItemSelected" aus GB gefunden, da muss ich mich aber mit meinen beschränken Kenntnissen erstmal reinfuchsen.

    Cyberdyne: Meine Kleider - kein Problem, meine Stiefel - nimm sie, mein Motorrad (ZZR 1400) - da werd auch ich zum Terminator! :D