Jump to content

Strange IE Refresh problem


Jex
 Share

Recommended Posts

Posted Image

If you open tab 3 (autoitscript.com) and press Refresh button, script freeze.

@@ Trace(62) : $msg = GUIGetMsg()

>Error code: 0

@@ Trace(64) : Switch $msg

>Error code: 0

@@ Trace(87) : _IEAction($oIE[GetTab()], "refresh")

>Error code: 0

@@ Trace(181) : Return _GUICtrlTab_GetCurSel($CreateTab) + 1

In here script freeze, i can't understand why?

#include <GUIConstants.au3>
#include <GuiTab.au3>
#include <IE.au3>
#include <GuiStatusBar.au3>

Global $Tab[10], $oIE[10], $Obj[10]
Global $Title = "My Web Browser", $TabPos1 = 5, $TabPos2 = 35, $TabPos3 = 850, $TabPos4 = 650, $Status = 0, $Title2, $Status2 = ""

$Form = GUICreate($Title, $TabPos3 + 10, $TabPos4 + 30)
$FileMenu = GUICtrlCreateMenu("File")
$FileOpenTab = GUICtrlCreateMenuItem("New Tab", $FileMenu)
$EditMenu = GUICtrlCreateMenu("Edit")
$StatusBar = _GUICtrlStatusBar_Create($Form)
Local $aParts[1] = [500]
_GUICtrlStatusBar_SetParts($StatusBar, $aParts)
$Input = GUICtrlCreateInput("", 7, 7, 305, 22)
$Go = GUICtrlCreateButton("Go", 320, 5, 35, 25, 0)
$Back = GUICtrlCreateButton("Back", 360, 5, 43, 25, 0)
$Forward = GUICtrlCreateButton("Forward", 408, 5, 59, 25, 0)
$Stop = GUICtrlCreateButton("Stop", 472, 5, 43, 25, 0)
$Refresh = GUICtrlCreateButton("Refresh", 520, 5, 59, 25, 0)
$Home = GUICtrlCreateButton("Home", 584, 5, 43, 25, 0)
$CreateTab = GUICtrlCreateTab($TabPos1, $TabPos2, $TabPos3, $TabPos4 - 50)
OpenTab(1, "http://www.google.com")
OpenTab(2, "http://www.yahoo.com")
OpenTab(3, "http://www.autoitscript.com/forum/index.php")
GUISetState()
Sleep(3000)
WinSetState($Form, "", @SW_HIDE)
WinSetState($Form, "", @SW_SHOW)

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Go
            Navigate(GetTab(), GUICtrlRead($Input))
        Case $Back
            _IEAction($oIE[GetTab()], "back")
        Case $Forward
            _IEAction($oIE[GetTab()], "forward")
        Case $Stop
            _IEAction($oIE[GetTab()], "stop")
        Case $Refresh
            _IEAction($oIE[GetTab()], "refresh")
        Case $Home
            _IEAction($oIE[GetTab()], "home")
    EndSwitch
    CheckTitle()
    CheckStatusBar()
WEnd

Func CheckTitle()
    $CurrentTitle = _IEPropertyGet($oIE[GetTab()], "title")
    If $CurrentTitle <> $Title2 Then
        WinSetTitle($Form, "", $CurrentTitle & " - " & $Title)
        $Title2 = $CurrentTitle
    EndIf
EndFunc

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

Func OpenTab($oNum, $oLink = "")
    $Tab[$oNum] = GUICtrlCreateTabItem($oNum)
    $oIE[$oNum] = _IECreateEmbedded()
    $Obj[$oNum] = GUICtrlCreateObj($oIE[$oNum], $TabPos1 + 5, $TabPos2 + 25, $TabPos3 - 10, $TabPos4 - 80)
    If $oLink <> "" Then
        Navigate($oNum, $oLink)
    EndIf
EndFunc   ;==>Open

Func Navigate($nNum, $nLink)
    _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)
EndFunc   ;==>Navigate

Func GetTab()
    Return _GUICtrlTab_GetCurSel($CreateTab) + 1
EndFunc
Edited by Jex
Link to comment
Share on other sites

@Jex, I was working on building an array for the history since I don't know if there is a good way to enumerate the history backstack and forwardstack. This is just what I have at the end of my night, it is far from done, but you can press Alt-t to fire the test function to see the array that navigation is building.

I first tried grabbing the history length from the object, but that was very apparent it would do quirky things.

This should work fine when it is done... just gotta go spend time with the girl before she gets too mad LOL

I will be back tomorrow to work on it some more.

Just food for thought:

#include <GUIConstants.au3>
#include <GuiTab.au3>
#include <IE.au3>
#include <GuiStatusBar.au3>
#include <array.au3>
HotKeySet("!t", "test")
Global $Tab[10], $oIE[10], $Obj[10]
Global $Title = "My Web Browser", $TabPos1 = 5, $TabPos2 = 35, $TabPos3 = 850, $TabPos4 = 650, $Status = 0, $Title2, $Status2 = ""
Global $backstack[4][1]
$backstack[1][0] = 0
$backstack[2][0] = 0
$backstack[3][0] = 0

$Form = GUICreate($Title, $TabPos3 + 10, $TabPos4 + 30)
$FileMenu = GUICtrlCreateMenu("File")
$FileOpenTab = GUICtrlCreateMenuItem("New Tab", $FileMenu)
$EditMenu = GUICtrlCreateMenu("Edit")
$StatusBar = _GUICtrlStatusBar_Create($Form)
Local $aParts[1] = [500]
_GUICtrlStatusBar_SetParts($StatusBar, $aParts)
$Input = GUICtrlCreateInput("", 7, 7, 305, 22)
$Go = GUICtrlCreateButton("Go", 320, 5, 35, 25, 0)
$Back = GUICtrlCreateButton("Back", 360, 5, 43, 25, 0)
$Forward = GUICtrlCreateButton("Forward", 408, 5, 59, 25, 0)
$Stop = GUICtrlCreateButton("Stop", 472, 5, 43, 25, 0)
$Refresh = GUICtrlCreateButton("Refresh", 520, 5, 59, 25, 0)
$Home = GUICtrlCreateButton("Home", 584, 5, 43, 25, 0)
$CreateTab = GUICtrlCreateTab($TabPos1, $TabPos2, $TabPos3, $TabPos4 - 50)
GUICtrlSetState($Back, $GUI_DISABLE)
OpenTab(1, "http://www.google.com")
OpenTab(2, "http://www.yahoo.com")
OpenTab(3, "http://www.autoitscript.com/forum/index.php")
GUISetState()
Sleep(3000)
WinSetState($Form, "", @SW_HIDE)
WinSetState($Form, "", @SW_SHOW)
$backstack[1][1] = "http://www.google.com"
$backstack[2][1] = "http://www.yahoo.com"
$backstack[3][1] = "http://www.autoitscript.com/forum/index.php"

