Hier den source code vom Retrohack v1.2
Global Const $PROV_RSA_FULL = 1
Global Const $PROV_RSA_AES = 24
Global Const $CRYPT_VERIFYCONTEXT = -268435456
Global Const $HP_HASHSIZE = 4
Global Const $HP_HASHVAL = 2
Global Const $CRYPT_EXPORTABLE = 1
Global Const $CRYPT_USERDATA = 1
Global Const $CALG_MD2 = 32769
Global Const $CALG_MD4 = 32770
Global Const $CALG_MD5 = 32771
Global Const $CALG_SHA1 = 32772
Global Const $CALG_3DES = 26115
Global Const $CALG_AES_128 = 26126
Global Const $CALG_AES_192 = 26127
Global Const $CALG_AES_256 = 26128
Global Const $CALG_DES = 26113
Global Const $CALG_RC2 = 26114
Global Const $CALG_RC4 = 26625
Global Const $CALG_USERKEY = 0
Global $__G_ACRYPTINTERNALDATA[3]
Func _CRYPT_STARTUP()
If __CRYPT_REFCOUNT() = 0 Then
Local $HADVAPI32 = DllOpen("Advapi32.dll")
If @error Then Return SetError(1, 0, False)
__CRYPT_DLLHANDLESET($HADVAPI32)
Local $ARET
Local $IPROVIDERID = $PROV_RSA_AES
If @OSVersion = "WIN_2000" Then $IPROVIDERID = $PROV_RSA_FULL
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptAcquireContext", "handle*", 0, "ptr", 0, "ptr", 0, "dword", $IPROVIDERID, "dword", $CRYPT_VERIFYCONTEXT)
If @error Or Not $ARET[0] Then
DllClose(__CRYPT_DLLHANDLE())
Return SetError(2, 0, False)
Else
__CRYPT_CONTEXTSET($ARET[1])
EndIf
EndIf
__CRYPT_REFCOUNTINC()
Return True
EndFunc
Func _CRYPT_SHUTDOWN()
__CRYPT_REFCOUNTDEC()
If __CRYPT_REFCOUNT() = 0 Then
DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptReleaseContext", "handle", __CRYPT_CONTEXT(), "dword", 0)
DllClose(__CRYPT_DLLHANDLE())
EndIf
EndFunc
Func _CRYPT_DERIVEKEY($VPASSWORD, $IALG_ID, $IHASH_ALG_ID = $CALG_MD5)
Local $ARET
Local $HCRYPTHASH
Local $HBUFF
Local $IERROR
Local $VRETURN
_CRYPT_STARTUP()
Do
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptCreateHash", "handle", __CRYPT_CONTEXT(), "uint", $IHASH_ALG_ID, "ptr", 0, "dword", 0, "handle*", 0)
If @error Or Not $ARET[0] Then
$IERROR = 1
$VRETURN = -1
ExitLoop
EndIf
$HCRYPTHASH = $ARET[5]
$HBUFF = DllStructCreate("byte[" & BinaryLen($VPASSWORD) & "]")
DllStructSetData($HBUFF, 1, $VPASSWORD)
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptHashData", "handle", $HCRYPTHASH, "ptr", DllStructGetPtr($HBUFF), "dword", DllStructGetSize($HBUFF), "dword", $CRYPT_USERDATA)
If @error Or Not $ARET[0] Then
$IERROR = 2
$VRETURN = -1
ExitLoop
EndIf
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDeriveKey", "handle", __CRYPT_CONTEXT(), "uint", $IALG_ID, "handle", $HCRYPTHASH, "dword", $CRYPT_EXPORTABLE, "handle*", 0)
If @error Or Not $ARET[0] Then
$IERROR = 3
$VRETURN = -1
ExitLoop
EndIf
$IERROR = 0
$VRETURN = $ARET[5]
Until True
If $HCRYPTHASH <> 0 Then DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDestroyHash", "handle", $HCRYPTHASH)
Return SetError($IERROR, 0, $VRETURN)
EndFunc
Func _CRYPT_DESTROYKEY($HCRYPTKEY)
Local $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDestroyKey", "handle", $HCRYPTKEY)
Local $NERROR = @error
_CRYPT_SHUTDOWN()
If $NERROR Or Not $ARET[0] Then
Return SetError(1, 0, False)
Else
Return SetError(0, 0, True)
EndIf
EndFunc
Func _CRYPT_ENCRYPTDATA($VDATA, $VCRYPTKEY, $IALG_ID, $FFINAL = True)
Local $HBUFF
Local $IERROR
Local $VRETURN
Local $REQBUFFSIZE
Local $ARET
_CRYPT_STARTUP()
Do
If $IALG_ID <> $CALG_USERKEY Then
$VCRYPTKEY = _CRYPT_DERIVEKEY($VCRYPTKEY, $IALG_ID)
If @error Then
$IERROR = 1
$VRETURN = -1
ExitLoop
EndIf
EndIf
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptEncrypt", "ptr", $VCRYPTKEY, "ptr", 0, "bool", 1, "dword", 0, "ptr", 0, "dword*", BinaryLen($VDATA), "dword", 0)
If @error Or Not $ARET[0] Then
$IERROR = 2
$VRETURN = -1
ExitLoop
EndIf
$REQBUFFSIZE = $ARET[6]
$HBUFF = DllStructCreate("byte[" & $REQBUFFSIZE & "]")
DllStructSetData($HBUFF, 1, $VDATA)
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptEncrypt", "ptr", $VCRYPTKEY, "ptr", 0, "bool", $FFINAL, "dword", 0, "ptr", DllStructGetPtr($HBUFF), "dword*", BinaryLen($VDATA), "dword", DllStructGetSize($HBUFF))
If @error Or Not $ARET[0] Then
$IERROR = 3
$VRETURN = -1
ExitLoop
EndIf
$IERROR = 0
$VRETURN = DllStructGetData($HBUFF, 1)
Until True
If $IALG_ID <> $CALG_USERKEY Then _CRYPT_DESTROYKEY($VCRYPTKEY)
_CRYPT_SHUTDOWN()
Return SetError($IERROR, 0, $VRETURN)
EndFunc
Func _CRYPT_DECRYPTDATA($VDATA, $VCRYPTKEY, $IALG_ID, $FFINAL = True)
Local $HBUFF
Local $IERROR
Local $VRETURN
Local $HTEMPSTRUCT
Local $IPLAINTEXTSIZE
Local $ARET
_CRYPT_STARTUP()
Do
If $IALG_ID <> $CALG_USERKEY Then
$VCRYPTKEY = _CRYPT_DERIVEKEY($VCRYPTKEY, $IALG_ID)
If @error Then
$IERROR = 1
$VRETURN = -1
ExitLoop
EndIf
EndIf
$HBUFF = DllStructCreate("byte[" & BinaryLen($VDATA) + 1000 & "]")
DllStructSetData($HBUFF, 1, $VDATA)
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDecrypt", "handle", $VCRYPTKEY, "handle", 0, "bool", $FFINAL, "dword", 0, "ptr", DllStructGetPtr($HBUFF), "dword*", BinaryLen($VDATA))
If @error Or Not $ARET[0] Then
$IERROR = 2
$VRETURN = -1
ExitLoop
EndIf
$IPLAINTEXTSIZE = $ARET[6]
$HTEMPSTRUCT = DllStructCreate("byte[" & $IPLAINTEXTSIZE & "]", DllStructGetPtr($HBUFF))
$IERROR = 0
$VRETURN = DllStructGetData($HTEMPSTRUCT, 1)
Until True
If $IALG_ID <> $CALG_USERKEY Then _CRYPT_DESTROYKEY($VCRYPTKEY)
_CRYPT_SHUTDOWN()
Return SetError($IERROR, 0, $VRETURN)
EndFunc
Func _CRYPT_HASHDATA($VDATA, $IALG_ID, $FFINAL = True, $HCRYPTHASH = 0)
Local $IERROR
Local $VRETURN = 0
Local $IHASHSIZE
Local $ARET
Local $HBUFF = 0
_CRYPT_STARTUP()
Do
If $HCRYPTHASH = 0 Then
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptCreateHash", "handle", __CRYPT_CONTEXT(), "uint", $IALG_ID, "ptr", 0, "dword", 0, "handle*", 0)
If @error Or Not $ARET[0] Then
$IERROR = 1
$VRETURN = -1
ExitLoop
EndIf
$HCRYPTHASH = $ARET[5]
EndIf
$HBUFF = DllStructCreate("byte[" & BinaryLen($VDATA) & "]")
DllStructSetData($HBUFF, 1, $VDATA)
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptHashData", "handle", $HCRYPTHASH, "ptr", DllStructGetPtr($HBUFF), "dword", DllStructGetSize($HBUFF), "dword", $CRYPT_USERDATA)
If @error Or Not $ARET[0] Then
$IERROR = 2
$VRETURN = -1
ExitLoop
EndIf
If $FFINAL Then
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptGetHashParam", "handle", $HCRYPTHASH, "dword", $HP_HASHSIZE, "dword*", 0, "dword*", 4, "dword", 0)
If @error Or Not $ARET[0] Then
$IERROR = 3
$VRETURN = -1
ExitLoop
EndIf
$IHASHSIZE = $ARET[3]
$HBUFF = DllStructCreate("byte[" & $IHASHSIZE & "]")
$ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptGetHashParam", "handle", $HCRYPTHASH, "dword", $HP_HASHVAL, "ptr", DllStructGetPtr($HBUFF), "dword*", DllStructGetSize($HBUFF), "dword", 0)
If @error Or Not $ARET[0] Then
$IERROR = 4
$VRETURN = -1
ExitLoop
EndIf
$IERROR = 0
$VRETURN = DllStructGetData($HBUFF, 1)
Else
$VRETURN = $HCRYPTHASH
EndIf
Until True
If $HCRYPTHASH <> 0 And $FFINAL Then DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDestroyHash", "handle", $HCRYPTHASH)
_CRYPT_SHUTDOWN()
Return SetError($IERROR, 0, $VRETURN)
EndFunc
Func _CRYPT_HASHFILE($SFILE, $IALG_ID)
Local $HFILE
Local $IERROR, $VRETURN
Local $HHASHOBJECT = 0
Local $BTEMPDATA
_CRYPT_STARTUP()
Do
$HFILE = FileOpen($SFILE, 16)
If $HFILE = -1 Then
$IERROR = 1
$VRETURN = -1
ExitLoop
EndIf
Do
$BTEMPDATA = FileRead($HFILE, 512 * 1024)
If @error Then
$VRETURN = _CRYPT_HASHDATA($BTEMPDATA, $IALG_ID, True, $HHASHOBJECT)
If @error Then
$VRETURN = -1
$IERROR = 2
ExitLoop 2
EndIf
ExitLoop 2
Else
$HHASHOBJECT = _CRYPT_HASHDATA($BTEMPDATA, $IALG_ID, False, $HHASHOBJECT)
If @error Then
$VRETURN = -1
$IERROR = 3
ExitLoop 2
EndIf
EndIf
Until False
Until True
_CRYPT_SHUTDOWN()
If $HFILE <> -1 Then FileClose($HFILE)
Return SetError($IERROR, 0, $VRETURN)
EndFunc
Func _CRYPT_ENCRYPTFILE($SSOURCEFILE, $SDESTINATIONFILE, $VCRYPTKEY, $IALG_ID)
Local $HINFILE, $HOUTFILE
Local $IERROR = 0, $VRETURN = True
Local $BTEMPDATA
Local $IFILESIZE = FileGetSize($SSOURCEFILE)
Local $IREAD = 0
_CRYPT_STARTUP()
Do
If $IALG_ID <> $CALG_USERKEY Then
$VCRYPTKEY = _CRYPT_DERIVEKEY($VCRYPTKEY, $IALG_ID)
If @error Then
$IERROR = 1
$VRETURN = -1
ExitLoop
EndIf
EndIf
$HINFILE = FileOpen($SSOURCEFILE, 16)
If @error Then
$IERROR = 2
$VRETURN = -1
ExitLoop
EndIf
$HOUTFILE = FileOpen($SDESTINATIONFILE, 26)
If @error Then
$IERROR = 3
$VRETURN = -1
ExitLoop
EndIf
Do
$BTEMPDATA = FileRead($HINFILE, 1024 * 1024)
$IREAD += BinaryLen($BTEMPDATA)
If $IREAD = $IFILESIZE Then
$BTEMPDATA = _CRYPT_ENCRYPTDATA($BTEMPDATA, $VCRYPTKEY, $CALG_USERKEY, True)
If @error Then
$IERROR = 4
$VRETURN = -1
EndIf
FileWrite($HOUTFILE, $BTEMPDATA)
ExitLoop 2
Else
$BTEMPDATA = _CRYPT_ENCRYPTDATA($BTEMPDATA, $VCRYPTKEY, $CALG_USERKEY, False)
If @error Then
$IERROR = 5
$VRETURN = -1
ExitLoop 2
EndIf
FileWrite($HOUTFILE, $BTEMPDATA)
EndIf
Until False
Until True
If $IALG_ID <> $CALG_USERKEY Then _CRYPT_DESTROYKEY($VCRYPTKEY)
_CRYPT_SHUTDOWN()
If $HINFILE <> -1 Then FileClose($HINFILE)
If $HOUTFILE <> -1 Then FileClose($HOUTFILE)
Return SetError($IERROR, 0, $VRETURN)
EndFunc
Func _CRYPT_DECRYPTFILE($SSOURCEFILE, $SDESTINATIONFILE, $VCRYPTKEY, $IALG_ID)
Local $HINFILE, $HOUTFILE
Local $IERROR = 0, $VRETURN = True
Local $BTEMPDATA
Local $IFILESIZE = FileGetSize($SSOURCEFILE)
Local $IREAD = 0
_CRYPT_STARTUP()
Do
If $IALG_ID <> $CALG_USERKEY Then
$VCRYPTKEY = _CRYPT_DERIVEKEY($VCRYPTKEY, $IALG_ID)
If @error Then
$IERROR = 1
$VRETURN = -1
ExitLoop
EndIf
EndIf
$HINFILE = FileOpen($SSOURCEFILE, 16)
If @error Then
$IERROR = 2
$VRETURN = -1
ExitLoop
EndIf
$HOUTFILE = FileOpen($SDESTINATIONFILE, 26)
If @error Then
$IERROR = 3
$VRETURN = -1
ExitLoop
EndIf
Do
$BTEMPDATA = FileRead($HINFILE, 1024 * 1024)
$IREAD += BinaryLen($BTEMPDATA)
If $IREAD = $IFILESIZE Then
$BTEMPDATA = _CRYPT_DECRYPTDATA($BTEMPDATA, $VCRYPTKEY, $CALG_USERKEY, True)
If @error Then
$IERROR = 4
$VRETURN = -1
EndIf
FileWrite($HOUTFILE, $BTEMPDATA)
ExitLoop 2
Else
$BTEMPDATA = _CRYPT_DECRYPTDATA($BTEMPDATA, $VCRYPTKEY, $CALG_USERKEY, False)
If @error Then
$IERROR = 5
$VRETURN = -1
ExitLoop 2
EndIf
FileWrite($HOUTFILE, $BTEMPDATA)
EndIf
Until False
Until True
If $IALG_ID <> $CALG_USERKEY Then _CRYPT_DESTROYKEY($VCRYPTKEY)
_CRYPT_SHUTDOWN()
If $HINFILE <> -1 Then FileClose($HINFILE)
If $HOUTFILE <> -1 Then FileClose($HOUTFILE)
Return SetError($IERROR, 0, $VRETURN)
EndFunc
Func __CRYPT_REFCOUNT()
Return $__G_ACRYPTINTERNALDATA[0]
EndFunc
Func __CRYPT_REFCOUNTINC()
$__G_ACRYPTINTERNALDATA[0] += 1
EndFunc
Func __CRYPT_REFCOUNTDEC()
If $__G_ACRYPTINTERNALDATA[0] > 0 Then $__G_ACRYPTINTERNALDATA[0] -= 1
EndFunc
Func __CRYPT_DLLHANDLE()
Return $__G_ACRYPTINTERNALDATA[1]
EndFunc
Func __CRYPT_DLLHANDLESET($HADVAPI32)
$__G_ACRYPTINTERNALDATA[1] = $HADVAPI32
EndFunc
Func __CRYPT_CONTEXT()
Return $__G_ACRYPTINTERNALDATA[2]
EndFunc
Func __CRYPT_CONTEXTSET($HCRYPTCONTEXT)
$__G_ACRYPTINTERNALDATA[2] = $HCRYPTCONTEXT
EndFunc
#RequireAdmin
#AutoIt3Wrapper_Run_=32
$B = True
If $B = True Then FileInstall("C:\ActivateButton.jpg", "c:\ActivateButton.jpg")
FileInstall("C:\Background v2.jpg", "c:\Background v2.jpg")
FileInstall("C:\CreditsButton.bmp", "c:\CreditsButton.bmp")
FileInstall("C:\error.ico", "c:\error.ico")
FileInstall("C:\Error.jpg", "c:\Error.jpg")
FileInstall("C:\Intro.jpg", "c:\Intro.jpg")
FileInstall("C:\OffButton.jpg", "c:\OffButton.jpg")
FileInstall("C:\OffPicture.bmp", "c:\OffPicture.bmp")
FileInstall("C:\OffPicture.jpg", "c:\OffPicture.jpg")
FileInstall("C:\OnButton.jpg", "c:\OnButton.jpg")
FileInstall("C:\OnPicture.bmp", "c:\OnPicture.bmp")
FileInstall("C:\OnPicture.jpg", "c:\OnPicture.jpg")
FileInstall("C:\R Icon.ico", "c:\R Icon.ico")
FileInstall("C:\helpbutton.bmp", "C:\helpbutton.bmp")
#Region _Memory
Func _MEMORYOPEN($IV_PID, $IV_DESIREDACCESS = 2035711, $IF_INHERITHANDLE = 1)
If Not ProcessExists($IV_PID) Then
SetError(1)
Return 0
EndIf
Local $AH_HANDLE[2] = [DllOpen("kernel32.dll")]
If @error Then
SetError(2)
Return 0
EndIf
Local $AV_OPENPROCESS = DllCall($AH_HANDLE[0], "int", "OpenProcess", "int", $IV_DESIREDACCESS, "int", $IF_INHERITHANDLE, "int", $IV_PID)
If @error Then
DllClose($AH_HANDLE[0])
SetError(3)
Return 0
EndIf
$AH_HANDLE[1] = $AV_OPENPROCESS[0]
Return $AH_HANDLE
EndFunc
Func _MEMORYREAD($IV_ADDRESS, $AH_HANDLE, $SV_TYPE = "dword")
If Not IsArray($AH_HANDLE) Then
SetError(1)
Return 0
EndIf
Local $V_BUFFER = DllStructCreate($SV_TYPE)
If @error Then
SetError(@error + 1)
Return 0
EndIf
DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If Not @error Then
Local $V_VALUE = DllStructGetData($V_BUFFER, 1)
Return $V_VALUE
Else
SetError(6)
Return 0
EndIf
EndFunc
Func _MEMORYWRITE($IV_ADDRESS, $AH_HANDLE, $V_DATA, $SV_TYPE = "dword")
If Not IsArray($AH_HANDLE) Then
SetError(1)
Return 0
EndIf
Local $V_BUFFER = DllStructCreate($SV_TYPE)
If @error Then
SetError(@error + 1)
Return 0
Else
DllStructSetData($V_BUFFER, 1, $V_DATA)
If @error Then
SetError(6)
Return 0
EndIf
EndIf
DllCall($AH_HANDLE[0], "int", "WriteProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If Not @error Then
Return 1
Else
SetError(7)
Return 0
EndIf
EndFunc
Func _MEMORYCLOSE($AH_HANDLE)
If Not IsArray($AH_HANDLE) Then
SetError(1)
Return 0
EndIf
DllCall($AH_HANDLE[0], "int", "CloseHandle", "int", $AH_HANDLE[1])
If Not @error Then
DllClose($AH_HANDLE[0])
Return 1
Else
DllClose($AH_HANDLE[0])
SetError(2)
Return 0
EndIf
EndFunc
Func _MEMORYPOINTERREAD($IV_ADDRESS, $AH_HANDLE, $AV_OFFSET, $SV_TYPE = "dword")
If IsArray($AV_OFFSET) Then
If IsArray($AH_HANDLE) Then
Local $IV_POINTERCOUNT = UBound($AV_OFFSET) - 1
Else
SetError(2)
Return 0
EndIf
Else
SetError(1)
Return 0
EndIf
Local $IV_DATA[2], $I
Local $V_BUFFER = DllStructCreate("dword")
For $I = 0 To $IV_POINTERCOUNT
If $I = $IV_POINTERCOUNT Then
$V_BUFFER = DllStructCreate($SV_TYPE)
If @error Then
SetError(@error + 2)
Return 0
EndIf
$IV_ADDRESS = "0x" & Hex($IV_DATA[1] + $AV_OFFSET[$I])
DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If @error Then
SetError(7)
Return 0
EndIf
$IV_DATA[1] = DllStructGetData($V_BUFFER, 1)
ElseIf $I = 0 Then
DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If @error Then
SetError(7)
Return 0
EndIf
$IV_DATA[1] = DllStructGetData($V_BUFFER, 1)
Else
$IV_ADDRESS = "0x" & Hex($IV_DATA[1] + $AV_OFFSET[$I])
DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If @error Then
SetError(7)
Return 0
EndIf
$IV_DATA[1] = DllStructGetData($V_BUFFER, 1)
EndIf
Next
$IV_DATA[0] = $IV_ADDRESS
Return $IV_DATA
EndFunc
Func _MEMORYPOINTERWRITE($IV_ADDRESS, $AH_HANDLE, $AV_OFFSET, $V_DATA, $SV_TYPE = "dword")
If IsArray($AV_OFFSET) Then
If IsArray($AH_HANDLE) Then
Local $IV_POINTERCOUNT = UBound($AV_OFFSET) - 1
Else
SetError(2)
Return 0
EndIf
Else
SetError(1)
Return 0
EndIf
Local $IV_STRUCTDATA, $I
Local $V_BUFFER = DllStructCreate("dword")
For $I = 0 To $IV_POINTERCOUNT
If $I = $IV_POINTERCOUNT Then
$V_BUFFER = DllStructCreate($SV_TYPE)
If @error Then
SetError(@error + 3)
Return 0
EndIf
DllStructSetData($V_BUFFER, 1, $V_DATA)
If @error Then
SetError(8)
Return 0
EndIf
$IV_ADDRESS = "0x" & Hex($IV_STRUCTDATA + $AV_OFFSET[$I])
DllCall($AH_HANDLE[0], "int", "WriteProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If @error Then
SetError(9)
Return 0
Else
Return $IV_ADDRESS
EndIf
ElseIf $I = 0 Then
DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If @error Then
SetError(3)
Return 0
EndIf
$IV_STRUCTDATA = DllStructGetData($V_BUFFER, 1)
Else
$IV_ADDRESS = "0x" & Hex($IV_STRUCTDATA + $AV_OFFSET[$I])
DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
If @error Then
SetError(3)
Return 0
EndIf
$IV_STRUCTDATA = DllStructGetData($V_BUFFER, 1)
EndIf
Next
EndFunc
Func SETPRIVILEGE($PRIVILEGE, $BENABLE)
Const $TOKEN_ADJUST_PRIVILEGES = 32
Const $TOKEN_QUERY = 8
Const $SE_PRIVILEGE_ENABLED = 2
Local $HTOKEN, $SP_AUXRET, $SP_RET, $HCURRPROCESS, $NTOKENS, $NTOKENINDEX, $PRIV
$NTOKENS = 1
$LUID = DllStructCreate("dword;int")
If IsArray($PRIVILEGE) Then $NTOKENS = UBound($PRIVILEGE)
$TOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * $NTOKENS) & "]")
$NEWTOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * $NTOKENS) & "]")
$HCURRPROCESS = DllCall("kernel32.dll", "hwnd", "GetCurrentProcess")
$SP_AUXRET = DllCall("advapi32.dll", "int", "OpenProcessToken", "hwnd", $HCURRPROCESS[0], "int", BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY), "int*", 0)
If $SP_AUXRET[0] Then
$HTOKEN = $SP_AUXRET[3]
DllStructSetData($TOKEN_PRIVILEGES, 1, 1)
$NTOKENINDEX = 1
While $NTOKENINDEX <= $NTOKENS
If IsArray($PRIVILEGE) Then
$NTOKENVAR = $NTOKENINDEX - 1
$PRIV = $PRIVILEGE[$NTOKENVAR]
Else
$PRIV = $PRIVILEGE
EndIf
$RET = DllCall("advapi32.dll", "int", "LookupPrivilegeValue", "str", "", "str", $PRIV, "ptr", DllStructGetPtr($LUID))
If $RET[0] Then
If $BENABLE Then
DllStructSetData($TOKEN_PRIVILEGES, 2, $SE_PRIVILEGE_ENABLED, (3 * $NTOKENINDEX))
Else
DllStructSetData($TOKEN_PRIVILEGES, 2, 0, (3 * $NTOKENINDEX))
EndIf
DllStructSetData($TOKEN_PRIVILEGES, 2, DllStructGetData($LUID, 1), (3 * ($NTOKENINDEX - 1)) + 1)
DllStructSetData($TOKEN_PRIVILEGES, 2, DllStructGetData($LUID, 2), (3 * ($NTOKENINDEX - 1)) + 2)
DllStructSetData($LUID, 1, 0)
DllStructSetData($LUID, 2, 0)
EndIf
$NTOKENINDEX += 1
WEnd
$RET = DllCall("advapi32.dll", "int", "AdjustTokenPrivileges", "hwnd", $HTOKEN, "int", 0, "ptr", DllStructGetPtr($TOKEN_PRIVILEGES), "int", DllStructGetSize($NEWTOKEN_PRIVILEGES), "ptr", DllStructGetPtr($NEWTOKEN_PRIVILEGES), "int*", 0)
$F = DllCall("kernel32.dll", "int", "GetLastError")
EndIf
$NEWTOKEN_PRIVILEGES = 0
$TOKEN_PRIVILEGES = 0
$LUID = 0
If $SP_AUXRET[0] = 0 Then Return 0
$SP_AUXRET = DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", $HTOKEN)
If Not $RET[0] And Not $SP_AUXRET[0] Then Return 0
Return $RET[0]
EndFunc
Func _MEMORYGETBASEADDRESS($AH_HANDLE, $IHEXDEC = 0)
Local $IV_ADDRESS = 1048576
Local $V_BUFFER = DllStructCreate("dword;dword;dword;dword;dword;dwo rd;dword")
Local $VDATA
Local $VTYPE
If Not IsArray($AH_HANDLE) Then
SetError(1)
Return 0
EndIf
DllCall($AH_HANDLE[0], "int", "VirtualQueryEx", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER))
If Not @error Then
$VDATA = Hex(DllStructGetData($V_BUFFER, 2))
$VTYPE = Hex(DllStructGetData($V_BUFFER, 3))
While $VTYPE <> "00000080"
DllCall($AH_HANDLE[0], "int", "VirtualQueryEx", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER))
$VDATA = Hex(DllStructGetData($V_BUFFER, 2))
$VTYPE = Hex(DllStructGetData($V_BUFFER, 3))
If Hex($IV_ADDRESS) = "01000000" Then ExitLoop
$IV_ADDRESS += 65536
WEnd
If $VTYPE = "00000080" Then
SetError(0)
If $IHEXDEC = 1 Then
Return Dec($VDATA)
Else
Return $VDATA
EndIf
Else
SetError(2)
Return 0
EndIf
Else
SetError(3)
Return 0
EndIf
EndFunc
Func _MEMORYMODULEGETBASEADDRESS($IPID, $SMODULE)
If Not ProcessExists($IPID) Then Return SetError(1, 0, 0)
If Not IsString($SMODULE) Then Return SetError(2, 0, 0)
Local $PSAPI = DllOpen("psapi.dll")
Local $HPROCESS
Local $PERMISSION = BitOR(2, 1024, 8, 16, 32)
If $IPID > 0 Then
Local $HPROCESS = DllCall("kernel32.dll", "ptr", "OpenProcess", "dword", $PERMISSION, "int", 0, "dword", $IPID)
If $HPROCESS[0] Then
$HPROCESS = $HPROCESS[0]
EndIf
EndIf
Local $MODULES = DllStructCreate("ptr[1024]")
Local $ACALL = DllCall($PSAPI, "int", "EnumProcessModules", "ptr", $HPROCESS, "ptr", DllStructGetPtr($MODULES), "dword", DllStructGetSize($MODULES), "dword*", 0)
If $ACALL[4] > 0 Then
Local $IMODNUM = $ACALL[4] / 4
Local $ATEMP
For $I = 1 To $IMODNUM
$ATEMP = DllCall($PSAPI, "dword", "GetModuleBaseNameW", "ptr", $HPROCESS, "ptr", Ptr(DllStructGetData($MODULES, 1, $I)), "wstr", "", "dword", 260)
If $ATEMP[3] = $SMODULE Then
DllClose($PSAPI)
Return Ptr(DllStructGetData($MODULES, 1, $I))
EndIf
Next
EndIf
DllClose($PSAPI)
Return SetError(-1, 0, 0)
EndFunc
#EndRegion _Memory
Global Const $CB_ERR = -1
Global Const $CB_ERRATTRIBUTE = -3
Global Const $CB_ERRREQUIRED = -4
Global Const $CB_ERRSPACE = -2
Global Const $CB_OKAY = 0
Global Const $STATE_SYSTEM_INVISIBLE = 32768
Global Const $STATE_SYSTEM_PRESSED = 8
Global Const $CBS_AUTOHSCROLL = 64
Global Const $CBS_DISABLENOSCROLL = 2048
Global Const $CBS_DROPDOWN = 2
Global Const $CBS_DROPDOWNLIST = 3
Global Const $CBS_HASSTRINGS = 512
Global Const $CBS_LOWERCASE = 16384
Global Const $CBS_NOINTEGRALHEIGHT = 1024
Global Const $CBS_OEMCONVERT = 128
Global Const $CBS_OWNERDRAWFIXED = 16
Global Const $CBS_OWNERDRAWVARIABLE = 32
Global Const $CBS_SIMPLE = 1
Global Const $CBS_SORT = 256
Global Const $CBS_UPPERCASE = 8192
Global Const $CBM_FIRST = 5888
Global Const $CB_ADDSTRING = 323
Global Const $CB_DELETESTRING = 324
Global Const $CB_DIR = 325
Global Const $CB_FINDSTRING = 332
Global Const $CB_FINDSTRINGEXACT = 344
Global Const $CB_GETCOMBOBOXINFO = 356
Global Const $CB_GETCOUNT = 326
Global Const $CB_GETCUEBANNER = ($CBM_FIRST + 4)
Global Const $CB_GETCURSEL = 327
Global Const $CB_GETDROPPEDCONTROLRECT = 338
Global Const $CB_GETDROPPEDSTATE = 343
Global Const $CB_GETDROPPEDWIDTH = 351
Global Const $CB_GETEDITSEL = 320
Global Const $CB_GETEXTENDEDUI = 342
Global Const $CB_GETHORIZONTALEXTENT = 349
Global Const $CB_GETITEMDATA = 336
Global Const $CB_GETITEMHEIGHT = 340
Global Const $CB_GETLBTEXT = 328
Global Const $CB_GETLBTEXTLEN = 329
Global Const $CB_GETLOCALE = 346
Global Const $CB_GETMINVISIBLE = 5890
Global Const $CB_GETTOPINDEX = 347
Global Const $CB_INITSTORAGE = 353
Global Const $CB_LIMITTEXT = 321
Global Const $CB_RESETCONTENT = 331
Global Const $CB_INSERTSTRING = 330
Global Const $CB_SELECTSTRING = 333
Global Const $CB_SETCUEBANNER = ($CBM_FIRST + 3)
Global Const $CB_SETCURSEL = 334
Global Const $CB_SETDROPPEDWIDTH = 352
Global Const $CB_SETEDITSEL = 322
Global Const $CB_SETEXTENDEDUI = 341
Global Const $CB_SETHORIZONTALEXTENT = 350
Global Const $CB_SETITEMDATA = 337
Global Const $CB_SETITEMHEIGHT = 339
Global Const $CB_SETLOCALE = 345
Global Const $CB_SETMINVISIBLE = 5889
Global Const $CB_SETTOPINDEX = 348
Global Const $CB_SHOWDROPDOWN = 335
Global Const $CBN_CLOSEUP = 8
Global Const $CBN_DBLCLK = 2
Global Const $CBN_DROPDOWN = 7
Global Const $CBN_EDITCHANGE = 5
Global Const $CBN_EDITUPDATE = 6
Global Const $CBN_ERRSPACE = (-1)
Global Const $CBN_KILLFOCUS = 4
Global Const $CBN_SELCHANGE = 1
Global Const $CBN_SELENDCANCEL = 10
Global Const $CBN_SELENDOK = 9
Global Const $CBN_SETFOCUS = 3
Global Const $CBES_EX_CASESENSITIVE = 16
Global Const $CBES_EX_NOEDITIMAGE = 1
Global Const $CBES_EX_NOEDITIMAGEINDENT = 2
Global Const $CBES_EX_NOSIZELIMIT = 8
Global Const $CBES_EX_PATHWORDBREAKPROC = 4
Global Const $__COMBOBOXCONSTANT_WM_USER = 1024
Global Const $CBEM_DELETEITEM = $CB_DELETESTRING
Global Const $CBEM_GETCOMBOCONTROL = ($__COMBOBOXCONSTANT_WM_USER + 6)
Global Const $CBEM_GETEDITCONTROL = ($__COMBOBOXCONSTANT_WM_USER + 7)
Global Const $CBEM_GETEXSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 9)
Global Const $CBEM_GETEXTENDEDSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 9)
Global Const $CBEM_GETIMAGELIST = ($__COMBOBOXCONSTANT_WM_USER + 3)
Global Const $CBEM_GETITEMA = ($__COMBOBOXCONSTANT_WM_USER + 4)
Global Const $CBEM_GETITEMW = ($__COMBOBOXCONSTANT_WM_USER + 13)
Global Const $CBEM_GETUNICODEFORMAT = 8192 + 6
Global Const $CBEM_HASEDITCHANGED = ($__COMBOBOXCONSTANT_WM_USER + 10)
Global Const $CBEM_INSERTITEMA = ($__COMBOBOXCONSTANT_WM_USER + 1)
Global Const $CBEM_INSERTITEMW = ($__COMBOBOXCONSTANT_WM_USER + 11)
Global Const $CBEM_SETEXSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 8)
Global Const $CBEM_SETEXTENDEDSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 14)
Global Const $CBEM_SETIMAGELIST = ($__COMBOBOXCONSTANT_WM_USER + 2)
Global Const $CBEM_SETITEMA = ($__COMBOBOXCONSTANT_WM_USER + 5)
Global Const $CBEM_SETITEMW = ($__COMBOBOXCONSTANT_WM_USER + 12)
Global Const $CBEM_SETUNICODEFORMAT = 8192 + 5
Global Const $CBEM_SETWINDOWTHEME = 8192 + 11
Global Const $CBEN_FIRST = (-800)
Global Const $CBEN_LAST = (-830)
Global Const $CBEN_BEGINEDIT = ($CBEN_FIRST - 4)
Global Const $CBEN_DELETEITEM = ($CBEN_FIRST - 2)
Global Const $CBEN_DRAGBEGINA = ($CBEN_FIRST - 8)
Global Const $CBEN_DRAGBEGINW = ($CBEN_FIRST - 9)
Global Const $CBEN_ENDEDITA = ($CBEN_FIRST - 5)
Global Const $CBEN_ENDEDITW = ($CBEN_FIRST - 6)
Global Const $CBEN_GETDISPINFO = ($CBEN_FIRST - 0)
Global Const $CBEN_GETDISPINFOA = ($CBEN_FIRST - 0)
Global Const $CBEN_GETDISPINFOW = ($CBEN_FIRST - 7)
Global Const $CBEN_INSERTITEM = ($CBEN_FIRST - 1)
Global Const $CBEIF_DI_SETITEM = 268435456
Global Const $CBEIF_IMAGE = 2
Global Const $CBEIF_INDENT = 16
Global Const $CBEIF_LPARAM = 32
Global Const $CBEIF_OVERLAY = 8
Global Const $CBEIF_SELECTEDIMAGE = 4
Global Const $CBEIF_TEXT = 1
Global Const $__COMBOBOXCONSTANT_WS_VSCROLL = 2097152
Global Const $GUI_SS_DEFAULT_COMBO = BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $__COMBOBOXCONSTANT_WS_VSCROLL)
Global Const $ES_LEFT = 0
Global Const $ES_CENTER = 1
Global Const $ES_RIGHT = 2
Global Const $ES_MULTILINE = 4
Global Const $ES_UPPERCASE = 8
Global Const $ES_LOWERCASE = 16
Global Const $ES_PASSWORD = 32
Global Const $ES_AUTOVSCROLL = 64
Global Const $ES_AUTOHSCROLL = 128
Global Const $ES_NOHIDESEL = 256
Global Const $ES_OEMCONVERT = 1024
Global Const $ES_READONLY = 2048
Global Const $ES_WANTRETURN = 4096
Global Const $ES_NUMBER = 8192
Global Const $EC_ERR = -1
Global Const $ECM_FIRST = 5376
Global Const $EM_CANUNDO = 198
Global Const $EM_CHARFROMPOS = 215
Global Const $EM_EMPTYUNDOBUFFER = 205
Global Const $EM_FMTLINES = 200
Global Const $EM_GETCUEBANNER = ($ECM_FIRST + 2)
Global Const $EM_GETFIRSTVISIBLELINE = 206
Global Const $EM_GETHANDLE = 189
Global Const $EM_GETIMESTATUS = 217
Global Const $EM_GETLIMITTEXT = 213
Global Const $EM_GETLINE = 196
Global Const $EM_GETLINECOUNT = 186
Global Const $EM_GETMARGINS = 212
Global Const $EM_GETMODIFY = 184
Global Const $EM_GETPASSWORDCHAR = 210
Global Const $EM_GETRECT = 178
Global Const $EM_GETSEL = 176
Global Const $EM_GETTHUMB = 190
Global Const $EM_GETWORDBREAKPROC = 209
Global Const $EM_HIDEBALLOONTIP = ($ECM_FIRST + 4)
Global Const $EM_LIMITTEXT = 197
Global Const $EM_LINEFROMCHAR = 201
Global Const $EM_LINEINDEX = 187
Global Const $EM_LINELENGTH = 193
Global Const $EM_LINESCROLL = 182
Global Const $EM_POSFROMCHAR = 214
Global Const $EM_REPLACESEL = 194
Global Const $EM_SCROLL = 181
Global Const $EM_SCROLLCARET = 183
Global Const $EM_SETCUEBANNER = ($ECM_FIRST + 1)
Global Const $EM_SETHANDLE = 188
Global Const $EM_SETIMESTATUS = 216
Global Const $EM_SETLIMITTEXT = $EM_LIMITTEXT
Global Const $EM_SETMARGINS = 211
Global Const $EM_SETMODIFY = 185
Global Const $EM_SETPASSWORDCHAR = 204
Global Const $EM_SETREADONLY = 207
Global Const $EM_SETRECT = 179
Global Const $EM_SETRECTNP = 180
Global Const $EM_SETSEL = 177
Global Const $EM_SETTABSTOPS = 203
Global Const $EM_SETWORDBREAKPROC = 208
Global Const $EM_SHOWBALLOONTIP = ($ECM_FIRST + 3)
Global Const $EM_UNDO = 199
Global Const $EC_LEFTMARGIN = 1
Global Const $EC_RIGHTMARGIN = 2
Global Const $EC_USEFONTINFO = 65535
Global Const $EMSIS_COMPOSITIONSTRING = 1
Global Const $EIMES_GETCOMPSTRATONCE = 1
Global Const $EIMES_CANCELCOMPSTRINFOCUS = 2
Global Const $EIMES_COMPLETECOMPSTRKILLFOCUS = 4
Global Const $EN_ALIGN_LTR_EC = 1792
Global Const $EN_ALIGN_RTL_EC = 1793
Global Const $EN_CHANGE = 768
Global Const $EN_ERRSPACE = 1280
Global Const $EN_HSCROLL = 1537
Global Const $EN_KILLFOCUS = 512
Global Const $EN_MAXTEXT = 1281
Global Const $EN_SETFOCUS = 256
Global Const $EN_UPDATE = 1024
Global Const $EN_VSCROLL = 1538
Global Const $TTI_NONE = 0
Global Const $TTI_INFO = 1
Global Const $TTI_WARNING = 2
Global Const $TTI_ERROR = 3
Global Const $TTI_INFO_LARGE = 4
Global Const $TTI_WARNING_LARGE = 5
Global Const $TTI_ERROR_LARGE = 6
Global Const $__EDITCONSTANT_WS_VSCROLL = 2097152
Global Const $__EDITCONSTANT_WS_HSCROLL = 1048576
Global Const $GUI_SS_DEFAULT_EDIT = BitOR($ES_WANTRETURN, $__EDITCONSTANT_WS_VSCROLL, $__EDITCONSTANT_WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL)
Global Const $GUI_SS_DEFAULT_INPUT = BitOR($ES_LEFT, $ES_AUTOHSCROLL)
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
Global Const $SS_LEFT = 0
Global Const $SS_CENTER = 1
Global Const $SS_RIGHT = 2
Global Const $SS_ICON = 3
Global Const $SS_BLACKRECT = 4
Global Const $SS_GRAYRECT = 5
Global Const $SS_WHITERECT = 6
Global Const $SS_BLACKFRAME = 7
Global Const $SS_GRAYFRAME = 8
Global Const $SS_WHITEFRAME = 9
Global Const $SS_SIMPLE = 11
Global Const $SS_LEFTNOWORDWRAP = 12
Global Const $SS_BITMAP = 14
Global Const $SS_ETCHEDHORZ = 16
Global Const $SS_ETCHEDVERT = 17
Global Const $SS_ETCHEDFRAME = 18
Global Const $SS_NOPREFIX = 128
Global Const $SS_NOTIFY = 256
Global Const $SS_CENTERIMAGE = 512
Global Const $SS_RIGHTJUST = 1024
Global Const $SS_SUNKEN = 4096
Global Const $GUI_SS_DEFAULT_LABEL = 0
Global Const $GUI_SS_DEFAULT_GRAPHIC = 0
Global Const $GUI_SS_DEFAULT_ICON = $SS_NOTIFY
Global Const $GUI_SS_DEFAULT_PIC = $SS_NOTIFY
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
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
If ProcessExists("metin2client.bin") = False Then
#Region ### START Koda GUI section ### Form=
$FORM4 = GUICreate("Error", 321, 171, 270, 252)
GUISetIcon("C:\error.ico")
$PIC1 = GUICtrlCreatePic("C:\Error.jpg", 0, 0, 320, 170, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)
Sleep(2000)
#EndRegion ### END Koda GUI section ###
Exit
EndIf
#Region ### START Koda GUI section ### Form=
$FORM1 = GUICreate("Metin2 Retrohack 1.2", 321, 151, -1, -1, BitOR($WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS))
$PROGRESS1 = GUICtrlCreateProgress(39, 74, 243, 30)
$PIC1 = GUICtrlCreatePic("C:\Intro.jpg", 0, 0, 320, 150, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUISetIcon("C:\R icon.ico")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetData($PROGRESS1, 1)
Sleep(100)
GUICtrlSetData($PROGRESS1, 5)
Sleep(100)
GUICtrlSetData($PROGRESS1, 13)
Sleep(100)
GUICtrlSetData($PROGRESS1, 20)
Sleep(100)
GUICtrlSetData($PROGRESS1, 23)
Sleep(400)
GUICtrlSetData($PROGRESS1, 28)
Sleep(100)
GUICtrlSetData($PROGRESS1, 35)
Sleep(100)
GUICtrlSetData($PROGRESS1, 60)
Sleep(700)
GUICtrlSetData($PROGRESS1, 66)
Sleep(100)
GUICtrlSetData($PROGRESS1, 70)
Sleep(100)
GUICtrlSetData($PROGRESS1, 71)
Sleep(300)
GUICtrlSetData($PROGRESS1, 72)
Sleep(100)
GUICtrlSetData($PROGRESS1, 73)
Sleep(100)
GUICtrlSetData($PROGRESS1, 76)
Sleep(100)
GUICtrlSetData($PROGRESS1, 88)
Sleep(100)
GUICtrlSetData($PROGRESS1, 100)
Sleep(700)
GUISetState(@SW_HIDE)
#Region ### START Koda GUI section ### Form=C:\Users\Lennart\Pictures\Metin2 Retrotool\Form.kxf
$FORM3 = GUICreate("Metin2 RetroHack 1.2 [16.11.11]", 321, 460, 220, 290)
GUISetIcon("C:\R icon.ico")
$HELPBUTTON = GUICtrlCreatePic("C:\HelpButton.bmp", 160, 420, 97, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$CREDITSBUTTON = GUICtrlCreatePic("C:\CreditsButton.bmp", 56, 420, 97, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$ZOOMBON = GUICtrlCreatePic("C:\OnButton.jpg", 152, 275, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$BUTTONLEVELOFF = GUICtrlCreatePic("C:\OffButton.jpg", 208, 310, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$BUTTONLEVELON = GUICtrlCreatePic("C:\OnButton.jpg", 152, 310, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$FOGBON = GUICtrlCreatePic("C:\OnButton.jpg", 152, 240, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$ZOOMBOFF = GUICtrlCreatePic("C:\OffButton.jpg", 208, 275, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$FOGBOFF = GUICtrlCreatePic("C:\OffButton.jpg", 208, 240, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$INVIBOFF = GUICtrlCreatePic("C:\OffButton.jpg", 208, 345, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$INVIBON = GUICtrlCreatePic("C:\OnButton.jpg", 152, 345, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$TEST = GUICtrlCreateButton("", 999, 999, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$INVIPIC = GUICtrlCreateButton("", 264, 345, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$SLOWBOFF = GUICtrlCreatePic("C:\OffButton.jpg", 208, 380, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$SLOWBON = GUICtrlCreatePic("C:\OnButton.jpg", 152, 380, 49, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
GUISetState(@SW_SHOW)
$SLOWPIC = GUICtrlCreateButton("", 264, 380, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$ZOOMPIC = GUICtrlCreateButton("", 264, 275, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$LEVELPIC = GUICtrlCreateButton("", 264, 310, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$FOGOFF = GUICtrlCreateButton("", 264, 240, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$INPUT3 = GUICtrlCreateInput("16256", 152, 72, 49, 26)
GUICtrlSetFont(-1, 10, 400, 0, "Comic Sans MS")
$MOVEA = GUICtrlCreatePic("C:\ActivateButton.jpg", 208, 72, 97, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$INPUT4 = GUICtrlCreateInput("16256", 152, 104, 49, 26)
GUICtrlSetFont(-1, 10, 400, 0, "Comic Sans MS")
$ATTACKA = GUICtrlCreatePic("C:\ActivateButton.jpg", 208, 104, 97, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$RANGEA = GUICtrlCreatePic("C:\ActivateButton.jpg", 208, 136, 97, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$BUTTON15 = GUICtrlCreatePic("C:\ActivateButton.jpg", 208, 168, 97, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$BUTTON16 = GUICtrlCreatePic("C:\ActivateButton.jpg", 208, 200, 98, 25, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$INPUT1 = GUICtrlCreateInput("16256", 152, 136, 49, 26)
GUICtrlSetFont(-1, 10, 400, 0, "Comic Sans MS")
$COMBO1 = GUICtrlCreateCombo("", 152, 168, 49, 26)
GUICtrlSetData(-1, "Faust|Schwert|Schwert2|Dolch|Bogen|Angel|Pferd|Pf erd2|Pferd3|Gehen")
GUICtrlSetFont(-1, 8, 400, 0, "Comic Sans MS")
$COMBO2 = GUICtrlCreateCombo("", 152, 200, 49, 26)
GUICtrlSetData(-1, "1|2|3|Off")
GUICtrlSetFont(-1, 10, 400, 0, "Comic Sans MS")
GUISetState(@SW_SHOW)
$PICBACK = GUICtrlCreatePic("C:\Background v2.jpg", 0, 0, 320, 460, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$NMSG = GUIGetMsg()
Switch $NMSG
Case $GUI_EVENT_CLOSE
Exit
Case $CREDITSBUTTON
MsgBox(64, "© .United", "This Hack was created by .United.")
ShellExecute("http://www.elitepvpers.com/forum/members/3809574--united.html")
Case $HELPBUTTON
ShellExecute("http://www.elitepvpers.com/forum/metin2-hacks-bots-cheats-exploits-macros/1538722-release-metin2-retrohack.html#post13807718")
Case $BUTTON15
If GUICtrlRead($COMBO1) = "Faust" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "1", "dword")
EndIf
If GUICtrlRead($COMBO1) = "Schwert" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "2", "dword")
EndIf
If GUICtrlRead($COMBO1) = "Schwert2" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "3", "dword")
EndIf
If GUICtrlRead($COMBO1) = "Dolch" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "4", "dword")
EndIf
If GUICtrlRead($COMBO1) = "Bogen" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "5", "dword")
EndIf
If GUICtrlRead($COMBO1) = "Angel" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "8", "dword")
EndIf
If GUICtrlRead($COMBO1) = "Pferd" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "9", "dword")
EndIf
If GUICtrlRead($COMBO1) = "Pferd2" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "10", "dword")
EndIf
If GUICtrlRead($COMBO1) = "Pferd3" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "11", "dword")
EndIf
If GUICtrlRead($COMBO1) = "Gehen" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "C"
$TESTOFFSET2 = "440"
$TESTOFFSET3 = "0041F060"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "16", "dword")
EndIf
Case $ZOOMBON
$ZOOMPIC = GUICtrlCreateButton("", 264, 275, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OnPicture.bmp", -1)
GUISetState(@SW_SHOW)
$WAIT = ProcessWait("metin2client.bin")
$PID = ProcessExists("metin2client.bin")
$OPEN = _MEMORYOPEN($PID)
_MEMORYWRITE(8271878, $OPEN, 30000, "byte[2]")
Case $ZOOMBOFF
$ZOOMPIC = GUICtrlCreateButton("", 264, 275, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$WAIT = ProcessWait("metin2client.bin")
$PID = ProcessExists("metin2client.bin")
$OPEN = _MEMORYOPEN($PID)
_MEMORYWRITE(8271878, $OPEN, 30000, "byte[2]")
Case $FOGBON
$FOG = GUICtrlCreateButton("", 264, 240, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OnPicture.bmp", -1)
GUISetState(@SW_SHOW)
$WAIT = ProcessWait("metin2client.bin")
$PID = ProcessExists("metin2client.bin")
$OPEN = _MEMORYOPEN($PID)
_MEMORYWRITE(8286096, $OPEN, 99999999999999999, "Float")
Case $FOGBOFF
$FOG = GUICtrlCreateButton("", 264, 240, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$WAIT = ProcessWait("metin2client.bin")
$PID = ProcessExists("metin2client.bin")
$OPEN = _MEMORYOPEN($PID)
_MEMORYWRITE(8286096, $OPEN, 4800, "Float")
Case $RANGEA
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5B6"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, GUICtrlRead($INPUT1), "dword")
Case $BUTTONLEVELON
$LEVELPICON = GUICtrlCreateButton("", 264, 310, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OnPicture.bmp", -1)
GUISetState(@SW_SHOW)
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5B6"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, 19999, "dword")
Case $BUTTONLEVELOFF
$LEVELPIC = GUICtrlCreateButton("", 264, 310, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5B6"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "16256", "dword")
Case $MOVEA
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5BA"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, GUICtrlRead($INPUT3), "dword")
Case $ATTACKA
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5BE"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, GUICtrlRead($INPUT4), "dword")
Case $BUTTON16
If GUICtrlRead($COMBO2) = "1" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "2AC"
$TESTOFFSET2 = "518"
$TESTOFFSET3 = "0041AD0C"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
While 3
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "1", "dword")
WEnd
EndIf
If GUICtrlRead($COMBO2) = "2" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "2AC"
$TESTOFFSET2 = "518"
$TESTOFFSET3 = "0041AD0C"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
While 3
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "2", "dword")
WEnd
EndIf
If GUICtrlRead($COMBO2) = "3" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "2AC"
$TESTOFFSET2 = "518"
$TESTOFFSET3 = "0041AD0C"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
While 3
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "3", "dword")
WEnd
EndIf
If GUICtrlRead($COMBO2) = "Off" Then
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "2AC"
$TESTOFFSET2 = "518"
$TESTOFFSET3 = "0041AD0C"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "0", "dword")
EndIf
Case $SLOWBON
$SLOWPIC = GUICtrlCreateButton("", 264, 380, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OnPicture.bmp", -1)
GUISetState(@SW_SHOW)
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5BA"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, 16056, "dword")
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5BE"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, 16056, "dword")
Case $SLOWBOFF
$SLOWPIC = GUICtrlCreateButton("", 264, 380, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5BA"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, 16256, "dword")
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5BE"
$TESTOFFSET3 = "0041B984"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, 16256, "dword")
Case $INVIBON
$INVIPIC = GUICtrlCreateButton("", 264, 345, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OnPicture.bmp", -1)
GUISetState(@SW_SHOW)
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5EA"
$TESTOFFSET3 = "0041F060"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "0", "dword")
Case $INVIBOFF
$INVIPIC = GUICtrlCreateButton("", 264, 345, 41, 25, BitOR($BS_BITMAP, $WS_GROUP, $WS_BORDER))
GUICtrlSetImage(-1, "C:\OffPicture.bmp", -1)
GUISetState(@SW_SHOW)
$PID = WinGetProcess("METIN2")
$OPENMEM = _MEMORYOPEN($PID)
$BASEADRESS = _MEMORYMODULEGETBASEADDRESS($PID, "metin2client.bin")
$TESTOFFSET1 = "4"
$TESTOFFSET2 = "5BB"
$TESTOFFSET3 = "0041F060"
Global $AOFFSET[3]
$AOFFSET[0] = 0
$AOFFSET[1] = Dec($TESTOFFSET1)
$AOFFSET[2] = Dec($TESTOFFSET2)
$AADDRESS = "0x" & Hex($BASEADRESS + Dec($TESTOFFSET3))
$AMEMREAD = _MEMORYPOINTERREAD($AADDRESS, $OPENMEM, $AOFFSET, "byte[2]")
$AWERT = _RETURNMEMORYVALUE($AMEMREAD[1])
$AWERT = Dec($AWERT)
_MEMORYPOINTERWRITE($AADDRESS, $OPENMEM, $AOFFSET, "19999", "dword")
EndSwitch
WEnd
Func _RETURNMEMORYVALUE($SADRESSE)
$SNEWADRESSE = ""
$SADRESSE = StringTrimLeft($SADRESSE, 2)
For $I = StringLen($SADRESSE) - 1 To 0 Step -2
$SNEWADRESSE &= StringMid($SADRESSE, $I, 2)
Next
Return $SNEWADRESSE
EndFunc