Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Tut] Polski Patcher Na Twój Serwer !


srulian96

Rekomendowane odpowiedzi

Opublikowano

Witam, jako że nie lubię ( i nie umiem ) się rozpisywać od razu przejdę do rzeczy ^^

 

Patcher prezentuje się tak:

 

1. podczas patchowania

fdsgsdgfgs.png

 

2. po spatchowaniu

afgsbrgsnedrhtdnfthmj.png

 

Instrukcja:

 

Pliki zawarte w folderze " Client " ( Patcher.exe & patch.ini )

eeeeeeeeeeeeeeeeeeeeee.png

- wrzuć do głównego katalogu Metin2

 

- skonfiguruj plik " patch.ini " według własnych upodobań

 

 

< Opis patch.ini >

 

linijki:

 

ccccccccccccccccccccch.png

 

1. Autor

2. Link do pliku "pliki.txt" przykładowo - " http://patch.pl/patch/ "

3. Link do stronki która będzie wyświetlała się w oknie patchera przykład - " http://patch.pl/patch.html "

4. Link do stronki która będzie wyświetlała się w oknie Metin2 przykład - " http://patch.pl/patch2.html "

5. Link do rejestracji na która bedzie mozna wejść w oknie Metin2 przykład - " http://patch.pl/reg.php "

qqqqqqqqqqqqqqqqqqqqqqqa.png

 

 

Pliki zawarte w folderze " Server " ( pliki.txt & DSETUP.dll & locale.cfg )

ooooooooooooooo.png

* pliki DSETUP.dll & locale.cfg sa tylko przykładowo - możesz je usunąć / zamienic na swoje ;)

- wrzuć na hosting www ( ścieżka musi być ta sama co wpisana w " config.ini " w 2 linijce :> )

 

<<: Przykład :

 

jeżeli " pliki.txt " wygląda tak:

vvvvvvvvvvvvvvvvvvvvvvv.png

 

pliki na hostingu powinny wyglądać tak:

ssssssssssssssssssssw.png

 

:>>

 

- skonfiguruj plik " pliki.txt " według własnych upodobań

 

- i to już koniec możesz odpalać patchera :P

 

Download:

 

MegaUpload.com

http://www.megaupload.com/?d=QL7Y64GA

 

SpeedyShare.com

http://www.speedyshare.com/files/23285025/Patcher.rar

 

Uploaded.to

http://uploaded.to/file/xys1go

 

Skan:

 

http://www.virustotal.com/pl/analisis/3c1b2b62ceeeabf2d43cec2514ac0dae1395f630b5df1245bbe12c8bc64e0fe5-1278501693

 

* 4 wiry - prawdopodobnie dlatego iż patcher pobiera pliki ( ^^ ) a niektóre antywiry mogą uznać to za wira oO

 

Prosze o 5 oraz + :P

 

* Jest to wersja beta więc wszystkie błędy proszę zgłaszać w tym temacie oraz na pw ;)

SOURCE!

( Nieco innej wersji - wszystko jest w 1 pliku ;> )

 

 

#Include <File.au3>
#Include <GuiConstants.au3>
#include <IE.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#NoTrayIcon
Global $m2ordner = @ScriptDir
Global $ScriptDir = @ScriptDir
Global $TempDir = @TempDir
Global $url = "http://patches.cba.pl/update_patch/"
Global $adurl = "http://patches.cba.pl/update_patch/patch.html"
Global $fensterurl = "http://patches.cba.pl/update_patch/patch2.html"
Global $buttonurl = "http://reg.html"
FileInstall("E:\Nowy folder (3)\main.bmp", @Tempdir&"\main.bmp",1)
FileInstall("E:\Nowy folder (3)\btn_startgame_up.bmp", @Tempdir&"\btn_startgame_up.bmp",1)
FileInstall("E:\Nowy folder (3)\btn_settings_up.bmp", @Tempdir&"\btn_settings_up.bmp",1)
FileInstall("E:\Nowy folder (3)\btn_newaccount_up.bmp", @Tempdir&"\btn_newaccount_up.bmp",1)
FileInstall("E:\Nowy folder (3)\btn_idpwd_up.bmp", @Tempdir&"\btn_idpwd_up.bmp",1)
FileInstall("E:\Nowy folder (3)\btn_quit_up.bmp", @Tempdir&"\btn_quit_up.bmp",1)

Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Isara - Patcher [ by KoDeR ]", 373, 541, 193, 125)
GUISetOnEvent($GUI_EVENT_CLOSE, "_close")
$stat = GUICtrlCreateEdit("", 16, 8, 337, 281)
GUICtrlSetData(-1, "[ Patcher by KoDeR ]"&@CRLF&"Rozpoczynanie patchowania...")
$cancel = GUICtrlCreateButton("Anuluj", 288, 496, 75, 25, 0)
GUICtrlSetOnEvent($cancel, "_close")

$Progress1 = GUICtrlCreateProgress(16, 464, 334, 17)
;16, 312, 340, 13
$oIE = _IECreateEmbedded()
$oIE_ctrl = GUICtrlCreateObj($oIE, 16, 312, 336, 136)
GUISetState(@SW_SHOW)
_IENavigate($oIE, $adurl) 
$Form2 = GUICreate("Isara - Patcher [ by KoDeR ]", 595, 385, 328, 160)
GUISetOnEvent($GUI_EVENT_CLOSE, "_close")
$Pic1 = GUICtrlCreatePic(@Tempdir&"\main.bmp", 0, 0, 593, 382, $BS_BITMAP)
$start = GUICtrlCreateButton("(Not allowed)", 464, 40, 127, 41, $BS_BITMAP)
GUICtrlSetImage(-1, @Tempdir&"\btn_startgame_up.bmp", 1)
GUICtrlSetOnEvent($start, "start")
$config = GUICtrlCreateButton("(Not allowed)", 464, 96, 127, 25, $BS_BITMAP)
GUICtrlSetOnEvent($config, "config")
GUICtrlSetImage(-1, @Tempdir&"\btn_settings_up.bmp", 1)
$seite1 = GUICtrlCreateButton("(Not allowed)", 464, 184, 127, 25, $BS_BITMAP)
GUICtrlSetImage(-1, @Tempdir&"\btn_newaccount_up.bmp", 1)
GUICtrlSetOnEvent($seite1, "seite")
$seite2 = GUICtrlCreateButton("(Not allowed)", 464, 160, 129, 25, $BS_BITMAP)
GUICtrlSetImage(-1,  @Tempdir&"\btn_idpwd_up.bmp", 1)
GUICtrlSetOnEvent($seite2, "seite")
$ende = GUICtrlCreateButton("(Not allowed)", 464, 352, 127, 25, $BS_BITMAP)
GUICtrlSetImage(-1,  @Tempdir&"\btn_quit_up.bmp", 1)
GUICtrlSetOnEvent($ende, "_close")
$oIE1 = _IECreateEmbedded()
$oIE_ctrl1 = GUICtrlCreateObj($oIE1, 8, 8, 456, 376)
_IENavigate($oIE1, $fensterurl)

GUISetState(@SW_HIDE)

Func seite ()
   _IECreate($buttonurl)
EndFunc

func start ()
   run($Scriptdir&"\metin2.bin")
   Exit
EndFunc

Func config ()
   Run($ScriptDir&"\config.exe")
EndFunc


func _close ()
   Exit
EndFunc
Sleep (500)
patch ()


func patch ()
   $file = @TempDir&"\files.txt"
   InetGet( $url&"\files.txt" , $file)
   $lines = _FileCountLines($file)
   If $lines = 0 Then
       MsgBox(48,"Uwaga!","Niewykryto downloadu na serwerze!")
       Exit
   EndIf
   DirCreate("pack")
   DirCreate("BGM")
   DirCreate("lib")
   DirCreate("mark")
   DirCreate("miles")
   DirCreate("screenshot")
   DirCreate("upload")
