Text aus Class Edit lesen und in anderes Feld schreiben

  • Hallo SmilingStar,

    falls es sich bei beiden Controls um eigene in deinem Skript handelt vewende GuiCtrlRead, ansonsten schaue dir auch die Hilfe zu ControlGetText bzw. ControlCommand an,

    mfg (Auto)Bert

  • Hallo SmilingStar,

    falls es sich bei beiden Controls um eigene in deinem Skript handelt vewende GuiCtrlRead, ansonsten schaue dir auch die Hilfe zu ControlGetText bzw. ControlCommand an,

    mfg (Auto)Bert

    Nein, handelt sich in dem Fall um Felder in einer externen Anwendung, die ich mit meinem Script starte.
    Wenn ich ControlGetText richtig verstehe, nenne ich dort wie gewohnt den Titel des Fensters und unter ControlID dann das gewünschte Feld ? Also in meinem Fall das Feld der Class Edit mit dem ClassnameNN Edit1
    Wie schreib ich den Text dann in ein anderes Feld ?

  • Mit

    [autoit]

    ControlSetText

    [/autoit]

    und fals das nicht gehen sollte mit:

    [autoit]

    ControlSend

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Mit

    [autoit]

    ControlSetText

    [/autoit]

    und fals das nicht gehen sollte mit:

    [autoit]

    ControlSend

    [/autoit]

    Vielleicht ne ganz blöde Frage aber wie schreib ich jetzt mit controlSetText den vorher mit ControlGetText erhaltenen Text ? ?(
    Setz ich vor ControlGetText ein Local $Variablenname = um somit einen Bezugswert zu bekommen und gebe diese Variable dann im ControlSetText im Bereich "new Text" ein ?

    Einmal editiert, zuletzt von SmilingStar (23. Februar 2010 um 08:35)

  • So

    [autoit]


    $var = ControlGetText("[CLASS:Notepad]", "", "Edit1")
    ControlSetText("[CLASS:Notepad]", "", "Edit2", $var)

    [/autoit]

    oder auch so

    [autoit]


    ControlSetText("[CLASS:Notepad]", "", "Edit2", ControlGetText("[CLASS:Notepad]", "", "Edit1"))

    [/autoit]

    geht beides.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • So

    [autoit]


    $var = ControlGetText("[CLASS:Notepad]", "", "Edit1")
    ControlSetText("[CLASS:Notepad]", "", "Edit2", $var)

    [/autoit]

    oder auch so

    [autoit]


    ControlSetText("[CLASS:Notepad]", "", "Edit2", ControlGetText("[CLASS:Notepad]", "", "Edit1"))

    [/autoit]

    geht beides.

    Das funzt, Danke.
    Mal ne Frage zu ControlClick:
    mir wird beim Kompilieren und vorher prüfen kein Fehler angezeigt, er führt die gewünschten Clicks aber nicht aus. Ganz als ob er nicht erkennt welchen Button ich meine.

    Code
    ShellExecute ("MeinProgramm.exe")
    
    
    WinWait("Fenstername mit Leerzeichen","",3)
    ControlClick("Fenstername mit Leerzeichen","","[ID:1209]","","","","")
    Winait("Fenstername2","","")
    ControlClick("Fenstername2","","[ID:1101]","","","","")
    ControlClick("Fenstername2","","[ID:1102]","","","","")
    WinWait("[CLASS:WindowsForms10.Window.8.app3]","",3)
    send("{ENTER}")


    Wenn ich den Schritt zu Fenstername2 selbst ausführe, geschieht der erste Control Click auf die ID 1101 - es könnte aber auch das ENTER sein.
    Ist die Codierung für die ControlID überhaupt Richtig ? Hab mir via AutoIt v3 Window Info im Reiter Control die numerische Zeichenfolge unter ID kopiert.

  • Immer schauen das die Befehler richtig geschrieben sind, Das heißt "WinWait" nicht "Winait" ;)

    [autoit]

    ShellExecute ("MeinProgramm.exe")

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

    WinWait("Fenstername mit Leerzeichen","",3)
    ControlClick("Fenstername mit Leerzeichen","",1209)
    WinWait("Fenstername2","")
    ControlClick("Fenstername2","",1101)
    ControlClick("Fenstername2","",1102)
    WinWait("[CLASS:WindowsForms10.Window.8.app3]","",3)
    send("{ENTER}")

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hm.. kleiner Fehler, Danke.
    Gibts eigentlich eine Möglichkeit Dialoge aus Excel besser anzusteuern ?
    Habe eine Exceldatei die ich Starte und Makros beim entsprechenden Dialog aktiviere. Danach kommt ein kleines Fenster hoch, wohl aus Excel bzw. dem Makro, mit dem Titel Microsoft Excel und zwei Buttons Ja/Nein
    Laut Window Info hat der gewünschte Button die ID 6 sowie den Text &Ja

    Code
    WinWait("Microsoft Excel","Möchten Sie die Onlineaktualisierung durchführen?","")
    WinActivate("Microsoft Excel","Möchten Sie die Onlineaktualisierung durchführen?")
    ControlClick("Microsoft Excel","Möchten Sie die Onlineaktualisierung durchführen?",6)

    Wobei ich also extra auf das Fenster warte, ein Teil des beinhalteten Text zur Identifizierung angebe und das Fenster noch einmal aktiviere, geht mein Click nicht zu dem entsprechenden Button. Aktiv ist das Fenster, hab aber den Eindruck ControlClick bzw. auch WinActivate/Wait finden es nicht, da das ganze Programm Excel ja einen identischen Titel hat