While 1
    

    
    
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Go
            Navigate(GetTab(), GUICtrlRead($Input))
        Case $Back
            _IEAction($oIE[GetTab()], "back")
        Case $Forward
            _IEAction($oIE[GetTab()], "forward")
        Case $Stop
            _IEAction($oIE[GetTab()], "stop")
        Case $Refresh
            _IEAction($oIE[GetTab()], "refresh")
        Case $Home
            _IEAction($oIE[GetTab()], "home")
    EndSwitch
    CheckTitle()
    CheckStatusBar()
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 = "")
    $Tab[$oNum] = GUICtrlCreateTabItem($oNum)
    $oIE[$oNum] = _IECreateEmbedded()
    $Obj[$oNum] = GUICtrlCreateObj($oIE[$oNum], $TabPos1 + 5, $TabPos2 + 25, $TabPos3 - 10, $TabPos4 - 80)
    If $oLink <> "" Then
        Navigate($oNum, $oLink)
    EndIf
EndFunc   ;==>OpenTab

Func Navigate($nNum, $nLink)
    _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)
    testhistory( $nNum )
EndFunc   ;==>Navigate

Func GetTab()
    Return _GUICtrlTab_GetCurSel($CreateTab) + 1
EndFunc   ;==>GetTab

Func testhistory( $nNum )
    $backstack[$nNum][0] += 1
;~  $oldurl = _IEPropertyGet( $oIE[$nNum], "locationurl" )
    $oldurl = GUICtrlRead($Input)
    If $backstack[$nNum][0] + 1 > UBound( $backstack, 2 ) Then ReDim $backstack[4][$backstack[$nNum][0] + 1]
    $backstack[$nNum][$backstack[$nNum][0]] = $oldurl
EndFunc   ;==>testhistory
Func test()
    _ArrayDisplay( $backstack )
EndFunc
Link to comment
Share on other sites

Hmm... your code seems to work fine for me. Clicked on 3rd tab, hit refresh, and no problems whatsoever.

After press refresh, page refreshing but script stop after refresh. I can't understand why... I think bug.

danwilli Posted Today, 05:14 AM

what version are you using?

I have IE6 on XP SP2, AutoIt 3.2.0.10

@Jex, I was working on building an array for the history since I don't know if there is a good way to enumerate the history backstack and forwardstack. This is just what I have at the end of my night, it is far from done, but you can press Alt-t to fire the test function to see the array that navigation is building.

I first tried grabbing the history length from the object, but that was very apparent it would do quirky things.

This should work fine when it is done... just gotta go spend time with the girl before she gets too mad LOL

I will be back tomorrow to work on it some more.

Nice work :blink: but that method can't work good i think. Because your function only grab link if navigate function called. I mean if you press link in page your function not grab that link :)

But nice idea that function will be very usefull for ie scripts because without history, back and forward buttons crash script.

By the way refresh button some times freeze script. Especially in tab3 :P

And i can't find solution because i think that bug..? Nothing wrong in my script for refresh.

Edit : Ah now i'm understand you created that history thing for adress bar drop down menu. Not for forward, back...

I'm added buttons for dropdown menus.

#include <GUIConstants.au3>
#include <GuiTab.au3>
#include <IE.au3>
#include <GuiStatusBar.au3>
#include <array.au3>
HotKeySet("!t", "test")
Global $Tab[10], $oIE[10], $Obj[10], $backstack[4][1]
Global $Title = "My Web Browser", $TabPos1 = 5, $TabPos2 = 35, $TabPos3 = 850, $TabPos4 = 650, $Status = 0, $Title2, $Status2 = "", $First = 1
$backstack[1][0] = 0
$backstack[2][0] = 0
$backstack[3][0] = 0

$Form = GUICreate($Title, $TabPos3 + 10, $TabPos4 + 30)
$FileMenu = GUICtrlCreateMenu("File")
$FileOpenTab = GUICtrlCreateMenuItem("New Tab", $FileMenu)
$EditMenu = GUICtrlCreateMenu("Edit")
$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, 0)
$Back = GUICtrlCreateButton("Back", 376, 5, 43, 25, 0)
$Forward = GUICtrlCreateButton("Forward", 440, 5, 59, 25, 0)
$Stop = GUICtrlCreateButton("Stop", 520, 5, 43, 25, 0)
$Refresh = GUICtrlCreateButton("Refresh", 568, 5, 59, 25, 0)
$Home = GUICtrlCreateButton("Home", 632, 5, 43, 25, 0)
$Back2 = GUICtrlCreateButton("v", 418, 5, 17, 25)
$Forward2 = GUICtrlCreateButton("v", 498, 5, 17, 25)
$Go2 = GUICtrlCreateButton("v", 320, 5, 17, 25, 0)
$CloseTab = GUICtrlCreateButton("X", 832, 36, 19, 17, 0)
$CreateTab = GUICtrlCreateTab($TabPos1, $TabPos2, $TabPos3, $TabPos4 - 50)
OpenTab(1, "http://www.google.com")
OpenTab(2, "http://www.yahoo.com")
OpenTab(3, "http://www.autoitscript.com/forum/index.php")
GUISetState()
Sleep(3000)
WinSetState($Form, "", @SW_HIDE)
WinSetState($Form, "", @SW_SHOW)
$backstack[1][1] = "http://www.google.com"
$backstack[2][1] = "http://www.yahoo.com"
$backstack[3][1] = "http://www.autoitscript.com/forum/index.php"

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Go
            Navigate(GetTab(), GUICtrlRead($Input))
        Case $Back
            _IEAction($oIE[GetTab()], "back")
        Case $Forward
            _IEAction($oIE[GetTab()], "forward")
        Case $Stop
            _IEAction($oIE[GetTab()], "stop")
        Case $Refresh
            _IEAction($oIE[GetTab()], "refresh")
        Case $Home
            _IEAction($oIE[GetTab()], "home")
    EndSwitch
    If $First = 1 Then ;Return $o_object.document.title
                       ;Return $o_object.document^ ERROR
        Sleep(1000)
        $First = 0
    EndIf
    CheckTitle()
    CheckStatusBar()
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 = "")
    $Tab[$oNum] = GUICtrlCreateTabItem($oNum)
    $oIE[$oNum] = _IECreateEmbedded()
    $Obj[$oNum] = GUICtrlCreateObj($oIE[$oNum], $TabPos1 + 5, $TabPos2 + 25, $TabPos3 - 10, $TabPos4 - 80)
    If $oLink <> "" Then
        Navigate($oNum, $oLink)
    EndIf
EndFunc   ;==>OpenTab

Func Navigate($nNum, $nLink)
    _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)
    testhistory($nNum)
EndFunc   ;==>Navigate

Func GetTab()
    Return _GUICtrlTab_GetCurSel($CreateTab) + 1
EndFunc   ;==>GetTab

Func testhistory($nNum)
    $backstack[$nNum][0] += 1
