Prozentanzeige bzw Text auslesen.

  • Hallo Leute

    Ich bin relativ neu in der Materie und versuche gerade das Programm Restream zu automatisieren.

    Dabei bin ich auf folgendes Problem gestoßen.
    Wie ermittle ich wann das Programm fertig ist und das Script weiter laufen soll. Eine Programm beenden Funktion wenn fertig, hat das Programm nicht.

    Zeitangabe ich nicht ideal weil es je na Filelänge immer unterschiedlich dauert.

    Hier mal ein Bild
    [Blockierte Grafik: http://img370.imageshack.us/img370/5757/restream7oi.png]

    Unten sieht man den Statusbalken und die angabe in % als text.
    Iist es möglich das auszulesen?

    Der text ist kein Objekt wo ich ein Handel ermitteln kann.

    Hier mal die Infos des Balkens.
    >>>>>>>>>>>> Window Details <<<<<<<<<<<<<
    Title: ReStream v0.8.9 by shh
    Class: TMainForm
    Size: X: 375 Y: 125 W: 590 H: 465

    >>>>>>>>>>> Mouse Details <<<<<<<<<<<
    Screen: X: 599 Y: 575
    Cursor ID: 2

    >>>>>>>>>>> Pixel Color Under Mouse <<<<<<<<<<<
    RGB: Hex: 0xD4D0C8 Dec: 13947080

    >>>>>>>>>>> Control Under Mouse <<<<<<<<<<<
    Size: X: 4 Y: 420 W: 429 H: 14
    Control ID: 6293252
    ClassNameNN: TProgressBar1
    Text:

    vielleicht hat jemand eine Idee.

    2 Mal editiert, zuletzt von trecordings (27. Juni 2006 um 13:59)

  • ich weiß zwar nicht ob es klappt aber du musst als erstes die ID des Labels rausfinden, also da wo die prozentzahl angegeben wird (kannst du mit Au3info machen) und dann benutzt du den Befehl :

    ControlGetText("ReStream v0.90 by shh","",Die Id des labels)
    das wärs eigentlich

    ob der Fenster name richtig geschrieben ist weiß ich nicht musst du gucken

    mfg Mirage


    edit: die Id vom Label brauchst du nicht vom balken

    Einmal editiert, zuletzt von Mirage (27. Juni 2006 um 14:31)

  • Au3info zeigt aber bei der Zahl nichts an.

    Egal wo ich drüberfahre keine infos in Au3info

  • Du könntest das so versuchen :

    $A = 1

    While $A = 1
    If FileExists(ControlGetText("ReStream v0.9.0 by shh","","TEdit14")) = 1 Then
    ;~ was auch immer passieren soll
    $A = 2
    EndIf
    WEnd

  • weil ich mir das Programm gedownloaded hab :D

    das is die edit leiste wo die datei hinkopiert werden soll

    edit : ich hoffe doch das die edit box über dem Progress balken da

    für die datei sein soll die erstellt wird

    Einmal editiert, zuletzt von Mirage (27. Juni 2006 um 15:16)

  • Ach so.

    Aber FileExists ist doch True sobald das Programm anfängt zu arbeiten.
    Dann wird schon die Datei erstellt und reingeschrieben.

    oder nicht?

    achja, benutze restream 0.8.9 hatte ich vergessen zu sagen.

    Ziel ist es wenn das Programm fertig ist das das nächte File bearbeitet wird.
    Das Script soll also erkennen wann die 100% erreicht sind.

    Vielleicht lässt es sich die abfrage auch erreichen weil beim Fertig dann der Stop button ausgegraut ist?

    Habe dir mal Restream 0.8.9 als link angehängt.
    http://rapidshare.de/files/24270976/ReStream.zip.html

    Ach ja so sieht mein Script aus derzeit

    If FileExists("D:\Files\Title_1_Video_0xE0_NEW.0.m2v") Then
    Run("C:\Programme\ReStream\ReStream.exe")
    WinWaitActive("ReStream v0.8.9 by shh")
    MouseClick("left", 944, 159, 1)
    sleep(100)
    ControlSend ( "Öffnen", "", "Edit1", "Title_1_Video_0xE0_NEW.0.m2v")
    controlclick("Öffnen", "Ö&ffnen", "Button2")
    controlclick("ReStream v0.8.9 by shh", "reset timestamps", "TCheckBox9")
    Sleep(100)
    controlclick("ReStream v0.8.9 by shh", "zero broken-link flags", "TCheckBox8")
    Sleep(100)
    controlclick("ReStream v0.8.9 by shh", "Remove all User Data", "TCheckBox4")
    Sleep(100)
    controlclick("ReStream v0.8.9 by shh", "Remove Seq. End Codes", "TCheckBox5")
    Sleep(100)
    Sleep(100)
    ControlFocus ( "ReStream v0.8.9 by shh","", "TEdit6" )
    Send("00")
    Sleep(100)
    ControlFocus ( "ReStream v0.8.9 by shh","", "TEdit5" )
    Send("00")
    Sleep(100)
    ControlFocus ( "ReStream v0.8.9 by shh","", "TEdit4" )
    Send("00")
    Sleep(100)
    ControlFocus ( "ReStream v0.8.9 by shh","", "TEdit3" )
    Send("00")
    Sleep(100)
    MouseClick("left", 924, 572, 1)


    Else
    MsgBox(4096,"", "D:\Files\Title_1_Video_0xE0_NEW.m2v existiert nicht")
    EndIf

    Und Danke für deine Mühe.

  • Ich hab leider keine ahnung wie das Programm funktioniert und was man damit machen kann *g

    deswegen weiß ich nich ganz was passiert wenn die datei fertig ist
    meine Vorschläge :

    Falls eine MsgBox oder so kommt das diese dann einfach weggeklickt wird und weiter gemacht wird aber darauf wärst du wahrscheinlich auch so gekommen also denk ich mal das keine kommt

    falls sich irgendein Text ändert bei den Knöpfen oder so kannst du das auch mit der Funktion ControlgetText abgleichen.

    Sonst wäre da noch ControlGetState.

    Du suchst dir die Control ID von dem Stop knopf raus oder den Classname. Nachdem das Programm den Write Knopf drückt und der Stop Knopf aktiviert wird machst du ControlGetState und packst das in eine Variable.
    ab dann machst du eine Schleife und fragst ab
    $A = 1
    While $A = 1
    If Not 'der Status der oben gespeichert wurde' = 'der aktuelle(hier nochmal ControGetState)' then
    'mach was du danach machen willst'
    $A = 2
    else
    endif
    While

  • Brauche ich ne brille oder warum ist ControlGetState nicht in der Hilfedatei aufgeführt?

    2 Mal editiert, zuletzt von trecordings (27. Juni 2006 um 16:56)

  • oh hab da was verwechselt aber hab was andres nettes gefunden

    ControlCommand("ReStream v0.8.9 by shh","",(Die ID von dem Button),"IsEnabled", "")

    das fragt ab ob das Control Benutzbar ist oder nicht.

    das packst dann so in die schleife

    $A = 1
    While $A = 1
    If ControlCommand("ReStream v0.8.9 by shh","",(Die ID von dem Button),"IsEnabled", "") = 0 then
    'mach was du danach machen willst'
    $A = 2
    else
    endif
    While

  • komisch weiß auch nich woran das liegt Oo

    hast du schon geguckt während der button nicht deaktiviert ist?

    • Offizieller Beitrag

    Weiß zwar nicht wie das Fenster aussieht, wenn es fertig ist, aber könnte man nicht versuchen die Labeländerung des "Stop!"-Buttons raus zu kriegen, wenn da dann z.B. "Start!" steht?
    Und den Befehl den Mirage meint ist sicher:
    GUICtrlGetState

    Nachtrag: Als Tipp verwende [ c o d e ] und [ / c o d e ] (ohne Leerzeichen) um deinen Quelltext einzuschließen. So bleibt es besser formatiert. Gilt für beide Poster.

  • ne ich dachte eigentlich das es controlgetstate auch gibt hatte mich wohl getäuscht ^^

    edit: ohne Control ID oder Classname wirds wahrscheinlich nich gehen aus den Knopf irgendwas rauszulesen

    Einmal editiert, zuletzt von Mirage (27. Juni 2006 um 17:03)

  • Also irgendwie verzweifle ich noch an dem Ding.

    Nun bekomm ich endif ohne IF.??

    Einmal editiert, zuletzt von trecordings (27. Juni 2006 um 17:05)

  • Du musst WEnd machen und nicht While das hatte ich falsch geschrieben sorry ^^

    Und 'mach was du danach machen willst'

    muss auch raus

    mfg Mirage

  • Was kann das eigentlich sein das gerade in Restream viele Objekte nicht angezeigt werden?

    Ist mir gerade an einigen aufgefallen?

    ließe sich eigentlich mit EOF also Zugriff auf Datei was machen?
    Könnte man abfragen ob Restream zugriff auf die Datei nimmt?

    Einmal editiert, zuletzt von trecordings (27. Juni 2006 um 17:36)

    • Offizieller Beitrag

    Hallo!

    .NET und JAVA wird nie erkannt. Auch nicht-standard Win-Controls (also erweiterte oder ganz eigene) sind außerhalb der Reichweite von AutoIt.
    Man könnte versuchen die Datei mit FileOPen zu öffnen und das SCheitern (@error oder Rückgabewertt, wei0 ich nicht genau), dann so zu deuten, dass gerade geschrieben wird. Das ist natürlich nicht 100% sicher, aber als Workaround vllt. ganz brauchbar.

    peethebee