ControlGetText

  • Hallo zusammen,

    ich habe folgendes Problem:
    In einem Programm (es ist eine Listview...)
    möchte ich gerne Text in die Ablage kopieren.
    Der Text wird in der Listview angezeigt.

    Das Programm besitzt aber kein Kontextmenü und die Copyfunktion geht auch nicht (strg c). Es ist also nicht möglich den Text zu kopieren.
    Man kann aber den Text markieren.

    Kann man irgendwie mit Autoit den Text in die Zwischenablage bekommen.
    Als Text Capture?

    [autoit]


    $var = ControlGetText("[CLASS:TTntListView.UnicodeClass; INSTANCE:2]", "", "657326")
    Msgbox(4096,"",$var)

    [/autoit]

    Ich habe das probiert, die Msgbox bleibt allerdings leer.
    Habt Ihr da ne Idee?

    Liebe Grüße
    Ilse ;)

  • Siehst du den Text mit dem AutoIt Window Info Tool, wenn du das ListView damit auswählst? Wenn ja, dann solltest du den Text auf jeden Fall bekommen, sonst wird es vermutlich schwierig.

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

  • Hallo Joriktos,

    merci für deine Hilfe.
    Folgendes:
    Ich kann mit dem Info Tool quasi die ganze Listview auswählen.
    Die Controls werden auch im Info Tool angezeigt.
    Die Einträge kann ich mit dem InfoTool nicht auswählen

    Ich hann auch wie gesagt den Text in der Listview auswählen... das wars!
    Es sind mehrere Zeilen...
    Ist den ControlGetText der richtige Befehl?

    Liebe Grüße
    ;) Ilse

  • Hallo,
    Kannst du nicht einfach auslesen via:

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

    Local $Var = GUICtrlRead ($Listview,$GUI_FOCUS)
    MsgBox(64,"ReadOut","$Var")

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

    Und dann noch in den Zwischenspeicher:

    [autoit]


    ClipPut($var)

    [/autoit]

    Ich denke so müsste es funktionieren :)

  • Nein kann sie nicht, da sie kein eigenes Listview auslesen will, sondern ein Listview eines externen Programmes. Genau für solche Fälle gibt es die entsprechende controllistview() Funktion. ;)

  • Hallo Misterspeed,

    sorry, ich konnte mich nicht mehr melden.
    Hab's noch nicht geschafft.

    Seltsam ist, ich kann auch das Fenster nicht per Code aktivieren!

    Infotool: Title oder Class beides geht nicht!

    Sieht so aus;

    [autoit]


    WinActivate("[#] Infofenster [#]")

    [/autoit]


    also das Hauptfenster mit der Listview.
    Hab noch in der Hilfe gestöbert...
    ControlCommand ... GetSelected ??? könnte es damit gehen?

    Liebe Grüße
    Ilse ;)

  • Ja ControlCommand könnte auch funktionieren.
    Dein Problem liegt aber wohl eher daran dass du das Fenster wohl nicht ansprechen kannst.
    Mit der Class sollte es schon funktionieren. Der Titel den du angegeben hast könnte evtl. falsch interpretiert werden.
    Poste doch am besten mal den Text unter Summary im Window Info Tool und deine Versuche das Control anzusprechen.

  • Hallo Schnitzel,

    merci für deine Hilfe.
    Ich habe das Programm in einer Sandbox (geschützte Umgebung)
    Den Titel habe ich geändert. Also ohne #, geht aber auch nicht.
    Ich habe mehrere Fenster probiert... ich kann keines mit WinActivate ansprechen

    Im Info Tool Summary steht z.B. in einem Fenster:

    Spoiler anzeigen


    >>>> Window <<<<
    Title: DEMO VERSION
    Class: Sandbox:eMail:TmainWindow.UnicodeClass
    Position: 2355, 274
    Size: 1052, 658
    Style: 0x16CF0000
    ExStyle: 0x00010100
    Handle: 0x00000000002109E4

    >>>> Control <<<<
    Class: Sandbox:eMail:TTntListView.UnicodeClass
    Instance: 2
    ClassnameNN: Sandbox:eMail:TTntListView.UnicodeClass2
    Name:
    Advanced (Class): [CLASS:Sandbox:eMail:TTntListView.UnicodeClass; INSTANCE:2]
    ID: 2164510

    Mein Versuch mit WinActivate

    [autoit]


    WinActivate("[Sandbox:eMail:TmainWindow.UnicodeClass]")

    [/autoit]

    geht nicht.
    Ich kann aber mit der Maus das Fenster aktivieren.
    Nur nicht per Code!

    Liebe Grüße
    Ilse ;)

  • Und so?

    [autoit]

    WinActivate("[CLASS:Sandbox:eMail:TmainWindow.UnicodeClass]")

    [/autoit]