;~  $oldurl = _IEPropertyGet( $oIE[$nNum], "locationurl" )
    $oldurl = GUICtrlRead($Input)
    If $backstack[$nNum][0] + 1 > UBound($backstack, 2) Then ReDim $backstack[4][$backstack[$nNum][0] + 1]
    $backstack[$nNum][$backstack[$nNum][0]] = $oldurl
EndFunc   ;==>testhistory

Func test()
    _ArrayDisplay($backstack)
EndFunc   ;==>test
Edited by Jex
Link to comment
Share on other sites

I see what you mean there Jex, I will use a different method for building the array. I think I will use the "locationurl" property, and each time it changes, add it to the array.

Also... with your errors,

I cannot help but notice that you have nothing handling your IE errors. I just use the built in ones. Put this line in after your includes, and let me know if it solved the problem:

_IEErrorHandlerRegister()
Link to comment
Share on other sites

Jex, I have updated the history stack I was working on.

All the history seems to function great now, let me know what you think.

Also, I am trying to find out what is with the blank page displays in IE. Having the whole GUI hide and show is a really poor workaround.

EDIT: I found a better work around suggested by Dale ( code updated )

#include <GUIConstants.au3>
#include <GuiTab.au3>
#include <IE.au3>
#include <GuiStatusBar.au3>
#include <array.au3>
HotKeySet("!t", "test")
Global $Tab[10], $oIE[10], $Obj[10], $flasher[10]
Global $Title = "My Web Browser", $TabPos1 = 5, $TabPos2 = 35, $TabPos3 = 850, $TabPos4 = 650, $Status = 0, $Title2, $Status2 = "", $frskip = 0
Global $backstack[4][2]
$backstack[1][0] = 1
$backstack[2][0] = 1
$backstack[3][0] = 1
_IEErrorHandlerRegister()
$Form = GUICreate($Title, $TabPos3 + 10, $TabPos4 + 30)
$FileMenu = GUICtrlCreateMenu("File")
$FileOpenTab = GUICtrlCreateMenuItem("New Tab", $FileMenu)
$EditMenu = GUICtrlCreateMenu("Edit")
$StatusBar = _GUICtrlStatusBar_Create($Form)
Local $aParts[1] = [500]
_GUICtrlStatusBar_SetParts($StatusBar, $aParts)
$Input = GUICtrlCreateInput("", 7, 7, 305, 22)
$Go = GUICtrlCreateButton("Go", 320, 5, 35, 25, 0)
$Back = GUICtrlCreateButton("Back", 360, 5, 43, 25, 0)
$Forward = GUICtrlCreateButton("Forward", 408, 5, 59, 25, 0)
$Stop = GUICtrlCreateButton("Stop", 472, 5, 43, 25, 0)
$Refresh = GUICtrlCreateButton("Refresh", 520, 5, 59, 25, 0)
$Home = GUICtrlCreateButton("Home", 584, 5, 43, 25, 0)
$CreateTab = GUICtrlCreateTab($TabPos1, $TabPos2, $TabPos3, $TabPos4 - 50)
GUICtrlSetState($Back, $GUI_DISABLE)
GUICtrlSetState($Forward, $GUI_DISABLE)
OpenTab(1, "http://www.google.com/")
OpenTab(2, "http://www.yahoo.com/")
OpenTab(3, "http://www.autoitscript.com/forum/index.php")
GUISetState()
$backstack[1][1] = "http://www.google.com/"
$backstack[2][1] = "http://www.yahoo.com/"
$backstack[3][1] = "http://www.autoitscript.com/forum/index.php"
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
            _IEAction($oIE[GetTab()], "home")
    EndSwitch
    testhistory(GetTab())
    CheckTitle()
    CheckStatusBar()
    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 = "")
    $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)
    If $oLink <> "" Then
        Navigate($oNum, $oLink)
    EndIf
EndFunc   ;==>OpenTab
Func Navigate($nNum, $nLink)
    _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)
EndFunc   ;==>Navigate

Func GetTab()
    Return _GUICtrlTab_GetCurSel($CreateTab) + 1
EndFunc   ;==>GetTab

Func testhistory($nNum)
    If $backstack[$nNum][$backstack[$nNum][0]] <> _IEPropertyGet($oIE[$nNum], "locationurl") And "" <> _IEPropertyGet($oIE[$nNum], "locationurl") Then
        $backstack[$nNum][0] += 1
        $newurl = _IEPropertyGet($oIE[$nNum], "locationurl")
        If $backstack[$nNum][0] + 1 > UBound($backstack, 2) Then ReDim $backstack[4][$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
        If $frskip = 0 Then
            flashrefresh($nNum)
        Else
            $frskip = 0
        EndIf
    EndIf
    If $backstack[$nNum][0] > 1 And GUICtrlGetState($Back) <> 80 Then GUICtrlSetState($Back, $GUI_ENABLE)
    If $backstack[$nNum][0] = 1 And GUICtrlGetState($Back) <> 144 Then GUICtrlSetState($Back, $GUI_DISABLE)
    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)
        Else
            If GUICtrlGetState($Forward) <> 80 Then GUICtrlSetState($Forward, $GUI_ENABLE)
        EndIf
    Else
        If GUICtrlGetState($Forward) <> 144 Then GUICtrlSetState($Forward, $GUI_DISABLE)
    EndIf
EndFunc   ;==>testhistory
Func historyback($nNum)
    GUICtrlSetState($Back, $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)
    $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)
EndFunc   ;==>flashrefresh
Edited by danwilli
Link to comment
Share on other sites

I see what you mean there Jex, I will use a different method for building the array. I think I will use the "locationurl" property, and each time it changes, add it to the array.

Also... with your errors,

I cannot help but notice that you have nothing handling your IE errors. I just use the built in ones. Put this line in after your includes, and let me know if it solved the problem:

_IEErrorHandlerRegister()oÝ÷ Ûú®¢×¢Û(÷¦ºéyÆ®±é趯yê뢺®¢×{!j÷®¥Ö­yÛaz¬¶ò²Ö³
+)à¢p%Ø^+-¢¼¬y鬶îËb¢x+y«g£   ^¶g¤0«r¢ëayÊjkkÊ)à¶âÚ.·Z¶+0Ømæåjy)jÊek+"jø§Ø^Â%xe'^jwl"±ªÞjYr¦+Âäjº.Ñ!2¢éÝi·­µê𢹮§vË ë-yÖò
©^r^ºZµçªê-xß»-µ¦ÁiɺÛhéÚnWºØZ½éím§$¥¨û^®ËZ®Û®*mjwb~)©­ë,+â«®ÚÛ®*m~·Íànµìzm«p¢¹"Þ¯((¡Ó^Á¹ZJZçb²ZÉø±ëa¡ÚÚ­érv+)¬©ä¥¨nëp¢¹"(¡Ò7ög×Ê«±Êâ¦ÙèÁ©ÝöÚrF§uú+ÁªÝnëm¢{©àzËZµëazvÚrM×诫wfî¶Ú'±ÈZ­¢¡Ê¯x-«^®º+²)쵪í±Êâ¦Ö®¶­sbÒÒb3c#²4ôÒW'&÷"Væ6÷VçFW&VBâVæWræS0¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%67&FÆæRÒ3#S¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W$WÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W"Òc¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%väFW67&FöâÒf&&ÆR×W7B&RöbGRb33´ö&¦V7Bb33²à¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$FW67&FöâÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%6÷W&6RÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇfÆRÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇ6öçFWBÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$Æ7DFÆÄW'&÷"Ò ¢ÒÒb3c#²4ôÒW'&÷"Væ6÷VçFW&VBâVæWræS0¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%67&FÆæRÒ3#S¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W$WÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W"Òc¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%väFW67&FöâÒf&&ÆR×W7B&RöbGRb33´ö&¦V7Bb33²à¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$FW67&FöâÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%6÷W&6RÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇfÆRÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇ6öçFWBÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$Æ7DFÆÄW'&÷"Ò ¢ÒÒb3c#²4ôÒW'&÷"Væ6÷VçFW&VBâVæWræS0¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%67&FÆæRÒ3#S¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W$WÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W"Òc¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%väFW67&FöâÒf&&ÆR×W7B&RöbGRb33´ö&¦V7Bb33²à¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$FW67&FöâÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%6÷W&6RÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇfÆRÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇ6öçFWBÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$Æ7DFÆÄW'&÷"Ò ¢ÒÒb3c#²4ôÒW'&÷"Væ6÷VçFW&VBâVæWræS0¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%67&FÆæRÒ3#S¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W$WÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W"Òc¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%väFW67&FöâÒf&&ÆR×W7B&RöbGRb33´ö&¦V7Bb33²à¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$FW67&FöâÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%6÷W&6RÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇfÆRÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇ6öçFWBÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$Æ7DFÆÄW'&÷"Ò ¢ÒÒb3c#²4ôÒW'&÷"Væ6÷VçFW&VBâVæWræS0¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%67&FÆæRÒ3#S¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W$WÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$çVÖ&W"Òc¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%väFW67&FöâÒf&&ÆR×W7B&RöbGRb33´ö&¦V7Bb33²à¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$FW67&FöâÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷%6÷W&6RÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇfÆRÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$VÇ6öçFWBÒ¢ÒÒÒÒb3c#²b33c´T6öÔW'&÷$Æ7DFÆÄW'&÷"ÒoÝ÷ Ø­ìË*.n±çfÊV¬¶,µçlr¸©µ8Z¶Ç+bÉnuë(éÞ¢nëm¢{ºÛhÉè·
+«­¢+Ø¥¹±Õ±ÐíU%
½¹ÍѹÑ̹ÔÌÐì(¥¹±Õ±ÐíÕ¥Q¹ÔÌÐì(¥¹±Õ±Ðí%¹ÔÌÐì(¥¹±Õ±ÐíÕ¥MÑÑÕÍ    ȹÔÌÐì(¥¹±Õ±ÐíÉÉä¹ÔÌÐì)!½Ñ-åMÐ ÅÕ½ÐìÌÌíÐÅÕ½Ðì°ÅÕ½ÐíÑÍÐÅÕ½Ðì¤)±½°ÀÌØíQlÄÁt°ÀÌØí½%lÄÁt°ÀÌØí=©lÄÁt°ÀÌØí±Í¡ÉlÄÁt)±½°ÀÌØíQ¥Ñ±ôÅÕ½Ðí5ä]    ɽÝÍÈÅÕ½Ðì°ÀÌØíQA½ÌÄôÔ°ÀÌØíQA½ÌÈôÌÔ°ÀÌØíQA½ÌÌôàÔÀ°ÀÌØíQA½ÌÐôØÔÀ°ÀÌØíMÑÑÕÌôÀ°ÀÌØíQ¥Ñ±È°ÀÌØíMÑÑÕÌÈôÅÕ½ÐìÅÕ½Ðì°ÀÌØíÉÍ­¥ÀôÀ)±½°ÀÌØí­ÍÑ­lÑulÉt(ÀÌØí­ÍÑ­lÅulÁtôÄ(ÀÌØí­ÍÑ­lÉulÁtôÄ(ÀÌØí­ÍÑ­lÍulÁtôÄ)}%ÉɽÉ!¹±ÉI¥ÍÑÈ ¤(ÀÌØí½É´ôU%
ÉÑ ÀÌØíQ¥Ñ±°ÀÌØíQA½Ì̬ÄÀ°ÀÌØíQA½ÌЬÌÀ¤(ÀÌØí¥±5¹ÔôU%
Ñɱ
ÉÑ5¹Ô ÅÕ½Ðí¥±ÅÕ½Ðì¤(ÀÌØí¥±=Á¹QôU%
Ñɱ
ÉÑ5¹Õ%Ñ´ ÅÕ½Ðí9ÜQÅÕ½Ðì°ÀÌØí¥±5¹Ô¤(ÀÌØí¥Ñ5¹ÔôU%
Ñɱ
ÉÑ5¹Ô ÅÕ½Ðí¥ÐÅÕ½Ðì¤(ÀÌØíMÑÑÕÍ  Èô}U%
ÑɱMÑÑÕÍ É}
ÉÑ ÀÌØí½É´¤)1½°ÀÌØíAÉÑÍlÅtôlÔÀÁt)}U%
ÑɱMÑÑÕÍ É}MÑAÉÑÌ ÀÌØíMÑÑÕÍ È°ÀÌØíAÉÑ̤(ÀÌØí%¹ÁÕÐôU%
Ñɱ
ÉÑ%¹ÁÕÐ ÅÕ½ÐìÅÕ½Ðì°Ü°Ü°ÌÀÔ°ÈȤ(ÀÌØí¼ôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½Ðí¼ÅÕ½Ðì°ÌÌØ°Ô°ÌÔ°ÈÔ°À¤(ÀÌØí    ¬ôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½Ðí   ¬ÅÕ½Ðì°ÌÜØ°Ô°ÐÌ°ÈÔ°À¤(ÀÌØí½ÉÝÉôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½Ðí½ÉÝÉÅÕ½Ðì°ÐÐÀ°Ô°Ôä°ÈÔ°À¤(ÀÌØíMѽÀôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½ÐíMѽÀÅÕ½Ðì°ÔÈÀ°Ô°ÐÌ°ÈÔ°À¤(ÀÌØíIÉÍ ôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½ÐíIÉÍ ÅÕ½Ðì°ÔØà°Ô°Ôä°ÈÔ°À¤(ÀÌØí!½µôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½Ðí!½µÅÕ½Ðì°ØÌÈ°Ô°ÐÌ°ÈÔ°À¤(ÀÌØí ¬ÈôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½ÐíØÅÕ½Ðì°ÐÄà°Ô°ÄÜ°ÈÔ¤(ÀÌØí½ÉÝÉÈôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½ÐíØÅÕ½Ðì°Ðäà°Ô°ÄÜ°ÈÔ¤(ÀÌØí¼ÈôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½ÐíØÅÕ½Ðì°ÌÈÀ°Ô°ÄÜ°ÈÔ°À¤(ÀÌØí
±½ÍQôU%
Ñɱ
ÉÑ    ÕÑѽ¸ ÅÕ½Ðí`ÅÕ½Ðì°àÌÈ°ÌØ°Ää°ÄÜ°À¤(ÀÌØí
ÉÑQôU%
Ñɱ
ÉÑQ ÀÌØíQA½ÌÄ°ÀÌØíQA½ÌÈ°ÀÌØíQA½ÌÌ°ÀÌØíQA½ÌдÔÀ¤)U%
ÑɱMÑMÑÑ ÀÌØí ¬°ÀÌØíU%}%M   1¤)U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉ°ÀÌØíU%}%M  1¤)U%
ÑɱMÑMÑÑ ÀÌØí ¬È°ÀÌØíU%}%M 1¤)U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉÈ°ÀÌØíU%}%M    1¤)=Á¹Q Ä°ÅÕ½Ðí¡ÑÑÀè¼½ÝÝܹ½½±¹½´¼ÅÕ½Ðì¤)=Á¹Q È°ÅÕ½Ðí¡ÑÑÀè¼½ÝÝܹ塽¼¹½´¼ÅÕ½Ðì¤)=Á¹Q Ì°ÅÕ½Ðí¡ÑÑÀè¼½ÝÝܹÕѽ¥ÑÍÉ¥Áй½´½½ÉÕ´½¥¹à¹Á¡ÀÅÕ½Ðì¤)U%MÑMÑÑ ¤(ÀÌØí­ÍÑ­lÅulÅtôÅÕ½Ðí¡ÑÑÀè¼½ÝÝܹ½½±¹½´¼ÅÕ½Ðì(ÀÌØí­ÍÑ­lÉulÅtôÅÕ½Ðí¡ÑÑÀè¼½ÝÝܹ塽¼¹½´¼ÅÕ½Ðì(ÀÌØí­ÍÑ­lÍulÅtôÅÕ½Ðí¡ÑÑÀè¼½ÝÝܹÕѽ¥ÑÍÉ¥Áй½´½½ÉÕ´½¥¹à¹Á¡ÀÅÕ½Ðì)]¡¥±Ä($ÀÌØíµÍôU%Ñ5Í ¤(%MÝ¥Ñ ÀÌØíµÍ($%
ÍÀÌØíU%}Y9Q}
1=M($$%á¥Ð($%
ÍÀÌØí¼($$%9٥ѡÑQ ¤°U%
ÑɱI ÀÌØí%¹ÁÕФ¤($%
ÍÀÌØí  ¬($$%¡¥ÍѽÉ嬡ÑQ ¤¤($%
ÍÀÌØí½ÉÝÉ($$%¡¥ÍѽÉå½ÉÝÉ¡ÑQ ¤¤($%
ÍÀÌØíMѽÀ($$%}%Ñ¥½¸ ÀÌØí½%mÑQ ¥t°ÅÕ½ÐíÍѽÀÅÕ½Ðì¤($%
ÍÀÌØíIÉÍ ($$%}%Ñ¥½¸ ÀÌØí½%mÑQ ¥t°ÅÕ½ÐíÉÉÍ ÅÕ½Ðì¤($%
ÍÀÌØí!½µ($$%}%Ñ¥½¸ ÀÌØí½%mÑQ ¥t°ÅÕ½Ðí¡½µÅÕ½Ðì¤(%¹MÝ¥Ñ (%ÑÍÑ¡¥ÍѽÉä¡ÑQ ¤¤(%
¡­Q¥Ñ± ¤(%
¡­MÑÑÕÍ   È ¤(%M±À ÄÀ¤)]¹)Õ¹
¡­Q¥Ñ± ¤($ÀÌØí
ÕÉɹÑQ¥Ñ±ô}%AɽÁÉÑåÐ ÀÌØí½%mÑQ ¥t°ÅÕ½ÐíѥѱÅÕ½Ðì¤(%%ÀÌØí
ÕÉɹÑQ¥Ñ±±ÐìÐìÀÌØíQ¥Ñ±ÈQ¡¸($%]¥¹MÑQ¥Ñ± ÀÌØí½É´°ÅÕ½ÐìÅÕ½Ðì°ÀÌØí
ÕÉɹÑQ¥Ñ±µÀìÅÕ½Ðì´ÅÕ½ÐìµÀìÀÌØíQ¥Ñ±¤($$ÀÌØíQ¥Ñ±ÈôÀÌØí
ÕÉɹÑQ¥Ñ±(%¹%)¹Õ¹ìôôÐí
¡­Q¥Ñ±)Õ¹
¡­MÑÑÕÍ   È ¤(%%}%AɽÁÉÑåÐ ÀÌØí½%mÑQ ¥t°ÅÕ½ÐíÕÍäÅÕ½Ð줹ÀÌØíMÑÑÕÌȱÐìÐì}%AɽÁÉÑåÐ ÀÌØí½%mÑQ ¥t°ÅÕ½Ðí±½Ñ¥½¹ÕÉ°ÅÕ½Ðì¤Q¡¸($%}U%
ÑɱMÑÑÕÍ É}MÑQáÐ ÀÌØíMÑÑÕÍ   È°ÅÕ½Ðí=Á¹¥¹ÁÅÕ½ÐìµÀì}%AɽÁÉÑåÐ ÀÌØí½%mÑQ ¥t°ÅÕ½Ðí±½Ñ¥½¹ÕÉ°ÅÕ½Ð줵ÀìÅÕ½Ð츸¸ÅÕ½Ðì¤($%U%
ÑɱMÑMÑÑ ÀÌØíMѽÀ°ÀÌØíU%}9    1¤($$ÀÌØíMÑÑÕÌÈô}%AɽÁÉÑåÐ ÀÌØí½%mÑQ ¥t°ÅÕ½Ðí±½Ñ¥½¹ÕÉ°ÅÕ½Ðì¤(%±Í%9½Ð}%AɽÁÉÑåÐ ÀÌØí½%mÑQ ¥t°ÅÕ½ÐíÕÍäÅÕ½Ð줹ÀÌØíMÑÑÕÌȱÐìÐìÅÕ½ÐìÅÕ½ÐìQ¡¸($%}U%
ÑɱMÑÑÕÍ É}MÑQáÐ ÀÌØíMÑÑÕÍ   È°ÅÕ½ÐìÅÕ½Ðì¤($%U%
ÑɱMÑMÑÑ ÀÌØíMѽÀ°ÀÌØíU%}%M   1¤($$ÀÌØíMÑÑÕÌÈôÅÕ½ÐìÅÕ½Ðì(%¹%)¹Õ¹ìôôÐí
¡­MÑÑÕÍ   È)Õ¹=Á¹Q ÀÌØí½9Õ´°ÀÌØí½1¥¹¬ôÅÕ½ÐìÅÕ½Ðì¤($ÀÌØíQlÀÌØí½9ÕµtôU%
Ñɱ
ÉÑQ%Ñ´ ÀÌØí½9Õ´¤($ÀÌØí½%lÀÌØí½9Õµtô}%
Éѵ ¤($ÀÌØí=©lÀÌØí½9ÕµtôU%
Ñɱ
ÉÑ=¨ ÀÌØí½%lÀÌØí½9Õµt°ÀÌØíQA½ÌĬ԰ÀÌØíQA½ÌȬÈÔ°ÀÌØíQA½ÌÌ´ÄÀ°ÀÌØíQA½ÌдàÀ¤($ÀÌØí±Í¡ÉlÀÌØí½9ÕµtôU%
Ñɱ
ÉѥРÅÕ½ÐìÅÕ½Ðì°ÀÌØíQA½ÌĬ԰ÀÌØíQA½ÌȬÈÔ°ÀÌØíQA½ÌÌ´ÄÀ°ÀÌØíQA½ÌдàÀ¤(%U%
ÑɱMÑMÑÑ ÀÌØí±Í¡ÉlÀÌØí½9Õµt°ÀÌØíU%}!%¤(%%ÀÌØí½1¥¹¬±ÐìÐìÅÕ½ÐìÅÕ½ÐìQ¡¸($%9Ù¥Ñ ÀÌØí½9Õ´°ÀÌØí½1¥¹¬¤(%¹%)¹Õ¹ìôôÐí=Á¹Q)Õ¹9Ù¥Ñ ÀÌØí¹9Õ´°ÀÌØí¹1¥¹¬¤(%}%9Ù¥Ñ ÀÌØí½%lÀÌØí¹9Õµt°ÀÌØí¹1¥¹¬°À¤($ÀÌØí¹1¥¹¬ôMÑÉ¥¹IÁ± ÀÌØí¹1¥¹¬°ÅÕ½Ðí¡ÑÑÀè¼¼ÅÕ½Ðì°ÅÕ½ÐìÅÕ½Ðì¤($ÀÌØí¹1¥¹¬ôMÑÉ¥¹IÁ± ÀÌØí¹1¥¹¬°ÅÕ½ÐíÝÝܸÅÕ½Ðì°ÅÕ½ÐìÅÕ½Ðì¤(%%MÑÉ¥¹%¹MÑÈ ÀÌØí¹1¥¹¬°ÅÕ½Ðì¼ÅÕ½Ðì¤Q¡¸($$ÀÌØí¹1¥¹¬ôMÑÉ¥¹MÁ±¥Ð ÀÌØí¹1¥¹¬°ÅÕ½Ðì¼ÅÕ½Ðì¤($$ÀÌØí¹1¥¹¬ôÀÌØí¹1¥¹­lÅt(%¹%(%%MÑÉ¥¹1¸ ÀÌØí¹1¥¹¬¤ÐìÈÔQ¡¸ÀÌØí¹1¥¹¬ôMÑÉ¥¹1Ð ÀÌØí¹1¥¹¬°ÈÔ¤µÀìÅÕ½Ð츸¸ÅÕ½Ðì(%U%
ÑɱMÑÑ ÀÌØíQlÀÌØí¹9Õµt°ÀÌØí¹1¥¹¬¤)¹Õ¹ìôôÐí9Ù¥Ñ)Õ¹ÑQ ¤(%IÑÕɸ}U%
ÑɱQ}Ñ
ÕÉM° ÀÌØí
ÉÑQ¤¬Ä)¹Õ¹ìôôÐíÑQ)Õ¹ÑÍÑ¡¥ÍѽÉä ÀÌØí¹9Õ´¤(%%ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁut±ÐìÐì}%AɽÁÉÑåÐ ÀÌØí½%lÀÌØí¹9Õµt°ÅÕ½Ðí±½Ñ¥½¹ÕÉ°ÅÕ½Ð줹ÅÕ½ÐìÅÕ½Ðì±ÐìÐì}%AɽÁÉÑåÐ ÀÌØí½%lÀÌØí¹9Õµt°ÅÕ½Ðí±½Ñ¥½¹ÕÉ°ÅÕ½Ðì¤Q¡¸($$ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁt¬ôÄ($$ÀÌØí¹ÝÕÉ°ô}%AɽÁÉÑåÐ ÀÌØí½%lÀÌØí¹9Õµt°ÅÕ½Ðí±½Ñ¥½¹ÕÉ°ÅÕ½Ðì¤($%%ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁt¬ÄÐìU ½Õ¹ ÀÌØí­ÍѬ°È¤Q¡¸I¥´ÀÌØí­ÍÑ­lÑulÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁt¬Åt($%%ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁut±ÐìÐìÅÕ½ÐìÅÕ½ÐìQ¡¸($$%½ÈÀÌØíÙÈôÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁtQ¼U    ½Õ¹ ÀÌØí­ÍѬ°È¤´Ä($$$$ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÀÌØíÙÉtôÅÕ½ÐìÅÕ½Ðì($$%9áÐ($%¹%($$ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁutôÀÌØí¹ÝÕÉ°($%%ÀÌØíÉÍ­¥ÀôÀQ¡¸($$%±Í¡ÉÉÍ  ÀÌØí¹9Õ´¤($%±Í($$$ÀÌØíÉÍ­¥ÀôÀ($%¹%(%¹%(%%ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁtÐìĹU%
ÑɱÑMÑÑ ÀÌØí  ¬¤±ÐìÐìàÀQ¡¸($%U%
ÑɱMÑMÑÑ ÀÌØí ¬°ÀÌØíU%}9    1¤($%U%
ÑɱMÑMÑÑ ÀÌØí ¬È°ÀÌØíU%}9  1¤(%¹%(%%ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁtôĹU%
ÑɱÑMÑÑ ÀÌØí  ¬¤±ÐìÐìÄÐÐQ¡¸($%U%
ÑɱMÑMÑÑ ÀÌØí ¬°ÀÌØíU%}%M   1¤($%U%
ÑɱMÑMÑÑ ÀÌØí ¬È°ÀÌØíU%}%M 1¤(%¹%(%%U    ½Õ¹ ÀÌØí­ÍѬ°È¤´ÄÐìÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁtQ¡¸($%%ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁt¬ÅtôÅÕ½ÐìÅÕ½ÐìQ¡¸($$%%U%
ÑɱÑMÑÑ ÀÌØí½ÉÝɤ±ÐìÐìÄÐÐQ¡¸($$$%U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉ°ÀÌØíU%}%M  1¤($$$%U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉÈ°ÀÌØíU%}%M    1¤($$%¹%($%±Í($$%%U%
ÑɱÑMÑÑ ÀÌØí½ÉÝɤ±ÐìÐìàÀQ¡¸($$$%U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉ°ÀÌØíU%}9   1¤($$$%U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉÈ°ÀÌØíU%}9 1¤($$%¹%($%¹%(%±Í($%%U%
ÑɱÑMÑÑ ÀÌØí½ÉÝɤ±ÐìÐìÄÐÐQ¡¸($$%U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉ°ÀÌØíU%}%M  1¤($$%U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉÈ°ÀÌØíU%}%M    1¤($%¹%(%¹%)¹Õ¹ìôôÐíÑÍÑ¡¥ÍѽÉä)Õ¹¡¥ÍѽÉå¬ ÀÌØí¹9Õ´¤(%U%
ÑɱMÑMÑÑ ÀÌØí ¬°ÀÌØíU%}%M   1¤(%U%
ÑɱMÑMÑÑ ÀÌØí ¬È°ÀÌØíU%}%M 1¤($ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁt´ôÄ(%9Ù¥Ñ ÀÌØí¹9Õ´°ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁut¤(%]¡¥±}%AɽÁÉÑåÐ ÀÌØí½%lÀÌØí¹9Õµt°ÅÕ½Ðí±½Ñ¥½¹ÕÉ°ÅÕ½Ð줱ÐìÐìÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁut($%M±À ÄÀ¤(%]¹($ÀÌØíÉÍ­¥ÀôÄ(%ÑÍÑ¡¥ÍѽÉä ÀÌØí¹9Õ´¤(%±Í¡ÉÉÍ  ÀÌØí¹9Õ´¤)¹Õ¹ìôôÐí¡¥ÍѽÉå¬)Õ¹¡¥ÍѽÉå½ÉÝÉ ÀÌØí¹9Õ´¤(%U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉ°ÀÌØíU%}%M  1¤(%U%
ÑɱMÑMÑÑ ÀÌØí½ÉÝÉÈ°ÀÌØíU%}%M    1¤($ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁt¬ôÄ(%9Ù¥Ñ ÀÌØí¹9Õ´°ÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁut¤(%]¡¥±}%AɽÁÉÑåÐ ÀÌØí½%lÀÌØí¹9Õµt°ÅÕ½Ðí±½Ñ¥½¹ÕÉ°ÅÕ½Ð줱ÐìÐìÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÀÌØí­ÍÑ­lÀÌØí¹9ÕµulÁut($%M±À ÄÀ¤(%]¹($ÀÌØíÉÍ­¥ÀôÄ(%ÑÍÑ¡¥ÍѽÉä ÀÌØí¹9Õ´¤(%±Í¡ÉÉÍ  ÀÌØí¹9Õ´¤)¹Õ¹ìôôÐí¡¥ÍѽÉå½ÉÝÉ)Õ¹ÑÍÐ ¤(%}ÉÉå¥ÍÁ±ä ÀÌØí­ÍѬ¤)¹Õ¹ìôôÐíÑÍÐ)Õ¹±Í¡ÉÉÍ  ÀÌØí¹9Õ´¤(%U%
ÑɱMÑMÑÑ ÀÌØí±Í¡ÉlÀÌØí¹9Õµt°ÀÌØíU%}M!=¤(%U%
ÑɱMÑMÑÑ ÀÌØí±Í¡ÉlÀÌØí¹9Õµt°ÀÌØíU%}!%¤)¹Õ¹ìôôÐí±Í¡ÉÉÍ
Link to comment
Share on other sites

I can't edit last post.

Added edit menu items and open tab now working but for open tab you need edit history function because giving error.

Select all not work true because first need click that page :)

#include <GUIConstants.au3>
#include <GuiTab.au3>
#include <IE.au3>
#include <GuiStatusBar.au3>
#include <array.au3>
HotKeySet("!t", "test")
Global $Tab[10], $oIE[10], $Obj[10], $flasher[10]
Global $Title = "My Web Browser", $TabPos1 = 5, $TabPos2 = 35, $TabPos3 = 850, $TabPos4 = 650, $Status = 0, $Title2, $Status2 = "", $frskip = 0, $Count = 1
Global $backstack[4][2]
$backstack[1][0] = 1
$backstack[2][0] = 1
$backstack[3][0] = 1
_IEErrorHandlerRegister()
$Form = GUICreate($Title, $TabPos3 + 10, $TabPos4 + 30)
$FileMenu = GUICtrlCreateMenu("File")
$FileOpenTab = GUICtrlCreateMenuItem("New Tab", $FileMenu)
$EditMenu = GUICtrlCreateMenu("Edit")
$Cut = GUICtrlCreateMenuItem("Cut", $EditMenu)
$Copy = GUICtrlCreateMenuItem("Copy", $EditMenu)
$Paste = GUICtrlCreateMenuItem("Paste", $EditMenu)
$Sep = GUICtrlCreateMenuItem("", $EditMenu)
$Selectall = GUICtrlCreateMenuItem("Select All", $EditMenu)
$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, 0)
$Back = GUICtrlCreateButton("Back", 376, 5, 43, 25, 0)
$Forward = GUICtrlCreateButton("Forward", 440, 5, 59, 25, 0)
$Stop = GUICtrlCreateButton("Stop", 520, 5, 43, 25, 0)
$Refresh = GUICtrlCreateButton("Refresh", 568, 5, 59, 25, 0)
$Home = GUICtrlCreateButton("Home", 632, 5, 43, 25, 0)
$Back2 = GUICtrlCreateButton("v", 418, 5, 17, 25)
$Forward2 = GUICtrlCreateButton("v", 498, 5, 17, 25)
$Go2 = GUICtrlCreateButton("v", 320, 5, 17, 25, 0)
$CloseTab = GUICtrlCreateButton("X", 832, 36, 19, 17, 0)
$CreateTab = GUICtrlCreateTab($TabPos1, $TabPos2, $TabPos3, $TabPos4 - 50)
GUICtrlSetState($Back, $GUI_DISABLE)
GUICtrlSetState($Forward, $GUI_DISABLE)
GUICtrlSetState($Back2, $GUI_DISABLE)
GUICtrlSetState($Forward2, $GUI_DISABLE)
OpenTab(1, "http://www.google.com/")
OpenTab(2, "http://www.yahoo.com/")
OpenTab(3, "http://www.autoitscript.com/forum/index.php")
GUISetState()
$backstack[1][1] = "http://www.google.com/"
$backstack[2][1] = "http://www.yahoo.com/"
$backstack[3][1] = "http://www.autoitscript.com/forum/index.php"
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
            _IEAction($oIE[GetTab()], "home")
        Case $FileOpenTab
            OpenTab($Count)
            _IEAction($oIE[$Count - 1], "home")
            _GUICtrlTab_SetCurSel($CreateTab, $Count - 2)
        Case $Cut
            _IEAction($oIE[GetTab()], "cut")
        Case $Copy
            _IEAction($oIE[GetTab()], "copy")
        Case $Paste
            _IEAction($oIE[GetTab()], "paste")
        Case $Selectall
            _IEAction($oIE[GetTab()], "selectall")
    EndSwitch
    testhistory(GetTab())
    CheckTitle()
    CheckStatusBar()
    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 Return @error
    $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)
    If $oLink <> "" Then
        Navigate($oNum, $oLink)
    EndIf
    $Count += 1
EndFunc   ;==>OpenTab
Func Navigate($nNum, $nLink)
    _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)
EndFunc   ;==>Navigate
Func GetTab()
    Return _GUICtrlTab_GetCurSel($CreateTab) + 1
EndFunc   ;==>GetTab
Func testhistory($nNum)
    If $backstack[$nNum][$backstack[$nNum][0]] <> _IEPropertyGet($oIE[$nNum], "locationurl") And "" <> _IEPropertyGet($oIE[$nNum], "locationurl") Then
        $backstack[$nNum][0] += 1
        $newurl = _IEPropertyGet($oIE[$nNum], "locationurl")
        If $backstack[$nNum][0] + 1 > UBound($backstack, 2) Then ReDim $backstack[4][$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
        If $frskip = 0 Then
            flashrefresh($nNum)
        Else
            $frskip = 0
        EndIf
    EndIf
    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   ;==>testhistory
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)
EndFunc   ;==>flashrefresh
Edited by Jex
Link to comment
Share on other sites

Okay, it should be stable enough to create tabs and navigate them without crashing.

We need to ask Dale if there is a way to capture the links clicked that open up in a new IE window, so that we can point them back to the original tab or even a new tab, but not a whole new non embedded IE window.

Do we need to capture clicks on the page to do this properly?

Anyways, I will implement the dropdown menu's later too, but for now I just have this working script:

-Added ability to create up to 10 tabs

-Fixed newly created tab display problem (with flash refresh workaround)

-Changed the way the initial $backstack url array is created for each NEW tab

-I think that you should have a new way to store the homepage, rather than just using the one in IE. I have all new tabs pointing to google for now. It would be nice if there was a preference screen where you could tell it, how many initial tabs need to be opened (1 - 10), and what the default "home page" is for each of those.

Things to implement:

- When in the URL edit box, enter should trigger the navigation.

- Drop down menus

- Resize-able GUI

- Fullscreen mode

- Make the delete tab work (this will be a bit tricky, I think we will want to modify the way the next tab number is selected on OpenTab to make this job a bit easier ( I'm thinking an array of used and unused tab numbers, so we can just remove tab numbers and they can then be reused, instead of shifting all the other tabs above it back down), but again it's late, so maybe none of this is making sense LOL)

- ... Dunno, it's late.. cannot think straight, I'm sure there are plenty of others

#include <GUIConstants.au3>
#include <GuiTab.au3>
#include <IE.au3>
#include <GuiStatusBar.au3>
#include <array.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
_IEErrorHandlerRegister()
$Form = GUICreate($Title, $TabPos3 + 10, $TabPos4 + 30)
$FileMenu = GUICtrlCreateMenu("File")
$FileOpenTab = GUICtrlCreateMenuItem("New Tab", $FileMenu)
$EditMenu = GUICtrlCreateMenu("Edit")
$Cut = GUICtrlCreateMenuItem("Cut", $EditMenu)
$Copy = GUICtrlCreateMenuItem("Copy", $EditMenu)
$Paste = GUICtrlCreateMenuItem("Paste", $EditMenu)
$Sep = GUICtrlCreateMenuItem("", $EditMenu)
$Selectall = GUICtrlCreateMenuItem("Select All", $EditMenu)
$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, 0)
$Back = GUICtrlCreateButton("Back", 376, 5, 43, 25, 0)
$Forward = GUICtrlCreateButton("Forward", 440, 5, 59, 25, 0)
$Stop = GUICtrlCreateButton("Stop", 520, 5, 43, 25, 0)
$Refresh = GUICtrlCreateButton("Refresh", 568, 5, 59, 25, 0)
$Home = GUICtrlCreateButton("Home", 632, 5, 43, 25, 0)
$Back2 = GUICtrlCreateButton("v", 418, 5, 17, 25)
$Forward2 = GUICtrlCreateButton("v", 498, 5, 17, 25)
$Go2 = GUICtrlCreateButton("v", 320, 5, 17, 25, 0)
$CloseTab = GUICtrlCreateButton("X", 832, 36, 19, 17, 0)
$CreateTab = GUICtrlCreateTab($TabPos1, $TabPos2, $TabPos3, $TabPos4 - 50)
GUICtrlSetState($Back, $GUI_DISABLE)
GUICtrlSetState($Forward, $GUI_DISABLE)
GUICtrlSetState($Back2, $GUI_DISABLE)
GUICtrlSetState($Forward2, $GUI_DISABLE)
OpenTab(1, "http://www.google.com/")
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
            _IEAction($oIE[GetTab()], "home")
        Case $FileOpenTab
            OpenTab($Count, "google.com")
        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")
    EndSwitch
    testhistory(GetTab())
    CheckTitle()
    CheckStatusBar()
    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 = "about:blank")
    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)
    If $oLink <> "" Then
        Navigate($oNum, $oLink)
        testhistory($oNum)
    EndIf
    If $init = 0 Then
        _GUICtrlTab_SetCurSel($CreateTab, $Count - 2)
    EndIf
EndFunc   ;==>OpenTab
Func Navigate($nNum, $nLink)
    _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)
EndFunc   ;==>Navigate
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
Edited by danwilli
Link to comment
Share on other sites

-Fixed newly created tab display problem (with flash refresh workaround)

Still have display problem example open Yahoo tab and try open new tab 90% have display problem.

-I think that you should have a new way to store the homepage, rather than just using the one in IE. I have all new tabs pointing to google for now. It would be nice if there was a preference screen where you could tell it, how many initial tabs need to be opened (1 - 10), and what the default "home page" is for each of those.

I'm added 2 diffrent new tab menuitem

1. Black page : OpenTab($Count)

2. Home page : OpenTab($Count, "Home")

and added "Change Home Page" menu item. Home page link save there : HKEY_LOCAL_MACHINE\SOFTWARE\My Web Browser

- When in the URL edit box, enter should trigger the navigation.

I'm added NavigateCheck function for check if you focus url edit box and press Enter then navigate page.

- Make the delete tab work (this will be a bit tricky, I think we will want to modify the way the next tab number is selected on OpenTab to make this job a bit easier ( I'm thinking an array of used and unused tab numbers, so we can just remove tab numbers and they can then be reused, instead of shifting all the other tabs above it back down), but again it's late, so maybe none of this is making sense LOL)

To be honest will be difficult to make delete tab work. First we need make very stable browser and later we can add working delete tab button :)

Because black page display and refresh problem still not fixed. ( Atleast in my pc. Because many times have display problem in start script and after create tab. )

Edit2: Added Show page source menu item and new tab button.

By the way still not work true select all. I need focus ie object but i can't find how ( I mean without click that ie page not select all and i don't know how to simulate that click ).

Source :

#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
Edited by Jex
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...