FileDelete("pack\root.eix")
FileDelete("pack\locale_pl.eix")
   While ($lines >= 1) 
       $datei = FileReadLine($file,$lines)
       GUICtrlSetData($stat,"Sprawdzanie pliku: "& $datei & @CRLF & GUICtrlRead($stat))
	$size_inet = InetGetSize($url&"\"&$datei)
       If FileExists($ScriptDir&"\"&$datei) Then        
           If @error Then
               MsgBox(16 , "Fehler", @error)
           EndIf
           $size_ordner = FileGetSize( $ScriptDir&"\"&$datei)
           If $size_inet <> $size_ordner Then
               GUICtrlSetData($stat,"Pobieranie pliku: "& $datei & @CRLF & GUICtrlRead($stat))
               InetGet($url&$datei , $ScriptDir& "\" & $datei , 1 , 1)
               while 1
                   $hFileSize = FileGetSize($ScriptDir & "\" & $datei) 
                   $iPercent = round ( @InetGetBytesRead  /  $size_inet   *100) 
                   GUICtrlSetData($Progress1, $iPercent) 
               If $hFileSize = $size_inet Then 
               GUICtrlSetData($Progress1, 100)
               ExitLoop
           EndIf
           sleep (50)
       WEnd
       Else
           GUICtrlSetData($stat,"Sprawdzono plik: "& $datei & @CRLF & GUICtrlRead($stat))
           EndIf
       Else
           InetGet($url&$datei,$ScriptDir&"\"&$datei,1,1)
           GUICtrlSetData($stat, "Pobieranie pliku: "& $datei& @CRLF & GUICtrlRead($stat))
           while 1
               $hFileSize = FileGetSize($ScriptDir & "\" & $datei) 

               $iPercent = round ( @InetGetBytesRead  /  $size_inet   *100) 

               GUICtrlSetData($Progress1, $iPercent) 

           If $hFileSize = $size_inet Then 
               GUICtrlSetData($Progress1, 100)
               ExitLoop
           EndIf
           sleep (50)
       WEnd
       EndIf
       sleep (500)
       $lines = $lines-1
   WEnd
   FileDelete($TempDir&"files.txt")
   GUISetState(@SW_HIDE,$Form1)
   GUISetState(@SW_SHOW,$Form2)
while 1
   Sleep(100)
WEnd
EndFunc

 

 

3053080006.png

  • Odpowiedzi 79
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Dzięki!

Przez Ciebie będe mógl na początku OB mojego priva "odchudzić" trochę klienta a pare plików dać do patchera!

GG:5542533

Bez jakichkolwiek danych,proszę nie pisać w sprawie pomocy...

Opublikowano

mozna prosic kod programu?

chodzi Ci o source?

hmmm... pisanie takiego skryptu troche zajmuje ( szczegolnie kiedy niezbyt zna sie na AutoIT :P )

wiec niewiem czy ot tak bylbym w stanie go oddac... ;x

3053080006.png

Opublikowano

JachuPL masz tu Source.

 

Source jest w spoilerze.Liczę na plusika. :P

 

 

Global Const $FC_NOOVERWRITE = 0

Global Const $FC_OVERWRITE = 1

Global Const $FT_MODIFIED = 0

Global Const $FT_CREATED = 1

Global Const $FT_ACCESSED = 2

Global Const $FO_READ = 0

Global Const $FO_APPEND = 1

Global Const $FO_OVERWRITE = 2

Global Const $FO_BINARY = 16

Global Const $FO_UNICODE = 32

Global Const $FO_UTF16_LE = 32

Global Const $FO_UTF16_BE = 64

Global Const $FO_UTF8 = 128

Global Const $FO_UTF8_NOBOM = 256

Global Const $EOF = -1

Global Const $FD_FILEMUSTEXIST = 1

Global Const $FD_PATHMUSTEXIST = 2

Global Const $FD_MULTISELECT = 4

Global Const $FD_PROMPTCREATENEW = 8

Global Const $FD_PROMPTOVERWRITE = 16

Global Const $CREATE_NEW = 1

Global Const $CREATE_ALWAYS = 2

Global Const $OPEN_EXISTING = 3

Global Const $OPEN_ALWAYS = 4

Global Const $TRUNCATE_EXISTING = 5

Global Const $INVALID_SET_FILE_POINTER = -1

Global Const $FILE_BEGIN = 0

Global Const $FILE_CURRENT = 1

Global Const $FILE_END = 2

Global Const $FILE_ATTRIBUTE_READONLY = 1

Global Const $FILE_ATTRIBUTE_HIDDEN = 2

Global Const $FILE_ATTRIBUTE_SYSTEM = 4

Global Const $FILE_ATTRIBUTE_DIRECTORY = 16

Global Const $FILE_ATTRIBUTE_ARCHIVE = 32

Global Const $FILE_ATTRIBUTE_DEVICE = 64

Global Const $FILE_ATTRIBUTE_NORMAL = 128

Global Const $FILE_ATTRIBUTE_TEMPORARY = 256

Global Const $FILE_ATTRIBUTE_SPARSE_FILE = 512

Global Const $FILE_ATTRIBUTE_REPARSE_POINT = 1024

Global Const $FILE_ATTRIBUTE_COMPRESSED = 2048

Global Const $FILE_ATTRIBUTE_OFFLINE = 4096

Global Const $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192

Global Const $FILE_ATTRIBUTE_ENCRYPTED = 16384

Global Const $FILE_SHARE_READ = 1

Global Const $FILE_SHARE_WRITE = 2

Global Const $FILE_SHARE_DELETE = 4

Global Const $GENERIC_ALL = 268435456

Global Const $GENERIC_EXECUTE = 536870912

Global Const $GENERIC_WRITE = 1073741824

Global Const $GENERIC_READ = -2147483648

 

Func _FILECOUNTLINES($SFILEPATH)

Local $HFILE = FileOpen($SFILEPATH, $FO_READ)

If $HFILE = -1 Then Return SetError(1, 0, 0)

Local $SFILECONTENT = StringStripWS(FileRead($HFILE), 2)

FileClose($HFILE)

Local $ATMP

If StringInStr($SFILECONTENT, @LF) Then

$ATMP = StringSplit(StringStripCR($SFILECONTENT), @LF)

ElseIf StringInStr($SFILECONTENT, @CR) Then

$ATMP = StringSplit($SFILECONTENT, @CR)

Else

If StringLen($SFILECONTENT) Then

Return 1

Else

Return SetError(2, 0, 0)

EndIf

EndIf

Return $ATMP[0]

EndFunc

 

 

Func _FILECREATE($SFILEPATH)

Local $HOPENFILE = FileOpen($SFILEPATH, $FO_OVERWRITE)

If $HOPENFILE = -1 Then Return SetError(1, 0, 0)

Local $HWRITEFILE = FileWrite($HOPENFILE, "")

FileClose($HOPENFILE)

If $HWRITEFILE = -1 Then Return SetError(2, 0, 0)

Return 1

EndFunc

 

 

Func _FILELISTTOARRAY($SPATH, $SFILTER = "*", $IFLAG = 0)

Local $HSEARCH, $SFILE, $SFILELIST, $SDELIM = "|"

$SPATH = StringRegExpReplace($SPATH, "[\\/]+\z", "") & "\"

If Not FileExists($SPATH) Then Return SetError(1, 1, "")

If StringRegExp($SFILTER, "[\\/:><\|]|(?s)\A\s*\z") Then Return SetError(2, 2, "")

If Not ($IFLAG = 0 Or $IFLAG = 1 Or $IFLAG = 2) Then Return SetError(3, 3, "")

$HSEARCH = FileFindFirstFile($SPATH & $SFILTER)

If @error Then Return SetError(4, 4, "")

While 1

$SFILE = FileFindNextFile($HSEARCH)

If @error Then ExitLoop

If ($IFLAG + @extended = 2) Then ContinueLoop

$SFILELIST &= $SDELIM & $SFILE

WEnd

FileClose($HSEARCH)

If Not $SFILELIST Then Return SetError(4, 4, "")

Return StringSplit(StringTrimLeft($SFILELIST, 1), "|")

EndFunc

 

 

Func _FILEPRINT($S_FILE, $I_SHOW = @SW_HIDE)

Local $A_RET = DllCall("shell32.dll", "int", "ShellExecuteW", "hwnd", 0, "wstr", "print", "wstr", $S_FILE, "wstr", "", "wstr", "", "int", $I_SHOW)

If @error Then Return SetError(@error, @extended, 0)

If $A_RET[0] <= 32 Then Return SetError(10, $A_RET[0], 0)

Return 1

EndFunc

 

 

Func _FILEREADTOARRAY($SFILEPATH, ByRef $AARRAY)

Local $HFILE = FileOpen($SFILEPATH, $FO_READ)

If $HFILE = -1 Then Return SetError(1, 0, 0)

Local $AFILE = FileRead($HFILE, FileGetSize($SFILEPATH))

If StringRight($AFILE, 1) = @LF Then $AFILE = StringTrimRight($AFILE, 1)

If StringRight($AFILE, 1) = @CR Then $AFILE = StringTrimRight($AFILE, 1)

FileClose($HFILE)

If StringInStr($AFILE, @LF) Then

$AARRAY = StringSplit(StringStripCR($AFILE), @LF)

ElseIf StringInStr($AFILE, @CR) Then

$AARRAY = StringSplit($AFILE, @CR)

Else

If StringLen($AFILE) Then

Dim $AARRAY[2] = [1, $AFILE]

Else

Return SetError(2, 0, 0)

EndIf

EndIf

Return 1

EndFunc

 

 

Func _FILEWRITEFROMARRAY($FILE, $A_ARRAY, $I_BASE = 0, $I_UBOUND = 0)

If Not IsArray($A_ARRAY) Then Return SetError(2, 0, 0)

Local $LAST = UBound($A_ARRAY) - 1

If $I_UBOUND < 1 Or $I_UBOUND > $LAST Then $I_UBOUND = $LAST

If $I_BASE < 0 Or $I_BASE > $LAST Then $I_BASE = 0

Local $HFILE

If IsString($FILE) Then

$HFILE = FileOpen($FILE, $FO_OVERWRITE)

Else

$HFILE = $FILE

EndIf

If $HFILE = -1 Then Return SetError(1, 0, 0)

Local $ERRORSAV = 0

For $X = $I_BASE To $I_UBOUND

If FileWrite($HFILE, $A_ARRAY[$X] & @CRLF) = 0 Then

$ERRORSAV = 3

ExitLoop

EndIf

Next

If IsString($FILE) Then FileClose($HFILE)

If $ERRORSAV Then Return SetError($ERRORSAV, 0, 0)

Return 1

EndFunc

 

 

Func _FILEWRITELOG($SLOGPATH, $SLOGMSG, $IFLAG = -1)

Local $IOPENMODE = $FO_APPEND

Local $SDATENOW = @YEAR & "-" & @MON & "-" & @MDAY

Local $STIMENOW = @HOUR & ":" & @MIN & ":" & @SEC

Local $SMSG = $SDATENOW & " " & $STIMENOW & " : " & $SLOGMSG

If $IFLAG <> -1 Then

$SMSG &= @CRLF & FileRead($SLOGPATH)

$IOPENMODE = $FO_OVERWRITE

EndIf

Local $HOPENFILE = FileOpen($SLOGPATH, $IOPENMODE)

If $HOPENFILE = -1 Then Return SetError(1, 0, 0)

Local $IWRITEFILE = FileWriteLine($HOPENFILE, $SMSG)

Local $IRET = FileClose($HOPENFILE)

If $IWRITEFILE = -1 Then Return SetError(2, $IRET, 0)

Return $IRET

EndFunc

 

 

Func _FILEWRITETOLINE($SFILE, $ILINE, $STEXT, $FOVERWRITE = 0)

If $ILINE <= 0 Then Return SetError(4, 0, 0)

If Not IsString($STEXT) Then

$STEXT = String($STEXT)

If $STEXT = "" Then Return SetError(6, 0, 0)

EndIf

If $FOVERWRITE <> 0 And $FOVERWRITE <> 1 Then Return SetError(5, 0, 0)

If Not FileExists($SFILE) Then Return SetError(2, 0, 0)

Local $SREAD_FILE = FileRead($SFILE)

Local $ASPLIT_FILE = StringSplit(StringStripCR($SREAD_FILE), @LF)

If UBound($ASPLIT_FILE) < $ILINE Then Return SetError(1, 0, 0)

Local $HFILE = FileOpen($SFILE, $FO_OVERWRITE)

If $HFILE = -1 Then Return SetError(3, 0, 0)

$SREAD_FILE = ""

For $I = 1 To $ASPLIT_FILE[0]

If $I = $ILINE Then

If $FOVERWRITE = 1 Then

If $STEXT <> "" Then $SREAD_FILE &= $STEXT & @CRLF

Else

$SREAD_FILE &= $STEXT & @CRLF & $ASPLIT_FILE[$I] & @CRLF

EndIf

ElseIf $I < $ASPLIT_FILE[0] Then

$SREAD_FILE &= $ASPLIT_FILE[$I] & @CRLF

ElseIf $I = $ASPLIT_FILE[0] Then

$SREAD_FILE &= $ASPLIT_FILE[$I]

EndIf

Next

FileWrite($HFILE, $SREAD_FILE)

FileClose($HFILE)

Return 1

EndFunc

 

 

Func _PATHFULL($SRELATIVEPATH, $SBASEPATH = @WorkingDir)

If Not $SRELATIVEPATH Or $SRELATIVEPATH = "." Then Return $SBASEPATH

Local $SFULLPATH = StringReplace($SRELATIVEPATH, "/", "\")

Local Const $SFULLPATHCONST = $SFULLPATH

Local $SPATH

Local $BROOTONLY = StringLeft($SFULLPATH, 1) = "\" And StringMid($SFULLPATH, 2, 1) <> "\"

For $I = 1 To 2

$SPATH = StringLeft($SFULLPATH, 2)

If $SPATH = "\\" Then

$SFULLPATH = StringTrimLeft($SFULLPATH, 2)

Local $NSERVERLEN = StringInStr($SFULLPATH, "\") - 1

$SPATH = "\\" & StringLeft($SFULLPATH, $NSERVERLEN)

$SFULLPATH = StringTrimLeft($SFULLPATH, $NSERVERLEN)

ExitLoop

ElseIf StringRight($SPATH, 1) = ":" Then

$SFULLPATH = StringTrimLeft($SFULLPATH, 2)

ExitLoop

Else

$SFULLPATH = $SBASEPATH & "\" & $SFULLPATH

EndIf

Next

If $I = 3 Then Return ""

If StringLeft($SFULLPATH, 1) <> "\" Then

If StringLeft($SFULLPATHCONST, 2) = StringLeft($SBASEPATH, 2) Then

$SFULLPATH = $SBASEPATH & "\" & $SFULLPATH

Else

$SFULLPATH = "\" & $SFULLPATH

EndIf

EndIf

Local $ATEMP = StringSplit($SFULLPATH, "\")

Local $APATHPARTS[$ATEMP[0]], $J = 0

For $I = 2 To $ATEMP[0]

If $ATEMP[$I] = ".." Then

If $J Then $J -= 1

ElseIf Not ($ATEMP[$I] = "" And $I <> $ATEMP[0]) And $ATEMP[$I] <> "." Then

$APATHPARTS[$J] = $ATEMP[$I]

$J += 1

EndIf

Next

$SFULLPATH = $SPATH

If Not $BROOTONLY Then

For $I = 0 To $J - 1

$SFULLPATH &= "\" & $APATHPARTS[$I]

Next

Else

$SFULLPATH &= $SFULLPATHCONST

If StringInStr($SFULLPATH, "..") Then $SFULLPATH = _PATHFULL($SFULLPATH)

EndIf

While StringInStr($SFULLPATH, ".\")

$SFULLPATH = StringReplace($SFULLPATH, ".\", "\")

WEnd

Return $SFULLPATH

EndFunc

 

 

Func _PATHGETRELATIVE($SFROM, $STO)

If StringRight($SFROM, 1) <> "\" Then $SFROM &= "\"

If StringRight($STO, 1) <> "\" Then $STO &= "\"

If $SFROM = $STO Then Return SetError(1, 0, StringTrimRight($STO, 1))

Local $ASFROM = StringSplit($SFROM, "\")

Local $ASTO = StringSplit($STO, "\")

If $ASFROM[1] <> $ASTO[1] Then Return SetError(2, 0, StringTrimRight($STO, 1))

Local $I = 2

Local $IDIFF = 1

While 1

If $ASFROM[$I] <> $ASTO[$I] Then

$IDIFF = $I

ExitLoop

EndIf

$I += 1

WEnd

$I = 1

Local $SRELPATH = ""

For $J = 1 To $ASTO[0]

If $I >= $IDIFF Then

$SRELPATH &= "\" & $ASTO[$I]

EndIf

$I += 1

Next

$SRELPATH = StringTrimLeft($SRELPATH, 1)

$I = 1

For $J = 1 To $ASFROM[0]

If $I > $IDIFF Then

$SRELPATH = "..\" & $SRELPATH

EndIf

$I += 1

Next

If StringRight($SRELPATH, 1) == "\" Then $SRELPATH = StringTrimRight($SRELPATH, 1)

Return $SRELPATH

EndFunc

 

 

Func _PATHMAKE($SZDRIVE, $SZDIR, $SZFNAME, $SZEXT)

If StringLen($SZDRIVE) Then

If Not (StringLeft($SZDRIVE, 2) = "\\") Then $SZDRIVE = StringLeft($SZDRIVE, 1) & ":"

EndIf

If StringLen($SZDIR) Then

If Not (StringRight($SZDIR, 1) = "\") And Not (StringRight($SZDIR, 1) = "/") Then $SZDIR = $SZDIR & "\"

EndIf

If StringLen($SZEXT) Then

If Not (StringLeft($SZEXT, 1) = ".") Then $SZEXT = "." & $SZEXT

EndIf

Return $SZDRIVE & $SZDIR & $SZFNAME & $SZEXT

EndFunc

 

 

Func _PATHSPLIT($SZPATH, ByRef $SZDRIVE, ByRef $SZDIR, ByRef $SZFNAME, ByRef $SZEXT)

Local $DRIVE = ""

Local $DIR = ""

Local $FNAME = ""

Local $EXT = ""

Local $POS

Local $ARRAY[5]

$ARRAY[0] = $SZPATH

If StringMid($SZPATH, 2, 1) = ":" Then

$DRIVE = StringLeft($SZPATH, 2)

$SZPATH = StringTrimLeft($SZPATH, 2)

ElseIf StringLeft($SZPATH, 2) = "\\" Then

$SZPATH = StringTrimLeft($SZPATH, 2)

$POS = StringInStr($SZPATH, "\")

If $POS = 0 Then $POS = StringInStr($SZPATH, "/")

If $POS = 0 Then

$DRIVE = "\\" & $SZPATH

$SZPATH = ""

Else

$DRIVE = "\\" & StringLeft($SZPATH, $POS - 1)

$SZPATH = StringTrimLeft($SZPATH, $POS - 1)

EndIf

EndIf

Local $NPOSFORWARD = StringInStr($SZPATH, "/", 0, -1)

Local $NPOSBACKWARD = StringInStr($SZPATH, "\", 0, -1)

If $NPOSFORWARD >= $NPOSBACKWARD Then

$POS = $NPOSFORWARD

Else

$POS = $NPOSBACKWARD

EndIf

$DIR = StringLeft($SZPATH, $POS)

$FNAME = StringRight($SZPATH, StringLen($SZPATH) - $POS)

If StringLen($DIR) = 0 Then $FNAME = $SZPATH

$POS = StringInStr($FNAME, ".", 0, -1)

If $POS Then

$EXT = StringRight($FNAME, StringLen($FNAME) - ($POS - 1))

$FNAME = StringLeft($FNAME, $POS - 1)

EndIf

$SZDRIVE = $DRIVE

$SZDIR = $DIR

$SZFNAME = $FNAME

$SZEXT = $EXT

$ARRAY[1] = $DRIVE

$ARRAY[2] = $DIR

$ARRAY[3] = $FNAME

$ARRAY[4] = $EXT

Return $ARRAY

EndFunc

 

 

Func _REPLACESTRINGINFILE($SZFILENAME, $SZSEARCHSTRING, $SZREPLACESTRING, $FCASENESS = 0, $FOCCURANCE = 1)

Local $IRETVAL = 0

Local $NCOUNT, $SENDSWITH

If StringInStr(FileGetAttrib($SZFILENAME), "R") Then Return SetError(6, 0, -1)

Local $HFILE = FileOpen($SZFILENAME, $FO_READ)

If $HFILE = -1 Then Return SetError(1, 0, -1)

Local $S_TOTFILE = FileRead($HFILE, FileGetSize($SZFILENAME))

If StringRight($S_TOTFILE, 2) = @CRLF Then

$SENDSWITH = @CRLF

ElseIf StringRight($S_TOTFILE, 1) = @CR Then

$SENDSWITH = @CR

ElseIf StringRight($S_TOTFILE, 1) = @LF Then

$SENDSWITH = @LF

Else

$SENDSWITH = ""

EndIf

Local $AFILELINES = StringSplit(StringStripCR($S_TOTFILE), @LF)

FileClose($HFILE)

Local $HWRITEHANDLE = FileOpen($SZFILENAME, $FO_OVERWRITE)

If $HWRITEHANDLE = -1 Then Return SetError(2, 0, -1)

For $NCOUNT = 1 To $AFILELINES[0]

If StringInStr($AFILELINES[$NCOUNT], $SZSEARCHSTRING, $FCASENESS) Then

$AFILELINES[$NCOUNT] = StringReplace($AFILELINES[$NCOUNT], $SZSEARCHSTRING, $SZREPLACESTRING, 1 - $FOCCURANCE, $FCASENESS)

$IRETVAL = $IRETVAL + 1

If $FOCCURANCE = 0 Then

$IRETVAL = 1

ExitLoop

EndIf

EndIf

Next

For $NCOUNT = 1 To $AFILELINES[0] - 1

If FileWriteLine($HWRITEHANDLE, $AFILELINES[$NCOUNT]) = 0 Then

FileClose($HWRITEHANDLE)

Return SetError(3, 0, -1)

EndIf

Next

If $AFILELINES[$NCOUNT] <> "" Then FileWrite($HWRITEHANDLE, $AFILELINES[$NCOUNT] & $SENDSWITH)

FileClose($HWRITEHANDLE)

Return $IRETVAL

EndFunc

 

 

Func _TEMPFILE($S_DIRECTORYNAME = @TempDir, $S_FILEPREFIX = "~", $S_FILEEXTENSION = ".tmp", $I_RANDOMLENGTH = 7)

If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @TempDir

If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @ScriptDir

If StringRight($S_DIRECTORYNAME, 1) <> "\" Then $S_DIRECTORYNAME = $S_DIRECTORYNAME & "\"

Local $S_TEMPNAME

Do

$S_TEMPNAME = ""

While StringLen($S_TEMPNAME) < $I_RANDOMLENGTH

$S_TEMPNAME = $S_TEMPNAME & Chr(Random(97, 122, 1))

WEnd

$S_TEMPNAME = $S_DIRECTORYNAME & $S_FILEPREFIX & $S_TEMPNAME & $S_FILEEXTENSION

Until Not FileExists($S_TEMPNAME)

Return $S_TEMPNAME

EndFunc

 

Global Const $GUI_EVENT_CLOSE = -3

Global Const $GUI_EVENT_MINIMIZE = -4

Global Const $GUI_EVENT_RESTORE = -5

Global Const $GUI_EVENT_MAXIMIZE = -6

Global Const $GUI_EVENT_PRIMARYDOWN = -7

Global Const $GUI_EVENT_PRIMARYUP = -8

Global Const $GUI_EVENT_SECONDARYDOWN = -9

Global Const $GUI_EVENT_SECONDARYUP = -10

Global Const $GUI_EVENT_MOUSEMOVE = -11

Global Const $GUI_EVENT_RESIZED = -12

Global Const $GUI_EVENT_DROPPED = -13

Global Const $GUI_RUNDEFMSG = "GUI_RUNDEFMSG"

Global Const $GUI_AVISTOP = 0

Global Const $GUI_AVISTART = 1

Global Const $GUI_AVICLOSE = 2

Global Const $GUI_CHECKED = 1

Global Const $GUI_INDETERMINATE = 2

Global Const $GUI_UNCHECKED = 4

Global Const $GUI_DROPACCEPTED = 8

Global Const $GUI_NODROPACCEPTED = 4096

Global Const $GUI_ACCEPTFILES = $GUI_DROPACCEPTED

Global Const $GUI_SHOW = 16

Global Const $GUI_HIDE = 32

Global Const $GUI_ENABLE = 64

Global Const $GUI_DISABLE = 128

Global Const $GUI_FOCUS = 256

Global Const $GUI_NOFOCUS = 8192

Global Const $GUI_DEFBUTTON = 512

Global Const $GUI_EXPAND = 1024

Global Const $GUI_ONTOP = 2048

Global Const $GUI_FONTITALIC = 2

Global Const $GUI_FONTUNDER = 4

Global Const $GUI_FONTSTRIKE = 8

Global Const $GUI_DOCKAUTO = 1

Global Const $GUI_DOCKLEFT = 2

Global Const $GUI_DOCKRIGHT = 4

Global Const $GUI_DOCKHCENTER = 8

Global Const $GUI_DOCKTOP = 32

Global Const $GUI_DOCKBOTTOM = 64

Global Const $GUI_DOCKVCENTER = 128

Global Const $GUI_DOCKWIDTH = 256

Global Const $GUI_DOCKHEIGHT = 512

Global Const $GUI_DOCKSIZE = 768

Global Const $GUI_DOCKMENUBAR = 544

Global Const $GUI_DOCKSTATEBAR = 576

Global Const $GUI_DOCKALL = 802

Global Const $GUI_DOCKBORDERS = 102

Global Const $GUI_GR_CLOSE = 1

Global Const $GUI_GR_LINE = 2

Global Const $GUI_GR_BEZIER = 4

Global Const $GUI_GR_MOVE = 6

Global Const $GUI_GR_COLOR = 8

Global Const $GUI_GR_RECT = 10

Global Const $GUI_GR_ELLIPSE = 12

Global Const $GUI_GR_PIE = 14

Global Const $GUI_GR_DOT = 16

Global Const $GUI_GR_PIXEL = 18

Global Const $GUI_GR_HINT = 20

Global Const $GUI_GR_REFRESH = 22

Global Const $GUI_GR_PENSIZE = 24

Global Const $GUI_GR_NOBKCOLOR = -2

Global Const $GUI_BKCOLOR_DEFAULT = -1

Global Const $GUI_BKCOLOR_TRANSPARENT = -2

Global Const $GUI_BKCOLOR_LV_ALTERNATE = -33554432

Global Const $GUI_WS_EX_PARENTDRAG = 1048576

 

Func _WINAPI_GETLASTERROR($CURERR = @error, $CUREXT = @extended)

Local $ARESULT = DllCall("kernel32.dll", "dword", "GetLastError")

Return SetError($CURERR, $CUREXT, $ARESULT[0])

EndFunc

 

 

Func _WINAPI_SETLASTERROR($IERRCODE, $CURERR = @error, $CUREXT = @extended)

DllCall("kernel32.dll", "none", "SetLastError", "dword", $IERRCODE)

Return SetError($CURERR, $CUREXT)

EndFunc

 

#Region Header

#EndRegion Header

#Region Global Variables and Constants

Global Const $IEAU3VERSIONINFO[6] = ["V", 2, 4, 0, "20071231", "V2.4-0"]

Global Const $LSFW_LOCK = 1, $LSFW_UNLOCK = 2

Global $__IELOADWAITTIMEOUT = 300000

Global $__IEAU3DEBUG = False

Global $__IEAU3V1COMPATIBILITY

Global $__IEAU3DEBUG_USEOLDDLLCALL = False

Global $_IEERRORNOTIFY = True

Global $OIEERRORHANDLER, $SIEUSERERRORHANDLER

Global $IECOMERRORNUMBER, $IECOMERRORNUMBERHEX, $IECOMERRORDESCRIPTION, $IECOMERRORSCRIPTLINE, $IECOMERRORWINDESCRIPTION, $IECOMERRORSOURCE, $IECOMERRORHELPFILE, $IECOMERRORHELPCONTEXT, $IECOMERRORLASTDLLERROR, $IECOMERRORCOMOBJ, $IECOMERROROUTPUT

Global Enum $_IESTATUS_SUCCESS = 0, $_IESTATUS_GENERALERROR, $_IESTATUS_COMERROR, $_IESTATUS_INVALIDDATATYPE, $_IESTATUS_INVALIDOBJECTTYPE, $_IESTATUS_INVALIDVALUE, $_IESTATUS_LOADWAITTIMEOUT, $_IESTATUS_NOMATCH, $_IESTATUS_ACCESSISDENIED, $_IESTATUS_CLIENTDISCONNECTED

Global Enum Step * 2 $_IENOTIFYLEVEL_NONE = 0, $_IENOTIFYNOTIFYLEVEL_WARNING = 1, $_IENOTIFYNOTIFYLEVEL_ERROR, $_IENOTIFYNOTIFYLEVEL_COMERROR

Global Enum Step * 2 $_IENOTIFYMETHOD_SILENT = 0, $_IENOTIFYMETHOD_CONSOLE = 1, $_IENOTIFYMETHOD_TOOLTIP, $_IENOTIFYMETHOD_MSGBOX

#EndRegion Global Variables and Constants

#Region Core functions

 

Func _IECREATE($S_URL = "about:blank", $F_TRYATTACH = 0, $F_VISIBLE = 1, $F_WAIT = 1, $F_TAKEFOCUS = 1)

If $__IEAU3V1COMPATIBILITY Then

Switch String($S_URL)

Case "0"

$S_URL = "about:blank"

$F_VISIBLE = 0

__IEERRORNOTIFY("Warning", "_IECreate", "", "Using deprecated behavior - $f_visible is now parameter 3 instead of parameter 1")

Case "1"

$S_URL = "about:blank"

$F_VISIBLE = 1

__IEERRORNOTIFY("Warning", "_IECreate", "", "Using deprecated behavior - $f_visible is now parameter 3 instead of parameter 1")

EndSwitch

EndIf

If Not $F_VISIBLE Then $F_TAKEFOCUS = 0

If $F_TRYATTACH Then

Local $ORESULT = _IEATTACH($S_URL, "url")

If IsObj($ORESULT) Then

If $F_TAKEFOCUS Then WinActivate(HWnd($ORESULT.HWND))

Return SetError($_IESTATUS_SUCCESS, 1, $ORESULT)

EndIf

EndIf

Local $F_MUSTUNLOCK = 0

If Not $F_VISIBLE And __IELOCKSETFOREGROUNDWINDOW($LSFW_LOCK) Then $F_MUSTUNLOCK = 1

Local $O_OBJECT = ObjCreate("InternetExplorer.Application")

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IECreate", "", "Browser Object Creation Failed")

Return SetError($_IESTATUS_GENERALERROR, 0, 0)

EndIf

$O_OBJECT.visible = $F_VISIBLE

If $F_MUSTUNLOCK And Not __IELOCKSETFOREGROUNDWINDOW($LSFW_UNLOCK) Then __IEERRORNOTIFY("Warning", "_IECreate", "", "Foreground Window Unlock Failed!")

_IENAVIGATE($O_OBJECT, $S_URL, $F_WAIT)

Return SetError(@error, 0, $O_OBJECT)

EndFunc

 

 

Func _IECREATEEMBEDDED()

Local $O_OBJECT = ObjCreate("Shell.Explorer.2")

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IECreateEmbedded", "", "WebBrowser Object Creation Failed")

Return SetError($_IESTATUS_GENERALERROR, 0, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT)

EndFunc

 

 

Func _IENAVIGATE(ByRef $O_OBJECT, $S_URL, $F_WAIT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IENavigate", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "_IENavigate", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.navigate ($S_URL)

If $F_WAIT Then

_IELOADWAIT($O_OBJECT)

Return SetError(@error, 0, -1)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, -1)

EndFunc

 

 

Func _IEATTACH($S_STRING, $S_MODE = "Title", $I_INSTANCE = 1)

$S_MODE = StringLower($S_MODE)

$I_INSTANCE = Int($I_INSTANCE)

If $I_INSTANCE < 1 Then

__IEERRORNOTIFY("Error", "_IEAttach", "$_IEStatus_InvalidValue", "$i_instance < 1")

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

EndIf

If $S_MODE = "embedded" Or $S_MODE = "dialogbox" Then

Local $IWINTITLEMATCHMODE = Opt("WinTitleMatchMode", 2)

If $S_MODE = "dialogbox" And $I_INSTANCE > 1 Then

If IsHWnd($S_STRING) Then

$I_INSTANCE = 1

__IEERRORNOTIFY("Warning", "_IEAttach", "$_IEStatus_GeneralError", "$i_instance > 1 invalid with HWnd and DialogBox. Setting to 1.")

Else

Local $A_WINLIST = WinList($S_STRING, "")

If $I_INSTANCE <= $A_WINLIST[0][0] Then

$S_STRING = $A_WINLIST[$I_INSTANCE][1]

$I_INSTANCE = 1

Else

__IEERRORNOTIFY("Warning", "_IEAttach", "$_IEStatus_NoMatch")

Opt("WinTitleMatchMode", $IWINTITLEMATCHMODE)

Return SetError($_IESTATUS_NOMATCH, 1, 0)

EndIf

EndIf

EndIf

Local $H_CONTROL = ControlGetHandle($S_STRING, "", "[CLASS:Internet Explorer_Server; INSTANCE:" & $I_INSTANCE & "]")

Local $ORESULT = __IECONTROLGETOBJFROMHWND($H_CONTROL)

Opt("WinTitleMatchMode", $IWINTITLEMATCHMODE)

If IsObj($ORESULT) Then

Return SetError($_IESTATUS_SUCCESS, 0, $ORESULT)

Else

__IEERRORNOTIFY("Warning", "_IEAttach", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 1, 0)

EndIf

EndIf

Local $O_SHELL = ObjCreate("Shell.Application")

Local $O_SHELLWINDOWS = $O_SHELL.Windows ()

Local $I_TMP = 1

Local $F_NOTIFYSTATUS, $STATUS, $F_ISBROWSER, $S_TMP

For $O_WINDOW In $O_SHELLWINDOWS

$F_ISBROWSER = True

$STATUS = __IEINTERNALERRORHANDLERREGISTER()

If Not $STATUS Then __IEERRORNOTIFY("Warning", "_IEAttach", "Cannot register internal error handler, cannot trap COM errors", "Use _IEErrorHandlerRegister() to register a user error handler")

$F_NOTIFYSTATUS = _IEERRORNOTIFY()

_IEERRORNOTIFY(False)

If $F_ISBROWSER Then

$S_TMP = $O_WINDOW.type

If @error Then $F_ISBROWSER = False

EndIf

If $F_ISBROWSER Then

$S_TMP = $O_WINDOW.document.title

If @error Then $F_ISBROWSER = False

EndIf

_IEERRORNOTIFY($F_NOTIFYSTATUS)

__IEINTERNALERRORHANDLERDEREGISTER()

If $F_ISBROWSER Then

Switch $S_MODE

Case "title"

If StringInStr($O_WINDOW.document.title, $S_STRING) > 0 Then

If $I_INSTANCE = $I_TMP Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_WINDOW)

Else

$I_TMP += 1

EndIf

EndIf

Case "instance"

If $I_INSTANCE = $I_TMP Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_WINDOW)

Else

$I_TMP += 1

EndIf

Case "windowtitle"

Local $F_FOUND = False

$S_TMP = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\", "Window Title")

If Not @error Then

If StringInStr($O_WINDOW.document.title & " - " & $S_TMP, $S_STRING) Then $F_FOUND = True

Else

If StringInStr($O_WINDOW.document.title & " - Microsoft Internet Explorer", $S_STRING) Then $F_FOUND = True

If StringInStr($O_WINDOW.document.title & " - Windows Internet Explorer", $S_STRING) Then $F_FOUND = True

EndIf

If $F_FOUND Then

If $I_INSTANCE = $I_TMP Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_WINDOW)

Else

$I_TMP += 1

EndIf

EndIf

Case "url"

If StringInStr($O_WINDOW.LocationURL, $S_STRING) > 0 Then

If $I_INSTANCE = $I_TMP Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_WINDOW)

Else

$I_TMP += 1

EndIf

EndIf

Case "text"

If StringInStr($O_WINDOW.document.body.innerText, $S_STRING) > 0 Then

If $I_INSTANCE = $I_TMP Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_WINDOW)

Else

$I_TMP += 1

EndIf

EndIf

Case "html"

If StringInStr($O_WINDOW.document.body.innerHTML, $S_STRING) > 0 Then

If $I_INSTANCE = $I_TMP Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_WINDOW)

Else

$I_TMP += 1

EndIf

EndIf

Case "hwnd"

If $I_INSTANCE > 1 Then

$I_INSTANCE = 1

__IEERRORNOTIFY("Warning", "_IEAttach", "$_IEStatus_GeneralError", "$i_instance > 1 invalid with HWnd. Setting to 1.")

EndIf

If _IEPROPERTYGET($O_WINDOW, "hwnd") = $S_STRING Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_WINDOW)

EndIf

Case Else

__IEERRORNOTIFY("Error", "_IEAttach", "$_IEStatus_InvalidValue", "Invalid Mode Specified")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

EndSwitch

EndIf

Next

__IEERRORNOTIFY("Warning", "_IEAttach", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 1, 0)

EndFunc

 

 

Func _IELOADWAIT(ByRef $O_OBJECT, $I_DELAY = 0, $I_TIMEOUT = -1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IELoadWait", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IELoadWait", "$_IEStatus_InvalidObjectType", ObjName($O_OBJECT))

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Local $OTEMP, $F_ABORT = False, $I_ERRORSTATUSCODE = $_IESTATUS_SUCCESS

Local $STATUS = __IEINTERNALERRORHANDLERREGISTER()

If Not $STATUS Then __IEERRORNOTIFY("Warning", "_IELoadWait", "Cannot register internal error handler, cannot trap COM errors", "Use _IEErrorHandlerRegister() to register a user error handler")

Local $F_NOTIFYSTATUS = _IEERRORNOTIFY()

_IEERRORNOTIFY(False)

Sleep($I_DELAY)

Local $IELOADWAITTIMER = TimerInit()

If $I_TIMEOUT = -1 Then $I_TIMEOUT = $__IELOADWAITTIMEOUT

Switch ObjName($O_OBJECT)

Case "IWebBrowser2"

While Not (String($O_OBJECT.readyState) = "complete" Or $O_OBJECT.readyState = 4 Or $F_ABORT)

If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then

$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT

$F_ABORT = True

EndIf

If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then

$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()

$F_ABORT = True

EndIf

Sleep(100)

WEnd

While Not (String($O_OBJECT.document.readyState) = "complete" Or $O_OBJECT.document.readyState = 4 Or $F_ABORT)

If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then

$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT

$F_ABORT = True

EndIf

If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then

$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()

$F_ABORT = True

EndIf

Sleep(100)

WEnd

Case "DispHTMLWindow2"

While Not (String($O_OBJECT.document.readyState) = "complete" Or $O_OBJECT.document.readyState = 4 Or $F_ABORT)

If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then

$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT

$F_ABORT = True

EndIf

If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then

$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()

$F_ABORT = True

EndIf

Sleep(100)

WEnd

While Not (String($O_OBJECT.top.document.readyState) = "complete" Or $O_OBJECT.top.document.readyState = 4 Or $F_ABORT)

If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then

$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT

$F_ABORT = True

EndIf

If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then

$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()

$F_ABORT = True

EndIf

Sleep(100)

WEnd

Case "DispHTMLDocument"

$OTEMP = $O_OBJECT.parentWindow

While Not (String($OTEMP.document.readyState) = "complete" Or $OTEMP.document.readyState = 4 Or $F_ABORT)

If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then

$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT

$F_ABORT = True

EndIf

If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then

$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()

$F_ABORT = True

EndIf

Sleep(100)

WEnd

While Not (String($OTEMP.top.document.readyState) = "complete" Or $OTEMP.top.document.readyState = 4 Or $F_ABORT)

If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then

$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT

$F_ABORT = True

EndIf

If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then

$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()

$F_ABORT = True

EndIf

Sleep(100)

WEnd

Case Else

$OTEMP = $O_OBJECT.document.parentWindow

While Not (String($OTEMP.document.readyState) = "complete" Or $OTEMP.document.readyState = 4 Or $F_ABORT)

If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then

$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT

$F_ABORT = True

EndIf

If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then

$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()

$F_ABORT = True

EndIf

Sleep(100)

WEnd

While Not (String($OTEMP.top.document.readyState) = "complete" Or $O_OBJECT.top.document.readyState = 4 Or $F_ABORT)

If (TimerDiff($IELOADWAITTIMER) > $I_TIMEOUT) Then

$I_ERRORSTATUSCODE = $_IESTATUS_LOADWAITTIMEOUT

$F_ABORT = True

EndIf

If @error = $_IESTATUS_COMERROR And __IECOMERRORUNRECOVERABLE() Then

$I_ERRORSTATUSCODE = __IECOMERRORUNRECOVERABLE()

$F_ABORT = True

EndIf

Sleep(100)

WEnd

EndSwitch

_IEERRORNOTIFY($F_NOTIFYSTATUS)

__IEINTERNALERRORHANDLERDEREGISTER()

Switch $I_ERRORSTATUSCODE

Case $_IESTATUS_SUCCESS

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $_IESTATUS_LOADWAITTIMEOUT

__IEERRORNOTIFY("Warning", "_IELoadWait", "$_IEStatus_LoadWaitTimeout")

Return SetError($_IESTATUS_LOADWAITTIMEOUT, 3, 0)

Case $_IESTATUS_ACCESSISDENIED

__IEERRORNOTIFY("Warning", "_IELoadWait", "$_IEStatus_AccessIsDenied", "Cannot verify readyState. Likely casue: cross-site scripting security restriction.")

Return SetError($_IESTATUS_ACCESSISDENIED, 0, 0)

Case $_IESTATUS_CLIENTDISCONNECTED

__IEERRORNOTIFY("Error", "_IELoadWait", "$_IEStatus_ClientDisconnected", "Browser has been deleted prior to operation.")

Return SetError($_IESTATUS_CLIENTDISCONNECTED, 0, 0)

Case Else

__IEERRORNOTIFY("Error", "_IELoadWait", "$_IEStatus_GeneralError", "Invalid Error Status - Notify IE.au3 developer")

Return SetError($_IESTATUS_GENERALERROR, 0, 0)

EndSwitch

EndFunc

 

 

Func _IELOADWAITTIMEOUT($I_TIMEOUT = -1)

If $I_TIMEOUT = -1 Then

Return SetError($_IESTATUS_SUCCESS, 0, $__IELOADWAITTIMEOUT)

Else

$__IELOADWAITTIMEOUT = $I_TIMEOUT

Return SetError($_IESTATUS_SUCCESS, 0, 1)

EndIf

EndFunc

 

#EndRegion Core functions

#Region Frame Functions

 

Func _IEISFRAMESET(ByRef $O_OBJECT)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEIsFrameSet", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If String($O_OBJECT.document.body.tagName) = "FRAMESET" Then

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Else

Return SetError($_IESTATUS_SUCCESS, 0, 0)

EndIf

EndFunc

 

 

Func _IEFRAMEGETCOLLECTION(ByRef $O_OBJECT, $I_INDEX = -1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFrameGetCollection", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

$I_INDEX = Number($I_INDEX)

Select

Case $I_INDEX = -1

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.document.parentwindow.frames.length, $O_OBJECT.document.parentwindow.frames)

Case $I_INDEX > -1 And $I_INDEX < $O_OBJECT.document.parentwindow.frames.length

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.document.parentwindow.frames.length, $O_OBJECT.document.parentwindow.frames.item ($I_INDEX))

Case $I_INDEX < -1

__IEERRORNOTIFY("Error", "_IEFrameGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

Case Else

__IEERRORNOTIFY("Warning", "_IEFrameGetCollection", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndSelect

EndFunc

 

 

Func _IEFRAMEGETOBJBYNAME(ByRef $O_OBJECT, $S_NAME)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFrameGetObjByName", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $OTEMP, $OFRAMES

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IEFrameGetObjByName", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.parentWindow

Else

$OTEMP = $O_OBJECT.document.parentWindow

EndIf

If _IEISFRAMESET($OTEMP) Then

$OFRAMES = _IETAGNAMEGETCOLLECTION($OTEMP, "frame")

Else

$OFRAMES = _IETAGNAMEGETCOLLECTION($OTEMP, "iframe")

EndIf

If $OFRAMES.length Then

For $OFRAME In $OFRAMES

If $OFRAME.name = $S_NAME Then Return SetError($_IESTATUS_SUCCESS, 0, $OTEMP.frames ($S_NAME))

Next

__IEERRORNOTIFY("Warning", "_IEFrameGetObjByName", "$_IEStatus_NoMatch", "No frames matching name")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

Else

__IEERRORNOTIFY("Warning", "_IEFrameGetObjByName", "$_IEStatus_NoMatch", "No Frames found")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndIf

EndFunc

 

#EndRegion Frame Functions

#Region Link functions

 

Func _IELINKCLICKBYTEXT(ByRef $O_OBJECT, $S_LINKTEXT, $I_INDEX = 0, $F_WAIT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IELinkClickByText", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $FOUND = 0, $LINKTEXT, $LINKS = $O_OBJECT.document.links

$I_INDEX = Number($I_INDEX)

For $LINK In $LINKS

$LINKTEXT = $LINK.outerText & ""

If $LINKTEXT = $S_LINKTEXT Then

If ($FOUND = $I_INDEX) Then

$LINK.click

If $F_WAIT Then

_IELOADWAIT($O_OBJECT)

Return SetError(@error, 0, -1)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, -1)

EndIf

$FOUND = $FOUND + 1

EndIf

Next

__IEERRORNOTIFY("Warning", "_IELinkClickByText", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 0, 0)

EndFunc

 

 

Func _IELINKCLICKBYINDEX(ByRef $O_OBJECT, $I_INDEX, $F_WAIT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IELinkClickByIndex", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $OLINKS = $O_OBJECT.document.links, $OLINK

$I_INDEX = Number($I_INDEX)

If ($I_INDEX >= 0) And ($I_INDEX <= $OLINKS.length - 1) Then

$OLINK = $OLINKS ($I_INDEX)

$OLINK.click

If $F_WAIT Then

_IELOADWAIT($O_OBJECT)

Return SetError(@error, 0, -1)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, -1)

Else

__IEERRORNOTIFY("Warning", "_IELinkClickByIndex", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndIf

EndFunc

 

 

Func _IELINKGETCOLLECTION(ByRef $O_OBJECT, $I_INDEX = -1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IELinkGetCollection", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

$I_INDEX = Number($I_INDEX)

Select

Case $I_INDEX = -1

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.document.links.length, $O_OBJECT.document.links)

Case $I_INDEX > -1 And $I_INDEX < $O_OBJECT.document.links.length

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.document.links.length, $O_OBJECT.document.links.item ($I_INDEX))

Case $I_INDEX < -1

__IEERRORNOTIFY("Error", "_IELinkGetCollection", "$_IEStatus_InvalidValue")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

Case Else

__IEERRORNOTIFY("Warning", "_IELinkGetCollection", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndSelect

EndFunc

 

#EndRegion Link functions

#Region Image functions

 

Func _IEIMGCLICK(ByRef $O_OBJECT, $S_LINKTEXT, $S_MODE = "src", $I_INDEX = 0, $F_WAIT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEImgClick", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $LINKTEXT, $FOUND = 0, $IMGS = $O_OBJECT.document.images

$S_MODE = StringLower($S_MODE)

$I_INDEX = Number($I_INDEX)

For $IMG In $IMGS

Select

Case $S_MODE = "alt"

$LINKTEXT = $IMG.alt

Case $S_MODE = "name"

$LINKTEXT = $IMG.name

Case $S_MODE = "src"

$LINKTEXT = $IMG.src

Case Else

__IEERRORNOTIFY("Error", "_IEImgClick", "$_IEStatus_InvalidValue", "Invalid mode: " & $S_MODE)

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

EndSelect

If StringInStr($LINKTEXT, $S_LINKTEXT) Then

If ($FOUND = $I_INDEX) Then

$IMG.click

If $F_WAIT Then

_IELOADWAIT($O_OBJECT)

Return SetError(@error, 0, -1)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, -1)

EndIf

$FOUND = $FOUND + 1

EndIf

Next

__IEERRORNOTIFY("Warning", "_IEImgClick", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 0, 0)

EndFunc

 

 

Func _IEIMGGETCOLLECTION(ByRef $O_OBJECT, $I_INDEX = -1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEImgGetCollection", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $OTEMP = _IEDOCGETOBJ($O_OBJECT)

$I_INDEX = Number($I_INDEX)

Select

Case $I_INDEX = -1

Return SetError($_IESTATUS_SUCCESS, $OTEMP.images.length, $OTEMP.images)

Case $I_INDEX > -1 And $I_INDEX < $OTEMP.images.length

Return SetError($_IESTATUS_SUCCESS, $OTEMP.images.length, $OTEMP.images.item ($I_INDEX))

Case $I_INDEX < -1

__IEERRORNOTIFY("Error", "_IEImgGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

Case Else

__IEERRORNOTIFY("Warning", "_IEImgGetCollection", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 1, 0)

EndSelect

EndFunc

 

#EndRegion Image functions

#Region Form functions

 

Func _IEFORMGETCOLLECTION(ByRef $O_OBJECT, $I_INDEX = -1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormGetCollection", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $OTEMP = _IEDOCGETOBJ($O_OBJECT)

$I_INDEX = Number($I_INDEX)

Select

Case $I_INDEX = -1

Return SetError($_IESTATUS_SUCCESS, $OTEMP.forms.length, $OTEMP.forms)

Case $I_INDEX > -1 And $I_INDEX < $OTEMP.forms.length

Return SetError($_IESTATUS_SUCCESS, $OTEMP.forms.length, $OTEMP.forms.item ($I_INDEX))

Case $I_INDEX < -1

__IEERRORNOTIFY("Error", "_IEFormGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

Case Else

__IEERRORNOTIFY("Warning", "_IEFormGetCollection", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 1, 0)

EndSelect

EndFunc

 

 

Func _IEFORMGETOBJBYNAME(ByRef $O_OBJECT, $S_NAME, $I_INDEX = 0)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormGetObjByName", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $I_LENGTH = 0

Local $O_COL = $O_OBJECT.document.forms.item ($S_NAME)

If IsObj($O_COL) Then

If __IEISOBJTYPE($O_COL, "elementcollection") Then

$I_LENGTH = $O_COL.length

Else

$I_LENGTH = 1

EndIf

EndIf

$I_INDEX = Number($I_INDEX)

If $I_INDEX = -1 Then

Return SetError($_IESTATUS_SUCCESS, $I_LENGTH, $O_OBJECT.document.forms.item ($S_NAME))

Else

If IsObj($O_OBJECT.document.forms.item ($S_NAME, $I_INDEX)) Then

Return SetError($_IESTATUS_SUCCESS, $I_LENGTH, $O_OBJECT.document.forms.item ($S_NAME, $I_INDEX))

Else

__IEERRORNOTIFY("Warning", "_IEFormGetObjByName", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 0, 0)

EndIf

EndIf

EndFunc

 

 

Func _IEFORMELEMENTGETCOLLECTION(ByRef $O_OBJECT, $I_INDEX = -1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormElementGetCollection", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "form") Then

__IEERRORNOTIFY("Error", "_IEFormElementGetCollection", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$I_INDEX = Number($I_INDEX)

Select

Case $I_INDEX = -1

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.elements.length, $O_OBJECT.elements)

Case $I_INDEX > -1 And $I_INDEX < $O_OBJECT.elements.length

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.elements.length, $O_OBJECT.elements.item ($I_INDEX))

Case $I_INDEX < -1

__IEERRORNOTIFY("Error", "_IEFormElementGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

Case Else

Return SetError($_IESTATUS_NOMATCH, 1, 0)

EndSelect

EndFunc

 

 

Func _IEFORMELEMENTGETOBJBYNAME(ByRef $O_OBJECT, $S_NAME, $I_INDEX = 0)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormElementGetObjByName", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "form") Then

__IEERRORNOTIFY("Error", "_IEFormElementGetObjByName", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Local $I_LENGTH = 0

Local $O_COL = $O_OBJECT.elements.item ($S_NAME)

If IsObj($O_COL) Then

If __IEISOBJTYPE($O_COL, "elementcollection") Then

$I_LENGTH = $O_COL.length

Else

$I_LENGTH = 1

EndIf

EndIf

$I_INDEX = Number($I_INDEX)

If $I_INDEX = -1 Then

Return SetError($_IESTATUS_SUCCESS, $I_LENGTH, $O_OBJECT.elements.item ($S_NAME))

Else

If IsObj($O_OBJECT.elements.item ($S_NAME, $I_INDEX)) Then

Return SetError($_IESTATUS_SUCCESS, $I_LENGTH, $O_OBJECT.elements.item ($S_NAME, $I_INDEX))

Else

__IEERRORNOTIFY("Warning", "_IEFormElementGetObjByName", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 0, 0)

EndIf

EndIf

EndFunc

 

 

Func _IEFORMELEMENTGETVALUE(ByRef $O_OBJECT)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormElementGetValue", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "forminputelement") Then

__IEERRORNOTIFY("Error", "_IEFormElementGetValue", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

SetError($_IESTATUS_SUCCESS)

If $O_OBJECT.value Then

Return $O_OBJECT.value

Else

Return ""

EndIf

EndFunc

 

 

Func _IEFORMELEMENTSETVALUE(ByRef $O_OBJECT, $S_NEWVALUE, $F_FIREEVENT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormElementSetValue", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "forminputelement") Then

__IEERRORNOTIFY("Error", "_IEFormElementSetValue", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If String($O_OBJECT.type) = "file" Then

__IEERRORNOTIFY("Error", "_IEFormElementSetValue", "$_IEStatus_InvalidObjectType", "Browser securuty prevents SetValue of TYPE=FILE")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.value = $S_NEWVALUE

If $F_FIREEVENT Then

$O_OBJECT.fireEvent ("OnChange")

$O_OBJECT.fireEvent ("OnClick")

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

EndFunc

 

 

Func _IEFORMELEMENTOPTIONSELECT(ByRef $O_OBJECT, $S_STRING, $F_SELECT = 1, $S_MODE = "byValue", $F_FIREEVENT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "formselectelement") Then

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Local $OITEMS = $O_OBJECT.options, $INUMITEMS = $O_OBJECT.options.length, $F_ISMULTIPLE = $O_OBJECT.multiple

Switch $S_MODE

Case "byValue"

For $OITEM In $OITEMS

If $OITEM.value = $S_STRING Then

Switch $F_SELECT

Case - 1

Return SetError($_IESTATUS_SUCCESS, 0, $OITEM.selected)

Case 0

If Not $F_ISMULTIPLE Then

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "$f_select=0 only valid for type=select multiple")

SetError($_IESTATUS_INVALIDVALUE, 3)

EndIf

If $OITEM.selected Then

$OITEM.selected = False

If $F_FIREEVENT Then

$O_OBJECT.fireEvent ("onChange")

$O_OBJECT.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case 1

If Not $OITEM.selected Then

$OITEM.selected = True

If $F_FIREEVENT Then

$O_OBJECT.fireEvent ("onChange")

$O_OBJECT.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case Else

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid $f_select value")

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

EndSwitch

__IEERRORNOTIFY("Warning", "_IEFormElementOptionSelect", "$_IEStatus_NoMatch", "Value not matched")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndIf

Next

Case "byText"

For $OITEM In $OITEMS

If String($OITEM.text) = $S_STRING Then

Switch $F_SELECT

Case - 1

Return SetError($_IESTATUS_SUCCESS, 0, $OITEM.selected)

Case 0

If Not $F_ISMULTIPLE Then

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "$f_select=0 only valid for type=select multiple")

SetError($_IESTATUS_INVALIDVALUE, 3)

EndIf

If $OITEM.selected Then

$OITEM.selected = False

If $F_FIREEVENT Then

$O_OBJECT.fireEvent ("onChange")

$O_OBJECT.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case 1

If Not $OITEM.selected Then

$OITEM.selected = True

If $F_FIREEVENT Then

$O_OBJECT.fireEvent ("onChange")

$O_OBJECT.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case Else

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid $f_select value")

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

EndSwitch

__IEERRORNOTIFY("Warning", "_IEFormElementOptionSelect", "$_IEStatus_NoMatch", "Text not matched")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndIf

Next

Case "byIndex"

Local $I_INDEX = Number($S_STRING)

If $I_INDEX < 0 Or $I_INDEX >= $INUMITEMS Then

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid index value, " & $I_INDEX)

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

EndIf

$OITEM = $OITEMS.item ($I_INDEX)

Switch $F_SELECT

Case - 1

Return SetError($_IESTATUS_SUCCESS, 0, $OITEMS.item ($I_INDEX).selected)

Case 0

If Not $F_ISMULTIPLE Then

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "$f_select=0 only valid for type=select multiple")

SetError($_IESTATUS_INVALIDVALUE, 3)

EndIf

If $OITEM.selected Then

$OITEMS.item ($I_INDEX).selected = False

If $F_FIREEVENT Then

$O_OBJECT.fireEvent ("onChange")

$O_OBJECT.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case 1

If Not $OITEM.selected Then

$OITEMS.item ($I_INDEX).selected = True

If $F_FIREEVENT Then

$O_OBJECT.fireEvent ("onChange")

$O_OBJECT.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case Else

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid $f_select value")

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

EndSwitch

Case Else

__IEERRORNOTIFY("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid Mode")

Return SetError($_IESTATUS_INVALIDVALUE, 4, 0)

EndSwitch

EndFunc

 

 

Func _IEFORMELEMENTCHECKBOXSELECT(ByRef $O_OBJECT, $S_STRING, $S_NAME = "", $F_SELECT = 1, $S_MODE = "byValue", $F_FIREEVENT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormElementCheckboxSelect", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "form") Then

__IEERRORNOTIFY("Error", "_IEFormElementCheckboxSelect", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$S_STRING = String($S_STRING)

$S_NAME = String($S_NAME)

Local $OITEMS

If $S_NAME = "" Then

$OITEMS = _IETAGNAMEGETCOLLECTION($O_OBJECT, "input")

Else

$OITEMS = Execute("$o_object.elements('" & $S_NAME & "')")

EndIf

If Not IsObj($OITEMS) Then

__IEERRORNOTIFY("Warning", "_IEFormElementCheckboxSelect", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 3, 0)

EndIf

Local $OITEM, $F_FOUND = False

Switch $S_MODE

Case "byValue"

If __IEISOBJTYPE($OITEMS, "forminputelement") Then

$OITEM = $OITEMS

If String($OITEM.type) = "checkbox" And String($OITEM.value) = $S_STRING Then $F_FOUND = True

Else

For $OITEM In $OITEMS

If String($OITEM.type) = "checkbox" And String($OITEM.value) = $S_STRING Then

$F_FOUND = True

ExitLoop

EndIf

Next

EndIf

Case "byIndex"

If __IEISOBJTYPE($OITEMS, "forminputelement") Then

$OITEM = $OITEMS

If String($OITEM.type) = "checkbox" And Number($S_STRING) = 0 Then $F_FOUND = True

Else

Local $ICOUNT = 0

For $OITEM In $OITEMS

If String($OITEM.type) = "checkbox" And Number($S_STRING) = $ICOUNT Then

$F_FOUND = True

ExitLoop

Else

If String($OITEM.type) = "checkbox" Then $ICOUNT += 1

EndIf

Next

EndIf

Case Else

__IEERRORNOTIFY("Error", "_IEFormElementCheckboxSelect", "$_IEStatus_InvalidValue", "Invalid Mode")

Return SetError($_IESTATUS_INVALIDVALUE, 5, 0)

EndSwitch

If Not $F_FOUND Then

__IEERRORNOTIFY("Warning", "_IEFormElementCheckboxSelect", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndIf

Switch $F_SELECT

Case - 1

Return SetError($_IESTATUS_SUCCESS, 0, $OITEM.checked)

Case 0

If $OITEM.checked Then

$OITEM.checked = False

If $F_FIREEVENT Then

$OITEM.fireEvent ("onChange")

$OITEM.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case 1

If Not $OITEM.checked Then

$OITEM.checked = True

If $F_FIREEVENT Then

$OITEM.fireEvent ("onChange")

$OITEM.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case Else

__IEERRORNOTIFY("Error", "_IEFormElementCheckboxSelect", "$_IEStatus_InvalidValue", "Invalid $f_select value")

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

EndSwitch

EndFunc

 

 

Func _IEFORMELEMENTRADIOSELECT(ByRef $O_OBJECT, $S_STRING, $S_NAME, $F_SELECT = 1, $S_MODE = "byValue", $F_FIREEVENT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormElementRadioSelect", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "form") Then

__IEERRORNOTIFY("Error", "_IEFormElementRadioSelect", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$S_STRING = String($S_STRING)

$S_NAME = String($S_NAME)

Local $OITEMS = Execute("$o_object.elements('" & $S_NAME & "')")

If Not IsObj($OITEMS) Then

__IEERRORNOTIFY("Warning", "_IEFormElementRadioSelect", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 3, 0)

EndIf

Local $OITEM, $F_FOUND = False

Switch $S_MODE

Case "byValue"

If __IEISOBJTYPE($OITEMS, "forminputelement") Then

$OITEM = $OITEMS

If String($OITEM.type) = "radio" And String($OITEM.value) = $S_STRING Then $F_FOUND = True

Else

For $OITEM In $OITEMS

If String($OITEM.type) = "radio" And String($OITEM.value) = $S_STRING Then

$F_FOUND = True

ExitLoop

EndIf

Next

EndIf

Case "byIndex"

If __IEISOBJTYPE($OITEMS, "forminputelement") Then

$OITEM = $OITEMS

If String($OITEM.type) = "radio" And Number($S_STRING) = 0 Then $F_FOUND = True

Else

Local $ICOUNT = 0

For $OITEM In $OITEMS

If String($OITEM.type) = "radio" And Number($S_STRING) = $ICOUNT Then

$F_FOUND = True

ExitLoop

Else

$ICOUNT += 1

EndIf

Next

EndIf

Case Else

__IEERRORNOTIFY("Error", "_IEFormElementRadioSelect", "$_IEStatus_InvalidValue", "Invalid Mode")

Return SetError($_IESTATUS_INVALIDVALUE, 5, 0)

EndSwitch

If Not $F_FOUND Then

__IEERRORNOTIFY("Warning", "_IEFormElementRadioSelect", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndIf

Switch $F_SELECT

Case - 1

Return SetError($_IESTATUS_SUCCESS, 0, $OITEM.checked)

Case 0

If $OITEM.checked Then

$OITEM.checked = False

If $F_FIREEVENT Then

$OITEM.fireEvent ("onChange")

$OITEM.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case 1

If Not $OITEM.checked Then

$OITEM.checked = True

If $F_FIREEVENT Then

$OITEM.fireEvent ("onChange")

$OITEM.fireEvent ("OnClick")

EndIf

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case Else

__IEERRORNOTIFY("Error", "_IEFormElementRadioSelect", "$_IEStatus_InvalidValue", "$f_select value invalid")

Return SetError($_IESTATUS_INVALIDVALUE, 4, 0)

EndSwitch

EndFunc

 

 

Func _IEFORMIMAGECLICK(ByRef $O_OBJECT, $S_LINKTEXT, $S_MODE = "src", $I_INDEX = 0, $F_WAIT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormImageClick", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $LINKTEXT, $FOUND = 0

Local $OTEMP = _IEDOCGETOBJ($O_OBJECT)

Local $IMGS = _IETAGNAMEGETCOLLECTION($OTEMP, "input")

$S_MODE = StringLower($S_MODE)

$I_INDEX = Number($I_INDEX)

For $IMG In $IMGS

If String($IMG.type) = "image" Then

Select

Case $S_MODE = "alt"

$LINKTEXT = $IMG.alt

Case $S_MODE = "name"

$LINKTEXT = $IMG.name

Case $S_MODE = "src"

$LINKTEXT = $IMG.src

Case Else

__IEERRORNOTIFY("Error", "_IEFormImageClick", "$_IEStatus_InvalidValue", "Invalid mode: " & $S_MODE)

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

EndSelect

If StringInStr($LINKTEXT, $S_LINKTEXT) Then

If ($FOUND = $I_INDEX) Then

$IMG.click

If $F_WAIT Then

_IELOADWAIT($O_OBJECT)

Return SetError(@error, 0, -1)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, -1)

EndIf

$FOUND = $FOUND + 1

EndIf

EndIf

Next

__IEERRORNOTIFY("Warning", "_IEFormImageClick", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndFunc

 

 

Func _IEFORMSUBMIT(ByRef $O_OBJECT, $F_WAIT = 1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormSubmit", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "form") Then

__IEERRORNOTIFY("Error", "_IEFormSubmit", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Local $O_WINDOW = $O_OBJECT.document.parentWindow

$O_OBJECT.submit

If $F_WAIT Then

_IELOADWAIT($O_WINDOW)

Return SetError(@error, 0, -1)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, -1)

EndFunc

 

 

Func _IEFORMRESET(ByRef $O_OBJECT)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEFormReset", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "form") Then

__IEERRORNOTIFY("Error", "_IEFormReset", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.reset

Return SetError($_IESTATUS_SUCCESS, 0, 1)

EndFunc

 

#EndRegion Form functions

#Region Table functions

 

Func _IETABLEGETCOLLECTION(ByRef $O_OBJECT, $I_INDEX = -1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IETableGetCollection", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

$I_INDEX = Number($I_INDEX)

Select

Case $I_INDEX = -1

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.document.GetElementsByTagName ("table" ).length, $O_OBJECT.document.GetElementsByTagName ("table"))

Case $I_INDEX > -1 And $I_INDEX < $O_OBJECT.document.GetElementsByTagName ("table" ).length

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.document.GetElementsByTagName ("table" ).length, $O_OBJECT.document.GetElementsByTagName ("table" ).item ($I_INDEX))

Case $I_INDEX < -1

__IEERRORNOTIFY("Error", "_IETableGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

Case Else

__IEERRORNOTIFY("Warning", "_IETableGetCollection", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 1, 0)

EndSelect

EndFunc

 

 

Func _IETABLEWRITETOARRAY(ByRef $O_OBJECT, $F_TRANSPOSE = False)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IETableWriteToArray", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "table") Then

__IEERRORNOTIFY("Error", "_IETableWriteToArray", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Local $I_COLS = 0, $TDS, $I_COL

Local $TRS = $O_OBJECT.rows

For $TR In $TRS

$TDS = $TR.cells

$I_COL = 0

For $TD In $TDS

$I_COL = $I_COL + $TD.colSpan

Next

If $I_COL > $I_COLS Then $I_COLS = $I_COL

Next

Local $I_ROWS = $TRS.length

Local $A_TABLECELLS[$I_COLS][$I_ROWS]

Local $COL, $ROW = 0

For $TR In $TRS

$TDS = $TR.cells

$COL = 0

For $TD In $TDS

$A_TABLECELLS[$COL][$ROW] = $TD.innerText

$COL = $COL + $TD.colSpan

Next

$ROW = $ROW + 1

Next

If $F_TRANSPOSE Then

Local $I_D1 = UBound($A_TABLECELLS, 1), $I_D2 = UBound($A_TABLECELLS, 2), $ATMP[$I_D2][$I_D1]

For $I = 0 To $I_D2 - 1

For $J = 0 To $I_D1 - 1

$ATMP[$I][$J] = $A_TABLECELLS[$J][$I]

Next

Next

$A_TABLECELLS = $ATMP

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $A_TABLECELLS)

EndFunc

 

#EndRegion Table functions

#Region Read/Write functions

 

Func _IEBODYREADHTML(ByRef $O_OBJECT)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEBodyReadHTML", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.body.innerHTML)

EndFunc

 

 

Func _IEBODYREADTEXT(ByRef $O_OBJECT)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEBodyReadText", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IEBodyReadText", "$_IEStatus_InvalidObjectType", "Expected document element")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.body.innerText)

EndFunc

 

 

Func _IEBODYWRITEHTML(ByRef $O_OBJECT, $S_HTML)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEBodyWriteHTML", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IEBodyWriteHTML", "$_IEStatus_InvalidObjectType", "Expected document element")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.document.body.innerHTML = $S_HTML

Local $OTEMP = $O_OBJECT.document

_IELOADWAIT($OTEMP)

Return SetError(@error, 0, -1)

EndFunc

 

 

Func _IEDOCREADHTML(ByRef $O_OBJECT)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEDocReadHTML", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IEDocReadHTML", "$_IEStatus_InvalidObjectType", "Expected document element")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.documentElement.outerHTML)

EndFunc

 

 

Func _IEDOCWRITEHTML(ByRef $O_OBJECT, $S_HTML)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEDocWriteHTML", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IEDocWriteHTML", "$_IEStatus_InvalidObjectType", "Expected document element")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.document.Write ($S_HTML)

$O_OBJECT.document.close ()

Local $OTEMP = $O_OBJECT.document

_IELOADWAIT($OTEMP)

Return SetError(@error, 0, -1)

EndFunc

 

 

Func _IEDOCINSERTTEXT(ByRef $O_OBJECT, $S_STRING, $S_WHERE = "beforeend")

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEDocInsertText", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Or __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

__IEERRORNOTIFY("Error", "_IEDocInsertText", "$_IEStatus_InvalidObjectType", "Expected document element")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$S_WHERE = StringLower($S_WHERE)

Select

Case $S_WHERE = "beforebegin"

$O_OBJECT.insertAdjacentText ($S_WHERE, $S_STRING)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_WHERE = "afterbegin"

$O_OBJECT.insertAdjacentText ($S_WHERE, $S_STRING)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_WHERE = "beforeend"

$O_OBJECT.insertAdjacentText ($S_WHERE, $S_STRING)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_WHERE = "afterend"

$O_OBJECT.insertAdjacentText ($S_WHERE, $S_STRING)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case Else

__IEERRORNOTIFY("Error", "_IEDocInsertText", "$_IEStatus_InvalidValue", "Invalid where value")

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

EndSelect

EndFunc

 

 

Func _IEDOCINSERTHTML(ByRef $O_OBJECT, $S_STRING, $S_WHERE = "beforeend")

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEDocInsertHTML", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Or __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

__IEERRORNOTIFY("Error", "_IEDocInsertHTML", "$_IEStatus_InvalidObjectType", "Expected document element")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$S_WHERE = StringLower($S_WHERE)

Select

Case $S_WHERE = "beforebegin"

$O_OBJECT.insertAdjacentHTML ($S_WHERE, $S_STRING)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_WHERE = "afterbegin"

$O_OBJECT.insertAdjacentHTML ($S_WHERE, $S_STRING)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_WHERE = "beforeend"

$O_OBJECT.insertAdjacentHTML ($S_WHERE, $S_STRING)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_WHERE = "afterend"

$O_OBJECT.insertAdjacentHTML ($S_WHERE, $S_STRING)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case Else

__IEERRORNOTIFY("Error", "_IEDocInsertHTML", "$_IEStatus_InvalidValue", "Invalid where value")

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

EndSelect

EndFunc

 

 

Func _IEHEADINSERTEVENTSCRIPT(ByRef $O_OBJECT, $S_HTMLFOR, $S_EVENT, $S_SCRIPT)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEHeadInsertEventScript", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $O_HEAD = $O_OBJECT.document.all.tags ("HEAD" ).Item (0)

Local $O_SCRIPT = $O_OBJECT.document.createElement ("script")

With $O_SCRIPT

.defer = True

.language = "jscript"

.type = "text/javascript"

.htmlFor = $S_HTMLFOR

.event = $S_EVENT

.text = $S_SCRIPT

EndWith

$O_HEAD.appendChild ($O_SCRIPT)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

EndFunc

 

#EndRegion Read/Write functions

#Region Utility functions

 

Func _IEDOCGETOBJ(ByRef $O_OBJECT)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEDocGetObj", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Switch __IEISOBJTYPE($O_OBJECT, "document")

Case True

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT)

Case False

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document)

EndSwitch

EndFunc

 

 

Func _IETAGNAMEGETCOLLECTION(ByRef $O_OBJECT, $S_TAGNAME, $I_INDEX = -1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IETagNameGetCollection", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IETagNameGetCollection", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Local $OTEMP

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Then

$OTEMP = _IEDOCGETOBJ($O_OBJECT)

Else

$OTEMP = $O_OBJECT

EndIf

$I_INDEX = Number($I_INDEX)

Select

Case $I_INDEX = -1

Return SetError($_IESTATUS_SUCCESS, $OTEMP.GetElementsByTagName ($S_TAGNAME).length, $OTEMP.GetElementsByTagName ($S_TAGNAME))

Case $I_INDEX > -1 And $I_INDEX < $OTEMP.GetElementsByTagName ($S_TAGNAME).length

Return SetError($_IESTATUS_SUCCESS, $OTEMP.GetElementsByTagName ($S_TAGNAME).length, $OTEMP.GetElementsByTagName ($S_TAGNAME).item ($I_INDEX))

Case $I_INDEX < -1

__IEERRORNOTIFY("Error", "_IETagNameGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")

Return SetError($_IESTATUS_INVALIDVALUE, 3, 0)

Case Else

__IEERRORNOTIFY("Error", "_IETagNameGetCollection", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 0, 0)

EndSelect

EndFunc

 

 

Func _IETAGNAMEALLGETCOLLECTION(ByRef $O_OBJECT, $I_INDEX = -1)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IETagNameAllGetCollection", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IETagNameAllGetCollection", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Local $OTEMP

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Then

$OTEMP = _IEDOCGETOBJ($O_OBJECT)

Else

$OTEMP = $O_OBJECT

EndIf

$I_INDEX = Number($I_INDEX)

Select

Case $I_INDEX = -1

Return SetError($_IESTATUS_SUCCESS, $OTEMP.all.length, $OTEMP.all)

Case $I_INDEX > -1 And $I_INDEX < $OTEMP.all.length

Return SetError($_IESTATUS_SUCCESS, $OTEMP.all.length, $OTEMP.all.item ($I_INDEX))

Case $I_INDEX < -1

__IEERRORNOTIFY("Error", "_IETagNameAllGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

Case Else

__IEERRORNOTIFY("Error", "_IETagNameAllGetCollection", "$_IEStatus_NoMatch")

Return SetError($_IESTATUS_NOMATCH, 1, 0)

EndSelect

EndFunc

 

 

Func _IEGETOBJBYNAME(ByRef $O_OBJECT, $S_ID, $I_INDEX = 0)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEGetObjByName", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

$I_INDEX = Number($I_INDEX)

If $I_INDEX = -1 Then

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.document.GetElementsByName ($S_ID).length, $O_OBJECT.document.GetElementsByName ($S_ID))

Else

If IsObj($O_OBJECT.document.GetElementsByName ($S_ID).item ($I_INDEX)) Then

Return SetError($_IESTATUS_SUCCESS, $O_OBJECT.document.GetElementsByName ($S_ID).length, $O_OBJECT.document.GetElementsByName ($S_ID).item ($I_INDEX))

Else

__IEERRORNOTIFY("Warning", "_IEGetObjByName", "$_IEStatus_NoMatch", "Name: " & $S_ID & ", Index: " & $I_INDEX)

Return SetError($_IESTATUS_NOMATCH, 0, 0)

EndIf

EndIf

EndFunc

 

 

Func _IEGETOBJBYID(ByRef $O_OBJECT, $S_ID)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEGetObjById", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IEGetObById", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If IsObj($O_OBJECT.document.getElementById ($S_ID)) Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.getElementById ($S_ID))

Else

__IEERRORNOTIFY("Warning", "_IEGetObjById", "$_IEStatus_NoMatch", $S_ID)

Return SetError($_IESTATUS_NOMATCH, 2, 0)

EndIf

EndFunc

 

 

Func _IEACTION(ByRef $O_OBJECT, $S_ACTION)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

$S_ACTION = StringLower($S_ACTION)

Select

Case $S_ACTION = "click"

If __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.Click ()

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "disable"

If __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.disabled = True

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "enable"

If __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.disabled = False

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "focus"

If __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.Focus ()

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "copy"

$O_OBJECT.document.execCommand ("Copy")

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "cut"

$O_OBJECT.document.execCommand ("Cut")

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "paste"

$O_OBJECT.document.execCommand ("Paste")

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "delete"

$O_OBJECT.document.execCommand ("Delete")

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "saveas"

$O_OBJECT.document.execCommand ("SaveAs")

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "refresh"

$O_OBJECT.document.execCommand ("Refresh")

_IELOADWAIT($O_OBJECT)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "selectall"

$O_OBJECT.document.execCommand ("SelectAll")

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "unselect"

$O_OBJECT.document.execCommand ("Unselect")

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "print"

$O_OBJECT.document.parentwindow.Print ()

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "printdefault"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.execWB (6, 2)

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "back"

If Not __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.GoBack ()

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "blur"

$O_OBJECT.Blur ()

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "forward"

If Not __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.GoForward ()

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "home"

If Not __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.GoHome ()

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "invisible"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.visible = 0

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "visible"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.visible = 1

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "search"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.GoSearch ()

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "stop"

If Not __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.Stop ()

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_ACTION = "quit"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.Quit ()

$O_OBJECT = 0

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case Else

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidValue", "Invalid Action")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

EndSelect

EndFunc

 

 

Func _IEPROPERTYGET(ByRef $O_OBJECT, $S_PROPERTY)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browserdom") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Local $OTEMP, $ITEMP

$S_PROPERTY = StringLower($S_PROPERTY)

Select

Case $S_PROPERTY = "browserx"

If __IEISOBJTYPE($O_OBJECT, "browsercontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$OTEMP = $O_OBJECT

$ITEMP = 0

While IsObj($OTEMP)

$ITEMP += $OTEMP.offsetLeft

$OTEMP = $OTEMP.offsetParent

WEnd

Return SetError($_IESTATUS_SUCCESS, 0, $ITEMP)

Case $S_PROPERTY = "browsery"

If __IEISOBJTYPE($O_OBJECT, "browsercontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$OTEMP = $O_OBJECT

$ITEMP = 0

While IsObj($OTEMP)

$ITEMP += $OTEMP.offsetTop

$OTEMP = $OTEMP.offsetParent

WEnd

Return SetError($_IESTATUS_SUCCESS, 0, $ITEMP)

Case $S_PROPERTY = "screenx"

If __IEISOBJTYPE($O_OBJECT, "window") Or __IEISOBJTYPE($O_OBJECT, "document") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If __IEISOBJTYPE($O_OBJECT, "browser") Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.left ())

Else

$OTEMP = $O_OBJECT

$ITEMP = 0

While IsObj($OTEMP)

$ITEMP += $OTEMP.offsetLeft

$OTEMP = $OTEMP.offsetParent

WEnd

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $ITEMP + $O_OBJECT.document.parentWindow.screenLeft)

Case $S_PROPERTY = "screeny"

If __IEISOBJTYPE($O_OBJECT, "window") Or __IEISOBJTYPE($O_OBJECT, "document") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If __IEISOBJTYPE($O_OBJECT, "browser") Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.top ())

Else

$OTEMP = $O_OBJECT

$ITEMP = 0

While IsObj($OTEMP)

$ITEMP += $OTEMP.offsetTop

$OTEMP = $OTEMP.offsetParent

WEnd

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $ITEMP + $O_OBJECT.document.parentWindow.screenTop)

Case $S_PROPERTY = "height"

If __IEISOBJTYPE($O_OBJECT, "window") Or __IEISOBJTYPE($O_OBJECT, "document") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If __IEISOBJTYPE($O_OBJECT, "browser") Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.Height ())

Else

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.offsetHeight)

EndIf

Case $S_PROPERTY = "width"

If __IEISOBJTYPE($O_OBJECT, "window") Or __IEISOBJTYPE($O_OBJECT, "document") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If __IEISOBJTYPE($O_OBJECT, "browser") Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.Width ())

Else

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.offsetWidth)

EndIf

Case $S_PROPERTY = "isdisabled"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.isDisabled ())

Case $S_PROPERTY = "addressbar"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.AddressBar ())

Case $S_PROPERTY = "busy"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.Busy ())

Case $S_PROPERTY = "fullscreen"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.fullScreen ())

Case $S_PROPERTY = "hwnd"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, HWnd($O_OBJECT.HWnd()))

Case $S_PROPERTY = "left"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.Left ())

Case $S_PROPERTY = "locationname"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.LocationName ())

Case $S_PROPERTY = "locationurl"

If __IEISOBJTYPE($O_OBJECT, "browser") Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.locationURL ())

EndIf

If __IEISOBJTYPE($O_OBJECT, "window") Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.location.href ())

EndIf

If __IEISOBJTYPE($O_OBJECT, "document") Then

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.parentwindow.location.href ())

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentwindow.location.href ())

Case $S_PROPERTY = "menubar"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.MenuBar ())

Case $S_PROPERTY = "offline"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.OffLine ())

