bitte um Hilfe - automatisierung einer Refresh Funktion

  • Hallo,

    ich möchte bei meinem Tool die Refresh Funktion mithilfe von AutoIT automatisieren. Ist das möglich?

    Es ist so das ich jederzeit in mein Tool neue Aufträge reinbekomme, um nun nicht jede 10sek. die seite manuell zu aktualiseren wäre es schönwenn das Tool das für mich machen könnte und ich so sehe wann ein neuer Auftrag da ist.

    Ich habe auch schon den Windows Namen und die Control Class des Refresh Buttons rausgefunden aber leider bin ich nicht der Entwickler und verstehe das alles nicht so wirklich.
    Für Hilfe wäre ich sehr dankbar.
    Gruß

  • Nein das Ist ein "normales" Program - nennt sich Teamworks und wird für Übersetzungen genutzt.
    Es baut zwar im Hintergrund etwas mit HTML auf ist aber sonst ein ganz normales Programm.

    Jemand im Englischen Forum hat geschrieben:

    Code
    AdlibEnable('_RefreshProc', 10000)
    
    
    Func _RefreshProc()
         WinActivate($WinHandle)
         Send('{F5}')
    EndFunc


    Aber da passiert garnix - ich gebe ihm ja auch nur an das das Aktive Fenster sich neu laden soll, oder?

  • na probiers ma so:

    [autoit]

    HotKeySet("{a}", "_exit")
    While 1
    ControlClick("Titel des Fensters", "", "klasse oder text des buttons")
    Sleep(10000) ;10000 milisekunden
    WEnd

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Gut ich weiss jetzt nicht wie dein Programm aufgebaut ist aber eventuell verändert sich ja der Inhalt des Fensters (Text) wenn ein neuer Auftrag da ist,
    Dazu verwendest du dann $fenstertext = WinGetText("TitelDesFensters") und mit StringInStr($fenstertext, "Neuer Auftrag") (als beispiel) kannst du dann nachschauen ob ein auftrag da ist oder nicht

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    Einmal editiert, zuletzt von FireFlyer (2. Februar 2009 um 14:19)

  • Danke FireFlyer,
    aber bis jetzt ist noch nix passiert. Das Icon erscheint zwar unten rechts in der Taskleiste aber wenn ich nen rechten Mauslick drauf mache dann steht da script paused - ist das normal?

    Aufjedenfall aktualisiert sich noch nichts.
    Bei mir schaut es jetzt so aus:

    Code
    HotKeySet("{a}", "_exit")
    While 1
    ControlClick("SDL TeamWorks [DTP]", "", "WindowsForms10.ToolbarWindow32.app6")
    Sleep(10000) ;10000 milisekunden
    WEnd
    
    
    Func _exit()
    Exit
    EndFunc

    Warum steht am Anfang eigentlich beim Hotkeyset ein "a" und kein F5?

    Der Fenstertext ändert sich leider nicht. Aber im Fenster selber - dort steht dann statt 0 in progress 1 in progress.
    Super wäre es natürlich wenn man im Hintergrund die Seite immer aktualisieren könnte und dann wenn im Fenster statt "0 in progress" "x in progress" steht und dann in den Vordergrung kommt :) Ist das realistisch?

  • okay warum das mit dem button drücken nicht funktioniert kann ich so nicht nachvollziehen, du hast doch bestimmt das window info tool benutzt kannst du da mal den text rauskopieren (für den button)

    Und ja das mit dem progress kann man machen und zwar so:

    [autoit]

    HotKeySet("{a}", "_exit")
    While 1
    ControlClick("SDL TeamWorks [DTP]", "", "WindowsForms10.ToolbarWindow32.app6")
    Sleep(1000);weiss net wie lange das zum aktualisieren braucht...
    If Not StringInStr(WinGetText("SDL TeamWorks [DTP]"), "0 in Progress") Then MsgBox(0, "Neuer Auftrag", "Du hast einen oder mehrere Aufträge erhalten!")
    Sleep(10000) ;10000 milisekunden
    WEnd

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Das mit dem HotKeySet sollte nur dazu sein das sich das Programm beendet wenn du auf die Taste a drückst, da kannst du auch was anderes nehmen oder die zeile rausmachen (wenn du es über die taskbar steuern willst)

    Zitat

    Bei ControlClick musst du die ID reinschreiben, und das sind zahlen!

    Falsch!

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    Einmal editiert, zuletzt von FireFlyer (2. Februar 2009 um 14:50)

  • Achso, ok...
    aber trotzdem geht es noch nicht.
    Wenn ich mit Auto3info den Refresh Button anklicke steht eben die Class "WindowsForms10.ToolbarWindow32.app6" da, aber das steht auch bei "home" usw - muss ich dann vielleicht noch irgendwie die Koordinaten angeben oder wo steht den dann die genaue ID oder Class des Buttons?

  • Sorry - hatte da irgendwas übersehen.
    Also die ID des refresh buttons ist 1377060 - aber auch der Button für die Hilfe und weitere Buttons die oben in der Leiste stehen haben diese ID.
    Wenn ich nach den Koordinaten gehe - sind das dann die ControlClick Coords??
    sprich das müsste dann so aussehen:

    Code
    HotKeySet("{a}", "_exit")
    While 1
    ControlClick("SDL TeamWorks [DTP]", "", "HIER DIE ControlClick coords")
    Sleep(10000) ;10000 milisekunden
    WEnd
    
    
    Func _exit()
    Exit
    EndFunc


    Oder muss ich bei dem Controlclick nur eines von den 3en reinschreiben, also Titel des Fensters weglassen? Für was steht in der mitte das ""??

  • Funktion ControlClickControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )


    Parameter
    title Der Titel des Fensters auf das zugegriffen werden soll.
    text Der Text des Fensters auf das zugegriffen werden soll.
    controlID Die ID des Steuerelements, das beeinflusst werden soll. Siehe Controls.
    button [optional] Die zu drückende Taste, "left", "right" oder "middle". Vorgabe ist "left".
    clicks [optional] Die Anzahl der Mausklicks. Vorgabe ist 1.
    x [optional] Die x-Position, innerhalb des Steuerelements, die geklickt werden soll. Standard ist die Mitte
    y [optional] Die y-Position, innerhalb des Steuerelements, die geklickt werden soll. Standard ist die Mitte

    Einfach mal hilfe Lesen!
    Wenn mehrer Button die ID haben musst du noch x & y angeben!

    mfg. Jam00

  • hmm also mit den coords würd ichs net versuchen das die id gleich ist kann ich irgendwie nicht verstehn... id = unique???

    jedenfalls der 2. Parameter bei ControlClick ist meistens überflüssig, den braucht man nur wenn man jetzt 2 fenster hat die den gleichen titel aber unterschiedlichen inahltstext haben (damit man sie noch unterscheiden kann)

    Versuch stattdessen also anstatt der button id mal lieber:
    [CLASS:Edit; INSTANCE:1] (also anstatt edit und instance 1 mal im window info tool nachschaun ;))
    oder
    [CLASSNN:Edit1] (hier ebenfalls)
    oder
    den Text des buttons (falls er einen hat)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Das mache elemente die Gleiche ID haben gibt es öffters, zum beispiel die Symbolleiste im Script-Editor von AutoIt, hat die gelcihe ID, egal, welches symbol man anklickt! Mit dem Classname ging es bei ihm nicht! Musst mal alles lesen!

    mfg. Jam00

  • also alles bis auf die ControlClick Coords ist identisch bei den oberen großen Buttons. Habe mal ein screenshot angehängt.
    Wenn ich auf View gehe und da Refresh auswähle wird garnichts angezeigt.

    Versuche es jetzt mal mit den Koordinaten

  • ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )

    Ja das hatte ich nochmal gelesen und auch die Englische Erklärung. Aber ganz verstanden habe ich es noch nicht.
    Muss ich alle Parameter hinschreiben (auch wenn ich sie leer lasse mit "") und wie muss ich die x und y coords angeben?
    Würde das dann so aussehen??

    ControlClick ("SDL TeamWorks [DTP]", 340 [, 15])

  • ControlClick ("SDL TeamWorks [DTP]", "", -1 [, -1 [, -1 [, 340 [, 15 ]]]])
    Nun bekomme ich angehängte Fehlermeldung ?(

    Danke schon mal für deine Mühen!!