Hab hier so ein winziges webbrowser projekt(ja, ichweiß, schon wieder) und habe Probleme die Tabs zu löschen? Wie kann ich den aktiven Tab löschen? Sry für das englische, aber das skript ist teils von nem freund...
[autoit]#include <GUIConstants.au3>
#include <GuiTab.au3>
#include <IE.au3>
#include <GuiStatusBar.au3>
#include <array.au3>
#include <Misc.au3>
HotKeySet("!t", "Test")
Global $Tab[11], $oIE[11], $Obj[11], $flasher[11], $backstack[11][2], $init = 1
Global $Title = "My Web Browser", $TabPos1 = 5, $TabPos2 = 35, $TabPos3 = 850, $TabPos4 = 650, $Status = 0, $Title2, $Status2 = "", $frskip = 0, $Count = 1, $HomePage
_IEErrorHandlerRegister()
$Form = GUICreate($Title, $TabPos3 + 10, $TabPos4 + 30)
$FileMenu = GUICtrlCreateMenu("File")
$FileOpenTab = GUICtrlCreateMenu("New Tab", $FileMenu)
$OpenTab1 = GUICtrlCreateMenuItem("Open Blank Page", $FileOpenTab)
$OpenTab2 = GUICtrlCreateMenuItem("Open Home Page", $FileOpenTab)
$ShowSource = GUICtrlCreateMenuItem("Show Page Source", $FileMenu)
$EditMenu = GUICtrlCreateMenu("Edit")
$Cut = GUICtrlCreateMenuItem("Cut", $EditMenu)
$Copy = GUICtrlCreateMenuItem("Copy", $EditMenu)
$Paste = GUICtrlCreateMenuItem("Paste", $EditMenu)
$Sep = GUICtrlCreateMenuItem("", $EditMenu)
$Selectall = GUICtrlCreateMenuItem("Select All", $EditMenu)
$SettingsMenu = GUICtrlCreateMenu("Settings")
$ChangeHomePage = GUICtrlCreateMenuItem("Change Home Page", $SettingsMenu)
$StatusBar = _GUICtrlStatusBar_Create($Form)
Local $aParts[1] = [500]
_GUICtrlStatusBar_SetParts($StatusBar, $aParts)
$Input = GUICtrlCreateInput("", 7, 7, 305, 22)
$Go = GUICtrlCreateButton("Go", 336, 5, 35, 25)
$Back = GUICtrlCreateButton("Back", 376, 5, 43, 25)
$Forward = GUICtrlCreateButton("Forward", 440, 5, 59, 25)
$Stop = GUICtrlCreateButton("Stop", 520, 5, 43, 25)
$Refresh = GUICtrlCreateButton("Refresh", 568, 5, 59, 25)
$Home = GUICtrlCreateButton("Home", 632, 5, 43, 25)
$Back2 = GUICtrlCreateButton("v", 418, 5, 17, 25)
$Forward2 = GUICtrlCreateButton("v", 498, 5, 17, 25)
$Go2 = GUICtrlCreateButton("v", 320, 5, 17, 25)
$NewTab = GUICtrlCreateButton("New Tab", 680, 5, 65, 25)
$CloseTab = GUICtrlCreateButton("X", 832, 36, 19, 17)
$CreateTab = GUICtrlCreateTab($TabPos1, $TabPos2, $TabPos3, $TabPos4 - 50)
GUICtrlSetState($Back, $GUI_DISABLE)
GUICtrlSetState($Forward, $GUI_DISABLE)
GUICtrlSetState($Back2, $GUI_DISABLE)
GUICtrlSetState($Forward2, $GUI_DISABLE)
$HomePage = CheckHomePage()
OpenTab(1, "Home")
OpenTab(2, "http://www.yahoo.com/")
OpenTab(3, "http://www.autoitscript.com/forum/index.php")
$init = 0
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $Go
Navigate(GetTab(), GUICtrlRead($Input))
Case $Back
HistoryBack(GetTab())
Case $Forward
HistoryForward(GetTab())
Case $Stop
_IEAction($oIE[GetTab()], "stop")
Case $Refresh
_IEAction($oIE[GetTab()], "refresh")
Case $Home
Navigate(GetTab(), "Home")
Case $OpenTab1
OpenTab($Count)
Case $OpenTab2
OpenTab($Count, "Home")
Case $Cut
_IEAction($oIE[GetTab()], "cut")
Case $Copy
_IEAction($oIE[GetTab()], "copy")
Case $Paste
_IEAction($oIE[GetTab()], "paste")
Case $Selectall
_GUICtrlTab_SetCurFocus($CreateTab, GetTab() - 1)
_IEAction($oIE[GetTab()], "selectall")
Case $ChangeHomePage
$hPage = InputBox("Home Page", "Set default home page :", $HomePage, "", 200, 130)
If Not @error Then
$HomePage = $hPage
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\My Web Browser", "Home Page", "REG_SZ", $HomePage)
EndIf
Case $NewTab
OpenTab($Count, "Home")
Case $ShowSource
If FileExists(@TempDir & "\Source.txt") Then FileDelete(@TempDir & "\Source.txt")
$Source = _IEDocReadHTML($oIE[GetTab()])
FileWrite(@TempDir & "\Source.txt", $Source)
ShellExecute(@TempDir & "\Source.txt")
EndSwitch
TestHistory(GetTab())
CheckTitle()
CheckStatusBar()
NavigateCheck()
Sleep(10)
WEnd
Func CheckTitle()
$CurrentTitle = _IEPropertyGet($oIE[GetTab()], "title")
If $CurrentTitle <> $Title2 Then
WinSetTitle($Form, "", $CurrentTitle & " - " & $Title)
$Title2 = $CurrentTitle
EndIf
EndFunc ;==>CheckTitle
Func CheckStatusBar()
If _IEPropertyGet($oIE[GetTab()], "busy") And $Status2 <> _IEPropertyGet($oIE[GetTab()], "locationurl") Then
_GUICtrlStatusBar_SetText($StatusBar, "Opening page " & _IEPropertyGet($oIE[GetTab()], "locationurl") & "...")
GUICtrlSetState($Stop, $GUI_ENABLE)
$Status2 = _IEPropertyGet($oIE[GetTab()], "locationurl")
ElseIf Not _IEPropertyGet($oIE[GetTab()], "busy") And $Status2 <> "" Then
_GUICtrlStatusBar_SetText($StatusBar, " ")
GUICtrlSetState($Stop, $GUI_DISABLE)
$Status2 = ""
EndIf
EndFunc ;==>CheckStatusBar
Func OpenTab($oNum, $oLink = "")
If $Count > 10 Then
MsgBox(0, "Error", "You may only have 10 tabs open at one time")
Return @error
EndIf
$Count += 1
$backstack[$oNum][0] = 0
$Tab[$oNum] = GUICtrlCreateTabItem($oNum)
$oIE[$oNum] = _IECreateEmbedded()
$Obj[$oNum] = GUICtrlCreateObj($oIE[$oNum], $TabPos1 + 5, $TabPos2 + 25, $TabPos3 - 10, $TabPos4 - 80)
$flasher[$oNum] = GUICtrlCreateEdit("", $TabPos1 + 5, $TabPos2 + 25, $TabPos3 - 10, $TabPos4 - 80)
GUICtrlSetState($flasher[$oNum], $GUI_HIDE)
Navigate($oNum, $oLink)
TestHistory($oNum)
If $init = 0 Then
_GUICtrlTab_SetCurSel($CreateTab, $Count - 2)
EndIf
EndFunc ;==>OpenTab
Func Navigate($nNum, $nLink)
If $nLink = "" Then
$nLink = "about:blank"
_IENavigate($oIE[$nNum], $nLink, 0)
GUICtrlSetData($Tab[$nNum], "Blank Page")
Else
If $nLink = "Home" Then $nLink = $HomePage
_IENavigate($oIE[$nNum], $nLink, 0)
$nLink = StringReplace($nLink, "http://", "")
$nLink = StringReplace($nLink, "www.", "")
If StringInStr($nLink, "/") Then
$nLink = StringSplit($nLink, "/")
$nLink = $nLink[1]
EndIf
If StringLen($nLink) > 25 Then $nLink = StringLeft($nLink, 25) & "..."
GUICtrlSetData($Tab[$nNum], $nLink)
EndIf
EndFunc ;==>Navigate
Func NavigateCheck()
If _IsPressed("0D") And ControlGetFocus($Form) = "Edit1" Then
Navigate(GetTab(), GUICtrlRead($Input))
GUICtrlSetState($Input, $GUI_FOCUS)
EndIf
EndFunc ;==>NavigateCheck
Func CheckHomePage()
$hPage = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\My Web Browser", "Home Page")
If @error Then $hPage = "http://www.google.com"
Return $hPage
EndFunc
Func GetTab()
Return _GUICtrlTab_GetCurSel($CreateTab) + 1
EndFunc ;==>GetTab
Func TestHistory($nNum)
If IsArray($backstack) = 0 Then Return
If $backstack[$nNum][0] = 0 Then
If _IEPropertyGet($oIE[$nNum], "locationurl") <> "" Then
$backstack[$nNum][0] += 1
$backstack[$nNum][$backstack[$nNum][0]] = _IEPropertyGet($oIE[$nNum], "locationurl")
EndIf
EndIf
If $backstack[$nNum][$backstack[$nNum][0]] <> _IEPropertyGet($oIE[$nNum], "locationurl") And "" <> _IEPropertyGet($oIE[$nNum], "locationurl") And _IEPropertyGet($oIE[$nNum], "locationurl") <> $backstack[$nNum][$backstack[$nNum][0]] Then
$backstack[$nNum][0] += 1
$newurl = _IEPropertyGet($oIE[$nNum], "locationurl")
If $backstack[$nNum][0] + 1 > UBound($backstack, 2) Then ReDim $backstack[11][$backstack[$nNum][0] + 1]
If $backstack[$nNum][$backstack[$nNum][0]] <> "" Then
For $avar = $backstack[$nNum][0] To UBound($backstack, 2) - 1
$backstack[$nNum][$avar] = ""
Next
EndIf
$backstack[$nNum][$backstack[$nNum][0]] = $newurl
While _IEPropertyGet($oIE[$nNum], "locationurl") <> $backstack[$nNum][$backstack[$nNum][0]]
Sleep(10)
WEnd
If $frskip = 0 Then
FlashRefresh($nNum)
Else
$frskip = 0
EndIf
EndIf
NavButtons($nNum)
EndFunc ;==>TestHistory
Func NavButtons($nNum)
If $backstack[$nNum][0] > 1 And GUICtrlGetState($Back) <> 80 Then
GUICtrlSetState($Back, $GUI_ENABLE)
GUICtrlSetState($Back2, $GUI_ENABLE)
EndIf
If $backstack[$nNum][0] = 1 And GUICtrlGetState($Back) <> 144 Then
GUICtrlSetState($Back, $GUI_DISABLE)
GUICtrlSetState($Back2, $GUI_DISABLE)
EndIf
If UBound($backstack, 2) - 1 > $backstack[$nNum][0] Then
If $backstack[$nNum][$backstack[$nNum][0] + 1] = "" Then
If GUICtrlGetState($Forward) <> 144 Then
GUICtrlSetState($Forward, $GUI_DISABLE)
GUICtrlSetState($Forward2, $GUI_DISABLE)
EndIf
Else
If GUICtrlGetState($Forward) <> 80 Then
GUICtrlSetState($Forward, $GUI_ENABLE)
GUICtrlSetState($Forward2, $GUI_ENABLE)
EndIf
EndIf
Else
If GUICtrlGetState($Forward) <> 144 Then
GUICtrlSetState($Forward, $GUI_DISABLE)
GUICtrlSetState($Forward2, $GUI_DISABLE)
EndIf
EndIf
EndFunc ;==>NavButtons
Func HistoryBack($nNum)
GUICtrlSetState($Back, $GUI_DISABLE)
GUICtrlSetState($Back2, $GUI_DISABLE)
$backstack[$nNum][0] -= 1
Navigate($nNum, $backstack[$nNum][$backstack[$nNum][0]])
While _IEPropertyGet($oIE[$nNum], "locationurl") <> $backstack[$nNum][$backstack[$nNum][0]]
Sleep(10)
WEnd
$frskip = 1
TestHistory($nNum)
FlashRefresh($nNum)
EndFunc ;==>HistoryBack
Func HistoryForward($nNum)
GUICtrlSetState($Forward, $GUI_DISABLE)
GUICtrlSetState($Forward2, $GUI_DISABLE)
$backstack[$nNum][0] += 1
Navigate($nNum, $backstack[$nNum][$backstack[$nNum][0]])
While _IEPropertyGet($oIE[$nNum], "locationurl") <> $backstack[$nNum][$backstack[$nNum][0]]
Sleep(10)
WEnd
$frskip = 1
TestHistory($nNum)
FlashRefresh($nNum)
EndFunc ;==>HistoryForward
Func Test()
_ArrayDisplay($backstack)
EndFunc ;==>Test
Func FlashRefresh($nNum)
GUICtrlSetState($flasher[$nNum], $GUI_SHOW)
GUICtrlSetState($flasher[$nNum], $GUI_HIDE)
_GUICtrlTab_DeselectAll($CreateTab, False)
EndFunc ;==>FlashRefresh