Case $S_PROPERTY = "readystate"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.ReadyState ())

Case $S_PROPERTY = "resizable"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.Resizable ())

Case $S_PROPERTY = "silent"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.Silent ())

Case $S_PROPERTY = "statusbar"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.StatusBar ())

Case $S_PROPERTY = "statustext"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.StatusText ())

Case $S_PROPERTY = "top"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.Top ())

Case $S_PROPERTY = "visible"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.Visible ())

Case $S_PROPERTY = "appcodename"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.appCodeName ())

Case $S_PROPERTY = "appminorversion"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.appMinorVersion ())

Case $S_PROPERTY = "appname"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.appName ())

Case $S_PROPERTY = "appversion"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.appVersion ())

Case $S_PROPERTY = "browserlanguage"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.browserLanguage ())

Case $S_PROPERTY = "cookieenabled"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.cookieEnabled ())

Case $S_PROPERTY = "cpuclass"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.cpuClass ())

Case $S_PROPERTY = "javaenabled"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.javaEnabled ())

Case $S_PROPERTY = "online"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.onLine ())

Case $S_PROPERTY = "platform"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.platform ())

Case $S_PROPERTY = "systemlanguage"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.systemLanguage ())

Case $S_PROPERTY = "useragent"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.userAgent ())

Case $S_PROPERTY = "userlanguage"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.parentWindow.top.navigator.userLanguage ())

