Funktion IE9 Problem

  • Hallo,

    ich schaffe es einfach nicht das zum laufen zu bringen.

    Das Problem:
    Es soll ein Feld ausgefüllt werden
    aber bei einem included Browserfenster.
    Extern im IE klappt das, nur nicht in einer GUI!

    Hier mal mein kpl. Code:

    Spoiler anzeigen
    [autoit]


    #include<Array.au3>
    #include <GuiConstantsEx.au3>
    #include <IE.au3>
    #include <WindowsConstants.au3>
    _IEErrorHandlerRegister ()
    Global $oNummer, $Was1, $oIE, $iIE, $oForm
    Dim $oIE[1]
    $oIE[0] = _IECreateEmbedded()
    Dim $Tab[1]

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

    $GUI = GUICreate("Browser",800,600, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX))

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

    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE)

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

    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    $TabParent = GUICtrlCreateTab(20,60,760,520)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)

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

    $idPos = GUICtrlCreateLabel("",40,100,700,460)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateObj($oIE[0],40,100,700,460)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)

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

    GUISetState()
    _Englisch()

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $TabParent
    $selected = GUICtrlRead($TabParent)
    WinSetTitle($gui,"",_IEPropertyGet($oIE[$selected],"locationname"))

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

    EndSwitch
    WEnd

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

    Exit

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

    func _Englisch()
    $Was1 = "Dieser Text wird übersetzt"
    ;$oIE[$iIE] = _IECreate ("http://translate.google.de/?hl=de&tab=TT#de|en")
    _IENavigate($oIE[$iIE],"http://translate.google.de/?hl=de&tab=TT#de|en")

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

    $oForm = _IEFormGetCollection($oIE[$iIE], 0)

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

    $oNummer = _IEFormElementGetObjByName($oForm,'text')
    _IEFormElementSetValue($oNummer, $Was1)
    _IEFormSubmit ($oForm)

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

    EndFunc

    [/autoit]

    Also, da wird nichts ausgefüllt.

    Wenn ich das ganze extern starte:
    (Funktion geändert) dann wird ausgefüllt

    Spoiler anzeigen
    [autoit]


    #include<Array.au3>
    #include <GuiConstantsEx.au3>
    #include <IE.au3>
    #include <WindowsConstants.au3>
    _IEErrorHandlerRegister ()
    Global $oNummer, $Was1, $oIE, $iIE, $oForm
    Dim $oIE[1]
    $oIE[0] = _IECreateEmbedded()
    Dim $Tab[1]

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

    $GUI = GUICreate("Browser",800,600, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX))

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

    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKSIZE)

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

    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKHEIGHT)
    $TabParent = GUICtrlCreateTab(20,60,760,520)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)

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

    $idPos = GUICtrlCreateLabel("",40,100,700,460)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateObj($oIE[0],40,100,700,460)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)

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

    GUISetState()
    _Englisch()

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $TabParent
    $selected = GUICtrlRead($TabParent)
    WinSetTitle($gui,"",_IEPropertyGet($oIE[$selected],"locationname"))

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

    EndSwitch
    WEnd

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

    Exit

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

    func _Englisch()
    $Was1 = "Dieser Text wird übersetzt"
    $oIE[$iIE] = _IECreate ("http://translate.google.de/?hl=de&tab=TT#de|en") ; das wurde eingefügt
    _IENavigate($oIE[$iIE],"http://translate.google.de/?hl=de&tab=TT#de|en")

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

    $oForm = _IEFormGetCollection($oIE[$iIE], 0)

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

    $oNummer = _IEFormElementGetObjByName($oForm,'text')
    _IEFormElementSetValue($oNummer, $Was1)
    _IEFormSubmit ($oForm)

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

    EndFunc

    [/autoit]

    Wie schafft man das,
    damit das auch in einer GUI läuft??


    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (30. August 2011 um 20:28)

  • In beiden Scripten fällt schonmal auf, dass du die Variable $iIE welche den Arrayindex bestimmt nur deklarierst, aber nie eine Wert zuweist. Wenn das also funktioniert ist das eher dem Zufall geschuldet, da eine Variable ohne Wertzuweisung vermutlich den Wert 0 inne hat und somit dann zufälligerweise trotzdem für dich passend ist. (falls dem nicht so ist liegt hier definitiv dein Fehler...)

    Im zweiten Script mischt du dann noch embedded und nicht embedded ob das prinzipiell geht kA, selbst wenn überschreibst du dir den inhalt von $oIE[0] und machst den embedded Browser dadurch dann sowieso unbrauchbar...

  • Hallo Misterspeed,

    merci für deine Zeilen.
    Im 2. Beispiel wollte ich nur zeigen, daß das generell funktioniert.
    Also Felder... sind ja soweit ok. (war also nur ein Beispiel)

    Ich wollte es alles in der GUI ausführen lassen.
    Ich kann halt einfach das Feld nicht ansprechen!

    Mit $iIE komme ich nicht so richtig weiter.


    Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (30. August 2011 um 14:41)

  • Hallo Misterspeed,

    ich habe mal das kpl. Script nochmal überarbeitet.
    Jetzt alles ohne arrays.
    Aber daran liegt es nicht!

    Hier mal die neue Version:
    Auf das wesentliche beschränkt!

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    $oIE = _IECreateEmbedded()

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

    $Form1 = GUICreate("Form1", 697, 520, 239, 155)
    $Browser = GUICtrlCreateObj($oIE, 16, 16, 669, 493)
    GUISetState(@SW_SHOW)

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

    _Englisch()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    func _Englisch()
    $Was1 = "Dieser Text wird übersetzt"

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

    _IENavigate($oIE,"http://translate.google.de/?hl=de&tab=TT#de|en")

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

    $oForm = _IEFormGetCollection($oIE, 0)

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

    $oNummer = _IEFormElementGetObjByName($oForm,'text')
    _IEFormElementSetValue($oNummer, $Was1)
    _IEFormSubmit ($oForm)

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

    EndFunc

    [/autoit]

    Klappt aber leider nicht! Das Feld wird nicht ausgefüllt!
    Bei der IE Variante (Browserfenster) hingegen ja!

    Noch eine Idee?

    Liebe Grüße
    Ilse ;)

  • ja, ich verwende IE9
    Die Seite wird angezeigt, Cursor blinkt aber nichts passiert!

    Weißt du vielleicht ob jemand das Problem
    lösen konnte? Muß ich da die IE.au3 anpassen?

    Habe Stunden das Problem sonstwo gesucht.

    Liebe Grüße
    Ilse ;)