Edit Box ansteuern und

  • N'abend!

    Ich habe ein skript geschrieben, welches soweit läuft, allerdings ist es nicht wirklich elegant und würde es gerne verbessern.

    Also, ich möchte eine Installationsroutine automatisieren. Dafür nehme ich die Window-Steuerung und klicke mich durch die Setup-Formulare.

    Nun würde ich gerne bei den Edit Boxen vorgegebene Pfade eingeben.

    Bisher habe ich das folgendermassen gelöst:

    Code
    ControlClick("Program Setup", "", "Edit1", "left") ;der Cursor steht nicht in der Edit Box, also setze ich ihn dort hinein
    send($Inst_Path) ;der Pfad, der in die Edit Box geschrieben werden soll
    sleep(100) ; eine Pause, da Zeichen für Zeichen geschickt wird
    ControlClick("Program Setup", "", "Button3", "left") ; &next > button um zum nächsten Formular zu gelangen

    Nun meine Fragen:
    1. Gibt es auch eine andere Möglichkeit, direkt in die Edit Box zu schreiben, ohne, dass ich vorher den Cursor hinein setze?
    2. Gibt es einen Befehl, der abwartet bis send alles geschickt hat? Ohne sleep springt er bereits vor beenden des send Befehls weiter? (sowas wie WinWaitActive für Befehle?!)
    3. In einem nächsten Schritt würde ich entweder gerne die Fenster minimieren oder im idealfall verstecken, wie funktioniert dann die Ansteuerung? Muss ich dann direkt über Windos Handle gehen? (Wie kann ich dan z.B. den Send Befehl nutzen, der ja keine Information über das Window enthält.)

    Einmal editiert, zuletzt von Sr_Campos (6. Januar 2010 um 11:59)

  • . In einem nächsten Schritt würde ich entweder gerne die Fenster minimieren oder im idealfall verstecken, wie funktioniert dann die Ansteuerung? Muss ich dann direkt über Windos Handle gehen?


    Ja, Window und Control Handles (bzw Control Classes) musst du dann verwenden. Siehe ControlSend(). ControlClick(), ControlSetText() usw.

    Gibt es auch eine andere Möglichkeit, direkt in die Edit Box zu schreiben, ohne, dass ich vorher den Cursor hinein setze?

    [autoit]

    ControlSetText()

    [/autoit]

    Gibt es einen Befehl, der abwartet bis send alles geschickt hat? Ohne sleep springt er bereits vor beenden des send Befehls weiter? (sowas wie WinWaitActive für Befehle?!)


    Du könntest versuchen mit

    [autoit]

    Opt("SendKeyDelay",0)
    Opt("SendKeyDownDelay",0)

    [/autoit]


    schneller zu schreiben.

    Ansonsten fällt mir nur ein, ein Sleep(100) dahinter zu setzen. Das ist ja auch nicht sooo tragisch, oder?