Case $S_PROPERTY = "vcard"

Local $AVCARD[1][29]

$AVCARD[0][0] = "Business.City"

$AVCARD[0][1] = "Business.Country"

$AVCARD[0][2] = "Business.Fax"

$AVCARD[0][3] = "Business.Phone"

$AVCARD[0][4] = "Business.State"

$AVCARD[0][5] = "Business.StreetAddress"

$AVCARD[0][6] = "Business.URL"

$AVCARD[0][7] = "Business.Zipcode"

$AVCARD[0][8] = "Cellular"

$AVCARD[0][9] = "Company"

$AVCARD[0][10] = "Department"

$AVCARD[0][11] = "DisplayName"

$AVCARD[0][12] = "Email"

$AVCARD[0][13] = "FirstName"

$AVCARD[0][14] = "Gender"

$AVCARD[0][15] = "Home.City"

$AVCARD[0][16] = "Home.Country"

$AVCARD[0][17] = "Home.Fax"

$AVCARD[0][18] = "Home.Phone"

$AVCARD[0][19] = "Home.State"

$AVCARD[0][20] = "Home.StreetAddress"

$AVCARD[0][21] = "Home.Zipcode"

$AVCARD[0][22] = "Homepage"

$AVCARD[0][23] = "JobTitle"

