_IECreateEmbedded() handle ???

  • Hi,

    ich hab mithilfe von _IECreateEmbedded() ein objekt erstellt.
    Da ich mehrere _IE - objekte managen möchte (wird ein browser mit Tab control) speichere ich diverese handles in Arrays...
    Allerdings ist der Rückgabewert von _IECreateEmbedded() = "" ... damit kann ich nichts anfangen.

    Gibt es eine Möglichkeit, besagtes zu lösen? (Wie gesagt, mein Ziel ist, mithilfe des aktiven Tabs, das entsprechende _IE objekt zu steuern)
    Solltet ihr mein Skript brauchen, lad ich es hoch. Ist aber etwas verwirrend^^ ich denke man kann es auch so lösen :)

    Gruß

  • Und wo ist nun das Problem genau?

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <array.au3>

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

    Global $oIE[4]

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

    $oIE[1] = _IECreateEmbedded()
    $oIE[2] = _IECreateEmbedded()
    $oIE[3] = _IECreateEmbedded()

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

    $Form1 = GUICreate("Form1", 1200, 840, 239, 155)
    GUICtrlCreateTab(10,10,1180,780)
    $tab1 = GUICtrlCreateTabItem("Seite1")
    $Browser1 = GUICtrlCreateObj($oIE[1], 20, 40, 1160, 740)
    $tab2 = GUICtrlCreateTabItem("Seite2")
    $Browser2 = GUICtrlCreateObj($oIE[2], 20, 40, 1160, 740)
    $tab3 = GUICtrlCreateTabItem("Seite3")
    $Browser3 = GUICtrlCreateObj($oIE[3], 20, 40, 1160, 740)
    GUICtrlCreateTabItem("")
    $BtnAddPage = GUICtrlCreateButton("Seite hinzufügen",10,810,150,20)
    GUISetState(@SW_SHOW)

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

    _IENavigate($oIE[1],"google.de",0)
    _IENavigate($oIE[2],"autoit.de",0)
    _IENavigate($oIE[3],"heise.de",0)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $BtnAddPage
    $page = InputBox("goto url","link eingeben","google.de")
    _ArrayAdd($oIE,_IECreateEmbedded())
    GUICtrlCreateTabItem("Seite" & UBound($oIE)-1)
    GUICtrlCreateObj($oIE[UBound($oIE)-1], 20, 40, 1160, 740)
    GUICtrlCreateTabItem("")
    _IENavigate($oIE[UBound($oIE)-1], $page)
    EndSwitch
    WEnd

    [/autoit]
  • Okay jetzt wo ich es nochmal versuche klappt das *kopf - tisch*


    Jetzt hab ich nurnoch das Problem, dass ein ladendes objekt in Vordergrund kommt, selbst wenn es sich auf einem hidden Tab befindet.

    Wie kann ich das umgehen? Damit könnte ich Seiten automatisch neu laden nach einiger Zeit was sicherlich sehr praktisch ist :)


    //EDIT:

    man kann auch echt dumm sein...aber ich übertreff mich täglich :)

    Das Problem lag darin, dass ich meine Tab control nicht mit "GuiCtrlCreateTabItem("")" Abgeschlossen habe...
    Das hab ich jetzt nachgeholt und damit funkltioniert alles.. :huh: :whistling:

    Einmal editiert, zuletzt von zombie36 (31. August 2011 um 16:19)

  • Hab mein Beispiel mal noch erweitert, aber hast deinen Fehler ja mittlerweile selbst gefunden:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <array.au3>
    #include <GuiTab.au3>

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

    Global $oIE[4]

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

    $oIE[1] = _IECreateEmbedded()
    $oIE[2] = _IECreateEmbedded()
    $oIE[3] = _IECreateEmbedded()

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

    $Form1 = GUICreate("Form1", 1200, 840)
    $tabMenu = GUICtrlCreateTab(10,10,1180,780)
    $tab1 = GUICtrlCreateTabItem("Seite1")
    $Browser1 = GUICtrlCreateObj($oIE[1], 20, 40, 1160, 740)
    $tab2 = GUICtrlCreateTabItem("Seite2")
    $Browser2 = GUICtrlCreateObj($oIE[2], 20, 40, 1160, 740)
    $tab3 = GUICtrlCreateTabItem("Seite3")
    $Browser3 = GUICtrlCreateObj($oIE[3], 20, 40, 1160, 740)
    GUICtrlCreateTabItem("")
    $BtnAddPage = GUICtrlCreateButton("Seite hinzufügen",10,810,150,20)
    $BtnBavigateTo = GUICtrlCreateButton("Navigiere zu",180,810,150,20)
    GUISetState(@SW_SHOW)

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

    _IENavigate($oIE[1],"google.de",0)
    _IENavigate($oIE[2],"autoit.de",0)
    _IENavigate($oIE[3],"heise.de",0)
    $startTime=TimerInit()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $BtnAddPage
    $page = InputBox("goto url","link eingeben","google.de")
    _ArrayAdd($oIE,_IECreateEmbedded())
    GUICtrlCreateTabItem("Seite" & UBound($oIE)-1)
    GUICtrlCreateObj($oIE[UBound($oIE)-1], 20, 40, 1160, 740)
    GUICtrlCreateTabItem("")
    _IENavigate($oIE[UBound($oIE)-1], $page)
    Case $BtnBavigateTo
    $page = InputBox("goto url","link eingeben","google.de")
    _IENavigate($oIE[_GUICtrlTab_GetCurSel($tabMenu)+1], $page)
    EndSwitch
    if TimerDiff($startTime) > 10000 Then
    $startTime=TimerInit()
    for $i=1 to UBound($oIE)-1
    $page = _IEPropertyGet ( $oIE[$i], "locationurl" ) ; ist so schneller als mit ieaction "refresh", da nicht auf jede seite gewartet wird
    _IENavigate($oIE[$i],$page,0);_IEAction($oIE[$i],"refresh")
    ConsoleWrite("refresh site " & $i & ": " & $page & @CRLF)
    Next
    EndIf
    WEnd

    [/autoit]
  • So far so bad..
    ich habe das script 'etwas erweitert'

    Spoiler anzeigen
    [autoit]

    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #Include
    #include
    #include

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

    $sTitle = "Trowser"

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

    #Region ### START Koda GUI section ### Form=
    $gMain = GUICreate($sTitle, 1206, 761, 300, 245, $WS_THICKFRAME, $WS_SIZEBOX)
    $MenuItem1 = GUICtrlCreateMenu("Datei")
    $MenuSettings = GUICtrlCreateMenuItem("Einstellungen", $MenuItem1)
    $MenuExit = GUICtrlCreateMenuItem("Beenden", $MenuItem1)
    $MenuItem2 = GUICtrlCreateMenu("MenuItem2")
    $MenuItem3 = GUICtrlCreateMenu("MenuItem3")

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

    $oYoutube = _IECreateEmbedded()
    GUICtrlCreateObj($oYoutube, 930, 28, 300, 216)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DoCKWIDTH + $GUI_DOCKHEIGHT)
    _IENavigate($oYoutube, "about:blank")

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

    $ButtonYT1 = GUICtrlCreateButton("v", 936, 8, 20, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

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

    $InputYT1 = GUICtrlCreateInput("", 960, 8, 240, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DoCKWIDTH + $GUI_DOCKHEIGHT)

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

    $ContextYT1 = GUICtrlCreateContextMenu($ButtonYT1)
    GUICtrlCreateMenuItem("test", $ContextYT1)

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

    $Edit1 = GUICtrlCreateEdit("", 930, 250, 273, 400, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DoCKWIDTH + $GUI_DOCKBOTTOM)

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

    $oSearch = _IECreateEmbedded()
    GUICtrlCreateObj($oSearch, 930, 650, 273, 300)
    GUICtrlSetResizing(-1, $GUI_DOCKBOTTOM + $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

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

    $PageControl1 = GUICtrlCreateTab(0, 8, 932, 706)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKTOP)

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

    #EndRegion ### END Koda GUI section ###

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

    Global $activeCtrl = -1

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

    $sStartUrl = "http://www.autoit.de"

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

    Global $aTabs[1] = [""]
    Global $aInputs[1] = [""]
    Global $aIEs[1] = [""]
    Global $aUrls[1] = [""]
    Global $aBtns[1] = [""]
    _tabCreate()
    _ArrayDelete($aTabs, 0)
    _ArrayDelete($aIEs, 0)
    _ArrayDelete($aInputs, 0)
    _ArrayDelete($aURLs, 0)
    _ArrayDelete($aBTNs, 0)
    _Navigate(0, $sStartURL)
    _tabCreate()

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

    _YTCreate("http://www.youtube.com/watch?v=7r0KpWMNxnM")

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

    _searchCreate()

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    _exit()
    Case $PageControl1 ;tab change
    $iSel = GUICtrlRead($PageControl1)

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

    If $iSel = UBound($aTabs) -1 Then
    _tabCreate()
    GUICtrlSetState($aTabs[$iSel], $GUI_SHOW)
    _Navigate($iSel, $sStartURL)
    EndIf

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

    Case $aBtns[GUICtrlRead($pageControl1)]
    $i = GUICtrlRead($pageControl1)
    _tabDelete($i)
    If $i > 0 Then
    GUICtrlSetState($aTabs[$i - 1], $GUI_SHOW)
    Else
    GUICtrlSetState($aTabs[0], $GUI_SHOW)
    EndIf
    If GUICtrlRead($pageControl1) = UBound($aTabs) -1 Then
    _tabCreate()
    GUICtrlSetState($aTabs[$i], $GUI_SHOW)
    _Navigate($i, $sStartURL)
    EndIf

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

    case -7
    $actv = ControlGetFocus($sTitle)
    If $actv <> $activeCtrl Then
    If ControlGetHandle($sTitle,"",$actv) = GUICtrlGetHandle($aInputs[GUICtrlRead($PageControl1)]) Then
    _GUICtrlEdit_SetSel($aInputs[GUICtrlRead($PageControl1)],0,-1)
    EndIf
    $activeCtrl = $actv
    EndIf

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

    Case $ButtonYT1
    $sInp = GUICtrlRead($InputYT1)
    If $sInp <> "" Then
    _playAdd($sInp)
    Else
    _YTShowOptions()
    EndIf
    GUICtrlSetData($InputYT1, "")

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

    EndSwitch

    If _IsPressed("0D") Then _Enter()
    _update()

    WEnd

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

    Func _TabCreate()
    $hTab = GUICtrlCreateTabItem(" ")
    $Group1 = GUICtrlCreateGroup("", 4, 42, 924, 41)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DoCKRIGHT + $GUI_DocKHEIGHT)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")

    $Input1 = GUICtrlCreateInput("", 92, 54, 831, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DoCKRIGHT + $GUI_DOCKHEIGHT)

    $Label1 = GUICtrlCreateLabel("Adresse:", 28, 58, 49, 18)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

    $btn = GUICtrlCreateButton("X", 904, 30, 16, 16)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $oStart = _IECreateEmbedded()
    GUICtrlCreateObj($oStart, 0, 90, 926, 625)
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKTOP)

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

    _IENavigate($oStart, "about:blank")
    GUICtrlCreateTabItem("")
    _ArrayAdd($aTabs, $hTab)
    _ArrayAdd($aInputs, $Input1)
    _ArrayAdd($aIEs, $oStart)
    _ArrayAdd($aUrls, $oStart.document.url)
    _ArrayAdd($aBtns, $btn)
    EndFunc

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

    Func _TabDelete( $i )
    GUICtrlDelete($aTabs[$i])
    _ArrayDelete($aTabs, $i)
    _ArrayDelete($aInputs, $i)
    _ArrayDelete($aIEs, $i)
    _ArrayDelete($aUrls, $i)
    _ArrayDelete($aBTNs, $i)
    EndFunc

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

    Func _Enter ()
    $idActive = ControlGetFocus($sTitle,"")
    $hActive = ControlGetHandle($sTitle, "", $idActive )
    $iIndex = -1
    For $i = 0 To UBound($aInputs) -1
    if GUICtrlGetHandle($aInputs[$i]) = $hActive Then
    $iIndex = $i
    ExitLoop
    EndIf
    Next
    If $iIndex <> -1 Then
    _Navigate($iIndex, guictrlread($aInputs[$iIndex]))
    EndIf
    EndFunc

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

    Func _Navigate ($iTab, $sUrl)
    _IENavigate($aIEs[$iTab], $sUrl, 0)
    GUICtrlSetData($aTabs[$itab], StringLeft($sUrl,20))
    GUICtrlSetData($aInputs[$iTab], $sUrl)
    GUICtrlSetState($atabs[$iTab], $GUI_SHOW)
    EndFunc

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

    Func _update()
    For $i = 0 to UBound($aTabs) -1
    $url = $aIEs[$i].document.url
    If $url <> $aUrls[$i] Then
    $aUrls[$i] = $url
    GUICtrlSetData($aInputs[$i], $url)
    EndIf
    Next
    EndFunc

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

    Func _YTCreate($sUrl)
    $sUrl = StringSplit($sUrl, "==", 1)
    $sUrl = StringSplit($sUrl[1], "&", 1)
    $sUrl = StringSplit($sUrl[1], "watch?v=", 1)
    If @error Then Return
    $sUrl = $sUrl[2]

    $sHTML = "" & @LF
    $sHTML &= '</iframe>'
    _IEBodyWriteHTML($oYoutube, $sHTML)
    EndFunc

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

    Func _searchCreate()
    $sHTML = '
    web

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

    '
    _IEBodyWriteHTML($oSearch, $sHTML)
    EndFunc

    [/autoit]

    Es ist etwas buggy (zB lädt die Suche nicht) das liegt evtl daran dass ich einige Code-Teile vornweggelassen habe

    mein Problem jetzt ist, wenn man einen neuen Tab öffnet / einen Tab schließt, das YoutubeFenster (und bei mir auch die Suche) zur weißen fläche werden. erst wenn ich mit der maus über die controls fahre werden sie wieder sichtbar.

    ich dachte erst daran das Gui neu zeichnen zu lassen das verändert aber nichts

    Ideen? Gruß