Text in einem Fenster greifen

  • Hallo,

    ich komm einfach nicht weiter.

    Ich möchte per Script sagen, das er auf den Button schließen klicken soll wenn in einem Fenster der Text "Export erfolgreich" steht.

    Kann mit bitte irgendjemand helfen?!?

    Control Klick auf den Button ist klar, aber mit welchem Befehl kann ich Ihm sagen das er warten soll bis die Meldung "Export erfolgreich" erschein, dass er also nicht schon vorher auf schließen klickt?!?

    Vielen Dank für jedwede Hilfe!

    CYA_D0c

  • Aber mit Winwait () kann ich doch nur arbieten wenn ich auf Fenster warte, das Fenster ist schon da und da laufen verschiedene meldungen runter
    Export 1 abgeschlossen
    Export 2 abgeschlossen
    ...

    und wenn die Meldung Export erfolgreich kommt in diesem Fenster dann soll er auf schließen klicken!

    CYA_D0c

  • Ja aber du kannst ja auch einen Text mit angeben, der auch enthalten sein muss. Teste es doch einfach.

  • Ne geht leider nicht, der Text in dem Fenster generiert wird ist auch nicht Visible wie ich gerade leider feststellen musste!

    Danke aber für die schnelle Antwort, hast du vllt noch eine IDEE?

    CYA_D0c

  • ;) Der Text ist nicht visible und nicht hide, sind einfach nur Meldungen die da rein laufen

    [autoit]

    WinWait("Exportieren", "Export fehlerfrei beendet!")
    ControlClick ( "Exportieren", "", 1 )

    [/autoit]

    Krieg den Text auch in der Window Info nicht angezeigt, kann es sein das ich den dann gar nicht greifen kann?

    Hab leider kein anderes Kriterium an dem ich mich orientieren kann, keine bestimmte exportierte Datei oder ähnliches, könnte Ihm nur noch sagen das er nach 2 Stunden erst weiter machen soll oder bsi die CPU last wieder auf unter 10% geht, da weiß ich aber leider überhaupt nicht wie!

    Einmal editiert, zuletzt von D0c_cR4Zy (5. November 2010 um 12:39)

  • Du schaust mit dem InfoTool nach welches Handle dein Control hat wo irgendwann dein gewünschter Text erscheint, ließt dieses dann alle paar sek aus solange bis dort eben Export erfolgreich steht

  • Also, wenn du keine Informationen über den Text (wenn du mit der Maus drüberfährst) mit Au3Info.exe bekommst, wird es sehr schwierig. Ändert sich vielleicht der Titel, wenn er den Vorgang abgeschlossen hat?

    oder bsi die CPU last wieder auf unter 10% geht, da weiß ich aber leider überhaupt nicht wie!


    Das ist eine gute Idee! :)
    So kannst du es machen:

    Spoiler anzeigen
    [autoit]

    $titel = "Windows Task-Manager"
    $opened = 0
    If Not WinExists($titel) Then
    $opened = Run("taskmgr")
    EndIf
    $wtm = WinWait($titel)
    If $opened Then WinSetState($wtm, "", @SW_HIDE)
    While 1
    $cpu_usage = StatusbarGetText ($wtm, "", 2)
    $cpu_usage_number = $cpu_usage
    $cpu_usage_number = StringTrimLeft($cpu_usage_number, 16)
    $cpu_usage_number = StringTrimRight($cpu_usage_number, 1)
    If Int($cpu_usage_number) < 10 Then ExitLoop
    ;Sleep(60000) ; langt bestimmt auch wenn du nur jede Minute überprüfen lässt
    Sleep(100)
    WEnd
    If $opened Then WinClose($wtm)
    MsgBox(64, "CPU Last...", "...ist unter 10% gefallen!")

    [/autoit]
  • ich würde eine schleife mit abfrage machen
    while
    Sleep(200)
    $VAR= ControlGetText ( "title", "text", controlID )
    if $VAR="Export erfolgreich" then
    Control Klick
    endif
    whend
    so in etwa
    kann leider nicht testen kein autoit auf lappi

  • Hi,
    gegebenenfalls funktioniert folgendes:
    Aktiviere das Fenster in dem der Text steht, drück CRTL+C für copy, starte einen Editor und füge das kopierte per CTRL+V dort ein. Das funktioniert bei einigen "seltsamen" Fenstern, bei denen man sonst nicht an den Inhalt kommt.
    Wenn es klappt, einfach per AutoIt-SEND() die entsprechenden Befehle generieren und den Inhalt der Zwischenablage abfragen...