$AVCARD[0][24] = "LastName"

$AVCARD[0][25] = "MiddleName"

$AVCARD[0][26] = "Notes"

$AVCARD[0][27] = "Office"

$AVCARD[0][28] = "Pager"

For $I = 0 To 28

$AVCARD[1][$I] = Execute('$o_object.document.parentWindow.top.navigator.userProfile.getAttribute("' & $AVCARD[0][$I] & '")')

Next

Return SetError($_IESTATUS_SUCCESS, 0, $AVCARD)

Case $S_PROPERTY = "referrer"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.referrer)

Case $S_PROPERTY = "theatermode"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.TheaterMode)

Case $S_PROPERTY = "toolbar"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.ToolBar)

Case $S_PROPERTY = "contenteditable"

If __IEISOBJTYPE($O_OBJECT, "browser") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $OTEMP.isContentEditable)

Case $S_PROPERTY = "innertext"

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $OTEMP.innerText)

Case $S_PROPERTY = "outertext"

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $OTEMP.outerText)

Case $S_PROPERTY = "innerhtml"

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $OTEMP.innerHTML)

Case $S_PROPERTY = "outerhtml"

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $OTEMP.outerHTML)

Case $S_PROPERTY = "title"

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.document.title)

Case $S_PROPERTY = "uniqueid"

If __IEISOBJTYPE($O_OBJECT, "window") Then

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

Else

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT.uniqueID)

EndIf

Case Else

__IEERRORNOTIFY("Error", "_IEPropertyGet", "$_IEStatus_InvalidValue", "Invalid Property")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

EndSelect

EndFunc

 

 

Func _IEPROPERTYSET(ByRef $O_OBJECT, $S_PROPERTY, $NEWVALUE)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $OTEMP

#forceref $oTemp

$S_PROPERTY = StringLower($S_PROPERTY)

Select

Case $S_PROPERTY = "addressbar"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.AddressBar = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "height"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.Height = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "left"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.Left = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "menubar"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.MenuBar = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "offline"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.OffLine = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "resizable"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.Resizable = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "statusbar"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.StatusBar = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "statustext"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.StatusText = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "top"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.Top = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "width"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.Width = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "theatermode"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If $NEWVALUE Then

$O_OBJECT.TheaterMode = True

Else

$O_OBJECT.TheaterMode = False

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "toolbar"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If $NEWVALUE Then

$O_OBJECT.ToolBar = True

Else

$O_OBJECT.ToolBar = False

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "contenteditable"

If __IEISOBJTYPE($O_OBJECT, "browser") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

If $NEWVALUE Then

$OTEMP.contentEditable = "true"

Else

$OTEMP.contentEditable = "false"

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "innertext"

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

$OTEMP.innerText = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "outertext"

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

$OTEMP.outerText = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "innerhtml"

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

$OTEMP.innerHTML = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "outerhtml"

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Or __IEISOBJTYPE($O_OBJECT, "document") Then

$OTEMP = $O_OBJECT.document.body

Else

$OTEMP = $O_OBJECT

EndIf

$OTEMP.outerHTML = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "title"

$O_OBJECT.document.title = $NEWVALUE

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Case $S_PROPERTY = "silent"

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

If $NEWVALUE Then

$O_OBJECT.silent = True

Else

$O_OBJECT.silent = False

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 0)

Case Else

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_InvalidValue", "Invalid Property")

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

EndSelect

EndFunc

 

 

Func _IEERRORNOTIFY($F_NOTIFY = -1)

Switch Number($F_NOTIFY)

Case - 1

Return $_IEERRORNOTIFY

Case 0

$_IEERRORNOTIFY = False

Return 1

Case 1

$_IEERRORNOTIFY = True

Return 1

Case Else

__IEERRORNOTIFY("Error", "_IEErrorNotify", "$_IEStatus_InvalidValue")

Return 0

EndSwitch

EndFunc

 

 

Func _IEERRORHANDLERREGISTER($S_FUNCTIONNAME = "__IEInternalErrorHandler")

$SIEUSERERRORHANDLER = $S_FUNCTIONNAME

$OIEERRORHANDLER = ""

$OIEERRORHANDLER = ObjEvent("AutoIt.Error", $S_FUNCTIONNAME)

If IsObj($OIEERRORHANDLER) Then

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Else

__IEERRORNOTIFY("Error", "_IEPropertySet", "$_IEStatus_GeneralError", "Error Handler Not Registered - Check existance of error function")

Return SetError($_IESTATUS_GENERALERROR, 1, 0)

EndIf

EndFunc

 

 

Func _IEERRORHANDLERDEREGISTER()

$SIEUSERERRORHANDLER = ""

$OIEERRORHANDLER = ""

Return SetError($_IESTATUS_SUCCESS, 0, 1)

EndFunc

 

 

Func _IEQUIT(ByRef $O_OBJECT)

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "_IEQuit", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "browser") Then

__IEERRORNOTIFY("Error", "_IEAction", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.quit ()

$O_OBJECT = 0

Return SetError($_IESTATUS_SUCCESS, 0, 1)

EndFunc

 

#EndRegion Utility functions

#Region General

 

Func _IE_INTRODUCTION($S_MODULE = "basic")

Local $S_HTML = ""

Switch $S_MODULE

Case "basic"

$S_HTML &= "<HTML>" & @CR

$S_HTML &= "<HEAD>" & @CR

$S_HTML &= "<TITLE>_IE_Introduction ('basic')</TITLE>" & @CR

$S_HTML &= "<STYLE>body {font-family: Arial}</STYLE>" & @CR

$S_HTML &= "</HEAD>" & @CR

$S_HTML &= "<BODY>" & @CR

$S_HTML &= "<table border=1 width=600 id='table1' cellspacing=6 cellpadding=6>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<h1>Welcome to IE.au3</h1>" & @CR

$S_HTML &= "IE.au3 is a UDF (User Defined Function) library for the " & @CR

$S_HTML &= "<a href='http://www.autoitscript.com'>AutoIt</a> scripting language." & @CR

$S_HTML &= "<p> " & @CR

$S_HTML &= "IE.au3 allows you to either create or attach to an Internet Explorer browser and do " & @CR

$S_HTML &= "just about anything you could do with it interactively with the mouse and " & @CR

$S_HTML &= "keyboard, but do it through script." & @CR

$S_HTML &= "<p>" & @CR

$S_HTML &= "You can navigate to pages, click links, fill and submit forms etc. You can " & @CR

$S_HTML &= "also do things you cannot do interactively like change or rewrite page " & @CR

$S_HTML &= "content and JavaScripts, read, parse and save page content and monitor and act " & @CR

$S_HTML &= "upon browser 'events'.<p>" & @CR

$S_HTML &= "IE.au3 uses the COM interface in AutoIt to interact with the Internet Explorer " & @CR

$S_HTML &= "object model and the DOM (Document Object Model) supported by the browser." & @CR

$S_HTML &= "<p>" & @CR

$S_HTML &= "Here are some links for more information and helpful tools:<p>" & @CR

$S_HTML &= "Reference Material: " & @CR

$S_HTML &= "<ul>" & @CR

$S_HTML &= "<li><a href='http://msdn1.microsoft.com/'>MSDN (Microsoft Developer Network)</a></li>" & @CR

$S_HTML &= "<li><a href='http://msdn2.microsoft.com/en-us/library/aa752084.aspx' target='_blank'>InternetExplorer Object</a></li>" & @CR

$S_HTML &= "<li><a href='http://msdn2.microsoft.com/en-us/library/ms531073.aspx' target='_blank'>Document Object</a></li>" & @CR

$S_HTML &= "<li><a href='http://msdn2.microsoft.com/en-us/ie/aa740473.aspx' target='_blank'>Overviews and Tutorials</a></li>" & @CR

$S_HTML &= "<li><a href='http://msdn2.microsoft.com/en-us/library/ms533029.aspx' target='_blank'>DHTML Objects</a></li>" & @CR

$S_HTML &= "<li><a href='http://msdn2.microsoft.com/en-us/library/ms533051.aspx' target='_blank'>DHTML Events</a></li>" & @CR

$S_HTML &= "</ul><p>" & @CR

$S_HTML &= "Helpful Tools: " & @CR

$S_HTML &= "<ul>" & @CR

$S_HTML &= "<úu><a hr?f=Nhtt—î?Ewww.gAtoit?cUiUtIcůIEforAIEiäN?x.—h—Ë?hoyto—ic=1Ĺ3Ô8N tarÝ?tĽN?búaäöO>ŁAWoItGI? łAiúN?U<Eaľ ňb|iúN I? ?criUt? iät?racti??ú?¨?Eúi>" & @CR

$S_HTML &= "?l???a3h?n§=?haaoß?A?ââ??nbµtbšr?L?©???ašrtnG=?_blšnk?ODnbµgBar??aO?D?¨???s?n?a1r?Há?ô??ns?nLa1r?Há¨Lv?l?daa?raŮd©1rn-?r?n§?r3o?rs1ŮaU?s?yRnL?©?nŮd?d?Al??" & @CR

$S_HTML &= "??ß?µGh?eT='h??j://ËËË??icóccfF?c ?/ ?nE ?e/?e?µie???x?Fµ?uŹi®=??Ĺc39I4_?o2Í???AbŢ3?Í2?eŢ9e­38?µ??Ou??yµŮg=eŮ'G?µó?e?=?Ö޵nE'ai÷ ®eve jeó U c޵ó?iµa Écc??ó?hťnive ®OMGµnµEyei ? c)?/?ß" & @CR

$S_HTML &= "KJ?>eUNâUe?=hâWt:®®?JU?erůÂÂi?eO?o?Ttůo?A??ůdu®©TNO®?ůdu?âe?Nâ???'NtUrtet='?×J˛n?'ľnoDIaTe®UľNI©?e?NWâťNńOnNoÂNUOwť×N˛gťN??O?o??i?gNUUo?nŤIe®Ji>" & @CR

$S_HTML &= "<li><a href='http://validator.w3.org/' target='_blank'>HTML Validator</a> (verify HTML follows format rules)</li>" & @CR

$S_HTML &= "<li><a href='http://www.fiddlertool.com/fiddler/' target='_blank'>Fiddler</a> (examine HTTP traffic)</li>" & @CR

$S_HTML &= "</ul>" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "</table>" & @CR

$S_HTML &= "</BODY>" & @CR

$S_HTML &= "</HTML>"

Case Else

__IEERRORNOTIFY("Error", "_IE_Introduction", "$_IEStatus_InvalidValue")

Return SetError($_IESTATUS_INVALIDVALUE, 1, 0)

EndSwitch

Local $O_OBJECT = _IECREATE()

_IEDOCWRITEHTML($O_OBJECT, $S_HTML)

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT)

EndFunc

 

 

Func _IE_EXAMPLE($S_MODULE = "basic")

Local $S_HTML = "", $O_OBJECT

Switch $S_MODULE

Case "basic"

$S_HTML &= "<HEAD>" & @CR

$S_HTML &= "<TITLE>_IE_Example('basic')</TITLE>" & @CR

$S_HTML &= "<STYLE>body {font-family: Arial}</STYLE>" & @CR

$S_HTML &= "</HEAD>" & @CR

$S_HTML &= "<BODY>" & @CR

$S_HTML &= "<a!hUóf['hF??:??wwwGšuFoA??EUÍ??GEoO'D?ÍOí!?UE['U?F?ĺ??wwwŇaw?ůÍ???rÍ?FGEo˘?ÍOší??Aaw?ůÍ?????40x10IGU?o'!ÔšO?['Au?oI?IOaíóh!a?F[hAw??I?!ňouó?a?ó?IOaoóhDl?šD" & @CR

$S_HTML &= "<p>" & @CR

$S_HTML &= "<div id=line1>This is a simple HTML page with text, links and images.</div>" & @CR

$S_HTML &= "<p>" & @CR

$S_HTML &= "<div id=line2><a href='http://www.autoitscript.com'>AutoIt</a> is a wonderful automation scripting language.</div>" & @CR

$S_HTML &= "<p>" & @CR

$S_HTML &= "?div id]?inoÂ3?tGis sNF??EWod bi a voEi aWiYoGaŮdGsN?F?Eting ?a ?Eo?]'?WtFß?uwww.šNt?its?i?t.?mu??ENm?'?Nuo? ??ENm1ua3.1uŤiv3" & @CR

$S_HTML &= "<p>" & @CR

$S_HTML &= "<div id=IEAu3Data></div>" & @CR

$S_HTML &= "</BODY>" & @CR

$S_HTML &= "</HTML>"

$O_OBJECT = _IECREATE()

_IEDOCWRITEHTML($O_OBJECT, $S_HTML)

Case "table"

$S_HTML &= "<HTML>" & @CR

$S_HTML &= "<HEAD>" & @CR

$S_HTML &= "<TITLE>_IE_Example('table')</TITLE>" & @CR

$S_HTML &= "<STYLE>body {font-family: Arial}</STYLE>" & @CR

$S_HTML &= "</HEAD>" & @CR

$S_HTML &= "<BODY>" & @CR

$S_HTML &= "$oTableOne = _IETableGetObjByName($oIE, "tableOne")<br>" & @CR

$S_HTML &= "<table border=1 id='tableOne'><p>" & @CR

$S_HTML &= "<table border=1 id='tableOne'>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>AutoIt</td>" & @CR

$S_HTML &= " <td>is</td>" & @CR

$S_HTML &= " <td>really</td>" & @CR

$S_HTML &= " <td>great</td>" & @CR

$S_HTML &= " <td>with</td>" & @CR

$S_HTML &= " <td>IE.au3</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>1</td>" & @CR

$S_HTML &= " <td>2</td>" & @CR

$S_HTML &= " <td>3</td>" & @CR

$S_HTML &= " <td>4</td>" & @CR

$S_HTML &= " <td>5</td>" & @CR

$S_HTML &= " <td>6</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>the</td>" & @CR

$S_HTML &= " <td>quick</td>" & @CR

$S_HTML &= " <td>red</td>" & @CR

$S_HTML &= " <td>fox</td>" & @CR

$S_HTML &= " <td>jumped</td>" & @CR

$S_HTML &= " <td>over</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>the</td>" & @CR

$S_HTML &= " <td>lazy</td>" & @CR

$S_HTML &= " <td>brown</td>" & @CR

$S_HTML &= " <td>dog</td>" & @CR

$S_HTML &= " <td>the</td>" & @CR

$S_HTML &= " <td>time</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>has</td>" & @CR

$S_HTML &= " <td>come</td>" & @CR

$S_HTML &= " <td>for</td>" & @CR

$S_HTML &= " <td>all</td>" & @CR

$S_HTML &= " <td>good</td>" & @CR

$S_HTML &= " <td>men</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>to</td>" & @CR

$S_HTML &= " <td>come</td>" & @CR

$S_HTML &= " <td>to</td>" & @CR

$S_HTML &= " <td>the</td>" & @CR

$S_HTML &= " <td>aid</td>" & @CR

$S_HTML &= " <td>of</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= "</table>" & @CR

$S_HTML &= "<p>" & @CR

$S_HTML &= "$oTableTwo = _IETableGetObjByName($oIE, "tableTwo")<br>" & @CR

$S_HTML &= "<table border="1" id='tableTwo'><p>" & @CR

$S_HTML &= "<table border=1 id='tableTwo'>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td colspan='4'>Table Top</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>One</td>" & @CR

$S_HTML &= " <td colspan='3'>Two</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>Three</td>" & @CR

$S_HTML &= " <td>Four</td>" & @CR

$S_HTML &= " <td colspan='2'>Five</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>Six</td>" & @CR

$S_HTML &= " <td colspan='3'>Seven</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= " <tr>" & @CR

$S_HTML &= " <td>Eight</td>" & @CR

$S_HTML &= " <td>Nine</td>" & @CR

$S_HTML &= " <td>Ten</td>" & @CR

$S_HTML &= " <td>Eleven</td>" & @CR

$S_HTML &= " </tr>" & @CR

$S_HTML &= "</table>" & @CR

$S_HTML &= "</BODY>" & @CR

$S_HTML &= "</HTML>"

$O_OBJECT = _IECREATE()

_IEDOCWRITEHTML($O_OBJECT, $S_HTML)

Case "form"

$S_HTML &= "<HTML>" & @CR

$S_HTML &= "<HEAD>" & @CR

$S_HTML &= "<TITLE>_IE_Example('form')</TITLE>" & @CR

$S_HTML &= "<STYLE>body {font-family: Arial}</STYLE>" & @CR

$S_HTML &= "</HEAD>" & @CR

$S_HTML &= "<BODY>" & @CR

$S_HTML &= "<form name='ExampleForm' onSubmit='javascript:alert(""ExampleFormSubmitted"");' method='post'>" & @CR

$S_HTML &= "<table cellspacing=6 cellpadding=6 border=1>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>ExampleForm</td>" & @CR

$S_HTML &= "<td><form name='ExampleForm' onSubmit='javascript:alert(""ExampleFormSubmitted"");' method='post'></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>Hidden Input Element<input type='hidden' name='hiddenExample' value='secret value'></td>" & @CR

