GUI mit mehreren Malen Internet Explorer

  • Ich möchte in meinem Script bunt und mit Formatierungen schreiben (nicht immer die gleiche) und dazu viel mir als einzige Möglichkeit einfach mit GuiCtrlCreateObj mit IE ein. Das klappt auch ganz gut, aber ich kann scheinbar nur einmal das benutzen :(. Ich brauche das aber mehrmals.
    Kann mir jemand helfen?

    Das Script:

    Spoiler anzeigen
    [autoit]

    ;--Den anderen Kram einfach garnicht beachten ;)--
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $GuiForm = GUICreate("TM Downloader Gbx", 202, 428, 193, 126)
    $GuiBG=GUICtrlCreatePic(@ScriptDir&"\Icons\BG.jpg",0,0,202,200)
    GuiCtrlSetState(-1,$GUI_DISABLE)
    $GuiHeadline = GUICtrlCreateLabel("Your selected track(s):", 8, 8, 110, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    ;-1-
    $GuiHight=26
    $GuiObj1=ObjCreate("Shell.Explorer.2")
    $GuiName1=GUICtrlCreateObj ($GuiObj1, -2, $GuiHight, 224, 24)
    $GuiObj1.navigate("C:\Users\Ich\Documents\AutoIt\TrackMania Downloader\2.0\AAAA.html")
    $Icon1 = GUICtrlCreatePic(@ScriptDir&"\Icons\ABCD.jpg", 8, $GuiHight+30, 108, 108)
    $GuiBuUp1 = GUICtrlCreateButton("^", 120, $GuiHight+30, 23, 23,$BS_ICON)
    GUICtrlSetImage (-1,@ScriptDir&"\Icons\Up.ico")
    $GuiBuDo1 = GUICtrlCreateButton("v", 144,$GuiHight+30, 23, 23,$BS_ICON)
    GUICtrlSetImage (-1,@ScriptDir&"\Icons\Down.ico")
    $GuiBuDel1 = GUICtrlCreateButton("X", 168,$GuiHight+30, 23, 23,$BS_ICON)
    GUICtrlSetImage (-1,@ScriptDir&"\Icons\Exit.ico")
    $GuiAut1 = GUICtrlCreateLabel("Brainshaker", 120,$GuiHight+62, 80, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $GuiEnv1 = GUICtrlCreatePic(@ScriptDir&"\Icons\Island.jpg", 120,$GuiHight+102, 32, 32)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $GuiLine1 = GUICtrlCreateLabel("", 0,$GuiHight+147, 202, 3)
    GUICtrlSetBkColor(-1, 0x000000)
    $GuiTime1 = GUICtrlCreateLabel("0:47.83", 120,$GuiHight+78, 80, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    ;-2-
    $GuiHight=185
    $GuiObj2=ObjCreate("Shell.Explorer.2")
    $GuiName2=GUICtrlCreateObj ($GuiObj1, -2, $GuiHight, 224, 24)
    $GuiObj2.navigate("C:\Users\Ich\Documents\AutoIt\TrackMania Downloader\2.0\AAAA.html")
    $Icon2= GUICtrlCreatePic(@ScriptDir&"\Icons\ABCD.jpg", 8, $GuiHight+30, 108, 108)
    $GuiBuUp2= GUICtrlCreateButton("^", 120, $GuiHight+30, 23, 23,$BS_ICON)
    GUICtrlSetImage (-1,@ScriptDir&"\Icons\Up.ico")
    $GuiBuDo2= GUICtrlCreateButton("v", 144,$GuiHight+30, 23, 23,$BS_ICON)
    GUICtrlSetImage (-1,@ScriptDir&"\Icons\Down.ico")
    $GuiBuDel2= GUICtrlCreateButton("X", 168,$GuiHight+30, 23, 23,$BS_ICON)
    GUICtrlSetImage (-1,@ScriptDir&"\Icons\Exit.ico")
    $GuiAut2= GUICtrlCreateLabel("Brainshaker", 120,$GuiHight+62, 80, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $GuiEnv2= GUICtrlCreatePic(@ScriptDir&"\Icons\Island.jpg", 120,$GuiHight+102, 32, 32)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $GuiLine2= GUICtrlCreateLabel("", 0,$GuiHight+147, 202, 3)
    GUICtrlSetBkColor(-1, 0x000000)
    $GuiTime2= GUICtrlCreateLabel("0:47.83", 120,$GuiHight+78, 80, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    ;-Ende-
    GUISetState(@SW_SHOW)

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

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

    [/autoit]

    P.S.: Kann man den grauen Rand um den IE auch irgendwie wegkriegen?

  • Bitte poste auch die dazugehörigen dateien. Man kann das Script ja nichtmal starten. Mehrere Embedded IE Objekte gehen Problemlos.

    Hier ist mal ein Browser Beispiel von mir: (Nur um zu zeigen, dass es funktioniert :P)

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <WindowsConstants.au3>

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

    _IEErrorHandlerRegister()

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

    Dim $aGUIArray[1][4]
    Global $iSel = 0, $hDummy = GUICreate("")

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

    $hGUI = GUICreate("Browser Beispiel", 800, 600)
    $hURL = GUICtrlCreateInput("about:blank", 200, 540, 400)
    $hNTab = GUICtrlCreateButton("Tab +", 20, 540, -1, -1)
    $hRTab = GUICtrlCreateButton("Tab -", 60, 540, -1, -1)
    $hABack = GUICtrlCreateButton(" <- ", 140, 540, -1, -1)
    $hANext = GUICtrlCreateButton(" -> ", 165, 540, -1, -1)

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

    $aGUIArray[0][0] = GUICtrlCreateButton("about:blank", 20, 570, -1, -1, 0x8000)
    $aGUIArray[0][1] = GUICreate("Child GUI", 700, 510, 50, 20, 0x80000000, $WS_EX_MDICHILD, $hGUI)
    $aGUIArray[0][3] = __IECreateEmbedded($aGUIArray[0][2])

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

    GUISetBkColor(0x000000, $hGUI)
    GUISetBkColor(0xFF0000, $aGUIArray[0][1])
    GUISetState(@SW_SHOW, $aGUIArray[0][1])
    GUISetState(@SW_SHOW, $hGUI)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $hNTab
    _Browser_TabAdd($aGUIArray)
    _Browser_SyncURLBar()
    Case $hURL
    $oIE = _Browser_ReturnActiveObj()
    _IENavigate($oIE, GUICtrlRead($hURL))
    _Browser_SyncURLBar()
    Case $hRTab
    _Browser_TabRemove()
    Case $hABack
    $oIE = _Browser_ReturnActiveObj()
    _IEAction($oIE,"back")
    Case $hANext
    $oIE = _Browser_ReturnActiveObj()
    _IEAction($oIE,"forward")
    EndSwitch

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

    For $i = 0 To UBound($aGUIArray) - 1
    If $nMsg = $aGUIArray[$i][0] Then
    If $i = $iSel Then ContinueLoop 2
    _Browser_AnimateChild($iSel, 0)
    _Browser_AnimateChild($i, 1)
    $iSel = $i
    ExitLoop
    EndIf
    Next

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

    If ControlGetHandle("", "", ControlGetFocus("")) <> GUICtrlGetHandle($hURL) Then
    _Browser_SyncURLBar()
    EndIf
    WEnd

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

    Func __IECreateEmbedded(ByRef $_oIE)
    $_oIE = _IECreateEmbedded()
    $sObjCtrl = GUICtrlCreateObj($_oIE, 0, 0, 700, 510)
    _IENavigate($_oIE, "about:blank")
    Return $sObjCtrl
    EndFunc ;==>__IECreateEmbedded

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

    Func _Browser_TabAdd(ByRef $aArray)
    _Browser_AnimateChild($iSel, 0)
    $iUbound = UBound($aArray)
    $hSwitch = GUISwitch($hGUI)
    ReDim $aArray[$iUbound + 1][4]
    $aCPos = ControlGetPos($hGUI, "", $aArray[$iUbound - 1][0])
    $aArray[$iUbound][0] = GUICtrlCreateButton("Tab " & $iUbound + 1, $aCPos[0] + $aCPos[2] + 5, 570, -1, -1, 0x8000)
    $aArray[$iUbound][1] = GUICreate("Child GUI", 700, 510, 50, 20, 0x80000000, $WS_EX_MDICHILD, $hGUI)
    $aArray[$iUbound][3] = __IECreateEmbedded($aArray[$iUbound][2])
    _Browser_AnimateChild($iUbound, 1)
    $iSel = $iUbound
    GUISwitch($hSwitch)
    EndFunc ;==>_Browser_TabAdd

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

    Func _Browser_TabRemove()
    If UBound($aGUIArray) <= 1 Then Return
    _Browser_AnimateChild($iSel, 0)
    GUICtrlDelete($aGUIArray[$iSel][3])
    GUIDelete($aGUIArray[$iSel][1])
    GUICtrlDelete($aGUIArray[$iSel][0])
    For $i = $iSel To UBound($aGUIArray) - 2
    $aGUIArray[$i][0] = $aGUIArray[$i + 1][0]
    $aGUIArray[$i][1] = $aGUIArray[$i + 1][1]
    $aGUIArray[$i][2] = $aGUIArray[$i + 1][2]
    $aGUIArray[$i][3] = $aGUIArray[$i + 1][3]
    Next
    ReDim $aGUIArray[UBound($aGUIArray) - 1][4]
    If $iSel > 0 Then
    $iSel -= 1
    EndIf
    ConsoleWrite($iSel & @CRLF)
    _Browser_TabRepairSize()
    _Browser_AnimateChild($iSel, 1)
    EndFunc ;==>_Browser_TabRemove

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

    Func _Browser_ReturnActiveObj()
    Return $aGUIArray[$iSel][2]
    EndFunc ;==>_Browser_ReturnActiveObj

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

    Func _Browser_AnimateChild($iIndex, $iFlag)
    Switch $iFlag
    Case 0
    For $i = 255 To 0 Step -10
    WinSetTrans($aGUIArray[$iIndex][1], "", $i)
    Next
    WinSetState($aGUIArray[$iIndex][1], "", @SW_HIDE)
    Case 1
    WinSetTrans($aGUIArray[$iIndex][1], "", 0)
    WinSetState($aGUIArray[$iIndex][1], "", @SW_SHOW)
    For $i = 0 To 255 Step 10
    WinSetTrans($aGUIArray[$iIndex][1], "", $i)
    Next
    EndSwitch
    EndFunc ;==>_Browser_AnimateChild

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

    Func _Browser_SyncURLBar()
    $oIE = _Browser_ReturnActiveObj()
    $sUrl = _IEPropertyGet($oIE, "locationurl")
    $sName = _IEPropertyGet($oIE, "locationname")
    If $sUrl <> GUICtrlRead($hURL) Or ($sName <> GUICtrlRead($aGUIArray[$iSel][0]) AND StringLeft($sName, 15) & "..." <> GUICtrlRead($aGUIArray[$iSel][0])) Then
    GUICtrlSetData($hURL, $sUrl)
    $sText = $sName
    If StringLen($sText) > 15 Then $sText = StringLeft($sText, 15) & "..."
    GUICtrlSetData($aGUIArray[$iSel][0], $sText)
    _Browser_TabRepairSize()
    WinSetTitle($hGUI, "", $sName)
    EndIf
    EndFunc ;==>_Browser_SyncURLBar

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

    Func _Browser_TabRepairSize()
    $hSwitch = GUISwitch($hDummy)
    For $i = 0 To UBound($aGUIArray) - 1
    $aCPos = ControlGetPos($hGUI, "", $aGUIArray[$i][0])
    $hLableDummy = GUICtrlCreateButton(GUICtrlRead($aGUIArray[$i][0]), 0, 0, -1, -1)
    $aCLPos = ControlGetPos($hDummy, "", $hLableDummy)
    $aCPos[2] = $aCLPos[2]
    ControlMove($hGUI, "", $aGUIArray[$i][0], $aCPos[0], $aCPos[1], $aCPos[2])
    If $i = 0 Then ControlMove($hGUI, "", $aGUIArray[$i][0], 20, 570, $aCPos[2])
    For $j = $i + 1 To UBound($aGUIArray) - 1
    $aCTPos = ControlGetPos($hGUI, "", $aGUIArray[$j][0])
    ControlMove($hGUI, "", $aGUIArray[$j][0], ($aCPos[0] + $aCPos[2] + 5), $aCTPos[1])
    Next
    Next
    GUISwitch($hSwitch)
    EndFunc ;==>_Browser_TabRepairSize

    [/autoit]
  • Hallo luke4321,

    also so:

    Spoiler anzeigen
    [autoit]

    ; *******************************************************
    ; Beispiel 1 - Erkennt und deaktiviert COM-Errors, sodass 'Back' (zurück) und
    ; 'Forward' (vorwärts) außerhalb der Historygrenzen das Skript nicht abbrechen.
    ; (außer COM-Errors, die an die Konsole gesendet werden)
    ; *******************************************************
    ;
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <StaticConstants.au3>

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

    _IEErrorHandlerRegister ()

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

    $oIE1 = _IECreateEmbedded ()
    $oIE2 = _IECreateEmbedded ()
    $hmainGui = GUICreate("EmbeddedWebControl-Test", 640, 550, _
    0, 0, _
    $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
    $GUIActiveX1 = GUICtrlCreateObj($oIE1, 10, 40, 600, 180)
    $GUI_Button_Back1 = GUICtrlCreateButton("Zurück", 10, 230, 100, 30)
    $GUI_Button_Forward1 = GUICtrlCreateButton("Vorwärts", 120, 230, 100, 30)
    $GUI_Button_Home1 = GUICtrlCreateButton("Startseite", 230, 230, 100, 30)
    $GUI_Button_Stop1 = GUICtrlCreateButton("Anhalten", 340, 230, 100, 30)

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

    ;$hchildGUI = GUICreate("",640,260,0 ,271,$WS_POPUP,$WS_EX_MDICHILD, $hmainGui)
    $GUIActiveX1 = GUICtrlCreateObj($oIE2, 10, 275, 600, 180)
    $GUI_Button_Back2 = GUICtrlCreateButton("Zurück", 10, 500, 100, 30)
    $GUI_Button_Forward2 = GUICtrlCreateButton("Vorwärts", 120, 500, 100, 30)
    $GUI_Button_Home2 = GUICtrlCreateButton("Startseite", 230, 500, 100, 30)
    $GUI_Button_Stop2 = GUICtrlCreateButton("Anhalten", 340, 500, 100, 30)

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

    GUISetState() ; Anzeigen der GUI

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

    _IENavigate ($oIE1, "http://www.autoit.de")
    _IENavigate ($oIE2, "http://www.autoitscript.com")

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

    ; Wartet, bis der Benutzer das Fenster schließt
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $GUI_Button_Home1
    _IENavigate ($oIE1, "www.autoit.de")
    Case $msg = $GUI_Button_Back1
    _IEAction ($oIE1, "back")
    Case $msg = $GUI_Button_Forward1
    _IEAction ($oIE1, "forward")
    Case $msg = $GUI_Button_Stop1
    _IEAction ($oIE1, "stop")
    Case $msg = $GUI_Button_Home2
    _IENavigate ($oIE2, "www.autoitscript.com")
    Case $msg = $GUI_Button_Back2
    _IEAction ($oIE2, "back")
    Case $msg = $GUI_Button_Forward2
    _IEAction ($oIE2, "forward")
    Case $msg = $GUI_Button_Stop2
    _IEAction ($oIE2, "stop")
    EndSelect
    WEnd

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

    GUIDelete()

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

    Exit

    [/autoit]

    schaffe ich es 2 IE embedded in einer GUI darzustellen. Musst halt probieren ob es für deine Zwecke auch funktioniert,

    Edit: zu langsam :sleeping:
    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (21. Februar 2010 um 18:23)