_IEAction .. refresh

  • hallo,

    ich refreshe mit dem Befehl

    _IEAction($o_IE,"refresh")

    in bestimmten zeitabständen eine webseite. leider wird dabei das entsprechende fenster immer damit in den vordergrund gebracht. ist es denn nicht möglich den focus zu unterbinden ? ich habe leider nichts gefunden.

    danke im voraus und schönes WE
    exberliner

  • Hallo exberliner
    du kannst es nach dem _IEAction($o_IE,"refresh") mal mit winsetstate($fenster,@sw_minize) porbieren aber es kommt dann trotzdem kurzzeitig in den vordergrund ich hoffe dir ist damit geholfen

    mfg DjBasslod

    Einmal editiert, zuletzt von DjBasslord (9. März 2007 um 22:23)

  • @DjBasslord

    jau, damit habe ich auch schon geprimelt. ich wollte als ziel jedoch, dass dieses fragliche fenster erst gar nicht zum focus gemacht wird. minimieren kann ich es während des refreshen ja nicht, das wäre dann natürlich ganz optimal. es handelt sich dabei auch um eine webpage, welche vorher ein login erfordert.

    vielleicht hat jmd. eine anderen ansatz als lösung ? ich seh da jedenfalls nichts.

    danke und gruss exberliner

  • mhh probier mal

    Code
    #include <IE.au3>
    $oIE = _IECreate ("www.autoitscript.com")
    Sleep(5000)
    _IENavigate ($oIE, "http://www.autoitscript.com/forum/index.php?")


    bei mir hat er das browserfenster zumindest nicht in den vordergrund gebracht bzw den focus drauf gesetzt außer bei der erstellung..^^

  • snoozer

    gute idee. leider der selbe effekt.
    ich mache den _IENavigate bzw. den _IEAction 3 mal pro minute, leider wird dann das fragliche fenster zum aktiven. es bringt mir auch nichts, dem fenster den focus zu entziehen, es darf einfach gar nicht erst fokussiert werden (also schön im hintergrund bleiben :-))

    noch jmd. vorschläge ?

    EDIT: wie ist das eigentlich mit _INetGetSource ? da wird die webpage ja nicht aktualisiert, oder ? kann das leider nicht testen am wochenende, da die seite sich nicht mehr bis montag verändert.

    danke und gruss exberliner

    Einmal editiert, zuletzt von ExBerliner (9. März 2007 um 23:47)

  • wärs denn so schlimm dass der ie den focus bekommt??
    eine idee wär noch dass du das fenster versteckst mit @SW_Hide und per Hotkey würde es dann eben sichbar werden....
    ne zweite idee wär noch dass du den aktuellen handel vom grade aktiven fenster rausfindest, die ie sachen machst und dann das vorher aktive fenster wieder in den focus setzt....wenn du nicht unbedingt viele sachen machst wären dass ein paar millisekunden....
    persönlich gefällt mir variante 1 besser :)
    weiß ja nicht ob du ständig prüfen musst ob was bestimmtes passiert ist...wenn immer dass gleich passiert/passieren soll kannste ja auch quelltext auslesen lassen fenster im hidden modus laufen lassen und per traytip oder ähnlichen bestimmte informationen ausgeben lassen....

    der snoozer

    //edit
    InetgetSource downloadet den aktuellen Quellcode...ob eine aktualisierung erfolgt kein plan...wenn du vorher nen login hattest geht inetgetsource nicht!!!! da autoit(das programm selbst) nochmal aufs internet zugreift(sprich autoit loggt sich nicht erneut ein!!!) es gäbe da noch INetReadDoc oder so....aber schau dir mal das an...
    (Quell)text aus https-Seite auslesen
    da sind die unterschiede zwischen den beiden varianten....

  • Zitat

    Original von snoozer
    wärs denn so schlimm dass der ie den focus bekommt??


    leider ja. ich bin ja zu kompromissen immer bereit, aber in diesem fall geht das nicht.

    Zitat

    Original von snoozer
    eine idee wär noch dass du das fenster versteckst mit @SW_Hide und per Hotkey würde es dann eben sichbar werden....


    soweit ich festgestellt habe, lassen sich weder minimierte noch versteckte fenster aktualisieren. fällt das leider auch flach. ein manueller eingriff mit hotkey ist nicht erwünscht und darf auch nicht sein.

    Zitat

    Original von snoozer
    ne zweite idee wär noch dass du den aktuellen handel vom grade aktiven fenster rausfindest, die ie sachen machst und dann das vorher aktive fenster wieder in den focus setzt....wenn du nicht unbedingt viele sachen machst wären dass ein paar millisekunden....
    persönlich gefällt mir variante 1 besser :)


    leider wie schon genannt inakzeptabel. fällt unter "keine kompromisse".

    Zitat

    Original von snoozer
    weiß ja nicht ob du ständig prüfen musst ob was bestimmtes passiert ist...wenn immer dass gleich passiert/passieren soll kannste ja auch quelltext auslesen lassen fenster im hidden modus laufen lassen und per traytip oder ähnlichen bestimmte informationen ausgeben lassen....


    damit könnte ich mich sehr anfreunden, befürchte nur dass dies nicht geht, da es sich um eine webseite handelt, wo man sich vorher einloggen muss. ja, ich muss 3x pro minute prüfen, ob sich auf der webseite was verändert hat innerhalb eines bereiches (Func _StringBetween1 lässt grüssen) und reagieren mit diesem autoit-programm.
    hab nur keine ahnung gerade, wie ich mich auf einer website einlogge ohne sichtbaren browser. jaja, mir fehlen noch kenntnisse.

    aber ohne euch wäre ich noch am anfang der hilfe :rolleyes:

    gruss exberliner

    EDIT: danke snoozer zu deinem Edit.
    jetzt muss ich doch mal ganz dumm fragen noch, ob der befehl _IEBodyReadText eine webseitenaktualisierung veranlasst ? kann ich mir eigentlich nicht vorstellen so.

    Einmal editiert, zuletzt von ExBerliner (10. März 2007 um 00:29)

  • weder _IEBodyReadText noch _IEDocReadHTML veranlassen eine websiten aktualisierung...geprüft mit der date funktion in php :)
    browser kannste so verstecken...

    [autoit]

    $oIE = _IECreate ($sBaseUrl,0,1) ;0,1 sichtbar...0,0 unsichtbar

    [/autoit]


    leider muss ich noch hinzufügen dass wenn du zur aktuellen seite versucht mit IENavigate zu kommen auch keine aktualisierung statt findet musst zunächst auf eine andere website....hier einmal der quellcode ums besser zu verstehen^^

    Spoiler anzeigen
    [autoit]

    #include<IE.au3>
    $sBaseUrl = "http://localhost/autoit.de/test.php"
    $oIE = _IECreate ($sBaseUrl,0,1) ;0,1 visible...0,0 invisible
    MsgBox(0,"",_IEBodyReadText($oIE))
    Sleep(5000)
    _IENavigate($oIE,$sBaseUrl)
    MsgBox(0,"",_IEBodyReadText($oIE));keine aktualisierung!!!

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

    $sBaseUrl = "http://localhost/autoit.de/test.php"
    $oIE = _IECreate ($sBaseUrl,0,1) ;0,1 visible...0,0 invisible
    MsgBox(0,"",_IEBodyReadText($oIE))
    Sleep(5000)
    $aUrl = "http://localhost/autoit.de/test2.php"
    _IENavigate($oIE,$aUrl)
    _IENavigate($oIE,$sBaseUrl)
    MsgBox(0,"",_IEDocReadHTML($oIE));jetzt steht was anderes drinn....

    [/autoit]


    PS: nur Inetgetsource geht bei einem vorherigen login nicht....mit _IEBodyReadText oder _IEDocReadHTML kannst du nach meinem kenntnis stand problemlos arbeiten um den aktuellen qulllcode auszulesen..

  • hallo snoozer,

    danke für deine ausführungen. soweit ist mir alles klar.

    was mir jedoch nie in den sinn gekommen ist : alles versteckt laufen zu lassen, weil ich annahm, dass ein login bei versteckten fenstern nicht möglich ist. tzz, man soll wohl nicht denken, sondern einfach alles austesten. dabei arbeite ich schon länger mit versteckten browsern, aber eben ohne login; weil das aus irgendwelchen gründen wohl nicht funktioniert hat.

    ich glaube ich komme jetzt meinem ziel näher und werde mal die anpassungen (ggf. mit gui oder traytip) machen. also ran an den speck.

    gruss exberliner

    EDIT: snoozer danke für deinen hinweis im autoitchat, funzt versteckt sehr gut. muss ich wohl letztes mal einen fehler gemacht haben und dann wohl geglaubt dass es nicht geht .. jetzt bin ich schon einen riesenschritt weiter. klasse.

    EDIT2: so .. alles versteckt nun programmiert. leider wird immer noch der focus geklaut. aber das ist mir jetzt auch egal.

    2 Mal editiert, zuletzt von ExBerliner (10. März 2007 um 19:07)

  • hi th.meger,

    also ich habe vor der fraglichen schleife
    $h= WinGethandle($FensterTitel)

    und dann dein vorschlag

    ControlSend($FensterTitel,"",$h,"{F5}")
    anstatt _IEAction($o_IE,"refresh") in einer schleife verwendet.

    funzt, nur leider mit dem selben effekt. (focus wird "geklaut").

    vielen dank trotzdem für die alternative.
    musste mich erstmal mit den control-commands auseinander setzen. deshalb die späte antwort.

    gruss exberliner