$S_HTML &= "<td><input type='hidden' name='hiddenExample' value='secret value'></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<input type='text' name='textExample' value='http://' size='20' maxlength='30'>" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "<td><input type='text' name='textExample' value='http://' size='20' maxlength='30'></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<input type='password' name='passwordExample' size='10'>" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "<td><input type='password' name='passwordExample' size='10'></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<input type='file' name='fileExample'>" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "<td><input type='file' name='fileExample'></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<input type='image' name='imageExample' alt='AutoIt Homepage' src='http://www.autoitscript.com/images/autoit_6_240x100.jpg'>" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "<R?>HlR;i±úe? RAúeĽ'u?f?' ±??ť=hi??eEx???lť'G?lR='?eOo?RG?o?eú?e'GOG?Ľ'RRú:/iwyw??eRoiRO?äuúR??o?/i?fťO??eRoi?_V_?÷0xu00?Uú?'HR;</R?ľ" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<textarea name='textareaExample' rows='5' cols='15'>Hello!</textarea>" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "<td><textarea name='textareaExample' rows='5' cols='15'>Hello!</textarea></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<input type='checkbox' name='checkboxG1Example' value='gameBasketball'>Basketball<br>" & @CR

$S_HTML &= "<input type='checkbox' name='checkboxG1Example' value='gameFootball'>Football<br>" & @CR

$S_HTML &= "<input type='checkbox' name='checkboxG2Example' value='gameTennis' checked>Tennis<br>" & @CR

$S_HTML &= "<input type='checkbox' name='checkboxG2Example' value='gameBaseball'>Baseball" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "<td><input type='checkbox' name='checkboxG1Example' value='gameBasketball'>Basketball<br><br>" & @CR

$S_HTML &= "<input type='checkbox' name='checkboxG1Example' value='gameFootball'>Football<br><br>" & @CR

$S_HTML &= "<input type='checkbox' name='checkboxG2Example' value='gameTennis' checked>Tennis<br><br>" & @CR

$S_HTML &= "<input type='checkbox' name='checkboxG2Example' value='gameBaseball'>Baseball</td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<input type='radio' name='radioExample' value='vehicleAirplane'>Airplane<br>" & @CR

$S_HTML &= "<input type='radio' name='radioExample' value='vehicleTrain' checked>Train<br>" & @CR

$S_HTML &= "<input type='radio' name='radioExample' value='vehicleBoat'>Boat<br>" & @CR

$S_HTML &= "<input type='radio' name='radioExample' value='vehicleCar'>Car</td>" & @CR

$S_HTML &= "<td><input type='radio' name='radioExample' value='vehicleAirplane'>Airplane<br><br>" & @CR

$S_HTML &= "<input type='radio' name='radioExample' value='vehicleTrain' checked>Train<br><br>" & @CR

$S_HTML &= "<input type='radio' name='radioExample' value='vehicleBoat'>Boat<br><br>" & @CR

$S_HTML &= "<input type='radio' name='radioExample' value='vehicleCar'>Car<br></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<select name='selectExample'>" & @CR

$S_HTML &= "<option value='homepage.html'>Homepage" & @CR

$S_HTML &= "<option value='midipage.html'>Midipage" & @CR

$S_HTML &= "<option value='freepage.html'>Freepage" & @CR

$S_HTML &= "</select>" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "<td><select name='selectExample'><br>" & @CR

$S_HTML &= "<option value='homepage.html'>Homepage<br>" & @CR

$S_HTML &= "<option value='midipage.html'>Midipage<br>" & @CR

$S_HTML &= "<option value='freepage.html'>Freepage<br>" & @CR

$S_HTML &= "</select></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<select name='multipleSelectExample' size='6' multiple>" & @CR

$S_HTML &= "<option value='Name1'>Aaron" & @CR

$S_HTML &= "<option value='Name2'>Bruce" & @CR

$S_HTML &= "<option value='Name3'>Carlos" & @CR

$S_HTML &= "<option value='Name4'>Denis" & @CR

$S_HTML &= "<option value='Name5'>Ed" & @CR

$S_HTML &= "<option value='Name6'>Freddy" & @CR

$S_HTML &= "</select>" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "<td><select name='multipleSelectExample' size='6' multiple><br>" & @CR

$S_HTML &= "<option value='Name1'>Aaron<br>" & @CR

$S_HTML &= "<option value='Name2'>Bruce<br>" & @CR

$S_HTML &= "<option value='Name3'>Carlos<br>" & @CR

$S_HTML &= "<option value='Name4'>Denis<br>" & @CR

$S_HTML &= "<option value='Name5'>Ed<br>" & @CR

$S_HTML &= "<option value='Name6'>Freddy<br>" & @CR

$S_HTML &= "</select></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td>" & @CR

$S_HTML &= "<input name='submitExample' type='submit' value='Submit'>" & @CR

$S_HTML &= "<input name='resetExample' type='reset' value='Reset'>" & @CR

$S_HTML &= "</td>" & @CR

$S_HTML &= "<td><input name='submitExample' type='submit' value='Submit'><br>" & @CR

$S_HTML &= "<input name='resetExample' type='reset' value='Reset'></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "</table>" & @CR

$S_HTML &= "<input type='hidden' name='hiddenExample' value='secret value'>" & @CR

$S_HTML &= "</FORM>" & @CR

$S_HTML &= "</BODY>" & @CR

$S_HTML &= "</HTML>"

$O_OBJECT = _IECREATE()

_IEDOCWRITEHTML($O_OBJECT, $S_HTML)

Case "frameset"

$S_HTML &= "<HTML>" & @CR

$S_HTML &= "<HEAD>" & @CR

$S_HTML &= "<TITLE>_IE_Example('frameset')</TITLE>" & @CR

$S_HTML &= "</HEAD>" & @CR

$S_HTML &= "<FRAMESET rows='25,200'>" & @CR

$S_HTML &= " <FRAME NAME=Top SRC=about:blank>" & @CR

$S_HTML &= " <FRAMESET cols='100,500'>" & @CR

$S_HTML &= " <FRAME NAME=Menu SRC=about:blank>" & @CR

$S_HTML &= " <FRAME NAME=Main SRC=about:blank>" & @CR

$S_HTML &= " </FRAMESET>" & @CR

$S_HTML &= "</FRAMESET>" & @CR

$S_HTML &= "</HTML>"

$O_OBJECT = _IECREATE()

_IEDOCWRITEHTML($O_OBJECT, $S_HTML)

_IEACTION($O_OBJECT, "refresh")

Local $OFRAMETOP = _IEFRAMEGETOBJBYNAME($O_OBJECT, "Top")

Local $OFRAMEMENU = _IEFRAMEGETOBJBYNAME($O_OBJECT, "Menu")

Local $OFRAMEMAIN = _IEFRAMEGETOBJBYNAME($O_OBJECT, "Main")

_IEBODYWRITEHTML($OFRAMETOP, '$oFrameTop = _IEFrameGetObjByName($oIE, "Top")')

_IEBODYWRITEHTML($OFRAMEMENU, '$oFrameMenu = _IEFrameGetObjByName($oIE, "Menu")')

_IEBODYWRITEHTML($OFRAMEMAIN, '$oFrameMain = _IEFrameGetObjByName($oIE, "Main")')

Case "iframe"

$S_HTML &= "<HTML>" & @CR

$S_HTML &= "<HEAD>" & @CR

$S_HTML &= "<TITLE>_IE_Example('iframe')</TITLE>" & @CR

$S_HTML &= "</HEAD>" & @CR

$S_HTML &= "<BODY>" & @CR

$S_HTML &= "<table cellspacing=6 cellpadding=6 border=1>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td><iframe name='iFrameOne' src='about:blank' title='iFrameOne'></iframe></td>" & @CR

$S_HTML &= "<td><iframe name="iFrameOne" src="about:blank" title="iFrameOne"></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "<tr>" & @CR

$S_HTML &= "<td><iframe name='iFrameTwo' src='about:blank' title='iFrameTwo'></iframe></td>" & @CR

$S_HTML &= "<td><iframe name="iFrameTwo" src="about:blank" title="iFrameTwo"></td>" & @CR

$S_HTML &= "</tr>" & @CR

$S_HTML &= "</table>" & @CR

$S_HTML &= "</BODY>" & @CR

$S_HTML &= "</HTML>"

$O_OBJECT = _IECREATE()

_IEDOCWRITEHTML($O_OBJECT, $S_HTML)

_IEACTION($O_OBJECT, "refresh")

Local $OIFRAMEONE = _IEFRAMEGETOBJBYNAME($O_OBJECT, "iFrameOne")

Local $OIFRAMETWO = _IEFRAMEGETOBJBYNAME($O_OBJECT, "iFrameTwo")

_IEBODYWRITEHTML($OIFRAMEONE, '$oIFrameOne = _IEFrameGetObjByName($oIE, "iFrameOne")')

_IEBODYWRITEHTML($OIFRAMETWO, '$oIFrameTwo = _IEFrameGetObjByName($oIE, "iFrameTwo")')

Case Else

__IEERRORNOTIFY("Error", "_IE_Example", "$_IEStatus_InvalidValue")

Return SetError($_IESTATUS_INVALIDVALUE, 1, 0)

EndSwitch

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT)

EndFunc

 

 

Func _IE_VERSIONINFO()

__IEERRORNOTIFY("Information", "_IE_VersionInfo", "version " & $IEAU3VERSIONINFO[0] & $IEAU3VERSIONINFO[1] & "." & $IEAU3VERSIONINFO[2] & "-" & $IEAU3VERSIONINFO[3], "Release date: " & $IEAU3VERSIONINFO[4])

Return SetError($_IESTATUS_SUCCESS, 0, $IEAU3VERSIONINFO)

EndFunc

 

#EndRegion General

#Region Internal functions

 

Func __IELOCKSETFOREGROUNDWINDOW($NLOCKCODE)

Local $ARET = DllCall("user32.dll", "bool", "LockSetForegroundWindow", "uint", $NLOCKCODE)

If @error Or $ARET[0] Then Return SetError(1, _WINAPI_GETLASTERROR(), 0)

Return $ARET[0]

EndFunc

 

 

Func __IECONTROLGETOBJFROMHWND(ByRef $HWIN)

DllCall("ole32.dll", "long", "CoInitialize", "ptr", 0)

If @error Then Return SetError(2, @error, 0)

Local Const $WM_HTML_GETOBJECT = __IEREGISTERWINDOWMESSAGE("WM_HTML_GETOBJECT")

Local Const $SMTO_ABORTIFHUNG = 2

Local $LRESULT

__IESENDMESSAGETIMEOUT($HWIN, $WM_HTML_GETOBJECT, 0, 0, $SMTO_ABORTIFHUNG, 1000, $LRESULT)

Local $TYPUUID = DllStructCreate("int;short;short;byte[8]")

DllStructSetData($TYPUUID, 1, 1651492128)

DllStructSetData($TYPUUID, 2, 42014)

DllStructSetData($TYPUUID, 3, 4559)

DllStructSetData($TYPUUID, 4, 167, 1)

DllStructSetData($TYPUUID, 4, 49, 2)

DllStructSetData($TYPUUID, 4, 0, 3)

DllStructSetData($TYPUUID, 4, 160, 4)

DllStructSetData($TYPUUID, 4, 201, 5)

DllStructSetData($TYPUUID, 4, 8, 6)

DllStructSetData($TYPUUID, 4, 38, 7)

DllStructSetData($TYPUUID, 4, 55, 8)

Local $ARET = DllCall("oleacc.dll", "long", "ObjectFromLresult", "lresult", $LRESULT, "ptr", DllStructGetPtr($TYPUUID), "wparam", 0, "idispatch*", 0)

If @error Then Return SetError(3, @error, 0)

If IsObj($ARET[4]) Then

Local $OIE = $ARET[4].Script ()

Return $OIE.Document.parentwindow

Else

Return SetError(1, $ARET[0], 0)

EndIf

EndFunc

 

 

Func __IEREGISTERWINDOWMESSAGE($SMSG)

Local $ARET = DllCall("user32.dll", "uint", "RegisterWindowMessageW", "wstr", $SMSG)

If @error Then Return SetError(@error, @extended, 0)

If $ARET[0] = 0 Then Return SetError(10, _WINAPI_GETLASTERROR(), 0)

Return $ARET[0]

EndFunc

 

 

Func __IESENDMESSAGETIMEOUT($HWND, $MSG, $WPARAM, $LPARAM, $NFLAGS, $NTIMEOUT, ByRef $VOUT, $R = 0, $T1 = "int", $T2 = "int")

Local $ARET = DllCall("user32.dll", "lresult", "SendMessageTimeout", "hwnd", $HWND, "uint", $MSG, $T1, $WPARAM, $T2, $LPARAM, "uint", $NFLAGS, "uint", $NTIMEOUT, "dword_ptr*", "")

If @error Or $ARET[0] = 0 Then

$VOUT = 0

Return SetError(1, _WINAPI_GETLASTERROR(), 0)

EndIf

$VOUT = $ARET[7]

If $R >= 0 And $R <= 4 Then Return $ARET[$R]

Return $ARET

EndFunc

 

 

Func __IEISOBJTYPE(ByRef $O_OBJECT, $S_TYPE)

If Not IsObj($O_OBJECT) Then

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

Local $STATUS = __IEINTERNALERRORHANDLERREGISTER()

If Not $STATUS Then __IEERRORNOTIFY("Warning", "internal function __IEIsObjType", "Cannot register internal error handler, cannot trap COM errors", "Use _IEErrorHandlerRegister() to register a user error handler")

Local $F_NOTIFYSTATUS = _IEERRORNOTIFY()

_IEERRORNOTIFY(False)

Local $S_NAME = String(ObjName($O_OBJECT)), $OBJECTOK = False

Switch $S_TYPE

Case "browserdom"

Local $OTEMP = $O_OBJECT.document

If __IEISOBJTYPE($O_OBJECT, "documentcontainer") Then

$OBJECTOK = True

ElseIf __IEISOBJTYPE($O_OBJECT, "document") Then

$OBJECTOK = True

ElseIf __IEISOBJTYPE($OTEMP, "document") Then

$OBJECTOK = True

EndIf

Case "browser"

If ($S_NAME = "IWebBrowser2") Or ($S_NAME = "IWebBrowser") Then $OBJECTOK = True

Case "window"

If $S_NAME = "DispHTMLWindow2" Then $OBJECTOK = True

Case "documentContainer"

If __IEISOBJTYPE($O_OBJECT, "window") Or __IEISOBJTYPE($O_OBJECT, "browser") Then $OBJECTOK = True

Case "document"

If $S_NAME = "DispHTMLDocument" Then $OBJECTOK = True

Case "table"

If $S_NAME = "DispHTMLTable" Then $OBJECTOK = True

Case "form"

If $S_NAME = "DispHTMLFormElement" Then $OBJECTOK = True

Case "forminputelement"

If ($S_NAME = "DispHTMLInputElement") Or ($S_NAME = "DispHTMLSelectElement") Or ($S_NAME = "DispHTMLTextAreaElement") Then $OBJECTOK = True

Case "elementcollection"

If ($S_NAME = "DispHTMLElementCollection") Then $OBJECTOK = True

Case "formselectelement"

If $S_NAME = "DispHTMLSelectElement" Then $OBJECTOK = True

Case Else

Return SetError($_IESTATUS_INVALIDVALUE, 2, 0)

EndSwitch

_IEERRORNOTIFY($F_NOTIFYSTATUS)

__IEINTERNALERRORHANDLERDEREGISTER()

If $OBJECTOK Then

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Else

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

EndFunc

 

 

Func __IEERRORNOTIFY($S_SEVERITY, $S_FUNC, $S_STATUS = "", $S_MESSAGE = "")

If $_IEERRORNOTIFY Or $__IEAU3DEBUG Then

Local $SSTR = "--> IE.au3 " & $IEAU3VERSIONINFO[5] & " " & $S_SEVERITY & " from function " & $S_FUNC

If Not String($S_STATUS) = "" Then $SSTR &= ", " & $S_STATUS

If Not String($S_MESSAGE) = "" Then $SSTR &= " (" & $S_MESSAGE & ")"

ConsoleWrite($SSTR & @CRLF)

EndIf

Return 1

EndFunc

 

 

Func __IEINTERNALERRORHANDLERREGISTER()

Local $SCURRENTERRORHANDLER = ObjEvent("AutoIt.Error")

If $SCURRENTERRORHANDLER <> "" And Not IsObj($OIEERRORHANDLER) Then

Return SetError($_IESTATUS_GENERALERROR, 0, 0)

EndIf

$OIEERRORHANDLER = ""

$OIEERRORHANDLER = ObjEvent("AutoIt.Error", "__IEInternalErrorHandler")

If IsObj($OIEERRORHANDLER) Then

Return SetError($_IESTATUS_SUCCESS, 0, 1)

Else

Return SetError($_IESTATUS_GENERALERROR, 0, 0)

EndIf

EndFunc

 

 

Func __IEINTERNALERRORHANDLERDEREGISTER()

$OIEERRORHANDLER = ""

If $SIEUSERERRORHANDLER <> "" Then

$OIEERRORHANDLER = ObjEvent("AutoIt.Error", $SIEUSERERRORHANDLER)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, 1)

EndFunc

 

 

Func __IEINTERNALERRORHANDLER()

$IECOMERRORSCRIPTLINE = $OIEERRORHANDLER.scriptline

$IECOMERRORNUMBER = $OIEERRORHANDLER.number

$IECOMERRORNUMBERHEX = Hex($OIEERRORHANDLER.number, 8)

$IECOMERRORDESCRIPTION = StringStripWS($OIEERRORHANDLER.description, 2)

$IECOMERRORWINDESCRIPTION = StringStripWS($OIEERRORHANDLER.WinDescription, 2)

$IECOMERRORSOURCE = $OIEERRORHANDLER.Source

$IECOMERRORHELPFILE = $OIEERRORHANDLER.HelpFile

$IECOMERRORHELPCONTEXT = $OIEERRORHANDLER.HelpContext

$IECOMERRORLASTDLLERROR = $OIEERRORHANDLER.LastDllError

$IECOMERROROUTPUT = ""

$IECOMERROROUTPUT &= "--> COM Error Encountered in " & @ScriptName & @CRLF

$IECOMERROROUTPUT &= "----> $IEComErrorScriptline = " & $IECOMERRORSCRIPTLINE & @CRLF

$IECOMERROROUTPUT &= "----> $IEComErrorNumberHex = " & $IECOMERRORNUMBERHEX & @CRLF

$IECOMERROROUTPUT &= "----> $IEComErrorNumber = " & $IECOMERRORNUMBER & @CRLF

$IECOMERROROUTPUT &= "----> $IEComErrorWinDescription = " & $IECOMERRORWINDESCRIPTION & @CRLF

$IECOMERROROUTPUT &= "----> $IEComErrorDescription = " & $IECOMERRORDESCRIPTION & @CRLF

$IECOMERROROUTPUT &= "----> $IEComErrorSource = " & $IECOMERRORSOURCE & @CRLF

$IECOMERROROUTPUT &= "----> $IEComErrorHelpFile = " & $IECOMERRORHELPFILE & @CRLF

$IECOMERROROUTPUT &= "----> $IEComErrorHelpContext = " & $IECOMERRORHELPCONTEXT & @CRLF

$IECOMERROROUTPUT &= "----> $IEComErrorLastDllError = " & $IECOMERRORLASTDLLERROR & @CRLF

If $_IEERRORNOTIFY Or $__IEAU3DEBUG Then ConsoleWrite($IECOMERROROUTPUT & @CRLF)

SetError($_IESTATUS_COMERROR)

Return

EndFunc

 

 

Func __IECOMERRORUNRECOVERABLE()

Select

Case ($IECOMERRORNUMBER = -2147352567) Or (String($IECOMERRORDESCRIPTION) = "Access is denied.")

Return $_IESTATUS_ACCESSISDENIED

Case ($IECOMERRORNUMBER = -2147417848) Or (String($IECOMERRORWINDESCRIPTION) = "The object invoked has disconnected from its clients.")

Return $_IESTATUS_CLIENTDISCONNECTED

Case Else

Return $_IESTATUS_SUCCESS

EndSelect

EndFunc

 

#EndRegion Internal functions

#Region ProtoType Functions

 

Func __IENAVIGATE(ByRef $O_OBJECT, $S_URL, $F_WAIT = 1, $I_FLAGS = 0, $S_TARGET = "", $S_POSTDATA = "", $S_HEADERS = "")

__IEERRORNOTIFY("Warning", "__IENavigate", "Unsupported function called. Not fully tested.")

If Not IsObj($O_OBJECT) Then

__IEERRORNOTIFY("Error", "__IENavigate", "$_IEStatus_InvalidDataType")

Return SetError($_IESTATUS_INVALIDDATATYPE, 1, 0)

EndIf

If Not __IEISOBJTYPE($O_OBJECT, "documentContainer") Then

__IEERRORNOTIFY("Error", "__IENavigate", "$_IEStatus_InvalidObjectType")

Return SetError($_IESTATUS_INVALIDOBJECTTYPE, 1, 0)

EndIf

$O_OBJECT.navigate ($S_URL, $I_FLAGS, $S_TARGET, $S_POSTDATA, $S_HEADERS)

If $F_WAIT Then

_IELOADWAIT($O_OBJECT)

Return SetError(@error, 0, $O_OBJECT)

EndIf

Return SetError($_IESTATUS_SUCCESS, 0, $O_OBJECT)

EndFunc

 

 

Func __IESTRINGTOBSTR($S_STRING, $S_CHARSET = "us-ascii")

Local Const $ADTYPEBINARY = 1, $ADTYPETEXT = 2

Local $O_STREAM = ObjCreate("ADODB.Stream")

$O_STREAM.Type = $ADTYPETEXT

$O_STREAM.CharSet = $S_CHARSET

$O_STREAM.Open

$O_STREAM.WriteText ($S_STRING)

$O_STREAM.Position = 0

$O_STREAM.Type = $ADTYPEBINARY

$O_STREAM.Position = 0

Return $O_STREAM.Read

EndFunc

 

 

Func __IEBSTRTOSTRING($O_BSTR, $S_CHARSET = "us-ascii")

Local Const $ADTYPEBINARY = 1, $ADTYPETEXT = 2

Local $O_STREAM = ObjCreate("ADODB.Stream")

$O_STREAM.Type = $ADTYPEBINARY

