Problem mit IE Embed Adress Zeile

  • So ich bins ma wieder :D
    Ich versuche grad den Browser von HastyNotes etwas aufzurüsten.
    Problem ist.

    1. Wie kann ich eine Funktion ausführen sobald man
    eine neue Seite betritt (link klick etc)

    2. Wie kann ich das Script davon abhalten
    dauernd abzustürtzen weil "_IEAction($Browser, "back")"
    einen Fehler verursacht?
    (Verursacht Fehler wenn keine Seite davor geöffnet war.)

  • zu 1
    _IELoadWait bzw. _IELoadWaitTimeout
    In der Hilfe schauen wäre mal angebracht dann wäre dir nich so langeweilig und du müsstest deine beiträge nicht ständig pushen ;)

    MFG FireFlyer

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

  • So, und jetzt erklär mal wie du mit LoadWaits eine Aktion
    ausführen willst sobald der User eine neue Seite öffnet,
    nicht einen speziellen Link sondern egal welche Seite.

    Dafür gehts halt eben nicht,
    bzw nur extrem umständlich.

  • Spoiler anzeigen
    [autoit]

    #include<IE.au3>
    $ie = _IECreate("http://www.autoit.de", 0, 1, 0)
    _IELoadWait($ie)
    _funktion()

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

    Func _funktion()
    MsgBox(0, "Fertig", "Die Seite wurde geladen")
    EndFunc

    [/autoit]

    Was ist daran umständlich? Natürlich kannst du das Script auch direkt bei Create oder Navigate warten lassen und dann die Funktion ausführen.

    MFG FireFlyer

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

  • Du verstehst nicht was ich meine oder?

    Ich will es für einen Browser verwenden,
    die Funktion soll aufgerufen wenn der User IHRGENDEINE
    Seite betritt, sich also pratkisch die URL ändern würde.
    Nicht wenn IE fertig geladen hat.

  • Für welchen Browser denn überhaupt.
    Das einfachste wäre vielleicht den Titel der Browserfenster auszulesen und zu vergleichen.
    Damit könnte man auch leicht mehrere Browser checken.

  • Würdest du uns auch gleich verraten was du vorhast oder sogar ein beispielscript posten mit deinen Versuchen würde es um einiges leichter werden.

    Spoiler anzeigen
    [autoit]

    #include<IE.au3>
    $ie = _IECreate("http://www.google.de", 0, 1, 1)
    $oldurl = _IEPropertyGet($ie, "locationurl")
    While 1
    $newurl = _IEPropertyGet($ie, "locationurl")
    If @error Then Exit
    If $newurl <> $oldurl Then MsgBox(0, "", "User hat die Seite geändert")
    $oldurl = $newurl
    Sleep(100)
    WEnd

    [/autoit]


    Try this

    MFG FireFlyer

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

  • Ich will, sobald sich die URL ändert diese in
    eine Edit Box eintragen.

    Einziges Problem das ich habe:
    Die Funktion so wie ich sie habe wiederhohlt sich zu schnell,
    wodurch die Edit Box so schnell aktualisiert wird das
    man den Text nicht mehr per Hand ändern kann.

    Soll eine Adress Zeile werden.

  • So?

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <misc.au3>

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

    _IEErrorHandlerRegister ()

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

    GUICreate("test")
    $in = GUICtrlCreateInput("", 0,0,200, 20)
    $OK = GUICtrlCreateButton("GO >", 200, 0, 50, 20)
    $oIE = _IECreateEmbedded()
    GUICtrlCreateObj($oIE,10,25, 380, 350)
    $SinkObject=ObjEvent($oIE,"IEEvent_","DWebBrowserEvents2")

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

    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $in
    If _IsPressed('0D') Then _IENavigate($oIE, GUICtrlRead($in))
    Case $OK
    _IENavigate($oIE, GUICtrlRead($in))
    EndSwitch
    WEnd

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

    Func IEEvent_NavigateComplete2($pDisp, $URL)
    ; GUICtrlSetData($in, $URL) gibt ledier auch Frames in die Bar, also
    GUICtrlSetData($in, _IEPropertyGet($oIE, "locationurl"))
    EndFunc

    [/autoit]