Auslesen eines Wertes

  • Hallo und wiedermal ich und wiedermal ein Problem...
    Ich möchte mir eine Zahl aus einem Fenster auslesen lassen.
    Das Problem ist die Zahl ist nicht makierbar und ich muss gestehen ich habe keine ahnung wie das gehen soll.
    Währe für anregungen sehr dankbar.
    Es geht um Vacuum low auf diesem Bild 4,3E+0
    Das Programm soll ständig im hintergrund laufen und eventuell kontinuirlich auslesen bzw wenn geht auf änderung und mir das in ein excel schreiben
    lg Aquila

  • Hallo aquilla,

    hast du schon probiert mit dem AutoIt Window Info Tool (Program Files\AutoIt3\AU3Info.exe) an Informationen über das Control zu bekommen :?:

    mfg (Auto)Bert

  • aja gute idee^^ hät ich eigentlich selbst drauf kommen können...
    ja ist gegangen und controlgettext hab ichs jetzt ausgelesen
    hat vielleicht jemand eine idee wie ich das ganze jetzt auf änderung ablesen kann?
    lg Aquila

  • einfach immer wieder überprüfen
    so in etwa^^

    [autoit]

    $wertalt = Controlgettext(...)
    adlibregister("check")

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

    func check()
    $wertneu = Controlgettext(...)
    if $wertalt = $wertneu then
    msgbox(0,"","Änderung")
    $wertalt = $wertneu
    endif
    endfunc

    [/autoit]
  • besten dank für die hilfe zu adlibregister() muss ich die dann wieder mit adlibunregister() am ende des skripts entfernen oder ist das egal
    und wenns egal ist wozu benötigt man dann die unregister dann?

  • Hallo aquilla,

    es ist nicht zwingend vorgechrieben, aber es schadet nicht und sieht auch besser aus. Meistens wird adlibunregister verwendet, wenn in bestimmten Situationen die registrierte func nicht ausgeführt werden soll,

    mfg (Auto)Bert

  • besten dank damit ist mein problem gelöst
    edit: so doch noch ein problem
    mein script schaut jetzt folgendermasen aus:

    [autoit]

    #include
    AdlibEnable("Test")

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

    global $Vacuumalt
    func Test()
    $Vacuumneu=ControlGetText("GC/MS Monitor","",123)
    if not $vacuumneu =$vacuumalt then
    $file=FileOpen("Vacuum.txt",1)
    $time=_NowCalc()
    $Temperatur=ControlGetText("GC/MS Monitor","",60)
    FileWriteLine($file,$time &" "& $Temperatur&" "&$vacuumneu)
    FileClose($file)
    $vacuumalt=$vacuumneu
    Else
    EndIf
    EndFunc

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

    while 1
    WEnd

    [/autoit]


    AdlibEnable() Weil windows98 und im entsprechendem autit hat der befehl nochso geheißen...
    das Problem ist er schreibt mir den wert garnicht in mein file
    er schreibt nur den ersten wert dann war es das

    ich find aber auch keinen fehler im script kann mal einer ein auge drauf werfen
    wenn ich das ganze ohne adlib mach und in nem while loop häng mit sleep zwischendurch dann gehts problelos...
    edit2:
    hab mir das ganze jetzt geändert:

    [autoit]

    #include
    Global $Vacuumalt
    While 1
    $Vacuumneu = ControlGetText("GC/MS Monitor", "", 123)
    If Not $Vacuumneu = $Vacuumalt Then
    $file = FileOpen("Vacuum.txt", 1)
    $time = _NowCalc()
    $Temperatur = ControlGetText("GC/MS Monitor", "", 60)
    FileWriteLine($file, $time & " " & $Temperatur & " " & $Vacuumneu)
    FileClose($file)
    $Vacuumalt = $Vacuumneu
    EndIf
    WEnd

    [/autoit]


    so funzts jetzt glaub ich spricht was gegen diese lösung?

    4 Mal editiert, zuletzt von Aquila (10. März 2010 um 17:45)

  • Hallo Aquilla,

    solange die Prozessorauslastung nicht zu hoch ist (= andere Anwendungen reagieren nicht träge) ist alles in Ordnung, ansonsten den von dir bereits angesprochenen Sleep einbauen bzw. erhöhen,

    Edit: das Ursprungsskript hätte ich so abgeändert:

    Spoiler anzeigen
    [autoit]

    #include
    global $Vacuumalt

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

    AdlibEnable("Test")

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

    func Test()
    $Vacuumneu=ControlGetText("GC/MS Monitor","",123)
    if not $vacuumneu =$vacuumalt then
    $file=FileOpen("Vacuum.txt",1)
    $time=_NowCalc()
    $Temperatur=ControlGetText("GC/MS Monitor","",60)
    FileWriteLine($file,$time &" "& $Temperatur&" "&$vacuumneu)
    FileClose($file)
    $vacuumalt=$vacuumneu
    Else
    EndIf
    EndFunc

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

    while 1
    sleep(1000)
    WEnd

    [/autoit]


    mfg (Auto)Bert