$O_STREAM.Open

$O_STREAM.Write ($O_BSTR)

$O_STREAM.Position = 0

$O_STREAM.Type = $ADTYPETEXT

$O_STREAM.CharSet = $S_CHARSET

$O_STREAM.Position = 0

Return $O_STREAM.ReadText

EndFunc

 

 

Func __IECREATENEWIE($S_TITLE, $S_HEAD = "", $S_BODY = "")

Local $S_TEMP = __IETEMPFILE("", "~IE~", ".htm")

If @error Then

__IEERRORNOTIFY("Error", "_IECreateHTA", "", "Error creating temporary file in @TempDir or @ScriptDir")

Return SetError($_IESTATUS_GENERALERROR, 1, 0)

EndIf

Local $S_HTML = ""

$S_HTML &= "<HTML>" & @CR

$S_HTML &= "<HEAD>" & @CR

$S_HTML &= "<TITLE>" & $S_TEMP & "</TITLE>" & @CR & $S_HEAD & @CR

$S_HTML &= "</HEAD>" & @CR

$S_HTML &= "<BODY>" & @CR & $S_BODY & @CR

$S_HTML &= "</BODY>" & @CR

$S_HTML &= "</HTML>"

Local $H_FILE = FileOpen($S_TEMP, 2)

FileWrite($H_FILE, $S_HTML)

FileClose($H_FILE)

If @error Then

__IEERRORNOTIFY("Error", "_IECreateNewIE", "", "Error creating temporary file in @TempDir or @ScriptDir")

Return SetError($_IESTATUS_GENERALERROR, 2, 0)

EndIf

Run(@ProgramFilesDir & "\Internet Explorer\iexplore.exe " & $S_TEMP)

Local $S_PID

If WinWait($S_TEMP, "", 60) Then

$S_PID = WinGetProcess($S_TEMP)

Else

__IEERRORNOTIFY("Error", "_IECreateNewIE", "", "Timeout waiting for new IE window creation")

Return SetError($_IESTATUS_GENERALERROR, 3, 0)

EndIf

If Not FileDelete($S_TEMP) Then

__IEERRORNOTIFY("Warning", "_IECreateNewIE", "", "Could not delete temporary file " & FileGetLongName($S_TEMP))

EndIf

Local $O_OBJECT = _IEATTACH($S_TEMP)

_IELOADWAIT($O_OBJECT)

_IEPROPERTYSET($O_OBJECT, "title", $S_TITLE)

Return SetError($_IESTATUS_SUCCESS, $S_PID, $O_OBJECT)

EndFunc

 

 

Func __IETEMPFILE($S_DIRECTORYNAME = @TempDir, $S_FILEPREFIX = "~", $S_FILEEXTENSION = ".tmp", $I_RANDOMLENGTH = 7)

Local $S_TEMPNAME, $I_TMP = 0

If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @TempDir

If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @ScriptDir

If StringRight($S_DIRECTORYNAME, 1) <> "\" Then $S_DIRECTORYNAME = $S_DIRECTORYNAME & "\"

Do

$S_TEMPNAME = ""

While StringLen($S_TEMPNAME) < $I_RANDOMLENGTH

$S_TEMPNAME = $S_TEMPNAME & Chr(Random(97, 122, 1))

WEnd

$S_TEMPNAME = $S_DIRECTORYNAME & $S_FILEPREFIX & $S_TEMPNAME & $S_FILEEXTENSION

$I_TMP += 1

If $I_TMP > 200 Then

Return SetError($_IESTATUS_GENERALERROR, 1, 0)

EndIf

Until Not FileExists($S_TEMPNAME)

Return $S_TEMPNAME

EndFunc

 

#EndRegion ProtoType Functions

Global Const $WS_TILED = 0

Global Const $WS_OVERLAPPED = 0

Global Const $WS_MAXIMIZEBOX = 65536

Global Const $WS_MINIMIZEBOX = 131072

Global Const $WS_TABSTOP = 65536

Global Const $WS_GROUP = 131072

Global Const $WS_SIZEBOX = 262144

Global Const $WS_THICKFRAME = 262144

Global Const $WS_SYSMENU = 524288

Global Const $WS_HSCROLL = 1048576

Global Const $WS_VSCROLL = 2097152

Global Const $WS_DLGFRAME = 4194304

Global Const $WS_BORDER = 8388608

Global Const $WS_CAPTION = 12582912

Global Const $WS_OVERLAPPEDWINDOW = 13565952

Global Const $WS_TILEDWINDOW = 13565952

Global Const $WS_MAXIMIZE = 16777216

Global Const $WS_CLIPCHILDREN = 33554432

Global Const $WS_CLIPSIBLINGS = 67108864

Global Const $WS_DISABLED = 134217728

Global Const $WS_VISIBLE = 268435456

Global Const $WS_MINIMIZE = 536870912

Global Const $WS_CHILD = 1073741824

Global Const $WS_POPUP = -2147483648

Global Const $WS_POPUPWINDOW = -2138570752

Global Const $DS_MODALFRAME = 128

Global Const $DS_SETFOREGROUND = 512

Global Const $DS_CONTEXTHELP = 8192

Global Const $WS_EX_ACCEPTFILES = 16

Global Const $WS_EX_MDICHILD = 64

Global Const $WS_EX_APPWINDOW = 262144

Global Const $WS_EX_COMPOSITED = 33554432

Global Const $WS_EX_CLIENTEDGE = 512

Global Const $WS_EX_CONTEXTHELP = 1024

Global Const $WS_EX_DLGMODALFRAME = 1

Global Const $WS_EX_LEFTSCROLLBAR = 16384

Global Const $WS_EX_OVERLAPPEDWINDOW = 768

Global Const $WS_EX_RIGHT = 4096

Global Const $WS_EX_STATICEDGE = 131072

Global Const $WS_EX_TOOLWINDOW = 128

Global Const $WS_EX_TOPMOST = 8

Global Const $WS_EX_TRANSPARENT = 32

Global Const $WS_EX_WINDOWEDGE = 256

Global Const $WS_EX_LAYERED = 524288

Global Const $WS_EX_CONTROLPARENT = 65536

Global Const $WS_EX_LAYOUTRTL = 4194304

Global Const $WS_EX_RTLREADING = 8192

Global Const $WM_GETTEXTLENGTH = 14

Global Const $WM_GETTEXT = 13

Global Const $WM_SIZE = 5

Global Const $WM_SIZING = 532

Global Const $WM_USER = 1024

Global Const $WM_CREATE = 1

Global Const $WM_DESTROY = 2

Global Const $WM_MOVE = 3

Global Const $WM_ACTIVATE = 6

Global Const $WM_SETFOCUS = 7

Global Const $WM_KILLFOCUS = 8

Global Const $WM_ENABLE = 10

Global Const $WM_SETREDRAW = 11

Global Const $WM_SETTEXT = 12

Global Const $WM_PAINT = 15

Global Const $WM_CLOSE = 16

Global Const $WM_QUIT = 18

Global Const $WM_ERASEBKGND = 20

Global Const $WM_SYSCOLORCHANGE = 21

Global Const $WM_SHOWWINDOW = 24

Global Const $WM_WININICHANGE = 26

Global Const $WM_DEVMODECHANGE = 27

Global Const $WM_ACTIVATEAPP = 28

Global Const $WM_FONTCHANGE = 29

Global Const $WM_TIMECHANGE = 30

Global Const $WM_CANCELMODE = 31

Global Const $WM_SETCURSOR = 32

Global Const $WM_MOUSEACTIVATE = 33

Global Const $WM_CHILDACTIVATE = 34

Global Const $WM_QUEUESYNC = 35

Global Const $WM_GETMINMAXINFO = 36

Global Const $WM_PAINTICON = 38

Global Const $WM_ICONERASEBKGND = 39

Global Const $WM_NEXTDLGCTL = 40

Global Const $WM_SPOOLERSTATUS = 42

Global Const $WM_DRAWITEM = 43

Global Const $WM_MEASUREITEM = 44

Global Const $WM_DELETEITEM = 45

Global Const $WM_VKEYTOITEM = 46

Global Const $WM_CHARTOITEM = 47

Global Const $WM_SETFONT = 48

Global Const $WM_GETFONT = 49

Global Const $WM_SETHOTKEY = 50

Global Const $WM_GETHOTKEY = 51

Global Const $WM_QUERYDRAGICON = 55

Global Const $WM_COMPAREITEM = 57

Global Const $WM_GETOBJECT = 61

Global Const $WM_COMPACTING = 65

Global Const $WM_COMMNOTIFY = 68

Global Const $WM_WINDOWPOSCHANGING = 70

Global Const $WM_WINDOWPOSCHANGED = 71

Global Const $WM_POWER = 72

Global Const $WM_NOTIFY = 78

Global Const $WM_COPYDATA = 74

Global Const $WM_CANCELJOURNAL = 75

Global Const $WM_INPUTLANGCHANGEREQUEST = 80

Global Const $WM_INPUTLANGCHANGE = 81

Global Const $WM_TCARD = 82

Global Const $WM_HELP = 83

Global Const $WM_USERCHANGED = 84

Global Const $WM_NOTIFYFORMAT = 85

Global Const $WM_CUT = 768

Global Const $WM_COPY = 769

Global Const $WM_PASTE = 770

Global Const $WM_CLEAR = 771

Global Const $WM_UNDO = 772

Global Const $WM_CONTEXTMENU = 123

Global Const $WM_STYLECHANGING = 124

Global Const $WM_STYLECHANGED = 125

Global Const $WM_DISPLAYCHANGE = 126

Global Const $WM_GETICON = 127

Global Const $WM_SETICON = 128

Global Const $WM_NCCREATE = 129

Global Const $WM_NCDESTROY = 130

Global Const $WM_NCCALCSIZE = 131

Global Const $WM_NCHITTEST = 132

Global Const $WM_NCPAINT = 133

Global Const $WM_NCACTIVATE = 134

Global Const $WM_GETDLGCODE = 135

Global Const $WM_SYNCPAINT = 136

Global Const $WM_NCMOUSEMOVE = 160

Global Const $WM_NCLBUTTONDOWN = 161

Global Const $WM_NCLBUTTONUP = 162

Global Const $WM_NCLBUTTONDBLCLK = 163

Global Const $WM_NCRBUTTONDOWN = 164

Global Const $WM_NCRBUTTONUP = 165

Global Const $WM_NCRBUTTONDBLCLK = 166

Global Const $WM_NCMBUTTONDOWN = 167

Global Const $WM_NCMBUTTONUP = 168

Global Const $WM_NCMBUTTONDBLCLK = 169

Global Const $WM_KEYDOWN = 256

Global Const $WM_KEYUP = 257

Global Const $WM_CHAR = 258

Global Const $WM_DEADCHAR = 259

Global Const $WM_SYSKEYDOWN = 260

Global Const $WM_SYSKEYUP = 261

Global Const $WM_SYSCHAR = 262

Global Const $WM_SYSDEADCHAR = 263

Global Const $WM_INITDIALOG = 272

Global Const $WM_COMMAND = 273

Global Const $WM_SYSCOMMAND = 274

Global Const $WM_TIMER = 275

Global Const $WM_HSCROLL = 276

Global Const $WM_VSCROLL = 277

Global Const $WM_INITMENU = 278

Global Const $WM_INITMENUPOPUP = 279

Global Const $WM_MENUSELECT = 287

Global Const $WM_MENUCHAR = 288

Global Const $WM_ENTERIDLE = 289

Global Const $WM_MENURBUTTONUP = 290

Global Const $WM_MENUDRAG = 291

Global Const $WM_MENUGETOBJECT = 292

Global Const $WM_UNINITMENUPOPUP = 293

Global Const $WM_MENUCOMMAND = 294

Global Const $WM_CHANGEUISTATE = 295

Global Const $WM_UPDATEUISTATE = 296

Global Const $WM_QUERYUISTATE = 297

Global Const $WM_CTLCOLORMSGBOX = 306

Global Const $WM_CTLCOLOREDIT = 307

Global Const $WM_CTLCOLORLISTBOX = 308

Global Const $WM_CTLCOLORBTN = 309

Global Const $WM_CTLCOLORDLG = 310

Global Const $WM_CTLCOLORSCROLLBAR = 311

Global Const $WM_CTLCOLORSTATIC = 312

Global Const $WM_CTLCOLOR = 25

Global Const $MN_GETHMENU = 481

Global Const $NM_FIRST = 0

Global Const $NM_OUTOFMEMORY = $NM_FIRST - 1

Global Const $NM_CLICK = $NM_FIRST - 2

Global Const $NM_DBLCLK = $NM_FIRST - 3

Global Const $NM_RETURN = $NM_FIRST - 4

Global Const $NM_RCLICK = $NM_FIRST - 5

Global Const $NM_RDBLCLK = $NM_FIRST - 6

Global Const $NM_SETFOCUS = $NM_FIRST - 7

Global Const $NM_KILLFOCUS = $NM_FIRST - 8

Global Const $NM_CUSTOMDRAW = $NM_FIRST - 12

Global Const $NM_HOVER = $NM_FIRST - 13

Global Const $NM_NCHITTEST = $NM_FIRST - 14

Global Const $NM_KEYDOWN = $NM_FIRST - 15

Global Const $NM_RELEASEDCAPTURE = $NM_FIRST - 16

Global Const $NM_SETCURSOR = $NM_FIRST - 17

Global Const $NM_CHAR = $NM_FIRST - 18

Global Const $NM_TOOLTIPSCREATED = $NM_FIRST - 19

Global Const $NM_LDOWN = $NM_FIRST - 20

Global Const $NM_RDOWN = $NM_FIRST - 21

Global Const $NM_THEMECHANGED = $NM_FIRST - 22

Global Const $WM_MOUSEMOVE = 512

Global Const $WM_LBUTTONDOWN = 513

Global Const $WM_LBUTTONUP = 514

Global Const $WM_LBUTTONDBLCLK = 515

Global Const $WM_RBUTTONDOWN = 516

Global Const $WM_RBUTTONUP = 517

Global Const $WM_RBUTTONDBLCK = 518

Global Const $WM_MBUTTONDOWN = 519

Global Const $WM_MBUTTONUP = 520

Global Const $WM_MBUTTONDBLCK = 521

Global Const $WM_MOUSEWHEEL = 522

Global Const $WM_XBUTTONDOWN = 523

Global Const $WM_XBUTTONUP = 524

Global Const $WM_XBUTTONDBLCLK = 525

Global Const $WM_MOUSEHWHEEL = 526

Global Const $PS_SOLID = 0

Global Const $PS_DASH = 1

Global Const $PS_DOT = 2

Global Const $PS_DASHDOT = 3

Global Const $PS_DASHDOTDOT = 4

Global Const $PS_NULL = 5

Global Const $PS_INSIDEFRAME = 6

Global Const $LWA_ALPHA = 2

Global Const $LWA_COLORKEY = 1

Global Const $RGN_AND = 1

Global Const $RGN_OR = 2

Global Const $RGN_XOR = 3

Global Const $RGN_DIFF = 4

Global Const $RGN_COPY = 5

Global Const $ERRORREGION = 0

Global Const $NULLREGION = 1

Global Const $SIMPLEREGION = 2

Global Const $COMPLEXREGION = 3

Global Const $TRANSPARENT = 1

Global Const $OPAQUE = 2

Global Const $CCM_FIRST = 8192

Global Const $CCM_GETUNICODEFORMAT = ($CCM_FIRST + 6)

Global Const $CCM_SETUNICODEFORMAT = ($CCM_FIRST + 5)

Global Const $CCM_SETBKCOLOR = $CCM_FIRST + 1

Global Const $CCM_SETCOLORSCHEME = $CCM_FIRST + 2

Global Const $CCM_GETCOLORSCHEME = $CCM_FIRST + 3

Global Const $CCM_GETDROPTARGET = $CCM_FIRST + 4

Global Const $CCM_SETWINDOWTHEME = $CCM_FIRST + 11

Global Const $GA_PARENT = 1

Global Const $GA_ROOT = 2

Global Const $GA_ROOTOWNER = 3

Global Const $SM_CXSCREEN = 0

Global Const $SM_CYSCREEN = 1

Global Const $SM_CXVSCROLL = 2

Global Const $SM_CYHSCROLL = 3

Global Const $SM_CYCAPTION = 4

Global Const $SM_CXBORDER = 5

Global Const $SM_CYBORDER = 6

Global Const $SM_CXDLGFRAME = 7

Global Const $SM_CYDLGFRAME = 8

Global Const $SM_CYVTHUMB = 9

Global Const $SM_CXHTHUMB = 10

Global Const $SM_CXICON = 11

Global Const $SM_CYICON = 12

Global Const $SM_CXCURSOR = 13

Global Const $SM_CYCURSOR = 14

Global Const $SM_CYMENU = 15

Global Const $SM_CXFULLSCREEN = 16

Global Const $SM_CYFULLSCREEN = 17

Global Const $SM_CYKANJIWINDOW = 18

Global Const $SM_MOUSEPRESENT = 19

Global Const $SM_CYVSCROLL = 20

Global Const $SM_CXHSCROLL = 21

Global Const $SM_DEBUG = 22

Global Const $SM_SWAPBUTTON = 23

Global Const $SM_RESERVED1 = 24

Global Const $SM_RESERVED2 = 25

Global Const $SM_RESERVED3 = 26

Global Const $SM_RESERVED4 = 27

Global Const $SM_CXMIN = 28

Global Const $SM_CYMIN = 29

Global Const $SM_CXSIZE = 30

Global Const $SM_CYSIZE = 31

Global Const $SM_CXFRAME = 32

Global Const $SM_CYFRAME = 33

Global Const $SM_CXMINTRACK = 34

Global Const $SM_CYMINTRACK = 35

Global Const $SM_CXDOUBLECLK = 36

Global Const $SM_CYDOUBLECLK = 37

Global Const $SM_CXICONSPACING = 38

Global Const $SM_CYICONSPACING = 39

Global Const $SM_MENUDROPALIGNMENT = 40

Global Const $SM_PENWINDOWS = 41

Global Const $SM_DBCSENABLED = 42

Global Const $SM_CMOUSEBUTTONS = 43

Global Const $SM_SECURE = 44

Global Const $SM_CXEDGE = 45

Global Const $SM_CYEDGE = 46

Global Const $SM_CXMINSPACING = 47

Global Const $SM_CYMINSPACING = 48

Global Const $SM_CXSMICON = 49

Global Const $SM_CYSMICON = 50

Global Const $SM_CYSMCAPTION = 51

Global Const $SM_CXSMSIZE = 52

Global Const $SM_CYSMSIZE = 53

Global Const $SM_CXMENUSIZE = 54

Global Const $SM_CYMENUSIZE = 55

Global Const $SM_ARRANGE = 56

Global Const $SM_CXMINIMIZED = 57

Global Const $SM_CYMINIMIZED = 58

Global Const $SM_CXMAXTRACK = 59

Global Const $SM_CYMAXTRACK = 60

Global Const $SM_CXMAXIMIZED = 61

Global Const $SM_CYMAXIMIZED = 62

Global Const $SM_NETWORK = 63

Global Const $SM_CLEANBOOT = 67

Global Const $SM_CXDRAG = 68

Global Const $SM_CYDRAG = 69

Global Const $SM_SHOWSOUNDS = 70

Global Const $SM_CXMENUCHECK = 71

Global Const $SM_CYMENUCHECK = 72

Global Const $SM_SLOWMACHINE = 73

Global Const $SM_MIDEASTENABLED = 74

Global Const $SM_MOUSEWHEELPRESENT = 75

Global Const $SM_XVIRTUALSCREEN = 76

Global Const $SM_YVIRTUALSCREEN = 77

Global Const $SM_CXVIRTUALSCREEN = 78

Global Const $SM_CYVIRTUALSCREEN = 79

Global Const $SM_CMONITORS = 80

Global Const $SM_SAMEDISPLAYFORMAT = 81

Global Const $SM_IMMENABLED = 82

Global Const $SM_CXFOCUSBORDER = 83

Global Const $SM_CYFOCUSBORDER = 84

Global Const $SM_TABLETPC = 86

Global Const $SM_MEDIACENTER = 87

Global Const $SM_STARTER = 88

Global Const $SM_SERVERR2 = 89

Global Const $SM_CMETRICS = 90

Global Const $SM_REMOTESESSION = 4096

Global Const $SM_SHUTTINGDOWN = 8192

Global Const $SM_REMOTECONTROL = 8193

Global Const $SM_CARETBLINKINGENABLED = 8194

Global Const $BLACKNESS = 66

Global Const $CAPTUREBLT = 1073741824

Global Const $DSTINVERT = 5570569

Global Const $MERGECOPY = 12583114

Global Const $MERGEPAINT = 12255782

Global Const $NOMIRRORBITMAP = -2147483648

Global Const $NOTSRCCOPY = 3342344

Global Const $NOTSRCERASE = 1114278

Global Const $PATCOPY = 15728673

Global Const $PATINVERT = 5898313

Global Const $PATPAINT = 16452105

Global Const $SRCAND = 8913094

Global Const $SRCCOPY = 13369376

Global Const $SRCERASE = 4457256

Global Const $SRCINVERT = 6684742

Global Const $SRCPAINT = 15597702

Global Const $WHITENESS = 16711778

Global Const $DT_BOTTOM = 8

Global Const $DT_CALCRECT = 1024

Global Const $DT_CENTER = 1

Global Const $DT_EDITCONTROL = 8192

Global Const $DT_END_ELLIPSIS = 32768

Global Const $DT_EXPANDTABS = 64

Global Const $DT_EXTERNALLEADING = 512

Global Const $DT_HIDEPREFIX = 1048576

Global Const $DT_INTERNAL = 4096

Global Const $DT_LEFT = 0

Global Const $DT_MODIFYSTRING = 65536

Global Const $DT_NOCLIP = 256

Global Const $DT_NOFULLWIDTHCHARBREAK = 524288

