Eigener Internetbrowser

  • Lasst doch daraus ein großes Projekt machen:
    AutoBrowse
    Der AutoIt Browser.

    Vieleicht kann man sowas umsetzten :)

    Also ich wär dabie :P

  • also bei mir funktioniert alles bis auf das tab schließen:
    Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    GUICtrlDelete ($oIE[$Zahl+1])
    GUICtrlDelete (^ ERROR

    bis jetzt siehts bei mir so aus

    Spoiler anzeigen
    [autoit]

    Local $Zahl = _GUICtrlTab_GetCurSel ($TabControl)
    If $Zahl > -1 Then
    _GUICtrlTab_DeleteItem($Tab, $Zahl)
    GUICtrlDelete ($inetob1[$Zahl+1])
    _GUICtrlTab_SetCurSel($Tab, _GUICtrlTab_GetItemCount($Tab) -1)
    EndIf

    [/autoit]


    wär nett wenn jemand helfen könnte :wacko:

  • Ich sehe in deinem Script kein $oIE. Stelle mal das ganze Script rein, wo das Array $inetob1 erstellt wird.

  • oIE:

    Spoiler anzeigen
    [autoit]

    Dim $oIE[1]Dim $oIE[1]
    $oIE[0] = _IECreateEmbedded()

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


    die wesentlichen teiler der gui:

    Spoiler anzeigen
    [autoit]

    $TabControl = GUICtrlCreateTab(0,80,760,520)
    $Tab[0] = GUICtrlCreateTabItem("Tab"& " " & $taba)
    $taba = $taba + 1
    $inetob1 = GUICtrlCreateObj($oIE[0],0,105,(@DesktopWidth-10),(@DesktopHeight-200))
    $oIE[0].navigate ($start)
    $selected = GUICtrlRead($TabControl)
    WinSetTitle($gui1,"", "Browser")
    GUICtrlSetData ($Adress, $start)
    GUISetState (@SW_SHOW)

    [/autoit]

    und dann die auf der ersten seite genannte close func:

    Spoiler anzeigen
    [autoit]

    Local $Zahl = _GUICtrlTab_GetCurSel ($TabControl)
    If $Zahl > -1 Then
    _GUICtrlTab_DeleteItem($TabControl, $Zahl)
    GUICtrlDelete ($Tab[$Zahl + 1])
    _GUICtrlTab_SetCurSel($Tab, _GUICtrlTab_GetItemCount($Tab) -1)
    EndIf

    [/autoit]


    :rolleyes:

  • Irgendwie verstehe ich dich nicht. Du schreibst zuerst das du bei GUICtrlDelete ($oIE[$Zahl+1]) einen Error bekommst. Schreibst aber im Script

    [autoit]

    Local $Zahl = _GUICtrlTab_GetCurSel ($TabControl)
    If $Zahl > -1 Then
    _GUICtrlTab_DeleteItem($Tab, $Zahl)
    GUICtrlDelete ($inetob1[$Zahl+1])
    _GUICtrlTab_SetCurSel($Tab, _GUICtrlTab_GetItemCount($Tab) -1)
    EndIf

    [/autoit]

    Dann schreibst du

    [autoit]

    Dim $oIE[1]Dim $oIE[1]
    $oIE[0] = _IECreateEmbedded()

    [/autoit]


    Also du hast dann aber ein Objekt.

    Und dann schreibst du auf einmal

    [autoit]

    Local $Zahl = _GUICtrlTab_GetCurSel ($TabControl)
    If $Zahl > -1 Then
    _GUICtrlTab_DeleteItem($TabControl, $Zahl)
    GUICtrlDelete ($Tab[$Zahl + 1])
    _GUICtrlTab_SetCurSel($Tab, _GUICtrlTab_GetItemCount($Tab) -1)
    EndIf

    [/autoit]

    also entweder heißt die Variable $oIE oder $inetob1 oder $Tab. Wie heißt sie denn nun? Und wieso willst du ein Objekt mit GUICtrlDelete löschen???

  • halt so wie bei sirocool
    bin auch grad nen bisschen verwirrt ^^
    aber wie gesagt, wegen der fehlermeldung klappt das nicht
    [quote='Sirocool',index.php?page=Thread&postID=124985#post124985]so kannst du die tabs zumachen


    Spoiler anzeigen

    $Tab = GUICtrlCreateTab (0, 41, @DesktopWidth -15, 25)
    GUICtrlSetResizing ( -1, 802)
    $mnu = GUICtrlCreateContextMenu($Tab)
    $mnu_new = GUICtrlCreateMenuItem("neuer Tab",$mnu)
    $mnu_del = GUICtrlCreateMenuItem("Tab schließen",$mnu)
    $mnu_quell = GUICtrlCreateMenuItem("Quellcode",$mnu)


    Case $mnu_new
    _NewTab(GUICtrlRead ($Input1))
    Case $mnu_del
    _close()


    Func _Close()
    Local $Zahl = _GUICtrlTab_GetCurSel($Tab)
    If $Zahl > -1 Then
    _GUICtrlTab_DeleteItem($Tab, $Zahl)
    GUICtrlDelete ($Obj[$Zahl +1])
    _GUICtrlTab_SetCurSel($Tab, _GUICtrlTab_GetItemCount($Tab) -1)
    EndIf
    EndFunc

  • wenn es hilft:
    Ich hatte hier mal ein Beispiel mit "eigenem" Tab-System gebaut:

    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_SHOWNOACTIVATE, $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_SHOWNOACTIVATE)
    For $i = 0 To 255 Step 10
    WinSetTrans($aGUIArray[$iIndex][1], "", $i)
    Next
    WinActivate($hGUI)
    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]
  • erstmal danke für die schnellen antworten,
    aber ich glaube eine lösung mit

    [autoit]

    $selected = GuiCtrlRead ($TabControl)GuiCtrlDelete ($Tab[$selected])

    [/autoit]

    wäre am einfachsten...


    man bekommt da ja aber immer die fehlermeldung:

    Spoiler anzeigen

    Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    GUICtrlDelete ($Tab[$selected])
    GUICtrlDelete (^ ERROR
    >Exit code: 1 Time: 13.937


    kann mir jemand helfen?

    Einmal editiert, zuletzt von ngamer999 (7. März 2010 um 20:07)