Global Const $DT_NOPREFIX = 2048

Global Const $DT_PATH_ELLIPSIS = 16384

Global Const $DT_PREFIXONLY = 2097152

Global Const $DT_RIGHT = 2

Global Const $DT_RTLREADING = 131072

Global Const $DT_SINGLELINE = 32

Global Const $DT_TABSTOP = 128

Global Const $DT_TOP = 0

Global Const $DT_VCENTER = 4

Global Const $DT_WORDBREAK = 16

Global Const $DT_WORD_ELLIPSIS = 262144

Global Const $RDW_ERASE = 4

Global Const $RDW_FRAME = 1024

Global Const $RDW_INTERNALPAINT = 2

Global Const $RDW_INVALIDATE = 1

Global Const $RDW_NOERASE = 32

Global Const $RDW_NOFRAME = 2048

Global Const $RDW_NOINTERNALPAINT = 16

Global Const $RDW_VALIDATE = 8

Global Const $RDW_ERASENOW = 512

Global Const $RDW_UPDATENOW = 256

Global Const $RDW_ALLCHILDREN = 128

Global Const $RDW_NOCHILDREN = 64

Global Const $WM_RENDERFORMAT = 773

Global Const $WM_RENDERALLFORMATS = 774

Global Const $WM_DESTROYCLIPBOARD = 775

Global Const $WM_DRAWCLIPBOARD = 776

Global Const $WM_PAINTCLIPBOARD = 777

Global Const $WM_VSCROLLCLIPBOARD = 778

Global Const $WM_SIZECLIPBOARD = 779

Global Const $WM_ASKCBFORMATNAME = 780

Global Const $WM_CHANGECBCHAIN = 781

Global Const $WM_HSCROLLCLIPBOARD = 782

Global Const $HTERROR = -2

Global Const $HTTRANSPARENT = -1

Global Const $HTNOWHERE = 0

Global Const $HTCLIENT = 1

Global Const $HTCAPTION = 2

Global Const $HTSYSMENU = 3

Global Const $HTGROWBOX = 4

Global Const $HTSIZE = $HTGROWBOX

Global Const $HTMENU = 5

Global Const $HTHSCROLL = 6

Global Const $HTVSCROLL = 7

Global Const $HTMINBUTTON = 8

Global Const $HTMAXBUTTON = 9

Global Const $HTLEFT = 10

Global Const $HTRIGHT = 11

Global Const $HTTOP = 12

Global Const $HTTOPLEFT = 13

Global Const $HTTOPRIGHT = 14

Global Const $HTBOTTOM = 15

Global Const $HTBOTTOMLEFT = 16

Global Const $HTBOTTOMRIGHT = 17

Global Const $HTBORDER = 18

Global Const $HTREDUCE = $HTMINBUTTON

Global Const $HTZOOM = $HTMAXBUTTON

Global Const $HTSIZEFIRST = $HTLEFT

Global Const $HTSIZELAST = $HTBOTTOMRIGHT

Global Const $HTOBJECT = 19

Global Const $HTCLOSE = 20

Global Const $HTHELP = 21

Global Const $COLOR_SCROLLBAR = 0

Global Const $COLOR_BACKGROUND = 1

Global Const $COLOR_ACTIVECAPTION = 2

Global Const $COLOR_INACTIVECAPTION = 3

Global Const $COLOR_MENU = 4

Global Const $COLOR_WINDOW = 5

Global Const $COLOR_WINDOWFRAME = 6

Global Const $COLOR_MENUTEXT = 7

Global Const $COLOR_WINDOWTEXT = 8

Global Const $COLOR_CAPTIONTEXT = 9

Global Const $COLOR_ACTIVEBORDER = 10

Global Const $COLOR_INACTIVEBORDER = 11

Global Const $COLOR_APPWORKSPACE = 12

Global Const $COLOR_HIGHLIGHT = 13

Global Const $COLOR_HIGHLIGHTTEXT = 14

Global Const $COLOR_BTNFACE = 15

Global Const $COLOR_BTNSHADOW = 16

Global Const $COLOR_GRAYTEXT = 17

Global Const $COLOR_BTNTEXT = 18

Global Const $COLOR_INACTIVECAPTIONTEXT = 19

Global Const $COLOR_BTNHIGHLIGHT = 20

Global Const $COLOR_3DDKSHADOW = 21

Global Const $COLOR_3DLIGHT = 22

Global Const $COLOR_INFOTEXT = 23

Global Const $COLOR_INFOBK = 24

Global Const $COLOR_HOTLIGHT = 26

Global Const $COLOR_GRADIENTACTIVECAPTION = 27

Global Const $COLOR_GRADIENTINACTIVECAPTION = 28

Global Const $COLOR_MENUHILIGHT = 29

Global Const $COLOR_MENUBAR = 30

Global Const $COLOR_DESKTOP = 1

Global Const $COLOR_3DFACE = 15

Global Const $COLOR_3DSHADOW = 16

Global Const $COLOR_3DHIGHLIGHT = 20

Global Const $COLOR_3DHILIGHT = 20

Global Const $COLOR_BTNHILIGHT = 20

Global Const $HINST_COMMCTRL = -1

Global Const $IDB_STD_SMALL_COLOR = 0

Global Const $IDB_STD_LARGE_COLOR = 1

Global Const $IDB_VIEW_SMALL_COLOR = 4

Global Const $IDB_VIEW_LARGE_COLOR = 5

Global Const $IDB_HIST_SMALL_COLOR = 8

Global Const $IDB_HIST_LARGE_COLOR = 9

Global Const $STARTF_FORCEOFFFEEDBACK = 128

Global Const $STARTF_FORCEONFEEDBACK = 64

Global Const $STARTF_RUNFULLSCREEN = 32

Global Const $STARTF_USECOUNTCHARS = 8

Global Const $STARTF_USEFILLATTRIBUTE = 16

Global Const $STARTF_USEHOTKEY = 512

Global Const $STARTF_USEPOSITION = 4

Global Const $STARTF_USESHOWWINDOW = 1

Global Const $STARTF_USESIZE = 2

Global Const $STARTF_USESTDHANDLES = 256

Global Const $CDDS_PREPAINT = 1

Global Const $CDDS_POSTPAINT = 2

Global Const $CDDS_PREERASE = 3

Global Const $CDDS_POSTERASE = 4

Global Const $CDDS_ITEM = 65536

Global Const $CDDS_ITEMPREPAINT = 65537

Global Const $CDDS_ITEMPOSTPAINT = 65538

Global Const $CDDS_ITEMPREERASE = 65539

Global Const $CDDS_ITEMPOSTERASE = 65540

Global Const $CDDS_SUBITEM = 131072

Global Const $CDIS_SELECTED = 1

Global Const $CDIS_GRAYED = 2

Global Const $CDIS_DISABLED = 4

Global Const $CDIS_CHECKED = 8

Global Const $CDIS_FOCUS = 16

Global Const $CDIS_DEFAULT = 32

Global Const $CDIS_HOT = 64

Global Const $CDIS_MARKED = 128

Global Const $CDIS_INDETERMINATE = 256

Global Const $CDIS_SHOWKEYBOARDCUES = 512

Global Const $CDIS_NEARHOT = 1024

Global Const $CDIS_OTHERSIDEHOT = 2048

Global Const $CDIS_DROPHILITED = 4096

Global Const $CDRF_DODEFAULT = 0

Global Const $CDRF_NEWFONT = 2

Global Const $CDRF_SKIPDEFAULT = 4

Global Const $CDRF_NOTIFYPOSTPAINT = 16

Global Const $CDRF_NOTIFYITEMDRAW = 32

Global Const $CDRF_NOTIFYSUBITEMDRAW = 32

Global Const $CDRF_NOTIFYPOSTERASE = 64

Global Const $CDRF_DOERASE = 8

Global Const $CDRF_SKIPPOSTPAINT = 256

Global Const $GUI_SS_DEFAULT_GUI = BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU)

Global Const $BS_GROUPBOX = 7

Global Const $BS_BOTTOM = 2048

Global Const $BS_CENTER = 768

Global Const $BS_DEFPUSHBUTTON = 1

Global Const $BS_LEFT = 256

Global Const $BS_MULTILINE = 8192

Global Const $BS_PUSHBOX = 10

Global Const $BS_PUSHLIKE = 4096

Global Const $BS_RIGHT = 512

Global Const $BS_RIGHTBUTTON = 32

Global Const $BS_TOP = 1024

Global Const $BS_VCENTER = 3072

Global Const $BS_FLAT = 32768

Global Const $BS_ICON = 64

Global Const $BS_BITMAP = 128

Global Const $BS_NOTIFY = 16384

Global Const $BS_SPLITBUTTON = 12

Global Const $BS_DEFSPLITBUTTON = 13

Global Const $BS_COMMANDLINK = 14

Global Const $BS_DEFCOMMANDLINK = 15

Global Const $BCSIF_GLYPH = 1

Global Const $BCSIF_IMAGE = 2

Global Const $BCSIF_STYLE = 4

Global Const $BCSIF_SIZE = 8

Global Const $BCSS_NOSPLIT = 1

Global Const $BCSS_STRETCH = 2

Global Const $BCSS_ALIGNLEFT = 4

Global Const $BCSS_IMAGE = 8

Global Const $BUTTON_IMAGELIST_ALIGN_LEFT = 0

Global Const $BUTTON_IMAGELIST_ALIGN_RIGHT = 1

Global Const $BUTTON_IMAGELIST_ALIGN_TOP = 2

Global Const $BUTTON_IMAGELIST_ALIGN_BOTTOM = 3

Global Const $BUTTON_IMAGELIST_ALIGN_CENTER = 4

Global Const $BS_3STATE = 5

Global Const $BS_AUTO3STATE = 6

Global Const $BS_AUTOCHECKBOX = 3

Global Const $BS_CHECKBOX = 2

Global Const $BS_RADIOBUTTON = 4

Global Const $BS_AUTORADIOBUTTON = 9

Global Const $BS_OWNERDRAW = 11

Global Const $GUI_SS_DEFAULT_BUTTON = 0

Global Const $GUI_SS_DEFAULT_CHECKBOX = 0

Global Const $GUI_SS_DEFAULT_GROUP = 0

Global Const $GUI_SS_DEFAULT_RADIO = 0

Global Const $BCM_FIRST = 5632

Global Const $BCM_GETIDEALSIZE = ($BCM_FIRST + 1)

Global Const $BCM_GETIMAGELIST = ($BCM_FIRST + 3)

Global Const $BCM_GETNOTE = ($BCM_FIRST + 10)

Global Const $BCM_GETNOTELENGTH = ($BCM_FIRST + 11)

Global Const $BCM_GETSPLITINFO = ($BCM_FIRST + 8)

Global Const $BCM_GETTEXTMARGIN = ($BCM_FIRST + 5)

Global Const $BCM_SETDROPDOWNSTATE = ($BCM_FIRST + 6)

Global Const $BCM_SETIMAGELIST = ($BCM_FIRST + 2)

Global Const $BCM_SETNOTE = ($BCM_FIRST + 9)

Global Const $BCM_SETSHIELD = ($BCM_FIRST + 12)

Global Const $BCM_SETSPLITINFO = ($BCM_FIRST + 7)

Global Const $BCM_SETTEXTMARGIN = ($BCM_FIRST + 4)

Global Const $BM_CLICK = 245

Global Const $BM_GETCHECK = 240

Global Const $BM_GETIMAGE = 246

Global Const $BM_GETSTATE = 242

Global Const $BM_SETCHECK = 241

Global Const $BM_SETDONTCLICK = 248

Global Const $BM_SETIMAGE = 247

Global Const $BM_SETSTATE = 243

Global Const $BM_SETSTYLE = 244

Global Const $BCN_FIRST = -1250

Global Const $BCN_DROPDOWN = ($BCN_FIRST + 2)

Global Const $BCN_HOTITEMCHANGE = ($BCN_FIRST + 1)

Global Const $BN_CLICKED = 0

Global Const $BN_PAINT = 1

Global Const $BN_HILITE = 2

Global Const $BN_UNHILITE = 3

Global Const $BN_DISABLE = 4

Global Const $BN_DOUBLECLICKED = 5

Global Const $BN_SETFOCUS = 6

Global Const $BN_KILLFOCUS = 7

Global Const $BN_PUSHED = $BN_HILITE

Global Const $BN_UNPUSHED = $BN_UNHILITE

Global Const $BN_DBLCLK = $BN_DOUBLECLICKED

Global Const $BST_CHECKED = 1

Global Const $BST_INDETERMINATE = 2

Global Const $BST_UNCHECKED = 0

Global Const $BST_FOCUS = 8

Global Const $BST_PUSHED = 4

Global Const $BST_DONTCLICK = 128

#NoTrayIcon

Global $M2ORDNER = @ScriptDir

Global $SCRIPTDIR = @ScriptDir

Global $TEMPDIR = @TempDir

Global $CREATED = FileReadLine($SCRIPTDIR & "\patch.ini", 1)

Global $URL = FileReadLine($SCRIPTDIR & "\patch.ini", 2)

Global $ADURL = FileReadLine($SCRIPTDIR & "\patch.ini", 3)

Global $FENSTERURL = FileReadLine($SCRIPTDIR & "\patch.ini", 4)

Global $BUTTONURL = FileReadLine($SCRIPTDIR & "\patch.ini", 4)

FileInstall("E:\Nowy folder (3)\main.bmp", @TempDir & "\main.bmp", 1)

FileInstall("E:\Nowy folder (3)\btn_startgame_up.bmp", @TempDir & "\btn_startgame_up.bmp", 1)

FileInstall("E:\Nowy folder (3)\btn_settings_up.bmp", @TempDir & "\btn_settings_up.bmp", 1)

FileInstall("E:\Nowy folder (3)\btn_newaccount_up.bmp", @TempDir & "\btn_newaccount_up.bmp", 1)

FileInstall("E:\Nowy folder (3)\btn_idpwd_up.bmp", @TempDir & "\btn_idpwd_up.bmp", 1)

FileInstall("E:\Nowy folder (3)\btn_quit_up.bmp", @TempDir & "\btn_quit_up.bmp", 1)

Opt("GUIOnEventMode", 1)

$FORM1 = GUICreate("Patcher [ by srulian96 ]", 373, 541, 193, 125)

GUISetOnEvent($GUI_EVENT_CLOSE, "_close")

$STAT = GUICtrlCreateEdit("", 16, 8, 337, 281)

GUICtrlSetData(-1, "[ Patcher by srulian96 ]" & @CRLF & "Rozpoczynanie patchowania...")

$CANCEL = GUICtrlCreateButton("Anuluj", 288, 496, 75, 25, 0)

GUICtrlSetOnEvent($CANCEL, "_close")

$PROGRESS1 = GUICtrlCreateProgress(16, 464, 334, 17)

$OIE = _IECREATEEMBEDDED()

$OIE_CTRL = GUICtrlCreateObj($OIE, 16, 312, 336, 136)

GUISetState(@SW_SHOW)

_IENAVIGATE($OIE, $ADURL)

$FORM2 = GUICreate("Patcher [ by srulian96 ]", 595, 385, 328, 160)

GUISetOnEvent($GUI_EVENT_CLOSE, "_close")

$PIC1 = GUICtrlCreatePic(@TempDir & "\main.bmp", 0, 0, 593, 382, $BS_BITMAP)

$START = GUICtrlCreateButton("(Not allowed)", 464, 40, 127, 41, $BS_BITMAP)

GUICtrlSetImage(-1, @TempDir & "\btn_startgame_up.bmp", 1)

GUICtrlSetOnEvent($START, "start")

$CONFIG = GUICtrlCreateButton("(Not allowed)", 464, 96, 127, 25, $BS_BITMAP)

GUICtrlSetOnEvent($CONFIG, "config")

GUICtrlSetImage(-1, @TempDir & "\btn_settings_up.bmp", 1)

$SEITE1 = GUICtrlCreateButton("(Not allowed)", 464, 184, 127, 25, $BS_BITMAP)

GUICtrlSetImage(-1, @TempDir & "\btn_newaccount_up.bmp", 1)

GUICtrlSetOnEvent($SEITE1, "seite")

$SEITE2 = GUICtrlCreateButton("(Not allowed)", 464, 160, 129, 25, $BS_BITMAP)

GUICtrlSetImage(-1, @TempDir & "\btn_idpwd_up.bmp", 1)

GUICtrlSetOnEvent($SEITE2, "seite")

$ENDE = GUICtrlCreateButton("(Not allowed)", 464, 352, 127, 25, $BS_BITMAP)

GUICtrlSetImage(-1, @TempDir & "\btn_quit_up.bmp", 1)

GUICtrlSetOnEvent($ENDE, "_close")

$OIE1 = _IECREATEEMBEDDED()

$OIE_CTRL1 = GUICtrlCreateObj($OIE1, 8, 8, 456, 376)

_IENAVIGATE($OIE1, $FENSTERURL)

GUISetState(@SW_HIDE)

 

Func SEITE()

_IECREATE($BUTTONURL)

EndFunc

 

 

Func START()

Run($SCRIPTDIR & "\metin2.bin")

Exit

EndFunc

 

 

Func CONFIG()

Run($SCRIPTDIR & "\config.exe")

EndFunc

 

 

Func _CLOSE()

Exit

EndFunc

 

Sleep(500)

PATCH()

 

Func PATCH()

If $CREATED = "<<: Created by srulian96 :>>" Then

$FILE = @TempDir & "\pliki.txt"

InetGet($URL & "\pliki.txt", $FILE)

$LINES = _FILECOUNTLINES($FILE)

Else

MsgBox(16, "BBd", "Tw,rţa jest srulian96!", @error)

EndIf

If $LINES = 0 Then

MsgBox(48, "Uwaga!", "Niewykryto downloadu na serwerze!")

Exit

EndIf

DirCreate("pack")

DirCreate("BGM")

DirCreate("lib")

DirCreate("mark")

DirCreate("miles")

DirCreate("screenshot")

DirCreate("upload")

While ($LINES >= 1)

$DATEI = FileReadLine($FILE, $LINES)

GUICtrlSetData($STAT, "Sprawdzanie pliku: " & $DATEI & @CRLF & GUICtrlRead($STAT))

$SIZE_INET = InetGetSize($URL & "\" & $DATEI)

If FileExists($SCRIPTDIR & "\" & $DATEI) Then

If @error Then

MsgBox(16, "BBd", @error)

EndIf

$SIZE_ORDNER = FileGetSize($SCRIPTDIR & "\" & $DATEI)

If $SIZE_INET <> $SIZE_ORDNER Then

GUICtrlSetData($STAT, "Pobieranie pliku: " & $DATEI & @CRLF & GUICtrlRead($STAT))

InetGet($URL & $DATEI, $SCRIPTDIR & "\" & $DATEI, 1, 1)

While 1

$HFILESIZE = FileGetSize($SCRIPTDIR & "\" & $DATEI)

$IPERCENT = 50

GUICtrlSetData($PROGRESS1, $IPERCENT)

If $HFILESIZE = $SIZE_INET Then

GUICtrlSetData($PROGRESS1, 100)

ExitLoop

EndIf

Sleep(50)

WEnd

Else

GUICtrlSetData($STAT, "Sprawdzono plik: " & $DATEI & @CRLF & GUICtrlRead($STAT))

EndIf

Else

InetGet($URL & $DATEI, $SCRIPTDIR & "\" & $DATEI, 1, 1)

GUICtrlSetData($STAT, "Pobieranie pliku: " & $DATEI & @CRLF & GUICtrlRead($STAT))

While 1

$HFILESIZE = FileGetSize($SCRIPTDIR & "\" & $DATEI)

$IPERCENT = 50

GUICtrlSetData($PROGRESS1, $IPERCENT)

If $HFILESIZE = $SIZE_INET Then

GUICtrlSetData($PROGRESS1, 100)

ExitLoop

EndIf

Sleep(50)

WEnd

EndIf

Sleep(500)

$LINES = $LINES - 1

WEnd

FileDelete($TEMPDIR & "pliki.txt")

GUISetState(@SW_HIDE, $FORM1)

GUISetState(@SW_SHOW, $FORM2)

While 1

Sleep(100)

WEnd

EndFunc

 

:D

Opublikowano

Takiego czegos wlasnie szukalem. QBA jakim dekompilatorem i jak to dekompilowales? Pisz na PW pls, dostaneisz cos wzamian ;d

userbarwb.png

Zawsze promocje na sygnatury ^^

Opublikowano

Super patcher ale ... jak nie mamy na internecie na naszej stronie tego patchera to co ? co zrobic? co wpisac tam gdzie patch.pl//patch?

Opublikowano

Super patcher ale ... jak nie mamy na internecie na naszej stronie tego patchera to co ? co zrobic? co wpisac tam gdzie patch.pl//patch?

eee... zmienic na link do swojego hostingu ...

do folderu gdzie masz plik " pliki.txt " ... :>

3053080006.png

Opublikowano

A ja mam prośbę do autora

aby napisał do mnie na GG :P

7955025

 

Potrzebuję innego Patchera a sam nie dam rady zrobić :P

Chodzi o normalny patcher który będzie pobierał to co będzie podane w pliku pliki.txt

a nie sam ma zapisane w pamięci foldery i pliki

Proszę o kontakt !!! :P

Szukam grafików, questerów Metin2, koderów www, skrypterów, programistów visual c++, c++.
Techników od bazy danych, systemów linuksowych( głównie FreeBSD).

[email protected] - > Pisać - > Rozpatrzę propozycje :)

Opublikowano

A ja mam prośbę do autora

aby napisał do mnie na GG :P

7955025

 

Potrzebuję innego Patchera a sam nie dam rady zrobić :P

Chodzi o normalny patcher który będzie pobierał to co będzie podane w pliku pliki.txt

a nie sam ma zapisane w pamięci foldery i pliki

Proszę o kontakt !!! :P

w ' pamieci ' to on ma zapisane tylko tworzenie kilku folderow... :>

3053080006.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...