Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Global Const $FC_NOOVERWRITE = 0
- Global Const $FC_OVERWRITE = 1
- Global Const $FC_CREATEPATH = 8
- Global Const $FT_MODIFIED = 0
- Global Const $FT_CREATED = 1
- Global Const $FT_ACCESSED = 2
- Global Const $FT_ARRAY = 0
- Global Const $FT_STRING = 1
- Global Const $FSF_CREATEBUTTON = 1
- Global Const $FSF_NEWDIALOG = 2
- Global Const $FSF_EDITCONTROL = 4
- Global Const $FT_NONRECURSIVE = 0
- Global Const $FT_RECURSIVE = 1
- Global Const $FO_READ = 0
- Global Const $FO_APPEND = 1
- Global Const $FO_OVERWRITE = 2
- Global Const $FO_CREATEPATH = 8
- 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 $FO_ANSI = 512
- Global Const $FO_UTF16_LE_NOBOM = 1024
- Global Const $FO_UTF16_BE_NOBOM = 2048
- Global Const $FO_UTF8_FULL = 16384
- Global Const $FO_FULLFILE_DETECT = 16384
- 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 $FILE_SHARE_READWRITE = BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE)
- Global Const $FILE_SHARE_ANY = BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE, $FILE_SHARE_DELETE)
- Global Const $GENERIC_ALL = 268435456
- Global Const $GENERIC_EXECUTE = 536870912
- Global Const $GENERIC_WRITE = 1073741824
- Global Const $GENERIC_READ = -2147483648
- Global Const $GENERIC_READWRITE = BitOR($GENERIC_READ, $GENERIC_WRITE)
- Global Const $FILE_ENCODING_UTF16LE = 32
- Global Const $FE_ENTIRE_UTF8 = 1
- Global Const $FE_PARTIALFIRST_UTF8 = 2
- Global Const $FN_FULLPATH = 0
- Global Const $FN_RELATIVEPATH = 1
- Global Const $FV_COMMENTS = "Comments"
- Global Const $FV_COMPANYNAME = "CompanyName"
- Global Const $FV_FILEDESCRIPTION = "FileDescription"
- Global Const $FV_FILEVERSION = "FileVersion"
- Global Const $FV_INTERNALNAME = "InternalName"
- Global Const $FV_LEGALCOPYRIGHT = "LegalCopyright"
- Global Const $FV_LEGALTRADEMARKS = "LegalTrademarks"
- Global Const $FV_ORIGINALFILENAME = "OriginalFilename"
- Global Const $FV_PRODUCTNAME = "ProductName"
- Global Const $FV_PRODUCTVERSION = "ProductVersion"
- Global Const $FV_PRIVATEBUILD = "PrivateBuild"
- Global Const $FV_SPECIALBUILD = "SpecialBuild"
- Global Const $FRTA_NOCOUNT = 0
- Global Const $FRTA_COUNT = 1
- Global Const $FRTA_INTARRAYS = 2
- Global Const $FRTA_ENTIRESPLIT = 4
- Global Const $FLTA_FILESFOLDERS = 0
- Global Const $FLTA_FILES = 1
- Global Const $FLTA_FOLDERS = 2
- Global Const $FLTAR_FILESFOLDERS = 0
- Global Const $FLTAR_FILES = 1
- Global Const $FLTAR_FOLDERS = 2
- Global Const $FLTAR_NOHIDDEN = 4
- Global Const $FLTAR_NOSYSTEM = 8
- Global Const $FLTAR_NOLINK = 16
- Global Const $FLTAR_NORECUR = 0
- Global Const $FLTAR_RECUR = 1
- Global Const $FLTAR_NOSORT = 0
- Global Const $FLTAR_SORT = 1
- Global Const $FLTAR_FASTSORT = 2
- Global Const $FLTAR_NOPATH = 0
- Global Const $FLTAR_RELPATH = 1
- Global Const $FLTAR_FULLPATH = 2
- Global Const $PATH_ORIGINAL = 0
- Global Const $PATH_DRIVE = 1
- Global Const $PATH_DIRECTORY = 2
- Global Const $PATH_FILENAME = 3
- Global Const $PATH_EXTENSION = 4
- Global Const $MB_OK = 0
- Global Const $MB_OKCANCEL = 1
- Global Const $MB_ABORTRETRYIGNORE = 2
- Global Const $MB_YESNOCANCEL = 3
- Global Const $MB_YESNO = 4
- Global Const $MB_RETRYCANCEL = 5
- Global Const $MB_CANCELTRYCONTINUE = 6
- Global Const $MB_HELP = 16384
- Global Const $MB_ICONSTOP = 16
- Global Const $MB_ICONERROR = 16
- Global Const $MB_ICONHAND = 16
- Global Const $MB_ICONQUESTION = 32
- Global Const $MB_ICONEXCLAMATION = 48
- Global Const $MB_ICONWARNING = 48
- Global Const $MB_ICONINFORMATION = 64
- Global Const $MB_ICONASTERISK = 64
- Global Const $MB_USERICON = 128
- Global Const $MB_DEFBUTTON1 = 0
- Global Const $MB_DEFBUTTON2 = 256
- Global Const $MB_DEFBUTTON3 = 512
- Global Const $MB_DEFBUTTON4 = 768
- Global Const $MB_APPLMODAL = 0
- Global Const $MB_SYSTEMMODAL = 4096
- Global Const $MB_TASKMODAL = 8192
- Global Const $MB_DEFAULT_DESKTOP_ONLY = 131072
- Global Const $MB_RIGHT = 524288
- Global Const $MB_RTLREADING = 1048576
- Global Const $MB_SETFOREGROUND = 65536
- Global Const $MB_TOPMOST = 262144
- Global Const $MB_SERVICE_NOTIFICATION = 2097152
- Global Const $MB_RIGHTJUSTIFIED = $MB_RIGHT
- Global Const $IDTIMEOUT = -1
- Global Const $IDOK = 1
- Global Const $IDCANCEL = 2
- Global Const $IDABORT = 3
- Global Const $IDRETRY = 4
- Global Const $IDIGNORE = 5
- Global Const $IDYES = 6
- Global Const $IDNO = 7
- Global Const $IDCLOSE = 8
- Global Const $IDHELP = 9
- Global Const $IDTRYAGAIN = 10
- Global Const $IDCONTINUE = 11
- Global Const $STR_NOCASESENSE = 0
- Global Const $STR_CASESENSE = 1
- Global Const $STR_NOCASESENSEBASIC = 2
- Global Const $STR_STRIPLEADING = 1
- Global Const $STR_STRIPTRAILING = 2
- Global Const $STR_STRIPSPACES = 4
- Global Const $STR_STRIPALL = 8
- Global Const $STR_CHRSPLIT = 0
- Global Const $STR_ENTIRESPLIT = 1
- Global Const $STR_NOCOUNT = 2
- Global Const $STR_REGEXPMATCH = 0
- Global Const $STR_REGEXPARRAYMATCH = 1
- Global Const $STR_REGEXPARRAYFULLMATCH = 2
- Global Const $STR_REGEXPARRAYGLOBALMATCH = 3
- Global Const $STR_REGEXPARRAYGLOBALFULLMATCH = 4
- Global Const $STR_ENDISSTART = 0
- Global Const $STR_ENDNOTSTART = 1
- Global Const $SB_ANSI = 1
- Global Const $SB_UTF16LE = 2
- Global Const $SB_UTF16BE = 3
- Global Const $SB_UTF8 = 4
- Global Const $SE_UTF16 = 0
- Global Const $SE_ANSI = 1
- Global Const $SE_UTF8 = 2
- Global Const $STR_UTF16 = 0
- Global Const $STR_UCS2 = 1
- #Region Global Variables and Constants
- Global Const $FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
- Global Const $FORMAT_MESSAGE_IGNORE_INSERTS = 512
- Global Const $FORMAT_MESSAGE_FROM_STRING = 1024
- Global Const $FORMAT_MESSAGE_FROM_HMODULE = 2048
- Global Const $FORMAT_MESSAGE_FROM_SYSTEM = 4096
- Global Const $FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192
- #EndRegion Global Variables and Constants
- Func _WinAPI_Beep($IFREQ = 500, $IDURATION = 1000)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "Beep", "dword", $IFREQ, "dword", $IDURATION)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_Beep
- Func _WinAPI_FormatMessage($IFLAGS, $PSOURCE, $IMESSAGEID, $ILANGUAGEID, ByRef $PBUFFER, $ISIZE, $VARGUMENTS)
- Local $SBUFFERTYPE = "struct*"
- If IsString($PBUFFER) Then $SBUFFERTYPE = "wstr"
- Local $ARESULT = DllCall("kernel32.dll", "dword", "FormatMessageW", "dword", $IFLAGS, "struct*", $PSOURCE, "dword", $IMESSAGEID, "dword", $ILANGUAGEID, $SBUFFERTYPE, $PBUFFER, "dword", $ISIZE, "ptr", $VARGUMENTS)
- If @error Or Not $ARESULT[0] Then Return SetError(@error + 10, @extended, 0)
- If $SBUFFERTYPE = "wstr" Then $PBUFFER = $ARESULT[5]
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_FormatMessage
- Func _WinAPI_GetErrorMessage($ICODE, $ILANGUAGE = 0, Const $_ICURRENTERROR = @error, Const $_ICURRENTEXTENDED = @extended)
- Local $ARET = DllCall("kernel32.dll", "dword", "FormatMessageW", "dword", 4096, "ptr", 0, "dword", $ICODE, "dword", $ILANGUAGE, "wstr", "", "dword", 4096, "ptr", 0)
- If @error Or Not $ARET[0] Then Return SetError(@error, @extended, "")
- Return SetError($_ICURRENTERROR, $_ICURRENTEXTENDED, StringRegExpReplace($ARET[5], "[" & @LF & "," & @CR & "]*\Z", ""))
- EndFunc ;==>_WINAPI_GETERRORMESSAGE
- Func _WinAPI_GetLastError(Const $_ICURRENTERROR = @error, Const $_ICURRENTEXTENDED = @extended)
- Local $ARESULT = DllCall("kernel32.dll", "dword", "GetLastError")
- Return SetError($_ICURRENTERROR, $_ICURRENTEXTENDED, $ARESULT[0])
- EndFunc ;==>_WinAPI_GetLastError
- Func _WinAPI_GetLastErrorMessage(Const $_ICURRENTERROR = @error, Const $_ICURRENTEXTENDED = @extended)
- Local $ILASTERROR = _WinAPI_GetLastError()
- Local $TBUFFERPTR = DllStructCreate("ptr")
- Local $NCOUNT = _WinAPI_FormatMessage(BitOR($FORMAT_MESSAGE_ALLOCATE_BUFFER, $FORMAT_MESSAGE_FROM_SYSTEM), 0, $ILASTERROR, 0, $TBUFFERPTR, 0, 0)
- If @error Then Return SetError(-@error, @extended, "")
- Local $STEXT = ""
- Local $PBUFFER = DllStructGetData($TBUFFERPTR, 1)
- If $PBUFFER Then
- If $NCOUNT > 0 Then
- Local $TBUFFER = DllStructCreate("wchar[" & ($NCOUNT + 1) & "]", $PBUFFER)
- $STEXT = DllStructGetData($TBUFFER, 1)
- If StringRight($STEXT, 2) = @CRLF Then $STEXT = StringTrimRight($STEXT, 2)
- EndIf
- DllCall("kernel32.dll", "handle", "LocalFree", "handle", $PBUFFER)
- EndIf
- Return SetError($_ICURRENTERROR, $_ICURRENTEXTENDED, $STEXT)
- EndFunc ;==>_WinAPI_GetLastErrorMessage
- Func _WinAPI_MessageBeep($ITYPE = 1)
- Local $ISOUND
- Switch $ITYPE
- Case 1
- $ISOUND = 0
- Case 2
- $ISOUND = 16
- Case 3
- $ISOUND = 32
- Case 4
- $ISOUND = 48
- Case 5
- $ISOUND = 64
- Case Else
- $ISOUND = -1
- EndSwitch
- Local $ARESULT = DllCall("user32.dll", "bool", "MessageBeep", "uint", $ISOUND)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_MessageBeep
- Func _WinAPI_MsgBox($IFLAGS, $STITLE, $STEXT)
- BlockInput(0)
- MsgBox($IFLAGS, $STITLE, $STEXT & " ")
- EndFunc ;==>_WinAPI_MsgBox
- Func _WinAPI_SetLastError($IERRORCODE, Const $_ICURRENTERROR = @error, Const $_ICURRENTEXTENDED = @extended)
- DllCall("kernel32.dll", "none", "SetLastError", "dword", $IERRORCODE)
- Return SetError($_ICURRENTERROR, $_ICURRENTEXTENDED, Null)
- EndFunc ;==>_WinAPI_SetLastError
- Func _WinAPI_ShowError($STEXT, $BEXIT = True)
- BlockInput(0)
- MsgBox($MB_SYSTEMMODAL, "Error", $STEXT & " ")
- If $BEXIT Then Exit
- EndFunc ;==>_WinAPI_ShowError
- Func _WinAPI_ShowLastError($STEXT = "", $BABORT = False, $ILANGUAGE = 0, Const $_ICURRENTERROR = @error, Const $_ICURRENTEXTENDED = @extended)
- Local $SERROR
- Local $ILASTERROR = _WinAPI_GetLastError()
- While 1
- $SERROR = _WinAPI_GetErrorMessage($ILASTERROR, $ILANGUAGE)
- If @error And $ILANGUAGE Then
- $ILANGUAGE = 0
- Else
- ExitLoop
- EndIf
- WEnd
- If StringStripWS($STEXT, $STR_STRIPLEADING + $STR_STRIPTRAILING) Then
- $STEXT &= @CRLF & @CRLF
- Else
- $STEXT = ""
- EndIf
- _WinAPI_MsgBox(BitOR(262144, BitShift(16, -2 * (Not $ILASTERROR))), $ILASTERROR, $STEXT & $SERROR)
- If $ILASTERROR Then
- _WinAPI_SetLastError($ILASTERROR)
- If $BABORT Then
- Exit $ILASTERROR
- EndIf
- EndIf
- Return SetError($_ICURRENTERROR, $_ICURRENTEXTENDED, 1)
- EndFunc ;==>_WINAPI_SHOWLASTERROR
- Func _WinAPI_ShowMsg($STEXT)
- _WinAPI_MsgBox($MB_SYSTEMMODAL, "Information", $STEXT)
- EndFunc ;==>_WinAPI_ShowMsg
- Func __COMERRORFORMATING(ByRef $OCOMERROR, $SPREFIX = @TAB)
- Local Const $STR_STRIPTRAILING = 2
- Local $SERROR = "COM Error encountered in " & @ScriptName & " (" & $OCOMERROR.Scriptline & ") :" & @CRLF & $SPREFIX & "Number " & @TAB & "= 0x" & Hex($OCOMERROR.Number, 8) & " (" & $OCOMERROR.Number & ")" & @CRLF & $SPREFIX & "WinDescription" & @TAB & "= " & StringStripWS($OCOMERROR.WinDescription, $STR_STRIPTRAILING) & @CRLF & $SPREFIX & "Description " & @TAB & "= " & StringStripWS($OCOMERROR.Description, $STR_STRIPTRAILING) & @CRLF & $SPREFIX & "Source " & @TAB & "= " & $OCOMERROR.Source & @CRLF & $SPREFIX & "HelpFile " & @TAB & "= " & $OCOMERROR.HelpFile & @CRLF & $SPREFIX & "HelpContext " & @TAB & "= " & $OCOMERROR.HelpContext & @CRLF & $SPREFIX & "LastDllError " & @TAB & "= " & $OCOMERROR.LastDllError & @CRLF & $SPREFIX & "Retcode " & @TAB & "= 0x" & Hex($OCOMERROR.retcode)
- Return $SERROR
- EndFunc ;==>__COMERRORFORMATING
- 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 $KP_ALGID = 7
- Global Const $CALG_MD2 = 32769
- Global Const $CALG_MD4 = 32770
- Global Const $CALG_MD5 = 32771
- Global Const $CALG_SHA1 = 32772
- Global Const $CALG_SHA_256 = 32780
- Global Const $CALG_SHA_384 = 32781
- Global Const $CALG_SHA_512 = 32782
- 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 $HADVAPI32 = -1 Then Return SetError(1001, 0, False)
- __CRYPT_DLLHANDLESET($HADVAPI32)
- Local $IPROVIDERID = $PROV_RSA_AES
- Local $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptAcquireContext", "handle*", 0, "ptr", 0, "ptr", 0, "dword", $IPROVIDERID, "dword", $CRYPT_VERIFYCONTEXT)
- If @error Or Not $ARET[0] Then
- Local $IERROR = @error + 1002, $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- DllClose(__CRYPT_DLLHANDLE())
- Return SetError($IERROR, $IEXTENDED, False)
- Else
- __CRYPT_CONTEXTSET($ARET[1])
- EndIf
- EndIf
- __CRYPT_REFCOUNTINC()
- Return True
- EndFunc ;==>_Crypt_Startup
- 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 ;==>_Crypt_Shutdown
- Func _Crypt_DeriveKey($VPASSWORD, $IALGID, $IHASHPASSWORDID = $CALG_MD5)
- Local $ARET = 0, $TBUFF = 0, $HCRYPTHASH = 0, $IERROR = 0, $IEXTENDED = 0, $VRETURN = 0
- _Crypt_Startup()
- If @error Then Return SetError(@error, @extended, -1)
- Do
- $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptCreateHash", "handle", __CRYPT_CONTEXT(), "uint", $IHASHPASSWORDID, "ptr", 0, "dword", 0, "handle*", 0)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 10
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- $HCRYPTHASH = $ARET[5]
- $TBUFF = DllStructCreate("byte[" & BinaryLen($VPASSWORD) & "]")
- DllStructSetData($TBUFF, 1, $VPASSWORD)
- $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptHashData", "handle", $HCRYPTHASH, "struct*", $TBUFF, "dword", DllStructGetSize($TBUFF), "dword", $CRYPT_USERDATA)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 20
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDeriveKey", "handle", __CRYPT_CONTEXT(), "uint", $IALGID, "handle", $HCRYPTHASH, "dword", $CRYPT_EXPORTABLE, "handle*", 0)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 30
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- $VRETURN = $ARET[5]
- Until True
- If $HCRYPTHASH <> 0 Then DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDestroyHash", "handle", $HCRYPTHASH)
- Return SetError($IERROR, $IEXTENDED, $VRETURN)
- EndFunc ;==>_Crypt_DeriveKey
- Func _Crypt_DestroyKey($HCRYPTKEY)
- Local $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDestroyKey", "handle", $HCRYPTKEY)
- Local $IERROR = @error, $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- _Crypt_Shutdown()
- If $IERROR Or Not $ARET[0] Then
- Return SetError($IERROR + 10, $IEXTENDED, False)
- Else
- Return True
- EndIf
- EndFunc ;==>_Crypt_DestroyKey
- Func _Crypt_EncryptData($VDATA, $VCRYPTKEY, $IALGID, $BFINAL = True)
- Switch $IALGID
- Case $CALG_USERKEY
- Local $ICALGUSED = __CRYPT_GETCALGFROMCRYPTKEY($VCRYPTKEY)
- If @error Then Return SetError(@error, @extended, -1)
- If $ICALGUSED = $CALG_RC4 Then ContinueCase
- Case $CALG_RC4
- If BinaryLen($VDATA) = 0 Then Return SetError(0, 0, Binary(""))
- EndSwitch
- Local $IREQBUFFSIZE = 0, $ARET = 0, $TBUFF = 0, $IERROR = 0, $IEXTENDED = 0, $VRETURN = 0
- _Crypt_Startup()
- If @error Then Return SetError(@error, @extended, -1)
- Do
- If $IALGID <> $CALG_USERKEY Then
- $VCRYPTKEY = _Crypt_DeriveKey($VCRYPTKEY, $IALGID)
- If @error Then
- $IERROR = @error
- $IEXTENDED = @extended
- $VRETURN = -1
- ExitLoop
- EndIf
- EndIf
- $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptEncrypt", "handle", $VCRYPTKEY, "handle", 0, "bool", $BFINAL, "dword", 0, "ptr", 0, "dword*", BinaryLen($VDATA), "dword", 0)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 50
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- $IREQBUFFSIZE = $ARET[6]
- $TBUFF = DllStructCreate("byte[" & $IREQBUFFSIZE + 1 & "]")
- DllStructSetData($TBUFF, 1, $VDATA)
- $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptEncrypt", "handle", $VCRYPTKEY, "handle", 0, "bool", $BFINAL, "dword", 0, "struct*", $TBUFF, "dword*", BinaryLen($VDATA), "dword", $IREQBUFFSIZE)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 60
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- $VRETURN = BinaryMid(DllStructGetData($TBUFF, 1), 1, $IREQBUFFSIZE)
- Until True
- If $IALGID <> $CALG_USERKEY Then _Crypt_DestroyKey($VCRYPTKEY)
- _Crypt_Shutdown()
- Return SetError($IERROR, $IEXTENDED, $VRETURN)
- EndFunc ;==>_Crypt_EncryptData
- Func _Crypt_DecryptData($VDATA, $VCRYPTKEY, $IALGID, $BFINAL = True)
- Switch $IALGID
- Case $CALG_USERKEY
- Local $ICALGUSED = __CRYPT_GETCALGFROMCRYPTKEY($VCRYPTKEY)
- If @error Then Return SetError(@error, @extended, -1)
- If $ICALGUSED = $CALG_RC4 Then ContinueCase
- Case $CALG_RC4
- If BinaryLen($VDATA) = 0 Then Return SetError(0, 0, Binary(""))
- EndSwitch
- Local $ARET = 0, $TBUFF = 0, $TTEMPSTRUCT = 0, $IERROR = 0, $IEXTENDED = 0, $IPLAINTEXTSIZE = 0, $VRETURN = 0
- _Crypt_Startup()
- If @error Then Return SetError(@error, @extended, -1)
- Do
- If $IALGID <> $CALG_USERKEY Then
- $VCRYPTKEY = _Crypt_DeriveKey($VCRYPTKEY, $IALGID)
- If @error Then
- $IERROR = @error
- $IEXTENDED = @extended
- $VRETURN = -1
- ExitLoop
- EndIf
- EndIf
- $TBUFF = DllStructCreate("byte[" & BinaryLen($VDATA) + 1000 & "]")
- If BinaryLen($VDATA) > 0 Then DllStructSetData($TBUFF, 1, $VDATA)
- $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDecrypt", "handle", $VCRYPTKEY, "handle", 0, "bool", $BFINAL, "dword", 0, "struct*", $TBUFF, "dword*", BinaryLen($VDATA))
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 70
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- $IPLAINTEXTSIZE = $ARET[6]
- $TTEMPSTRUCT = DllStructCreate("byte[" & $IPLAINTEXTSIZE + 1 & "]", DllStructGetPtr($TBUFF))
- $VRETURN = BinaryMid(DllStructGetData($TTEMPSTRUCT, 1), 1, $IPLAINTEXTSIZE)
- Until True
- If $IALGID <> $CALG_USERKEY Then _Crypt_DestroyKey($VCRYPTKEY)
- _Crypt_Shutdown()
- Return SetError($IERROR, $IEXTENDED, $VRETURN)
- EndFunc ;==>_Crypt_DecryptData
- Func _Crypt_HashData($VDATA, $IALGID, $BFINAL = True, $HCRYPTHASH = 0)
- Local $ARET = 0, $TBUFF = 0, $IERROR = 0, $IEXTENDED = 0, $IHASHSIZE = 0, $VRETURN = 0
- _Crypt_Startup()
- If @error Then Return SetError(@error, @extended, -1)
- Do
- If $HCRYPTHASH = 0 Then
- $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptCreateHash", "handle", __CRYPT_CONTEXT(), "uint", $IALGID, "ptr", 0, "dword", 0, "handle*", 0)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 10
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- $HCRYPTHASH = $ARET[5]
- EndIf
- $TBUFF = DllStructCreate("byte[" & BinaryLen($VDATA) & "]")
- DllStructSetData($TBUFF, 1, $VDATA)
- $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptHashData", "handle", $HCRYPTHASH, "struct*", $TBUFF, "dword", DllStructGetSize($TBUFF), "dword", $CRYPT_USERDATA)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 20
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- If $BFINAL 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 = @error + 30
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- $IHASHSIZE = $ARET[3]
- $TBUFF = DllStructCreate("byte[" & $IHASHSIZE & "]")
- $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptGetHashParam", "handle", $HCRYPTHASH, "dword", $HP_HASHVAL, "struct*", $TBUFF, "dword*", $IHASHSIZE, "dword", 0)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 40
- $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- $VRETURN = DllStructGetData($TBUFF, 1)
- Else
- $VRETURN = $HCRYPTHASH
- EndIf
- Until True
- If $HCRYPTHASH <> 0 And $BFINAL Then DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptDestroyHash", "handle", $HCRYPTHASH)
- _Crypt_Shutdown()
- Return SetError($IERROR, $IEXTENDED, $VRETURN)
- EndFunc ;==>_Crypt_HashData
- Func _Crypt_HashFile($SFILEPATH, $IALGID)
- Local $DTEMPDATA = 0, $HFILE = 0, $HHASHOBJECT = 0, $IERROR = 0, $IEXTENDED = 0, $VRETURN = 0
- _Crypt_Startup()
- If @error Then Return SetError(@error, @extended, -1)
- Do
- $HFILE = FileOpen($SFILEPATH, $FO_BINARY)
- If $HFILE = -1 Then
- $IERROR = 1
- $IEXTENDED = _WinAPI_GetLastError()
- $VRETURN = -1
- ExitLoop
- EndIf
- Do
- $DTEMPDATA = FileRead($HFILE, 512 * 1024)
- If @error Then
- $VRETURN = _Crypt_HashData($DTEMPDATA, $IALGID, True, $HHASHOBJECT)
- If @error Then
- $IERROR = @error
- $IEXTENDED = @extended
- $VRETURN = -1
- ExitLoop 2
- EndIf
- ExitLoop 2
- Else
- $HHASHOBJECT = _Crypt_HashData($DTEMPDATA, $IALGID, False, $HHASHOBJECT)
- If @error Then
- $IERROR = @error + 100
- $IEXTENDED = @extended
- $VRETURN = -1
- ExitLoop 2
- EndIf
- EndIf
- Until False
- Until True
- _Crypt_Shutdown()
- If $HFILE <> -1 Then FileClose($HFILE)
- Return SetError($IERROR, $IEXTENDED, $VRETURN)
- EndFunc ;==>_Crypt_HashFile
- Func _Crypt_EncryptFile($SSOURCEFILE, $SDESTINATIONFILE, $VCRYPTKEY, $IALGID)
- Local $DTEMPDATA = 0, $HINFILE = 0, $HOUTFILE = 0, $IERROR = 0, $IEXTENDED = 0, $IFILESIZE = FileGetSize($SSOURCEFILE), $IREAD = 0, $BRETURN = True
- _Crypt_Startup()
- If @error Then Return SetError(@error, @extended, -1)
- Do
- If $IALGID <> $CALG_USERKEY Then
- $VCRYPTKEY = _Crypt_DeriveKey($VCRYPTKEY, $IALGID)
- If @error Then
- $IERROR = @error
- $IEXTENDED = @extended
- $BRETURN = False
- ExitLoop
- EndIf
- EndIf
- $HINFILE = FileOpen($SSOURCEFILE, $FO_BINARY)
- If $HINFILE = -1 Then
- $IERROR = 2
- $IEXTENDED = _WinAPI_GetLastError()
- $BRETURN = False
- ExitLoop
- EndIf
- $HOUTFILE = FileOpen($SDESTINATIONFILE, $FO_OVERWRITE + $FO_CREATEPATH + $FO_BINARY)
- If $HOUTFILE = -1 Then
- $IERROR = 3
- $IEXTENDED = _WinAPI_GetLastError()
- $BRETURN = False
- ExitLoop
- EndIf
- Do
- $DTEMPDATA = FileRead($HINFILE, 1024 * 1024)
- $IREAD += BinaryLen($DTEMPDATA)
- If $IREAD = $IFILESIZE Then
- $DTEMPDATA = _Crypt_EncryptData($DTEMPDATA, $VCRYPTKEY, $CALG_USERKEY, True)
- If @error Then
- $IERROR = @error + 400
- $IEXTENDED = @extended
- $BRETURN = False
- EndIf
- FileWrite($HOUTFILE, $DTEMPDATA)
- ExitLoop 2
- Else
- $DTEMPDATA = _Crypt_EncryptData($DTEMPDATA, $VCRYPTKEY, $CALG_USERKEY, False)
- If @error Then
- $IERROR = @error + 500
- $IEXTENDED = @extended
- $BRETURN = False
- ExitLoop 2
- EndIf
- FileWrite($HOUTFILE, $DTEMPDATA)
- EndIf
- Until False
- Until True
- If $IALGID <> $CALG_USERKEY Then _Crypt_DestroyKey($VCRYPTKEY)
- _Crypt_Shutdown()
- If $HINFILE <> -1 Then FileClose($HINFILE)
- If $HOUTFILE <> -1 Then FileClose($HOUTFILE)
- Return SetError($IERROR, $IEXTENDED, $BRETURN)
- EndFunc ;==>_Crypt_EncryptFile
- Func _Crypt_DecryptFile($SSOURCEFILE, $SDESTINATIONFILE, $VCRYPTKEY, $IALGID)
- Local $DTEMPDATA = 0, $HINFILE = 0, $HOUTFILE = 0, $IERROR = 0, $IEXTENDED = 0, $IFILESIZE = FileGetSize($SSOURCEFILE), $IREAD = 0, $BRETURN = True
- _Crypt_Startup()
- If @error Then Return SetError(@error, @extended, -1)
- Do
- If $IALGID <> $CALG_USERKEY Then
- $VCRYPTKEY = _Crypt_DeriveKey($VCRYPTKEY, $IALGID)
- If @error Then
- $IERROR = @error
- $IEXTENDED = @extended
- $BRETURN = False
- ExitLoop
- EndIf
- EndIf
- $HINFILE = FileOpen($SSOURCEFILE, $FO_BINARY)
- If $HINFILE = -1 Then
- $IERROR = 2
- $IEXTENDED = _WinAPI_GetLastError()
- $BRETURN = False
- ExitLoop
- EndIf
- $HOUTFILE = FileOpen($SDESTINATIONFILE, $FO_OVERWRITE + $FO_CREATEPATH + $FO_BINARY)
- If $HOUTFILE = -1 Then
- $IERROR = 3
- $IEXTENDED = _WinAPI_GetLastError()
- $BRETURN = False
- ExitLoop
- EndIf
- Do
- $DTEMPDATA = FileRead($HINFILE, 1024 * 1024)
- $IREAD += BinaryLen($DTEMPDATA)
- If $IREAD = $IFILESIZE Then
- $DTEMPDATA = _Crypt_DecryptData($DTEMPDATA, $VCRYPTKEY, $CALG_USERKEY, True)
- If @error Then
- $IERROR = @error + 400
- $IEXTENDED = @extended
- $BRETURN = False
- EndIf
- FileWrite($HOUTFILE, $DTEMPDATA)
- ExitLoop 2
- Else
- $DTEMPDATA = _Crypt_DecryptData($DTEMPDATA, $VCRYPTKEY, $CALG_USERKEY, False)
- If @error Then
- $IERROR = @error + 500
- $IEXTENDED = @extended
- $BRETURN = False
- ExitLoop 2
- EndIf
- FileWrite($HOUTFILE, $DTEMPDATA)
- EndIf
- Until False
- Until True
- If $IALGID <> $CALG_USERKEY Then _Crypt_DestroyKey($VCRYPTKEY)
- _Crypt_Shutdown()
- If $HINFILE <> -1 Then FileClose($HINFILE)
- If $HOUTFILE <> -1 Then FileClose($HOUTFILE)
- Return SetError($IERROR, $IEXTENDED, $BRETURN)
- EndFunc ;==>_Crypt_DecryptFile
- Func _Crypt_GenRandom($PBUFFER, $ISIZE)
- _Crypt_Startup()
- If @error Then Return SetError(@error, @extended, False)
- Local $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptGenRandom", "handle", __CRYPT_CONTEXT(), "dword", $ISIZE, "struct*", $PBUFFER)
- Local $IERROR = @error, $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- _Crypt_Shutdown()
- If $IERROR Or (Not $ARET[0]) Then
- Return SetError($IERROR + 10, $IEXTENDED, False)
- Else
- Return True
- EndIf
- EndFunc ;==>_CRYPT_GENRANDOM
- Func __CRYPT_REFCOUNT()
- Return $__G_ACRYPTINTERNALDATA[0]
- EndFunc ;==>__CRYPT_REFCOUNT
- Func __CRYPT_REFCOUNTINC()
- $__G_ACRYPTINTERNALDATA[0] += 1
- EndFunc ;==>__CRYPT_REFCOUNTINC
- Func __CRYPT_REFCOUNTDEC()
- If $__G_ACRYPTINTERNALDATA[0] > 0 Then $__G_ACRYPTINTERNALDATA[0] -= 1
- EndFunc ;==>__CRYPT_REFCOUNTDEC
- Func __CRYPT_DLLHANDLE()
- Return $__G_ACRYPTINTERNALDATA[1]
- EndFunc ;==>__CRYPT_DLLHANDLE
- Func __CRYPT_DLLHANDLESET($HADVAPI32)
- $__G_ACRYPTINTERNALDATA[1] = $HADVAPI32
- EndFunc ;==>__CRYPT_DLLHANDLESET
- Func __CRYPT_CONTEXT()
- Return $__G_ACRYPTINTERNALDATA[2]
- EndFunc ;==>__CRYPT_CONTEXT
- Func __CRYPT_CONTEXTSET($HCRYPTCONTEXT)
- $__G_ACRYPTINTERNALDATA[2] = $HCRYPTCONTEXT
- EndFunc ;==>__CRYPT_CONTEXTSET
- Func __CRYPT_GETCALGFROMCRYPTKEY($VCRYPTKEY)
- Local $TALGID = DllStructCreate("uint")
- Local $ARET = DllCall(__CRYPT_DLLHANDLE(), "bool", "CryptGetKeyParam", "handle", $VCRYPTKEY, "dword", $KP_ALGID, "struct*", $TALGID, "dword*", DllStructGetSize($TALGID), "dword", 0)
- Local $IERROR = @error, $IEXTENDED = @extended
- If Not $ARET[0] Then $IEXTENDED = _WinAPI_GetLastError()
- If $IERROR Or Not $ARET[0] Then
- Return SetError($IERROR + 80, $IEXTENDED, $CRYPT_USERDATA)
- Else
- Return DllStructGetData($TALGID, 1)
- EndIf
- EndFunc ;==>__CRYPT_GETCALGFROMCRYPTKEY
- 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 $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 $__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 $GUI_SS_DEFAULT_COMBO = 2097218
- Global Const $GUI_EVENT_SINGLE = 0
- Global Const $GUI_EVENT_ARRAY = 1
- Global Const $GUI_EVENT_NONE = 0
- 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_FONTNORMAL = 0
- 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_READ_DEFAULT = 0
- Global Const $GUI_READ_EXTENDED = 1
- Global Const $GUI_CURSOR_NOOVERRIDE = 0
- Global Const $GUI_CURSOR_OVERRIDE = 1
- Global Const $GUI_WS_EX_PARENTDRAG = 1048576
- Global Const $WC_ANIMATE = "SysAnimate32"
- Global Const $WC_BUTTON = "Button"
- Global Const $WC_COMBOBOX = "ComboBox"
- Global Const $WC_COMBOBOXEX = "ComboBoxEx32"
- Global Const $WC_DATETIMEPICK = "SysDateTimePick32"
- Global Const $WC_EDIT = "Edit"
- Global Const $WC_HEADER = "SysHeader32"
- Global Const $WC_HOTKEY = "msctls_hotkey32"
- Global Const $WC_IPADDRESS = "SysIPAddress32"
- Global Const $WC_LINK = "SysLink"
- Global Const $WC_LISTBOX = "ListBox"
- Global Const $WC_LISTVIEW = "SysListView32"
- Global Const $WC_MONTHCAL = "SysMonthCal32"
- Global Const $WC_NATIVEFONTCTL = "NativeFontCtl"
- Global Const $WC_PAGESCROLLER = "SysPager"
- Global Const $WC_PROGRESS = "msctls_progress32"
- Global Const $WC_REBAR = "ReBarWindow32"
- Global Const $WC_SCROLLBAR = "ScrollBar"
- Global Const $WC_STATIC = "Static"
- Global Const $WC_STATUSBAR = "msctls_statusbar32"
- Global Const $WC_TABCONTROL = "SysTabControl32"
- Global Const $WC_TOOLBAR = "ToolbarWindow32"
- Global Const $WC_TOOLTIPS = "tooltips_class32"
- Global Const $WC_TRACKBAR = "msctls_trackbar32"
- Global Const $WC_TREEVIEW = "SysTreeView32"
- Global Const $WC_UPDOWN = "msctls_updown32"
- Global Const $WS_OVERLAPPED = 0
- Global Const $WS_TILED = $WS_OVERLAPPED
- 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 = $WS_SIZEBOX
- 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 = BitOR($WS_CAPTION, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_OVERLAPPED, $WS_SYSMENU, $WS_THICKFRAME)
- Global Const $WS_TILEDWINDOW = $WS_OVERLAPPEDWINDOW
- 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_ICONIC = $WS_MINIMIZE
- Global Const $WS_CHILD = 1073741824
- Global Const $WS_CHILDWINDOW = $WS_CHILD
- Global Const $WS_POPUP = -2147483648
- Global Const $WS_POPUPWINDOW = -2138570752
- Global Const $DS_3DLOOK = 4
- Global Const $DS_ABSALIGN = 1
- Global Const $DS_CENTER = 2048
- Global Const $DS_CENTERMOUSE = 4096
- Global Const $DS_CONTEXTHELP = 8192
- Global Const $DS_CONTROL = 1024
- Global Const $DS_FIXEDSYS = 8
- Global Const $DS_LOCALEDIT = 32
- Global Const $DS_MODALFRAME = 128
- Global Const $DS_NOFAILCREATE = 16
- Global Const $DS_NOIDLEMSG = 256
- Global Const $DS_SETFONT = 64
- Global Const $DS_SETFOREGROUND = 512
- Global Const $DS_SHELLFONT = BitOR($DS_FIXEDSYS, $DS_SETFONT)
- Global Const $DS_SYSMODAL = 2
- Global Const $WS_EX_ACCEPTFILES = 16
- Global Const $WS_EX_APPWINDOW = 262144
- Global Const $WS_EX_COMPOSITED = 33554432
- Global Const $WS_EX_CONTROLPARENT = 65536
- Global Const $WS_EX_CLIENTEDGE = 512
- Global Const $WS_EX_CONTEXTHELP = 1024
- Global Const $WS_EX_DLGMODALFRAME = 1
- Global Const $WS_EX_LAYERED = 524288
- Global Const $WS_EX_LAYOUTRTL = 4194304
- Global Const $WS_EX_LEFT = 0
- Global Const $WS_EX_LEFTSCROLLBAR = 16384
- Global Const $WS_EX_LTRREADING = 0
- Global Const $WS_EX_MDICHILD = 64
- Global Const $WS_EX_NOACTIVATE = 134217728
- Global Const $WS_EX_NOINHERITLAYOUT = 1048576
- Global Const $WS_EX_NOPARENTNOTIFY = 4
- Global Const $WS_EX_RIGHT = 4096
- Global Const $WS_EX_RIGHTSCROLLBAR = 0
- Global Const $WS_EX_RTLREADING = 8192
- 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_OVERLAPPEDWINDOW = BitOR($WS_EX_CLIENTEDGE, $WS_EX_WINDOWEDGE)
- Global Const $WS_EX_PALETTEWINDOW = BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)
- Global Const $WM_NULL = 0
- Global Const $WM_CREATE = 1
- Global Const $WM_DESTROY = 2
- Global Const $WM_MOVE = 3
- Global Const $WM_SIZEWAIT = 4
- Global Const $WM_SIZE = 5
- Global Const $WM_ACTIVATE = 6
- Global Const $WM_SETFOCUS = 7
- Global Const $WM_KILLFOCUS = 8
- Global Const $WM_SETVISIBLE = 9
- Global Const $WM_ENABLE = 10
- Global Const $WM_SETREDRAW = 11
- Global Const $WM_SETTEXT = 12
- Global Const $WM_GETTEXT = 13
- Global Const $WM_GETTEXTLENGTH = 14
- Global Const $WM_PAINT = 15
- Global Const $WM_CLOSE = 16
- Global Const $WM_QUERYENDSESSION = 17
- Global Const $WM_QUIT = 18
- Global Const $WM_ERASEBKGND = 20
- Global Const $WM_QUERYOPEN = 19
- Global Const $WM_SYSCOLORCHANGE = 21
- Global Const $WM_ENDSESSION = 22
- Global Const $WM_SYSTEMERROR = 23
- Global Const $WM_SHOWWINDOW = 24
- Global Const $WM_CTLCOLOR = 25
- Global Const $WM_SETTINGCHANGE = 26
- 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_LOGOFF = 37
- Global Const $WM_PAINTICON = 38
- Global Const $WM_ICONERASEBKGND = 39
- Global Const $WM_NEXTDLGCTL = 40
- Global Const $WM_ALTTABACTIVE = 41
- 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_FILESYSCHANGE = 52
- Global Const $WM_ISACTIVEICON = 53
- Global Const $WM_QUERYPARKICON = 54
- Global Const $WM_QUERYDRAGICON = 55
- Global Const $WM_WINHELP = 56
- Global Const $WM_COMPAREITEM = 57
- Global Const $WM_FULLSCREEN = 58
- Global Const $WM_CLIENTSHUTDOWN = 59
- Global Const $WM_DDEMLEVENT = 60
- Global Const $WM_GETOBJECT = 61
- Global Const $WM_CALCSCROLL = 63
- Global Const $WM_TESTING = 64
- Global Const $WM_COMPACTING = 65
- Global Const $WM_OTHERWINDOWCREATED = 66
- Global Const $WM_OTHERWINDOWDESTROYED = 67
- Global Const $WM_COMMNOTIFY = 68
- Global Const $WM_MEDIASTATUSCHANGE = 69
- Global Const $WM_WINDOWPOSCHANGING = 70
- Global Const $WM_WINDOWPOSCHANGED = 71
- Global Const $WM_POWER = 72
- Global Const $WM_COPYGLOBALDATA = 73
- Global Const $WM_COPYDATA = 74
- Global Const $WM_CANCELJOURNAL = 75
- Global Const $WM_LOGONNOTIFY = 76
- Global Const $WM_KEYF1 = 77
- Global Const $WM_NOTIFY = 78
- Global Const $WM_ACCESS_WINDOW = 79
- 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_QM_ACTIVATE = 96
- Global Const $WM_HOOK_DO_CALLBACK = 97
- Global Const $WM_SYSCOPYDATA = 98
- Global Const $WM_FINALDESTROY = 112
- Global Const $WM_MEASUREITEM_CLIENTDATA = 113
- 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_SYNCTASK = 137
- Global Const $WM_KLUDGEMINRECT = 139
- Global Const $WM_LPKDRAWSWITCHWND = 140
- Global Const $WM_UAHDESTROYWINDOW = 144
- Global Const $WM_UAHDRAWMENU = 145
- Global Const $WM_UAHDRAWMENUITEM = 146
- Global Const $WM_UAHINITMENU = 147
- Global Const $WM_UAHMEASUREMENUITEM = 148
- Global Const $WM_UAHNCPAINTMENUPOPUP = 149
- 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_NCXBUTTONDOWN = 171
- Global Const $WM_NCXBUTTONUP = 172
- Global Const $WM_NCXBUTTONDBLCLK = 173
- Global Const $WM_NCUAHDRAWCAPTION = 174
- Global Const $WM_NCUAHDRAWFRAME = 175
- Global Const $WM_INPUT_DEVICE_CHANGE = 254
- Global Const $WM_INPUT = 255
- Global Const $WM_KEYDOWN = 256
- Global Const $WM_KEYFIRST = 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_YOMICHAR = 264
- Global Const $WM_KEYLAST = 265
- Global Const $WM_UNICHAR = 265
- Global Const $WM_CONVERTREQUEST = 266
- Global Const $WM_CONVERTRESULT = 267
- Global Const $WM_IM_INFO = 268
- Global Const $WM_IME_STARTCOMPOSITION = 269
- Global Const $WM_IME_ENDCOMPOSITION = 270
- Global Const $WM_IME_COMPOSITION = 271
- Global Const $WM_IME_KEYLAST = 271
- 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_SYSTIMER = 280
- Global Const $WM_GESTURE = 281
- Global Const $WM_GESTURENOTIFY = 282
- Global Const $WM_GESTUREINPUT = 283
- Global Const $WM_GESTURENOTIFIED = 284
- 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_LBTRACKPOINT = 305
- 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 $MN_GETHMENU = 481
- Global Const $WM_PARENTNOTIFY = 528
- Global Const $WM_ENTERMENULOOP = 529
- Global Const $WM_EXITMENULOOP = 530
- Global Const $WM_NEXTMENU = 531
- Global Const $WM_SIZING = 532
- Global Const $WM_CAPTURECHANGED = 533
- Global Const $WM_MOVING = 534
- Global Const $WM_POWERBROADCAST = 536
- Global Const $WM_DEVICECHANGE = 537
- Global Const $WM_MDICREATE = 544
- Global Const $WM_MDIDESTROY = 545
- Global Const $WM_MDIACTIVATE = 546
- Global Const $WM_MDIRESTORE = 547
- Global Const $WM_MDINEXT = 548
- Global Const $WM_MDIMAXIMIZE = 549
- Global Const $WM_MDITILE = 550
- Global Const $WM_MDICASCADE = 551
- Global Const $WM_MDIICONARRANGE = 552
- Global Const $WM_MDIGETACTIVE = 553
- Global Const $WM_DROPOBJECT = 554
- Global Const $WM_QUERYDROPOBJECT = 555
- Global Const $WM_BEGINDRAG = 556
- Global Const $WM_DRAGLOOP = 557
- Global Const $WM_DRAGSELECT = 558
- Global Const $WM_DRAGMOVE = 559
- Global Const $WM_MDISETMENU = 560
- Global Const $WM_ENTERSIZEMOVE = 561
- Global Const $WM_EXITSIZEMOVE = 562
- Global Const $WM_DROPFILES = 563
- Global Const $WM_MDIREFRESHMENU = 564
- Global Const $WM_TOUCH = 576
- Global Const $WM_IME_SETCONTEXT = 641
- Global Const $WM_IME_NOTIFY = 642
- Global Const $WM_IME_CONTROL = 643
- Global Const $WM_IME_COMPOSITIONFULL = 644
- Global Const $WM_IME_SELECT = 645
- Global Const $WM_IME_CHAR = 646
- Global Const $WM_IME_SYSTEM = 647
- Global Const $WM_IME_REQUEST = 648
- Global Const $WM_IME_KEYDOWN = 656
- Global Const $WM_IME_KEYUP = 657
- Global Const $WM_NCMOUSEHOVER = 672
- Global Const $WM_MOUSEHOVER = 673
- Global Const $WM_NCMOUSELEAVE = 674
- Global Const $WM_MOUSELEAVE = 675
- Global Const $WM_WTSSESSION_CHANGE = 689
- Global Const $WM_TABLET_FIRST = 704
- Global Const $WM_TABLET_LAST = 735
- 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_PALETTEISCHANGING = 784
- Global Const $WM_HOTKEY = 786
- Global Const $WM_PALETTECHANGED = 785
- Global Const $WM_SYSMENU = 787
- Global Const $WM_HOOKMSG = 788
- Global Const $WM_EXITPROCESS = 789
- Global Const $WM_WAKETHREAD = 790
- Global Const $WM_PRINT = 791
- Global Const $WM_PRINTCLIENT = 792
- Global Const $WM_APPCOMMAND = 793
- Global Const $WM_QUERYNEWPALETTE = 783
- Global Const $WM_THEMECHANGED = 794
- Global Const $WM_UAHINIT = 795
- Global Const $WM_DESKTOPNOTIFY = 796
- Global Const $WM_CLIPBOARDUPDATE = 797
- Global Const $WM_DWMCOMPOSITIONCHANGED = 798
- Global Const $WM_DWMNCRENDERINGCHANGED = 799
- Global Const $WM_DWMCOLORIZATIONCOLORCHANGED = 800
- Global Const $WM_DWMWINDOWMAXIMIZEDCHANGE = 801
- Global Const $WM_DWMEXILEFRAME = 802
- Global Const $WM_DWMSENDICONICTHUMBNAIL = 803
- Global Const $WM_MAGNIFICATION_STARTED = 804
- Global Const $WM_MAGNIFICATION_ENDED = 805
- Global Const $WM_DWMSENDICONICLIVEPREVIEWBITMAP = 806
- Global Const $WM_DWMTHUMBNAILSIZECHANGED = 807
- Global Const $WM_MAGNIFICATION_OUTPUT = 808
- Global Const $WM_MEASURECONTROL = 816
- Global Const $WM_GETACTIONTEXT = 817
- Global Const $WM_FORWARDKEYDOWN = 819
- Global Const $WM_FORWARDKEYUP = 820
- Global Const $WM_GETTITLEBARINFOEX = 831
- Global Const $WM_NOTIFYWOW = 832
- Global Const $WM_HANDHELDFIRST = 856
- Global Const $WM_HANDHELDLAST = 863
- Global Const $WM_AFXFIRST = 864
- Global Const $WM_AFXLAST = 895
- Global Const $WM_PENWINFIRST = 896
- Global Const $WM_PENWINLAST = 911
- Global Const $WM_DDE_INITIATE = 992
- Global Const $WM_DDE_TERMINATE = 993
- Global Const $WM_DDE_ADVISE = 994
- Global Const $WM_DDE_UNADVISE = 995
- Global Const $WM_DDE_ACK = 996
- Global Const $WM_DDE_DATA = 997
- Global Const $WM_DDE_REQUEST = 998
- Global Const $WM_DDE_POKE = 999
- Global Const $WM_DDE_EXECUTE = 1000
- Global Const $WM_DBNOTIFICATION = 1021
- Global Const $WM_NETCONNECT = 1022
- Global Const $WM_HIBERNATE = 1023
- Global Const $WM_USER = 1024
- Global Const $WM_APP = 32768
- 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_MOUSEFIRST = 512
- 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_RBUTTONDBLCLK = 518
- Global Const $WM_MBUTTONDOWN = 519
- Global Const $WM_MBUTTONUP = 520
- Global Const $WM_MBUTTONDBLCLK = 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 $PS_USERSTYLE = 7
- Global Const $PS_ALTERNATE = 8
- Global Const $PS_ENDCAP_ROUND = 0
- Global Const $PS_ENDCAP_SQUARE = 256
- Global Const $PS_ENDCAP_FLAT = 512
- Global Const $PS_JOIN_BEVEL = 4096
- Global Const $PS_JOIN_MITER = 8192
- Global Const $PS_JOIN_ROUND = 0
- Global Const $PS_GEOMETRIC = 65536
- Global Const $PS_COSMETIC = 0
- 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_CXFIXEDFRAME = 7
- Global Const $SM_CXDLGFRAME = $SM_CXFIXEDFRAME
- Global Const $SM_CYFIXEDFRAME = 8
- Global Const $SM_CYDLGFRAME = $SM_CYFIXEDFRAME
- 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_CXSIZEFRAME = 32
- Global Const $SM_CXFRAME = $SM_CXSIZEFRAME
- Global Const $SM_CYSIZEFRAME = 33
- Global Const $SM_CYFRAME = $SM_CYSIZEFRAME
- 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_PREVENTPINNING = 8192
- Global Const $STARTF_RUNFULLSCREEN = 32
- Global Const $STARTF_TITLEISAPPID = 4096
- Global Const $STARTF_TITLEISLINKNAME = 2048
- 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 $OPT_COORDSRELATIVE = 0
- Global Const $OPT_COORDSABSOLUTE = 1
- Global Const $OPT_COORDSCLIENT = 2
- Global Const $OPT_ERRORSILENT = 0
- Global Const $OPT_ERRORFATAL = 1
- Global Const $OPT_CAPSNOSTORE = 0
- Global Const $OPT_CAPSSTORE = 1
- Global Const $OPT_MATCHSTART = 1
- Global Const $OPT_MATCHANY = 2
- Global Const $OPT_MATCHEXACT = 3
- Global Const $OPT_MATCHADVANCED = 4
- Global Const $CCS_TOP = 1
- Global Const $CCS_NOMOVEY = 2
- Global Const $CCS_BOTTOM = 3
- Global Const $CCS_NORESIZE = 4
- Global Const $CCS_NOPARENTALIGN = 8
- Global Const $CCS_NOHILITE = 16
- Global Const $CCS_ADJUSTABLE = 32
- Global Const $CCS_NODIVIDER = 64
- Global Const $CCS_VERT = 128
- Global Const $CCS_LEFT = 129
- Global Const $CCS_NOMOVEX = 130
- Global Const $CCS_RIGHT = 131
- Global Const $DT_DRIVETYPE = 1
- Global Const $DT_SSDSTATUS = 2
- Global Const $DT_BUSTYPE = 3
- Global Const $PROXY_IE = 0
- Global Const $PROXY_NONE = 1
- Global Const $PROXY_SPECIFIED = 2
- Global Const $OBJID_WINDOW = 0
- Global Const $OBJID_TITLEBAR = -2
- Global Const $OBJID_SIZEGRIP = -7
- Global Const $OBJID_CARET = -8
- Global Const $OBJID_CURSOR = -9
- Global Const $OBJID_ALERT = -10
- Global Const $OBJID_SOUND = -11
- Global Const $DLG_CENTERONTOP = 0
- Global Const $DLG_NOTITLE = 1
- Global Const $DLG_NOTONTOP = 2
- Global Const $DLG_TEXTLEFT = 4
- Global Const $DLG_TEXTRIGHT = 8
- Global Const $DLG_MOVEABLE = 16
- Global Const $DLG_TEXTVCENTER = 32
- Global Const $IDC_UNKNOWN = 0
- Global Const $IDC_APPSTARTING = 1
- Global Const $IDC_ARROW = 2
- Global Const $IDC_CROSS = 3
- Global Const $IDC_HAND = 32649
- Global Const $IDC_HELP = 4
- Global Const $IDC_IBEAM = 5
- Global Const $IDC_ICON = 6
- Global Const $IDC_NO = 7
- Global Const $IDC_SIZE = 8
- Global Const $IDC_SIZEALL = 9
- Global Const $IDC_SIZENESW = 10
- Global Const $IDC_SIZENS = 11
- Global Const $IDC_SIZENWSE = 12
- Global Const $IDC_SIZEWE = 13
- Global Const $IDC_UPARROW = 14
- Global Const $IDC_WAIT = 15
- Global Const $IDI_APPLICATION = 32512
- Global Const $IDI_ASTERISK = 32516
- Global Const $IDI_EXCLAMATION = 32515
- Global Const $IDI_HAND = 32513
- Global Const $IDI_QUESTION = 32514
- Global Const $IDI_WINLOGO = 32517
- Global Const $IDI_SHIELD = 32518
- Global Const $IDI_ERROR = $IDI_HAND
- Global Const $IDI_INFORMATION = $IDI_ASTERISK
- Global Const $IDI_WARNING = $IDI_EXCLAMATION
- Global Const $SD_LOGOFF = 0
- Global Const $SD_SHUTDOWN = 1
- Global Const $SD_REBOOT = 2
- Global Const $SD_FORCE = 4
- Global Const $SD_POWERDOWN = 8
- Global Const $SD_FORCEHUNG = 16
- Global Const $SD_STANDBY = 32
- Global Const $SD_HIBERNATE = 64
- Global Const $STDIN_CHILD = 1
- Global Const $STDOUT_CHILD = 2
- Global Const $STDERR_CHILD = 4
- Global Const $STDERR_MERGED = 8
- Global Const $STDIO_INHERIT_PARENT = 16
- Global Const $RUN_CREATE_NEW_CONSOLE = 65536
- Global Const $UBOUND_DIMENSIONS = 0
- Global Const $UBOUND_ROWS = 1
- Global Const $UBOUND_COLUMNS = 2
- Global Const $MOUSEEVENTF_ABSOLUTE = 32768
- Global Const $MOUSEEVENTF_MOVE = 1
- Global Const $MOUSEEVENTF_LEFTDOWN = 2
- Global Const $MOUSEEVENTF_LEFTUP = 4
- Global Const $MOUSEEVENTF_RIGHTDOWN = 8
- Global Const $MOUSEEVENTF_RIGHTUP = 16
- Global Const $MOUSEEVENTF_MIDDLEDOWN = 32
- Global Const $MOUSEEVENTF_MIDDLEUP = 64
- Global Const $MOUSEEVENTF_WHEEL = 2048
- Global Const $MOUSEEVENTF_XDOWN = 128
- Global Const $MOUSEEVENTF_XUP = 256
- Global Const $REG_NONE = 0
- Global Const $REG_SZ = 1
- Global Const $REG_EXPAND_SZ = 2
- Global Const $REG_BINARY = 3
- Global Const $REG_DWORD = 4
- Global Const $REG_DWORD_LITTLE_ENDIAN = 4
- Global Const $REG_DWORD_BIG_ENDIAN = 5
- Global Const $REG_LINK = 6
- Global Const $REG_MULTI_SZ = 7
- Global Const $REG_RESOURCE_LIST = 8
- Global Const $REG_FULL_RESOURCE_DESCRIPTOR = 9
- Global Const $REG_RESOURCE_REQUIREMENTS_LIST = 10
- Global Const $REG_QWORD = 11
- Global Const $REG_QWORD_LITTLE_ENDIAN = 11
- Global Const $HWND_BOTTOM = 1
- Global Const $HWND_NOTOPMOST = -2
- Global Const $HWND_TOP = 0
- Global Const $HWND_TOPMOST = -1
- Global Const $SWP_NOSIZE = 1
- Global Const $SWP_NOMOVE = 2
- Global Const $SWP_NOZORDER = 4
- Global Const $SWP_NOREDRAW = 8
- Global Const $SWP_NOACTIVATE = 16
- Global Const $SWP_FRAMECHANGED = 32
- Global Const $SWP_DRAWFRAME = 32
- Global Const $SWP_SHOWWINDOW = 64
- Global Const $SWP_HIDEWINDOW = 128
- Global Const $SWP_NOCOPYBITS = 256
- Global Const $SWP_NOOWNERZORDER = 512
- Global Const $SWP_NOREPOSITION = 512
- Global Const $SWP_NOSENDCHANGING = 1024
- Global Const $SWP_DEFERERASE = 8192
- Global Const $SWP_ASYNCWINDOWPOS = 16384
- Global Const $KEYWORD_DEFAULT = 1
- Global Const $KEYWORD_NULL = 2
- Global Const $DECLARED_LOCAL = -1
- Global Const $DECLARED_UNKNOWN = 0
- Global Const $DECLARED_GLOBAL = 1
- Global Const $ASSIGN_CREATE = 0
- Global Const $ASSIGN_FORCELOCAL = 1
- Global Const $ASSIGN_FORCEGLOBAL = 2
- Global Const $ASSIGN_EXISTFAIL = 4
- Global Const $BI_ENABLE = 0
- Global Const $BI_DISABLE = 1
- Global Const $BREAK_ENABLE = 1
- Global Const $BREAK_DISABLE = 0
- Global Const $CDTRAY_OPEN = "open"
- Global Const $CDTRAY_CLOSED = "closed"
- Global Const $SEND_DEFAULT = 0
- Global Const $SEND_RAW = 1
- Global Const $DIR_DEFAULT = 0
- Global Const $DIR_EXTENDED = 1
- Global Const $DIR_NORECURSE = 2
- Global Const $DIR_REMOVE = 1
- Global Const $DT_ALL = "ALL"
- Global Const $DT_CDROM = "CDROM"
- Global Const $DT_REMOVABLE = "REMOVABLE"
- Global Const $DT_FIXED = "FIXED"
- Global Const $DT_NETWORK = "NETWORK"
- Global Const $DT_RAMDISK = "RAMDISK"
- Global Const $DT_UNKNOWN = "UNKNOWN"
- Global Const $DT_UNDEFINED = 1
- Global Const $DT_FAT = "FAT"
- Global Const $DT_FAT32 = "FAT32"
- Global Const $DT_EXFAT = "exFAT"
- Global Const $DT_NTFS = "NTFS"
- Global Const $DT_NWFS = "NWFS"
- Global Const $DT_CDFS = "CDFS"
- Global Const $DT_UDF = "UDF"
- Global Const $DMA_DEFAULT = 0
- Global Const $DMA_PERSISTENT = 1
- Global Const $DMA_AUTHENTICATION = 8
- Global Const $DS_UNKNOWN = "UNKNOWN"
- Global Const $DS_READY = "READY"
- Global Const $DS_NOTREADY = "NOTREADY"
- Global Const $DS_INVALID = "INVALID"
- Global Const $MOUSE_CLICK_LEFT = "left"
- Global Const $MOUSE_CLICK_RIGHT = "right"
- Global Const $MOUSE_CLICK_MIDDLE = "middle"
- Global Const $MOUSE_CLICK_MAIN = "main"
- Global Const $MOUSE_CLICK_MENU = "menu"
- Global Const $MOUSE_CLICK_PRIMARY = "primary"
- Global Const $MOUSE_CLICK_SECONDARY = "secondary"
- Global Const $MOUSE_WHEEL_UP = "up"
- Global Const $MOUSE_WHEEL_DOWN = "down"
- Global Const $NUMBER_AUTO = 0
- Global Const $NUMBER_32BIT = 1
- Global Const $NUMBER_64BIT = 2
- Global Const $NUMBER_DOUBLE = 3
- Global Const $OBJ_NAME = 1
- Global Const $OBJ_STRING = 2
- Global Const $OBJ_PROGID = 3
- Global Const $OBJ_FILE = 4
- Global Const $OBJ_MODULE = 5
- Global Const $OBJ_CLSID = 6
- Global Const $OBJ_IID = 7
- Global Const $EXITCLOSE_NORMAL = 0
- Global Const $EXITCLOSE_BYEXIT = 1
- Global Const $EXITCLOSE_BYCLICK = 2
- Global Const $EXITCLOSE_BYLOGOFF = 3
- Global Const $EXITCLOSE_BYSHUTDOWN = 4
- Global Const $PROCESS_STATS_MEMORY = 0
- Global Const $PROCESS_STATS_IO = 1
- Global Const $PROCESS_LOW = 0
- Global Const $PROCESS_BELOWNORMAL = 1
- Global Const $PROCESS_NORMAL = 2
- Global Const $PROCESS_ABOVENORMAL = 3
- Global Const $PROCESS_HIGH = 4
- Global Const $PROCESS_REALTIME = 5
- Global Const $RUN_LOGON_NOPROFILE = 0
- Global Const $RUN_LOGON_PROFILE = 1
- Global Const $RUN_LOGON_NETWORK = 2
- Global Const $RUN_LOGON_INHERIT = 4
- Global Const $SOUND_NOWAIT = 0
- Global Const $SOUND_WAIT = 1
- Global Const $SHEX_OPEN = "open"
- Global Const $SHEX_EDIT = "edit"
- Global Const $SHEX_PRINT = "print"
- Global Const $SHEX_PROPERTIES = "properties"
- Global Const $TCP_DATA_DEFAULT = 0
- Global Const $TCP_DATA_BINARY = 1
- Global Const $UDP_OPEN_DEFAULT = 0
- Global Const $UDP_OPEN_BROADCAST = 1
- Global Const $UDP_DATA_DEFAULT = 0
- Global Const $UDP_DATA_BINARY = 1
- Global Const $UDP_DATA_ARRAY = 2
- Global Const $TIP_NOICON = 0
- Global Const $TIP_INFOICON = 1
- Global Const $TIP_WARNINGICON = 2
- Global Const $TIP_ERRORICON = 3
- Global Const $TIP_BALLOON = 1
- Global Const $TIP_CENTER = 2
- Global Const $TIP_FORCEVISIBLE = 4
- Global Const $WINDOWS_NOONTOP = 0
- Global Const $WINDOWS_ONTOP = 1
- Global Const $WIN_STATE_EXISTS = 1
- Global Const $WIN_STATE_VISIBLE = 2
- Global Const $WIN_STATE_ENABLED = 4
- Global Const $WIN_STATE_ACTIVE = 8
- Global Const $WIN_STATE_MINIMIZED = 16
- Global Const $WIN_STATE_MAXIMIZED = 32
- #Region Global Variables and Constants
- Global Const $_ARRAYCONSTANT_SORTINFOSIZE = 11
- Global $__G_AARRAYDISPLAY_SORTINFO[$_ARRAYCONSTANT_SORTINFOSIZE]
- Global Const $ARRAYDISPLAY_COLALIGNLEFT = 0
- Global Const $ARRAYDISPLAY_TRANSPOSE = 1
- Global Const $ARRAYDISPLAY_COLALIGNRIGHT = 2
- Global Const $ARRAYDISPLAY_COLALIGNCENTER = 4
- Global Const $ARRAYDISPLAY_VERBOSE = 8
- Global Const $ARRAYDISPLAY_NOROW = 64
- Global Const $_ARRAYCONSTANT_TAGHDITEM = "uint Mask;int XY;ptr Text;handle hBMP;int TextMax;int Fmt;lparam Param;int Image;int Order;uint Type;ptr pFilter;uint State"
- Global Const $_ARRAYCONSTANT_TAGLVITEM = "struct;uint Mask;int Item;int SubItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;lparam Param;" & "int Indent;int GroupID;uint Columns;ptr pColumns;ptr piColFmt;int iGroup;endstruct"
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- Func __ARRAYDISPLAY_SHARE(Const ByRef $AARRAY, $STITLE = Default, $SARRAYRANGE = Default, $IFLAGS = Default, $VUSER_SEPARATOR = Default, $SHEADER = Default, $IMAX_COLWIDTH = Default, $HUSER_FUNCTION = Default, $BDEBUG = True)
- Local $VTMP, $SMSGBOXTITLE = (($BDEBUG) ? ("DebugArray") : ("ArrayDisplay"))
- If $STITLE = Default Then $STITLE = $SMSGBOXTITLE
- If $SARRAYRANGE = Default Then $SARRAYRANGE = ""
- If $IFLAGS = Default Then $IFLAGS = 0
- If $VUSER_SEPARATOR = Default Then $VUSER_SEPARATOR = ""
- If $SHEADER = Default Then $SHEADER = ""
- If $IMAX_COLWIDTH = Default Then $IMAX_COLWIDTH = 350
- If $HUSER_FUNCTION = Default Then $HUSER_FUNCTION = 0
- Local $ITRANSPOSE = BitAND($IFLAGS, $ARRAYDISPLAY_TRANSPOSE)
- Local $ICOLALIGN = BitAND($IFLAGS, 6)
- Local $IVERBOSE = BitAND($IFLAGS, $ARRAYDISPLAY_VERBOSE)
- Local $INOROW = BitAND($IFLAGS, $ARRAYDISPLAY_NOROW)
- Local $IBUTTONBORDER = (($BDEBUG) ? (40) : (20))
- Local $SMSG = "", $IRET = 1
- If IsArray($AARRAY) Then
- Local $IDIMENSION = UBound($AARRAY, $UBOUND_DIMENSIONS), $IROWCOUNT = UBound($AARRAY, $UBOUND_ROWS), $ICOLCOUNT = UBound($AARRAY, $UBOUND_COLUMNS)
- If $IDIMENSION > 2 Then
- $SMSG = "Larger than 2D array passed to function"
- $IRET = 2
- EndIf
- If $IDIMENSION = 1 Then
- $ITRANSPOSE = 0
- EndIf
- Else
- $SMSG = "No array variable passed to function"
- EndIf
- If $SMSG Then
- If $IVERBOSE And MsgBox($MB_SYSTEMMODAL + $MB_ICONERROR + $MB_YESNO, $SMSGBOXTITLE & " Error: " & $STITLE, $SMSG & @CRLF & @CRLF & "Exit the script?") = $IDYES Then
- Exit
- Else
- Return SetError($IRET, 0, 0)
- EndIf
- EndIf
- Local $ICW_COLWIDTH = Number($VUSER_SEPARATOR)
- Local $SCURR_SEPARATOR = Opt("GUIDataSeparatorChar")
- If $VUSER_SEPARATOR = "" Then $VUSER_SEPARATOR = $SCURR_SEPARATOR
- Local $IITEM_START = 0, $IITEM_END = $IROWCOUNT - 1, $ISUBITEM_START = 0, $ISUBITEM_END = (($IDIMENSION = 2) ? ($ICOLCOUNT - 1) : (0))
- Local $BRANGE_FLAG = False, $AVRANGESPLIT
- If $SARRAYRANGE Then
- Local $AARRAY_RANGE = StringRegExp($SARRAYRANGE & "||", "(?U)(.*)\|", 3)
- If $AARRAY_RANGE[0] Then
- $AVRANGESPLIT = StringSplit($AARRAY_RANGE[0], ":")
- If @error Then
- $IITEM_END = Number($AVRANGESPLIT[1])
- Else
- $IITEM_START = Number($AVRANGESPLIT[1])
- If $AVRANGESPLIT[2] <> "" Then
- $IITEM_END = Number($AVRANGESPLIT[2])
- EndIf
- EndIf
- EndIf
- If $IITEM_START < 0 Then $IITEM_START = 0
- If $IITEM_END > $IROWCOUNT - 1 Then $IITEM_END = $IROWCOUNT - 1
- If $IITEM_START > $IITEM_END Then
- $VTMP = $IITEM_START
- $IITEM_START = $IITEM_END
- $IITEM_END = $VTMP
- EndIf
- If $IITEM_START <> 0 Or $IITEM_END <> $IROWCOUNT - 1 Then $BRANGE_FLAG = True
- If $IDIMENSION = 2 And $AARRAY_RANGE[1] Then
- $AVRANGESPLIT = StringSplit($AARRAY_RANGE[1], ":")
- If @error Then
- $ISUBITEM_END = Number($AVRANGESPLIT[1])
- Else
- $ISUBITEM_START = Number($AVRANGESPLIT[1])
- If $AVRANGESPLIT[2] <> "" Then
- $ISUBITEM_END = Number($AVRANGESPLIT[2])
- EndIf
- EndIf
- If $ISUBITEM_START > $ISUBITEM_END Then
- $VTMP = $ISUBITEM_START
- $ISUBITEM_START = $ISUBITEM_END
- $ISUBITEM_END = $VTMP
- EndIf
- If $ISUBITEM_START < 0 Then $ISUBITEM_START = 0
- If $ISUBITEM_END > $ICOLCOUNT - 1 Then $ISUBITEM_END = $ICOLCOUNT - 1
- If $ISUBITEM_START <> 0 Or $ISUBITEM_END <> $ICOLCOUNT - 1 Then $BRANGE_FLAG = True
- EndIf
- EndIf
- Local $SDISPLAYDATA = "[" & $IROWCOUNT & "]"
- If $IDIMENSION = 2 Then
- $SDISPLAYDATA &= " [" & $ICOLCOUNT & "]"
- EndIf
- Local $STIPDATA = ""
- If $BRANGE_FLAG Then
- If $STIPDATA Then $STIPDATA &= " - "
- $STIPDATA &= "Range set"
- EndIf
- If $ITRANSPOSE Then
- If $STIPDATA Then $STIPDATA &= " - "
- $STIPDATA &= "Transposed"
- EndIf
- Local $ASHEADER = StringSplit($SHEADER, $SCURR_SEPARATOR, $STR_NOCOUNT)
- If UBound($ASHEADER) = 0 Then Local $ASHEADER[1] = [""]
- $SHEADER = "Row"
- Local $IINDEX = $ISUBITEM_START
- If $ITRANSPOSE Then
- $SHEADER = "Col"
- For $J = $IITEM_START To $IITEM_END
- $SHEADER &= $SCURR_SEPARATOR & "Row " & $J
- Next
- Else
- If $ASHEADER[0] Then
- For $IINDEX = $ISUBITEM_START To $ISUBITEM_END
- If $IINDEX >= UBound($ASHEADER) Then ExitLoop
- $SHEADER &= $SCURR_SEPARATOR & $ASHEADER[$IINDEX]
- Next
- EndIf
- For $J = $IINDEX To $ISUBITEM_END
- $SHEADER &= $SCURR_SEPARATOR & "Col " & $J
- Next
- EndIf
- If $INOROW Then $SHEADER = StringTrimLeft($SHEADER, 4)
- If $IVERBOSE And ($IITEM_END - $IITEM_START + 1) * ($ISUBITEM_END - $ISUBITEM_START + 1) > 10000 Then
- SplashTextOn($SMSGBOXTITLE, "Preparing display" & @CRLF & @CRLF & "Please be patient", 300, 100)
- EndIf
- Local Const $_ARRAYCONSTANT_GUI_DOCKBOTTOM = 64
- Local Const $_ARRAYCONSTANT_GUI_DOCKBORDERS = 102
- Local Const $_ARRAYCONSTANT_GUI_DOCKHEIGHT = 512
- Local Const $_ARRAYCONSTANT_GUI_DOCKLEFT = 2
- Local Const $_ARRAYCONSTANT_GUI_DOCKRIGHT = 4
- Local Const $_ARRAYCONSTANT_GUI_DOCKHCENTER = 8
- Local Const $_ARRAYCONSTANT_GUI_EVENT_CLOSE = -3
- Local Const $_ARRAYCONSTANT_GUI_FOCUS = 256
- Local Const $_ARRAYCONSTANT_SS_CENTER = 1
- Local Const $_ARRAYCONSTANT_SS_CENTERIMAGE = 512
- Local Const $_ARRAYCONSTANT_LVM_GETITEMCOUNT = (4096 + 4)
- Local Const $_ARRAYCONSTANT_LVM_GETITEMRECT = (4096 + 14)
- Local Const $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH = (4096 + 29)
- Local Const $_ARRAYCONSTANT_LVM_SETCOLUMNWIDTH = (4096 + 30)
- Local Const $_ARRAYCONSTANT_LVM_GETITEMSTATE = (4096 + 44)
- Local Const $_ARRAYCONSTANT_LVM_GETSELECTEDCOUNT = (4096 + 50)
- Local Const $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (4096 + 54)
- Local Const $_ARRAYCONSTANT_LVS_EX_GRIDLINES = 1
- Local Const $_ARRAYCONSTANT_LVIS_SELECTED = 2
- Local Const $_ARRAYCONSTANT_LVS_SHOWSELALWAYS = 8
- Local Const $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT = 32
- Local Const $_ARRAYCONSTANT_WS_EX_CLIENTEDGE = 512
- Local Const $_ARRAYCONSTANT_WS_MAXIMIZEBOX = 65536
- Local Const $_ARRAYCONSTANT_WS_MINIMIZEBOX = 131072
- Local Const $_ARRAYCONSTANT_WS_SIZEBOX = 262144
- Local Const $_ARRAYCONSTANT_WM_SETREDRAW = 11
- Local Const $_ARRAYCONSTANT_LVSCW_AUTOSIZE = -1
- Local Const $_ARRAYCONSTANT_LVSCW_AUTOSIZE_USEHEADER = -2
- Local $ICOORDMODE = Opt("GUICoordMode", 1)
- Local $IORGWIDTH = 210, $IHEIGHT = 200, $IMINSIZE = 250
- Local $HGUI = GUICreate($STITLE, $IORGWIDTH, $IHEIGHT, Default, Default, BitOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX))
- Local $AIGUISIZE = WinGetClientSize($HGUI)
- Local $IBUTTONWIDTH_1 = $AIGUISIZE[0] / 2
- Local $IBUTTONWIDTH_2 = $AIGUISIZE[0] / 3
- Local $IDLISTVIEW = GUICtrlCreateListView($SHEADER, 0, 0, $AIGUISIZE[0], $AIGUISIZE[1] - $IBUTTONBORDER, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS)
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_GRIDLINES, $_ARRAYCONSTANT_LVS_EX_GRIDLINES)
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT)
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE)
- Local $IDCOPY_ID = 9999, $IDCOPY_DATA = 99999, $IDDATA_LABEL = 99999, $IDUSER_FUNC = 99999, $IDEXIT_SCRIPT = 99999
- If $BDEBUG Then
- $IDCOPY_ID = GUICtrlCreateButton("Copy Data && Hdr/Row", 0, $AIGUISIZE[1] - $IBUTTONBORDER, $IBUTTONWIDTH_1, 20)
- $IDCOPY_DATA = GUICtrlCreateButton("Copy Data Only", $IBUTTONWIDTH_1, $AIGUISIZE[1] - $IBUTTONBORDER, $IBUTTONWIDTH_1, 20)
- Local $IBUTTONWIDTH_VAR = $IBUTTONWIDTH_1
- Local $IOFFSET = $IBUTTONWIDTH_1
- If IsFunc($HUSER_FUNCTION) Then
- $IDUSER_FUNC = GUICtrlCreateButton("Run User Func", $IBUTTONWIDTH_2, $AIGUISIZE[1] - 20, $IBUTTONWIDTH_2, 20)
- $IBUTTONWIDTH_VAR = $IBUTTONWIDTH_2
- $IOFFSET = $IBUTTONWIDTH_2 * 2
- EndIf
- $IDEXIT_SCRIPT = GUICtrlCreateButton("Exit Script", $IOFFSET, $AIGUISIZE[1] - 20, $IBUTTONWIDTH_VAR, 20)
- $IDDATA_LABEL = GUICtrlCreateLabel($SDISPLAYDATA, 0, $AIGUISIZE[1] - 20, $IBUTTONWIDTH_VAR, 18, BitOR($_ARRAYCONSTANT_SS_CENTER, $_ARRAYCONSTANT_SS_CENTERIMAGE))
- Else
- $IDDATA_LABEL = GUICtrlCreateLabel($SDISPLAYDATA, 0, $AIGUISIZE[1] - 20, $AIGUISIZE[0], 18, BitOR($_ARRAYCONSTANT_SS_CENTER, $_ARRAYCONSTANT_SS_CENTERIMAGE))
- EndIf
- Select
- Case $ITRANSPOSE Or $BRANGE_FLAG
- GUICtrlSetColor($IDDATA_LABEL, 16711680)
- GUICtrlSetTip($IDDATA_LABEL, $STIPDATA)
- EndSelect
- GUICtrlSetResizing($IDLISTVIEW, $_ARRAYCONSTANT_GUI_DOCKBORDERS)
- GUICtrlSetResizing($IDCOPY_ID, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
- GUICtrlSetResizing($IDCOPY_DATA, $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
- GUICtrlSetResizing($IDDATA_LABEL, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
- GUICtrlSetResizing($IDUSER_FUNC, $_ARRAYCONSTANT_GUI_DOCKHCENTER + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
- GUICtrlSetResizing($IDEXIT_SCRIPT, $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_WM_SETREDRAW, 0, 0)
- Local $IROWINDEX, $ICOLFILL
- If $ITRANSPOSE Then
- For $I = $ISUBITEM_START To $ISUBITEM_END
- $IROWINDEX = __ARRAYDISPLAY_ADDITEM($IDLISTVIEW, "NULL")
- If $INOROW Then
- $ICOLFILL = 0
- Else
- __ARRAYDISPLAY_ADDSUBITEM($IDLISTVIEW, $IROWINDEX, "Col " & $I, 0)
- $ICOLFILL = 1
- EndIf
- For $J = $IITEM_START To $IITEM_END
- If $IDIMENSION = 2 Then
- $VTMP = $AARRAY[$J][$I]
- Else
- $VTMP = $AARRAY[$J]
- EndIf
- Switch VarGetType($VTMP)
- Case "Array"
- __ARRAYDISPLAY_ADDSUBITEM($IDLISTVIEW, $IROWINDEX, "{Array}", $ICOLFILL)
- Case Else
- __ARRAYDISPLAY_ADDSUBITEM($IDLISTVIEW, $IROWINDEX, $VTMP, $ICOLFILL)
- EndSwitch
- $ICOLFILL += 1
- Next
- Next
- Else
- For $I = $IITEM_START To $IITEM_END
- $IROWINDEX = __ARRAYDISPLAY_ADDITEM($IDLISTVIEW, "NULL")
- If $INOROW Then
- $ICOLFILL = 0
- Else
- __ARRAYDISPLAY_ADDSUBITEM($IDLISTVIEW, $IROWINDEX, "Row " & $I, 0)
- $ICOLFILL = 1
- EndIf
- For $J = $ISUBITEM_START To $ISUBITEM_END
- If $IDIMENSION = 2 Then
- $VTMP = $AARRAY[$I][$J]
- Else
- $VTMP = $AARRAY[$I]
- EndIf
- Switch VarGetType($VTMP)
- Case "Array"
- __ARRAYDISPLAY_ADDSUBITEM($IDLISTVIEW, $IROWINDEX, "{Array}", $ICOLFILL)
- Case Else
- __ARRAYDISPLAY_ADDSUBITEM($IDLISTVIEW, $IROWINDEX, $VTMP, $ICOLFILL)
- EndSwitch
- $ICOLFILL += 1
- Next
- Next
- EndIf
- If $ICOLALIGN Then
- For $I = 0 To $ICOLFILL - 1
- __ARRAYDISPLAY_JUSTIFYCOLUMN($IDLISTVIEW, $I, $ICOLALIGN / 2)
- Next
- EndIf
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_WM_SETREDRAW, 1, 0)
- Local $IBORDER = (($IROWINDEX > 19) ? (65) : (45))
- Local $IWIDTH = $IBORDER, $ICOLWIDTH = 0, $AICOLWIDTH[$ICOLFILL], $IMIN_COLWIDTH = 55
- For $I = 0 To UBound($AICOLWIDTH) - 1
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_SETCOLUMNWIDTH, $I, $_ARRAYCONSTANT_LVSCW_AUTOSIZE)
- $ICOLWIDTH = GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $I, 0)
- If $SHEADER <> "" Then
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_SETCOLUMNWIDTH, $I, $_ARRAYCONSTANT_LVSCW_AUTOSIZE_USEHEADER)
- Local $ICOLWIDTHHEADER = GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $I, 0)
- If $ICOLWIDTH < $IMIN_COLWIDTH And $ICOLWIDTHHEADER < $IMIN_COLWIDTH Then
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_SETCOLUMNWIDTH, $I, $IMIN_COLWIDTH)
- $ICOLWIDTH = $IMIN_COLWIDTH
- ElseIf $ICOLWIDTHHEADER < $ICOLWIDTH Then
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_SETCOLUMNWIDTH, $I, $ICOLWIDTH)
- Else
- $ICOLWIDTH = $ICOLWIDTHHEADER
- EndIf
- Else
- If $ICOLWIDTH < $IMIN_COLWIDTH Then
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_SETCOLUMNWIDTH, $I, $IMIN_COLWIDTH)
- $ICOLWIDTH = $IMIN_COLWIDTH
- EndIf
- EndIf
- $IWIDTH += $ICOLWIDTH
- $AICOLWIDTH[$I] = $ICOLWIDTH
- Next
- If $IWIDTH > @DesktopWidth - 100 Then
- $IWIDTH = $IBORDER
- For $I = 0 To UBound($AICOLWIDTH) - 1
- If $AICOLWIDTH[$I] > $IMAX_COLWIDTH Then
- GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_SETCOLUMNWIDTH, $I, $IMAX_COLWIDTH)
- $IWIDTH += $IMAX_COLWIDTH
- Else
- $IWIDTH += $AICOLWIDTH[$I]
- EndIf
- Next
- EndIf
- If $IWIDTH > @DesktopWidth - 100 Then
- $IWIDTH = @DesktopWidth - 100
- ElseIf $IWIDTH < $IMINSIZE Then
- $IWIDTH = $IMINSIZE
- EndIf
- Local $TRECT = DllStructCreate("struct; long Left;long Top;long Right;long Bottom; endstruct")
- DllCall("user32.dll", "struct*", "SendMessageW", "hwnd", GUICtrlGetHandle($IDLISTVIEW), "uint", $_ARRAYCONSTANT_LVM_GETITEMRECT, "wparam", 0, "struct*", $TRECT)
- Local $AIWIN_POS = WinGetPos($HGUI)
- Local $AILV_POS = ControlGetPos($HGUI, "", $IDLISTVIEW)
- $IHEIGHT = (($IROWINDEX + 4) * (DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top"))) + $AIWIN_POS[3] - $AILV_POS[3]
- If $IHEIGHT > @DesktopHeight - 100 Then
- $IHEIGHT = @DesktopHeight - 100
- ElseIf $IHEIGHT < $IMINSIZE Then
- $IHEIGHT = $IMINSIZE
- EndIf
- If $IVERBOSE Then SplashOff()
- GUISetState(@SW_HIDE, $HGUI)
- WinMove($HGUI, "", (@DesktopWidth - $IWIDTH) / 2, (@DesktopHeight - $IHEIGHT) / 2, $IWIDTH, $IHEIGHT)
- GUISetState(@SW_SHOW, $HGUI)
- Local $IONEVENTMODE = Opt("GUIOnEventMode", 0), $IMSG
- __ARRAYDISPLAY_REGISTERSORTCALLBACK($IDLISTVIEW, 2, True, "__ArrayDisplay_SortCallBack")
- While 1
- $IMSG = GUIGetMsg()
- Switch $IMSG
- Case $_ARRAYCONSTANT_GUI_EVENT_CLOSE
- ExitLoop
- Case $IDCOPY_ID, $IDCOPY_DATA
- Local $ISEL_COUNT = GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_GETSELECTEDCOUNT, 0, 0)
- If $IVERBOSE And (Not $ISEL_COUNT) And ($IITEM_END - $IITEM_START) * ($ISUBITEM_END - $ISUBITEM_START) > 10000 Then
- SplashTextOn($SMSGBOXTITLE, "Copying data" & @CRLF & @CRLF & "Please be patient", 300, 100)
- EndIf
- Local $SCLIP = "", $SITEM, $ASPLIT
- For $I = 0 To GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0) - 1
- If $ISEL_COUNT And Not (GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMSTATE, $I, $_ARRAYCONSTANT_LVIS_SELECTED) <> 0) Then
- ContinueLoop
- EndIf
- $SITEM = __ARRAYDISPLAY_GETITEMTEXTSTRING($IDLISTVIEW, $I)
- If $IMSG = $IDCOPY_ID And $INOROW Then
- $SITEM = "Row " & ($I + (($ITRANSPOSE) ? ($ISUBITEM_START) : ($IITEM_START))) & $SCURR_SEPARATOR & $SITEM
- EndIf
- If $IMSG = $IDCOPY_DATA And Not $INOROW Then
- $SITEM = StringRegExpReplace($SITEM, "^Row\s\d+\|(.*)$", "$1")
- EndIf
- If $ICW_COLWIDTH Then
- $ASPLIT = StringSplit($SITEM, $SCURR_SEPARATOR)
- $SITEM = ""
- For $J = 1 To $ASPLIT[0]
- $SITEM &= StringFormat("%-" & $ICW_COLWIDTH + 1 & "s", StringLeft($ASPLIT[$J], $ICW_COLWIDTH))
- Next
- Else
- $SITEM = StringReplace($SITEM, $SCURR_SEPARATOR, $VUSER_SEPARATOR)
- EndIf
- $SCLIP &= $SITEM & @CRLF
- Next
- $SITEM = $SHEADER
- If $IMSG = $IDCOPY_ID Then
- $SITEM = $SHEADER
- If $INOROW Then
- $SITEM = "Row|" & $SITEM
- EndIf
- If $ICW_COLWIDTH Then
- $ASPLIT = StringSplit($SITEM, $SCURR_SEPARATOR)
- $SITEM = ""
- For $J = 1 To $ASPLIT[0]
- $SITEM &= StringFormat("%-" & $ICW_COLWIDTH + 1 & "s", StringLeft($ASPLIT[$J], $ICW_COLWIDTH))
- Next
- Else
- $SITEM = StringReplace($SITEM, $SCURR_SEPARATOR, $VUSER_SEPARATOR)
- EndIf
- $SCLIP = $SITEM & @CRLF & $SCLIP
- EndIf
- ClipPut($SCLIP)
- SplashOff()
- GUICtrlSetState($IDLISTVIEW, $_ARRAYCONSTANT_GUI_FOCUS)
- Case $IDLISTVIEW
- __ARRAYDISPLAY_SORTITEMS($IDLISTVIEW, GUICtrlGetState($IDLISTVIEW))
- Case $IDUSER_FUNC
- Local $AISELITEMS[1] = [0]
- For $I = 0 To GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0) - 1
- If (GUICtrlSendMsg($IDLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMSTATE, $I, $_ARRAYCONSTANT_LVIS_SELECTED) <> 0) Then
- $AISELITEMS[0] += 1
- ReDim $AISELITEMS[$AISELITEMS[0] + 1]
- $AISELITEMS[$AISELITEMS[0]] = $I + $IITEM_START
- EndIf
- Next
- $HUSER_FUNCTION($AARRAY, $AISELITEMS)
- GUICtrlSetState($IDLISTVIEW, $_ARRAYCONSTANT_GUI_FOCUS)
- Case $IDEXIT_SCRIPT
- GUIDelete($HGUI)
- Exit
- EndSwitch
- WEnd
- GUIDelete($HGUI)
- Opt("GUICoordMode", $ICOORDMODE)
- Opt("GUIOnEventMode", $IONEVENTMODE)
- Return 1
- EndFunc ;==>__ARRAYDISPLAY_SHARE
- Func __ARRAYDISPLAY_REGISTERSORTCALLBACK($HWND, $VCOMPARETYPE = 2, $BARROWS = True, $SSORT_CALLBACK = "__ArrayDisplay_SortCallBack")
- #Au3Stripper_Ignore_Funcs=$sSort_Callback
- If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
- Local $HHEADER = HWnd(GUICtrlSendMsg($HWND, 4127, 0, 0))
- $__G_AARRAYDISPLAY_SORTINFO[1] = $HWND
- $__G_AARRAYDISPLAY_SORTINFO[2] = DllCallbackRegister($SSORT_CALLBACK, "int", "int;int;hwnd")
- $__G_AARRAYDISPLAY_SORTINFO[3] = -1
- $__G_AARRAYDISPLAY_SORTINFO[4] = -1
- $__G_AARRAYDISPLAY_SORTINFO[5] = 1
- $__G_AARRAYDISPLAY_SORTINFO[6] = -1
- $__G_AARRAYDISPLAY_SORTINFO[7] = 0
- $__G_AARRAYDISPLAY_SORTINFO[8] = $VCOMPARETYPE
- $__G_AARRAYDISPLAY_SORTINFO[9] = $BARROWS
- $__G_AARRAYDISPLAY_SORTINFO[10] = $HHEADER
- Return $__G_AARRAYDISPLAY_SORTINFO[2] <> 0
- EndFunc ;==>__ARRAYDISPLAY_REGISTERSORTCALLBACK
- #Au3Stripper_Ignore_Funcs=__ArrayDisplay_SortCallBack
- Func __ARRAYDISPLAY_SORTCALLBACK($NITEM1, $NITEM2, $HWND)
- If $__G_AARRAYDISPLAY_SORTINFO[3] = $__G_AARRAYDISPLAY_SORTINFO[4] Then
- If Not $__G_AARRAYDISPLAY_SORTINFO[7] Then
- $__G_AARRAYDISPLAY_SORTINFO[5] *= -1
- $__G_AARRAYDISPLAY_SORTINFO[7] = 1
- EndIf
- Else
- $__G_AARRAYDISPLAY_SORTINFO[7] = 1
- EndIf
- $__G_AARRAYDISPLAY_SORTINFO[6] = $__G_AARRAYDISPLAY_SORTINFO[3]
- Local $SVAL1 = __ARRAYDISPLAY_GETITEMTEXT($HWND, $NITEM1, $__G_AARRAYDISPLAY_SORTINFO[3])
- Local $SVAL2 = __ARRAYDISPLAY_GETITEMTEXT($HWND, $NITEM2, $__G_AARRAYDISPLAY_SORTINFO[3])
- If $__G_AARRAYDISPLAY_SORTINFO[8] = 1 Then
- If (StringIsFloat($SVAL1) Or StringIsInt($SVAL1)) Then $SVAL1 = Number($SVAL1)
- If (StringIsFloat($SVAL2) Or StringIsInt($SVAL2)) Then $SVAL2 = Number($SVAL2)
- EndIf
- Local $NRESULT
- If $__G_AARRAYDISPLAY_SORTINFO[8] < 2 Then
- $NRESULT = 0
- If $SVAL1 < $SVAL2 Then
- $NRESULT = -1
- ElseIf $SVAL1 > $SVAL2 Then
- $NRESULT = 1
- EndIf
- Else
- $NRESULT = DllCall("shlwapi.dll", "int", "StrCmpLogicalW", "wstr", $SVAL1, "wstr", $SVAL2)[0]
- EndIf
- $NRESULT = $NRESULT * $__G_AARRAYDISPLAY_SORTINFO[5]
- Return $NRESULT
- EndFunc ;==>__ARRAYDISPLAY_SORTCALLBACK
- Func __ARRAYDISPLAY_SORTITEMS($HWND, $ICOL)
- If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
- Local $PFUNCTION = DllCallbackGetPtr($__G_AARRAYDISPLAY_SORTINFO[2])
- $__G_AARRAYDISPLAY_SORTINFO[3] = $ICOL
- $__G_AARRAYDISPLAY_SORTINFO[7] = 0
- $__G_AARRAYDISPLAY_SORTINFO[4] = $__G_AARRAYDISPLAY_SORTINFO[6]
- Local $ARESULT = DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $HWND, "uint", 4177, "hwnd", $HWND, "ptr", $PFUNCTION)
- If $ARESULT[0] <> 0 Then
- If $__G_AARRAYDISPLAY_SORTINFO[9] Then
- Local $HHEADER = $__G_AARRAYDISPLAY_SORTINFO[10], $IFORMAT
- For $X = 0 To __ARRAYDISPLAY_GETITEMCOUNT($HHEADER) - 1
- $IFORMAT = __ARRAYDISPLAY_GETITEMFORMAT($HHEADER, $X)
- If BitAND($IFORMAT, 512) Then
- __ARRAYDISPLAY_SETITEMFORMAT($HHEADER, $X, BitXOR($IFORMAT, 512))
- ElseIf BitAND($IFORMAT, 1024) Then
- __ARRAYDISPLAY_SETITEMFORMAT($HHEADER, $X, BitXOR($IFORMAT, 1024))
- EndIf
- Next
- $IFORMAT = __ARRAYDISPLAY_GETITEMFORMAT($HHEADER, $ICOL)
- If $__G_AARRAYDISPLAY_SORTINFO[5] = 1 Then
- __ARRAYDISPLAY_SETITEMFORMAT($HHEADER, $ICOL, BitOR($IFORMAT, 1024))
- Else
- __ARRAYDISPLAY_SETITEMFORMAT($HHEADER, $ICOL, BitOR($IFORMAT, 512))
- EndIf
- EndIf
- Return True
- EndIf
- Return False
- EndFunc ;==>__ARRAYDISPLAY_SORTITEMS
- Func __ARRAYDISPLAY_ADDITEM($HWND, $STEXT)
- Local $TITEM = DllStructCreate($_ARRAYCONSTANT_TAGLVITEM)
- DllStructSetData($TITEM, "Param", 0)
- Local $IBUFFER = StringLen($STEXT) + 1
- Local $TBUFFER = DllStructCreate("wchar Text[" & $IBUFFER & "]")
- $IBUFFER *= 2
- DllStructSetData($TBUFFER, "Text", $STEXT)
- DllStructSetData($TITEM, "Text", DllStructGetPtr($TBUFFER))
- DllStructSetData($TITEM, "TextMax", $IBUFFER)
- Local $IMASK = 5
- DllStructSetData($TITEM, "Mask", $IMASK)
- DllStructSetData($TITEM, "Item", 999999999)
- DllStructSetData($TITEM, "Image", -1)
- Local $PITEM = DllStructGetPtr($TITEM)
- Local $IRET = GUICtrlSendMsg($HWND, 4173, 0, $PITEM)
- Return $IRET
- EndFunc ;==>__ARRAYDISPLAY_ADDITEM
- Func __ARRAYDISPLAY_ADDSUBITEM($HWND, $IINDEX, $STEXT, $ISUBITEM)
- Local $IBUFFER = StringLen($STEXT) + 1
- Local $TBUFFER = DllStructCreate("wchar Text[" & $IBUFFER & "]")
- $IBUFFER *= 2
- Local $PBUFFER = DllStructGetPtr($TBUFFER)
- Local $TITEM = DllStructCreate($_ARRAYCONSTANT_TAGLVITEM)
- Local $IMASK = 1
- DllStructSetData($TBUFFER, "Text", $STEXT)
- DllStructSetData($TITEM, "Mask", $IMASK)
- DllStructSetData($TITEM, "Item", $IINDEX)
- DllStructSetData($TITEM, "SubItem", $ISUBITEM)
- DllStructSetData($TITEM, "Image", -1)
- Local $PITEM = DllStructGetPtr($TITEM)
- DllStructSetData($TITEM, "Text", $PBUFFER)
- Local $IRET = GUICtrlSendMsg($HWND, 4172, 0, $PITEM)
- Return $IRET <> 0
- EndFunc ;==>__ARRAYDISPLAY_ADDSUBITEM
- Func __ARRAYDISPLAY_GETCOLUMNCOUNT($HWND)
- Local $HHEADER = HWnd(GUICtrlSendMsg($HWND, 4127, 0, 0))
- Return __ARRAYDISPLAY_GETITEMCOUNT($HHEADER)
- EndFunc ;==>__ARRAYDISPLAY_GETCOLUMNCOUNT
- Func __ARRAYDISPLAY_GETHEADER($HWND)
- Return HWnd(GUICtrlSendMsg($HWND, 4127, 0, 0))
- EndFunc ;==>__ARRAYDISPLAY_GETHEADER
- Func __ARRAYDISPLAY_GETITEM($HWND, $IINDEX, ByRef $TITEM)
- Local $ARESULT = DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $HWND, "uint", 4619, "wparam", $IINDEX, "struct*", $TITEM)
- Return $ARESULT[0] <> 0
- EndFunc ;==>__ARRAYDISPLAY_GETITEM
- Func __ARRAYDISPLAY_GETITEMCOUNT($HWND)
- Local $ARESULT = DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $HWND, "uint", 4608, "wparam", 0, "lparam", 0)
- Return $ARESULT[0]
- EndFunc ;==>__ARRAYDISPLAY_GETITEMCOUNT
- Func __ARRAYDISPLAY_GETITEMFORMAT($HWND, $IINDEX)
- Local $TITEM = DllStructCreate($_ARRAYCONSTANT_TAGHDITEM)
- DllStructSetData($TITEM, "Mask", 4)
- __ARRAYDISPLAY_GETITEM($HWND, $IINDEX, $TITEM)
- Return DllStructGetData($TITEM, "Fmt")
- EndFunc ;==>__ARRAYDISPLAY_GETITEMFORMAT
- Func __ARRAYDISPLAY_GETITEMTEXT($HWND, $IINDEX, $ISUBITEM = 0)
- Local $TBUFFER = DllStructCreate("wchar Text[4096]")
- Local $PBUFFER = DllStructGetPtr($TBUFFER)
- Local $TITEM = DllStructCreate($_ARRAYCONSTANT_TAGLVITEM)
- DllStructSetData($TITEM, "SubItem", $ISUBITEM)
- DllStructSetData($TITEM, "TextMax", 4096)
- DllStructSetData($TITEM, "Text", $PBUFFER)
- If IsHWnd($HWND) Then
- DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $HWND, "uint", 4211, "wparam", $IINDEX, "struct*", $TITEM)
- Else
- Local $PITEM = DllStructGetPtr($TITEM)
- GUICtrlSendMsg($HWND, 4211, $IINDEX, $PITEM)
- EndIf
- Return DllStructGetData($TBUFFER, "Text")
- EndFunc ;==>__ARRAYDISPLAY_GETITEMTEXT
- Func __ARRAYDISPLAY_GETITEMTEXTSTRING($HWND, $IITEM)
- Local $SROW = "", $SSEPARATORCHAR = Opt("GUIDataSeparatorChar")
- Local $ISELECTED = $IITEM
- For $X = 0 To __ARRAYDISPLAY_GETCOLUMNCOUNT($HWND) - 1
- $SROW &= __ARRAYDISPLAY_GETITEMTEXT($HWND, $ISELECTED, $X) & $SSEPARATORCHAR
- Next
- Return StringTrimRight($SROW, 1)
- EndFunc ;==>__ARRAYDISPLAY_GETITEMTEXTSTRING
- Func __ARRAYDISPLAY_JUSTIFYCOLUMN($IDLISTVIEW, $IINDEX, $IALIGN = -1)
- Local $TCOLUMN = DllStructCreate("uint Mask;int Fmt;int CX;ptr Text;int TextMax;int SubItem;int Image;int Order;int cxMin;int cxDefault;int cxIdeal")
- If $IALIGN < 0 Or $IALIGN > 2 Then $IALIGN = 0
- DllStructSetData($TCOLUMN, "Mask", 1)
- DllStructSetData($TCOLUMN, "Fmt", $IALIGN)
- Local $PCOLUMN = DllStructGetPtr($TCOLUMN)
- Local $IRET = GUICtrlSendMsg($IDLISTVIEW, 4192, $IINDEX, $PCOLUMN)
- Return $IRET <> 0
- EndFunc ;==>__ARRAYDISPLAY_JUSTIFYCOLUMN
- Func __ARRAYDISPLAY_SETITEMFORMAT($HWND, $IINDEX, $IFORMAT)
- Local $TITEM = DllStructCreate($_ARRAYCONSTANT_TAGHDITEM)
- DllStructSetData($TITEM, "Mask", 4)
- DllStructSetData($TITEM, "Fmt", $IFORMAT)
- Local $ARESULT = DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $HWND, "uint", 4620, "wparam", $IINDEX, "struct*", $TITEM)
- Return $ARESULT[0] <> 0
- EndFunc ;==>__ARRAYDISPLAY_SETITEMFORMAT
- Global Enum $ARRAYFILL_FORCE_DEFAULT, $ARRAYFILL_FORCE_SINGLEITEM, $ARRAYFILL_FORCE_INT, $ARRAYFILL_FORCE_NUMBER, $ARRAYFILL_FORCE_PTR, $ARRAYFILL_FORCE_HWND, $ARRAYFILL_FORCE_STRING, $ARRAYFILL_FORCE_BOOLEAN
- Global Enum $ARRAYUNIQUE_NOCOUNT, $ARRAYUNIQUE_COUNT
- Global Enum $ARRAYUNIQUE_AUTO, $ARRAYUNIQUE_FORCE32, $ARRAYUNIQUE_FORCE64, $ARRAYUNIQUE_MATCH, $ARRAYUNIQUE_DISTINCT
- Func _ArrayAdd(ByRef $AARRAY, $VVALUE, $ISTART = 0, $SDELIM_ITEM = "|", $SDELIM_ROW = @CRLF, $IFORCE = $ARRAYFILL_FORCE_DEFAULT)
- If $ISTART = Default Then $ISTART = 0
- If $SDELIM_ITEM = Default Then $SDELIM_ITEM = "|"
- If $SDELIM_ROW = Default Then $SDELIM_ROW = @CRLF
- If $IFORCE = Default Then $IFORCE = $ARRAYFILL_FORCE_DEFAULT
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS)
- Local $HDATATYPE = 0
- Switch $IFORCE
- Case $ARRAYFILL_FORCE_INT
- $HDATATYPE = INT
- Case $ARRAYFILL_FORCE_NUMBER
- $HDATATYPE = NUMBER
- Case $ARRAYFILL_FORCE_PTR
- $HDATATYPE = PTR
- Case $ARRAYFILL_FORCE_HWND
- $HDATATYPE = HWND
- Case $ARRAYFILL_FORCE_STRING
- $HDATATYPE = STRING
- Case $ARRAYFILL_FORCE_BOOLEAN
- $HDATATYPE = "Boolean"
- EndSwitch
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- If $IFORCE = $ARRAYFILL_FORCE_SINGLEITEM Then
- ReDim $AARRAY[$IDIM_1 + 1]
- $AARRAY[$IDIM_1] = $VVALUE
- Return $IDIM_1
- EndIf
- If IsArray($VVALUE) Then
- If UBound($VVALUE, $UBOUND_DIMENSIONS) <> 1 Then Return SetError(5, 0, -1)
- $HDATATYPE = 0
- Else
- Local $ATMP = StringSplit($VVALUE, $SDELIM_ITEM, $STR_NOCOUNT + $STR_ENTIRESPLIT)
- If UBound($ATMP, $UBOUND_ROWS) = 1 Then
- $ATMP[0] = $VVALUE
- EndIf
- $VVALUE = $ATMP
- EndIf
- Local $IADD = UBound($VVALUE, $UBOUND_ROWS)
- ReDim $AARRAY[$IDIM_1 + $IADD]
- For $I = 0 To $IADD - 1
- If String($HDATATYPE) = "Boolean" Then
- Switch $VVALUE[$I]
- Case "True", "1"
- $AARRAY[$IDIM_1 + $I] = True
- Case "False", "0", ""
- $AARRAY[$IDIM_1 + $I] = False
- EndSwitch
- ElseIf IsFunc($HDATATYPE) Then
- $AARRAY[$IDIM_1 + $I] = $HDATATYPE($VVALUE[$I])
- Else
- $AARRAY[$IDIM_1 + $I] = $VVALUE[$I]
- EndIf
- Next
- Return $IDIM_1 + $IADD - 1
- Case 2
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS)
- If $ISTART < 0 Or $ISTART > $IDIM_2 - 1 Then Return SetError(4, 0, -1)
- Local $IVALDIM_1, $IVALDIM_2 = 0, $ICOLCOUNT
- If IsArray($VVALUE) Then
- If UBound($VVALUE, $UBOUND_DIMENSIONS) <> 2 Then Return SetError(5, 0, -1)
- $IVALDIM_1 = UBound($VVALUE, $UBOUND_ROWS)
- $IVALDIM_2 = UBound($VVALUE, $UBOUND_COLUMNS)
- $HDATATYPE = 0
- Else
- Local $ASPLIT_1 = StringSplit($VVALUE, $SDELIM_ROW, $STR_NOCOUNT + $STR_ENTIRESPLIT)
- $IVALDIM_1 = UBound($ASPLIT_1, $UBOUND_ROWS)
- Local $ATMP[$IVALDIM_1][0], $ASPLIT_2
- For $I = 0 To $IVALDIM_1 - 1
- $ASPLIT_2 = StringSplit($ASPLIT_1[$I], $SDELIM_ITEM, $STR_NOCOUNT + $STR_ENTIRESPLIT)
- $ICOLCOUNT = UBound($ASPLIT_2)
- If $ICOLCOUNT > $IVALDIM_2 Then
- $IVALDIM_2 = $ICOLCOUNT
- ReDim $ATMP[$IVALDIM_1][$IVALDIM_2]
- EndIf
- For $J = 0 To $ICOLCOUNT - 1
- $ATMP[$I][$J] = $ASPLIT_2[$J]
- Next
- Next
- $VVALUE = $ATMP
- EndIf
- If UBound($VVALUE, $UBOUND_COLUMNS) + $ISTART > UBound($AARRAY, $UBOUND_COLUMNS) Then Return SetError(3, 0, -1)
- ReDim $AARRAY[$IDIM_1 + $IVALDIM_1][$IDIM_2]
- For $IWRITETO_INDEX = 0 To $IVALDIM_1 - 1
- For $J = 0 To $IDIM_2 - 1
- If $J < $ISTART Then
- $AARRAY[$IWRITETO_INDEX + $IDIM_1][$J] = ""
- ElseIf $J - $ISTART > $IVALDIM_2 - 1 Then
- $AARRAY[$IWRITETO_INDEX + $IDIM_1][$J] = ""
- Else
- If String($HDATATYPE) = "Boolean" Then
- Switch $VVALUE[$IWRITETO_INDEX][$J - $ISTART]
- Case "True", "1"
- $AARRAY[$IWRITETO_INDEX + $IDIM_1][$J] = True
- Case "False", "0", ""
- $AARRAY[$IWRITETO_INDEX + $IDIM_1][$J] = False
- EndSwitch
- ElseIf IsFunc($HDATATYPE) Then
- $AARRAY[$IWRITETO_INDEX + $IDIM_1][$J] = $HDATATYPE($VVALUE[$IWRITETO_INDEX][$J - $ISTART])
- Else
- $AARRAY[$IWRITETO_INDEX + $IDIM_1][$J] = $VVALUE[$IWRITETO_INDEX][$J - $ISTART]
- EndIf
- EndIf
- Next
- Next
- Case Else
- Return SetError(2, 0, -1)
- EndSwitch
- Return UBound($AARRAY, $UBOUND_ROWS) - 1
- EndFunc ;==>_ArrayAdd
- Func _ArrayBinarySearch(Const ByRef $AARRAY, $VVALUE, $ISTART = 0, $IEND = 0, $ICOLUMN = 0)
- If $ISTART = Default Then $ISTART = 0
- If $IEND = Default Then $IEND = 0
- If $ICOLUMN = Default Then $ICOLUMN = 0
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS)
- If $IDIM_1 = 0 Then Return SetError(6, 0, -1)
- If $IEND < 1 Or $IEND > $IDIM_1 - 1 Then $IEND = $IDIM_1 - 1
- If $ISTART < 0 Then $ISTART = 0
- If $ISTART > $IEND Then Return SetError(4, 0, -1)
- Local $IMID = Int(($IEND + $ISTART) / 2)
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- If $AARRAY[$ISTART] > $VVALUE Or $AARRAY[$IEND] < $VVALUE Then Return SetError(2, 0, -1)
- While $ISTART <= $IMID And $VVALUE <> $AARRAY[$IMID]
- If $VVALUE < $AARRAY[$IMID] Then
- $IEND = $IMID - 1
- Else
- $ISTART = $IMID + 1
- EndIf
- $IMID = Int(($IEND + $ISTART) / 2)
- WEnd
- If $ISTART > $IEND Then Return SetError(3, 0, -1)
- Case 2
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS) - 1
- If $ICOLUMN < 0 Or $ICOLUMN > $IDIM_2 Then Return SetError(7, 0, -1)
- If $AARRAY[$ISTART][$ICOLUMN] > $VVALUE Or $AARRAY[$IEND][$ICOLUMN] < $VVALUE Then Return SetError(2, 0, -1)
- While $ISTART <= $IMID And $VVALUE <> $AARRAY[$IMID][$ICOLUMN]
- If $VVALUE < $AARRAY[$IMID][$ICOLUMN] Then
- $IEND = $IMID - 1
- Else
- $ISTART = $IMID + 1
- EndIf
- $IMID = Int(($IEND + $ISTART) / 2)
- WEnd
- If $ISTART > $IEND Then Return SetError(3, 0, -1)
- Case Else
- Return SetError(5, 0, -1)
- EndSwitch
- Return $IMID
- EndFunc ;==>_ArrayBinarySearch
- Func _ArrayColDelete(ByRef $AARRAY, $ICOLUMN, $BCONVERT = False)
- If $BCONVERT = Default Then $BCONVERT = False
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS)
- If UBound($AARRAY, $UBOUND_DIMENSIONS) <> 2 Then Return SetError(2, 0, -1)
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS)
- Switch $IDIM_2
- Case 2
- If $ICOLUMN < 0 Or $ICOLUMN > 1 Then Return SetError(3, 0, -1)
- If $BCONVERT Then
- Local $ATEMPARRAY[$IDIM_1]
- For $I = 0 To $IDIM_1 - 1
- $ATEMPARRAY[$I] = $AARRAY[$I][(Not $ICOLUMN)]
- Next
- $AARRAY = $ATEMPARRAY
- Else
- ContinueCase
- EndIf
- Case Else
- If $ICOLUMN < 0 Or $ICOLUMN > $IDIM_2 - 1 Then Return SetError(3, 0, -1)
- For $I = 0 To $IDIM_1 - 1
- For $J = $ICOLUMN To $IDIM_2 - 2
- $AARRAY[$I][$J] = $AARRAY[$I][$J + 1]
- Next
- Next
- ReDim $AARRAY[$IDIM_1][$IDIM_2 - 1]
- EndSwitch
- Return UBound($AARRAY, $UBOUND_COLUMNS)
- EndFunc ;==>_ARRAYCOLDELETE
- Func _ArrayColInsert(ByRef $AARRAY, $ICOLUMN)
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS)
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- Local $ATEMPARRAY[$IDIM_1][2]
- Switch $ICOLUMN
- Case 0, 1
- For $I = 0 To $IDIM_1 - 1
- $ATEMPARRAY[$I][(Not $ICOLUMN)] = $AARRAY[$I]
- Next
- Case Else
- Return SetError(3, 0, -1)
- EndSwitch
- $AARRAY = $ATEMPARRAY
- Case 2
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS)
- If $ICOLUMN < 0 Or $ICOLUMN > $IDIM_2 Then Return SetError(3, 0, -1)
- ReDim $AARRAY[$IDIM_1][$IDIM_2 + 1]
- For $I = 0 To $IDIM_1 - 1
- For $J = $IDIM_2 To $ICOLUMN + 1 Step -1
- $AARRAY[$I][$J] = $AARRAY[$I][$J - 1]
- Next
- $AARRAY[$I][$ICOLUMN] = ""
- Next
- Case Else
- Return SetError(2, 0, -1)
- EndSwitch
- Return UBound($AARRAY, $UBOUND_COLUMNS)
- EndFunc ;==>_ARRAYCOLINSERT
- Func _ArrayCombinations(Const ByRef $AARRAY, $ISET, $SDELIMITER = "")
- If $SDELIMITER = Default Then $SDELIMITER = ""
- If Not IsArray($AARRAY) Then Return SetError(1, 0, 0)
- If UBound($AARRAY, $UBOUND_DIMENSIONS) <> 1 Then Return SetError(2, 0, 0)
- Local $IN = UBound($AARRAY)
- Local $IR = $ISET
- Local $AIDX[$IR]
- For $I = 0 To $IR - 1
- $AIDX[$I] = $I
- Next
- Local $ITOTAL = __ARRAY_COMBINATIONS($IN, $IR)
- Local $ILEFT = $ITOTAL
- Local $ARESULT[$ITOTAL + 1]
- $ARESULT[0] = $ITOTAL
- Local $ICOUNT = 1
- While $ILEFT > 0
- __ARRAY_GETNEXT($IN, $IR, $ILEFT, $ITOTAL, $AIDX)
- For $I = 0 To $ISET - 1
- $ARESULT[$ICOUNT] &= $AARRAY[$AIDX[$I]] & $SDELIMITER
- Next
- If $SDELIMITER <> "" Then $ARESULT[$ICOUNT] = StringTrimRight($ARESULT[$ICOUNT], 1)
- $ICOUNT += 1
- WEnd
- Return $ARESULT
- EndFunc ;==>_ArrayCombinations
- Func _ArrayConcatenate(ByRef $AARRAYTARGET, Const ByRef $AARRAYSOURCE, $ISTART = 0)
- If $ISTART = Default Then $ISTART = 0
- If Not IsArray($AARRAYTARGET) Then Return SetError(1, 0, -1)
- If Not IsArray($AARRAYSOURCE) Then Return SetError(2, 0, -1)
- Local $IDIM_TOTAL_TGT = UBound($AARRAYTARGET, $UBOUND_DIMENSIONS)
- Local $IDIM_TOTAL_SRC = UBound($AARRAYSOURCE, $UBOUND_DIMENSIONS)
- Local $IDIM_1_TGT = UBound($AARRAYTARGET, $UBOUND_ROWS)
- Local $IDIM_1_SRC = UBound($AARRAYSOURCE, $UBOUND_ROWS)
- If $ISTART < 0 Or $ISTART > $IDIM_1_SRC - 1 Then Return SetError(6, 0, -1)
- Switch $IDIM_TOTAL_TGT
- Case 1
- If $IDIM_TOTAL_SRC <> 1 Then Return SetError(4, 0, -1)
- ReDim $AARRAYTARGET[$IDIM_1_TGT + $IDIM_1_SRC - $ISTART]
- For $I = $ISTART To $IDIM_1_SRC - 1
- $AARRAYTARGET[$IDIM_1_TGT + $I - $ISTART] = $AARRAYSOURCE[$I]
- Next
- Case 2
- If $IDIM_TOTAL_SRC <> 2 Then Return SetError(4, 0, -1)
- Local $IDIM_2_TGT = UBound($AARRAYTARGET, $UBOUND_COLUMNS)
- If UBound($AARRAYSOURCE, $UBOUND_COLUMNS) <> $IDIM_2_TGT Then Return SetError(5, 0, -1)
- ReDim $AARRAYTARGET[$IDIM_1_TGT + $IDIM_1_SRC - $ISTART][$IDIM_2_TGT]
- For $I = $ISTART To $IDIM_1_SRC - 1
- For $J = 0 To $IDIM_2_TGT - 1
- $AARRAYTARGET[$IDIM_1_TGT + $I - $ISTART][$J] = $AARRAYSOURCE[$I][$J]
- Next
- Next
- Case Else
- Return SetError(3, 0, -1)
- EndSwitch
- Return UBound($AARRAYTARGET, $UBOUND_ROWS)
- EndFunc ;==>_ArrayConcatenate
- Func _ArrayDelete(ByRef $AARRAY, $VRANGE)
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS) - 1
- If IsArray($VRANGE) Then
- If UBound($VRANGE, $UBOUND_DIMENSIONS) <> 1 Or UBound($VRANGE, $UBOUND_ROWS) < 2 Then Return SetError(4, 0, -1)
- Else
- Local $INUMBER, $ASPLIT_1, $ASPLIT_2
- $VRANGE = StringStripWS($VRANGE, 8)
- $ASPLIT_1 = StringSplit($VRANGE, ";")
- $VRANGE = ""
- For $I = 1 To $ASPLIT_1[0]
- If Not StringRegExp($ASPLIT_1[$I], "^\d+(-\d+)?$") Then Return SetError(3, 0, -1)
- $ASPLIT_2 = StringSplit($ASPLIT_1[$I], "-")
- Switch $ASPLIT_2[0]
- Case 1
- $VRANGE &= $ASPLIT_2[1] & ";"
- Case 2
- If Number($ASPLIT_2[2]) >= Number($ASPLIT_2[1]) Then
- $INUMBER = $ASPLIT_2[1] - 1
- Do
- $INUMBER += 1
- $VRANGE &= $INUMBER & ";"
- Until $INUMBER = $ASPLIT_2[2]
- EndIf
- EndSwitch
- Next
- $VRANGE = StringSplit(StringTrimRight($VRANGE, 1), ";")
- EndIf
- If $VRANGE[1] < 0 Or $VRANGE[$VRANGE[0]] > $IDIM_1 Then Return SetError(5, 0, -1)
- Local $ICOPYTO_INDEX = 0
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- For $I = 1 To $VRANGE[0]
- $AARRAY[$VRANGE[$I]] = ChrW(64177)
- Next
- For $IREADFROM_INDEX = 0 To $IDIM_1
- If $AARRAY[$IREADFROM_INDEX] == ChrW(64177) Then
- ContinueLoop
- Else
- If $IREADFROM_INDEX <> $ICOPYTO_INDEX Then
- $AARRAY[$ICOPYTO_INDEX] = $AARRAY[$IREADFROM_INDEX]
- EndIf
- $ICOPYTO_INDEX += 1
- EndIf
- Next
- ReDim $AARRAY[$IDIM_1 - $VRANGE[0] + 1]
- Case 2
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS) - 1
- For $I = 1 To $VRANGE[0]
- $AARRAY[$VRANGE[$I]][0] = ChrW(64177)
- Next
- For $IREADFROM_INDEX = 0 To $IDIM_1
- If $AARRAY[$IREADFROM_INDEX][0] == ChrW(64177) Then
- ContinueLoop
- Else
- If $IREADFROM_INDEX <> $ICOPYTO_INDEX Then
- For $J = 0 To $IDIM_2
- $AARRAY[$ICOPYTO_INDEX][$J] = $AARRAY[$IREADFROM_INDEX][$J]
- Next
- EndIf
- $ICOPYTO_INDEX += 1
- EndIf
- Next
- ReDim $AARRAY[$IDIM_1 - $VRANGE[0] + 1][$IDIM_2 + 1]
- Case Else
- Return SetError(2, 0, False)
- EndSwitch
- Return UBound($AARRAY, $UBOUND_ROWS)
- EndFunc ;==>_ArrayDelete
- Func _ArrayDisplay(Const ByRef $AARRAY, $STITLE = Default, $SARRAYRANGE = Default, $IFLAGS = Default, $VUSER_SEPARATOR = Default, $SHEADER = Default, $IMAX_COLWIDTH = Default)
- #forceref $VUSER_SEPARATOR
- Local $IRET = __ARRAYDISPLAY_SHARE($AARRAY, $STITLE, $SARRAYRANGE, $IFLAGS, Default, $SHEADER, $IMAX_COLWIDTH, 0, False)
- Return SetError(@error, @extended, $IRET)
- EndFunc ;==>_ArrayDisplay
- Func _ArrayExtract(Const ByRef $AARRAY, $ISTART_ROW = -1, $IEND_ROW = -1, $ISTART_COL = -1, $IEND_COL = -1)
- If $ISTART_ROW = Default Then $ISTART_ROW = -1
- If $IEND_ROW = Default Then $IEND_ROW = -1
- If $ISTART_COL = Default Then $ISTART_COL = -1
- If $IEND_COL = Default Then $IEND_COL = -1
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS) - 1
- If $IEND_ROW = -1 Then $IEND_ROW = $IDIM_1
- If $ISTART_ROW = -1 Then $ISTART_ROW = 0
- If $ISTART_ROW < -1 Or $IEND_ROW < -1 Then Return SetError(3, 0, -1)
- If $ISTART_ROW > $IDIM_1 Or $IEND_ROW > $IDIM_1 Then Return SetError(3, 0, -1)
- If $ISTART_ROW > $IEND_ROW Then Return SetError(4, 0, -1)
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- Local $ARETARRAY[$IEND_ROW - $ISTART_ROW + 1]
- For $I = 0 To $IEND_ROW - $ISTART_ROW
- $ARETARRAY[$I] = $AARRAY[$I + $ISTART_ROW]
- Next
- Return $ARETARRAY
- Case 2
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS) - 1
- If $IEND_COL = -1 Then $IEND_COL = $IDIM_2
- If $ISTART_COL = -1 Then $ISTART_COL = 0
- If $ISTART_COL < -1 Or $IEND_COL < -1 Then Return SetError(5, 0, -1)
- If $ISTART_COL > $IDIM_2 Or $IEND_COL > $IDIM_2 Then Return SetError(5, 0, -1)
- If $ISTART_COL > $IEND_COL Then Return SetError(6, 0, -1)
- If $ISTART_COL = $IEND_COL Then
- Local $ARETARRAY[$IEND_ROW - $ISTART_ROW + 1]
- Else
- Local $ARETARRAY[$IEND_ROW - $ISTART_ROW + 1][$IEND_COL - $ISTART_COL + 1]
- EndIf
- For $I = 0 To $IEND_ROW - $ISTART_ROW
- For $J = 0 To $IEND_COL - $ISTART_COL
- If $ISTART_COL = $IEND_COL Then
- $ARETARRAY[$I] = $AARRAY[$I + $ISTART_ROW][$J + $ISTART_COL]
- Else
- $ARETARRAY[$I][$J] = $AARRAY[$I + $ISTART_ROW][$J + $ISTART_COL]
- EndIf
- Next
- Next
- Return $ARETARRAY
- Case Else
- Return SetError(2, 0, -1)
- EndSwitch
- Return 1
- EndFunc ;==>_ARRAYEXTRACT
- Func _ArrayFindAll(Const ByRef $AARRAY, $VVALUE, $ISTART = 0, $IEND = 0, $ICASE = 0, $ICOMPARE = 0, $ISUBITEM = 0, $BROW = False)
- If $ISTART = Default Then $ISTART = 0
- If $IEND = Default Then $IEND = 0
- If $ICASE = Default Then $ICASE = 0
- If $ICOMPARE = Default Then $ICOMPARE = 0
- If $ISUBITEM = Default Then $ISUBITEM = 0
- If $BROW = Default Then $BROW = False
- $ISTART = _ArraySearch($AARRAY, $VVALUE, $ISTART, $IEND, $ICASE, $ICOMPARE, 1, $ISUBITEM, $BROW)
- If @error Then Return SetError(@error, 0, -1)
- Local $IINDEX = 0, $AVRESULT[UBound($AARRAY, ($BROW ? $UBOUND_COLUMNS : $UBOUND_ROWS))]
- Do
- $AVRESULT[$IINDEX] = $ISTART
- $IINDEX += 1
- $ISTART = _ArraySearch($AARRAY, $VVALUE, $ISTART + 1, $IEND, $ICASE, $ICOMPARE, 1, $ISUBITEM, $BROW)
- Until @error
- ReDim $AVRESULT[$IINDEX]
- Return $AVRESULT
- EndFunc ;==>_ArrayFindAll
- Func _ArrayInsert(ByRef $AARRAY, $VRANGE, $VVALUE = "", $ISTART = 0, $SDELIM_ITEM = "|", $SDELIM_ROW = @CRLF, $IFORCE = $ARRAYFILL_FORCE_DEFAULT)
- If $VVALUE = Default Then $VVALUE = ""
- If $ISTART = Default Then $ISTART = 0
- If $SDELIM_ITEM = Default Then $SDELIM_ITEM = "|"
- If $SDELIM_ROW = Default Then $SDELIM_ROW = @CRLF
- If $IFORCE = Default Then $IFORCE = $ARRAYFILL_FORCE_DEFAULT
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS) - 1
- Local $HDATATYPE = 0
- Switch $IFORCE
- Case $ARRAYFILL_FORCE_INT
- $HDATATYPE = INT
- Case $ARRAYFILL_FORCE_NUMBER
- $HDATATYPE = NUMBER
- Case $ARRAYFILL_FORCE_PTR
- $HDATATYPE = PTR
- Case $ARRAYFILL_FORCE_HWND
- $HDATATYPE = HWND
- Case $ARRAYFILL_FORCE_STRING
- $HDATATYPE = STRING
- EndSwitch
- Local $ASPLIT_1, $ASPLIT_2
- If IsArray($VRANGE) Then
- If UBound($VRANGE, $UBOUND_DIMENSIONS) <> 1 Or UBound($VRANGE, $UBOUND_ROWS) < 2 Then Return SetError(4, 0, -1)
- Else
- Local $INUMBER
- $VRANGE = StringStripWS($VRANGE, 8)
- $ASPLIT_1 = StringSplit($VRANGE, ";")
- $VRANGE = ""
- For $I = 1 To $ASPLIT_1[0]
- If Not StringRegExp($ASPLIT_1[$I], "^\d+(-\d+)?$") Then Return SetError(3, 0, -1)
- $ASPLIT_2 = StringSplit($ASPLIT_1[$I], "-")
- Switch $ASPLIT_2[0]
- Case 1
- $VRANGE &= $ASPLIT_2[1] & ";"
- Case 2
- If Number($ASPLIT_2[2]) >= Number($ASPLIT_2[1]) Then
- $INUMBER = $ASPLIT_2[1] - 1
- Do
- $INUMBER += 1
- $VRANGE &= $INUMBER & ";"
- Until $INUMBER = $ASPLIT_2[2]
- EndIf
- EndSwitch
- Next
- $VRANGE = StringSplit(StringTrimRight($VRANGE, 1), ";")
- EndIf
- If $VRANGE[1] < 0 Or $VRANGE[$VRANGE[0]] > $IDIM_1 Then Return SetError(5, 0, -1)
- For $I = 2 To $VRANGE[0]
- If $VRANGE[$I] < $VRANGE[$I - 1] Then Return SetError(3, 0, -1)
- Next
- Local $ICOPYTO_INDEX = $IDIM_1 + $VRANGE[0]
- Local $IINSERTPOINT_INDEX = $VRANGE[0]
- Local $IINSERT_INDEX = $VRANGE[$IINSERTPOINT_INDEX]
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- If $IFORCE = $ARRAYFILL_FORCE_SINGLEITEM Then
- ReDim $AARRAY[$IDIM_1 + $VRANGE[0] + 1]
- For $IREADFROMINDEX = $IDIM_1 To 0 Step -1
- $AARRAY[$ICOPYTO_INDEX] = $AARRAY[$IREADFROMINDEX]
- $ICOPYTO_INDEX -= 1
- $IINSERT_INDEX = $VRANGE[$IINSERTPOINT_INDEX]
- While $IREADFROMINDEX = $IINSERT_INDEX
- $AARRAY[$ICOPYTO_INDEX] = $VVALUE
- $ICOPYTO_INDEX -= 1
- $IINSERTPOINT_INDEX -= 1
- If $IINSERTPOINT_INDEX < 1 Then ExitLoop 2
- $IINSERT_INDEX = $VRANGE[$IINSERTPOINT_INDEX]
- WEnd
- Next
- Return $IDIM_1 + $VRANGE[0] + 1
- EndIf
- ReDim $AARRAY[$IDIM_1 + $VRANGE[0] + 1]
- If IsArray($VVALUE) Then
- If UBound($VVALUE, $UBOUND_DIMENSIONS) <> 1 Then Return SetError(5, 0, -1)
- $HDATATYPE = 0
- Else
- Local $ATMP = StringSplit($VVALUE, $SDELIM_ITEM, $STR_NOCOUNT + $STR_ENTIRESPLIT)
- If UBound($ATMP, $UBOUND_ROWS) = 1 Then
- $ATMP[0] = $VVALUE
- $HDATATYPE = 0
- EndIf
- $VVALUE = $ATMP
- EndIf
- For $IREADFROMINDEX = $IDIM_1 To 0 Step -1
- $AARRAY[$ICOPYTO_INDEX] = $AARRAY[$IREADFROMINDEX]
- $ICOPYTO_INDEX -= 1
- $IINSERT_INDEX = $VRANGE[$IINSERTPOINT_INDEX]
- While $IREADFROMINDEX = $IINSERT_INDEX
- If $IINSERTPOINT_INDEX <= UBound($VVALUE, $UBOUND_ROWS) Then
- If IsFunc($HDATATYPE) Then
- $AARRAY[$ICOPYTO_INDEX] = $HDATATYPE($VVALUE[$IINSERTPOINT_INDEX - 1])
- Else
- $AARRAY[$ICOPYTO_INDEX] = $VVALUE[$IINSERTPOINT_INDEX - 1]
- EndIf
- Else
- $AARRAY[$ICOPYTO_INDEX] = ""
- EndIf
- $ICOPYTO_INDEX -= 1
- $IINSERTPOINT_INDEX -= 1
- If $IINSERTPOINT_INDEX = 0 Then ExitLoop 2
- $IINSERT_INDEX = $VRANGE[$IINSERTPOINT_INDEX]
- WEnd
- Next
- Case 2
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS)
- If $ISTART < 0 Or $ISTART > $IDIM_2 - 1 Then Return SetError(6, 0, -1)
- Local $IVALDIM_1, $IVALDIM_2
- If IsArray($VVALUE) Then
- If UBound($VVALUE, $UBOUND_DIMENSIONS) <> 2 Then Return SetError(7, 0, -1)
- $IVALDIM_1 = UBound($VVALUE, $UBOUND_ROWS)
- $IVALDIM_2 = UBound($VVALUE, $UBOUND_COLUMNS)
- $HDATATYPE = 0
- Else
- $ASPLIT_1 = StringSplit($VVALUE, $SDELIM_ROW, $STR_NOCOUNT + $STR_ENTIRESPLIT)
- $IVALDIM_1 = UBound($ASPLIT_1, $UBOUND_ROWS)
- StringReplace($ASPLIT_1[0], $SDELIM_ITEM, "")
- $IVALDIM_2 = @extended + 1
- Local $ATMP[$IVALDIM_1][$IVALDIM_2]
- For $I = 0 To $IVALDIM_1 - 1
- $ASPLIT_2 = StringSplit($ASPLIT_1[$I], $SDELIM_ITEM, $STR_NOCOUNT + $STR_ENTIRESPLIT)
- For $J = 0 To $IVALDIM_2 - 1
- $ATMP[$I][$J] = $ASPLIT_2[$J]
- Next
- Next
- $VVALUE = $ATMP
- EndIf
- If UBound($VVALUE, $UBOUND_COLUMNS) + $ISTART > UBound($AARRAY, $UBOUND_COLUMNS) Then Return SetError(8, 0, -1)
- ReDim $AARRAY[$IDIM_1 + $VRANGE[0] + 1][$IDIM_2]
- For $IREADFROMINDEX = $IDIM_1 To 0 Step -1
- For $J = 0 To $IDIM_2 - 1
- $AARRAY[$ICOPYTO_INDEX][$J] = $AARRAY[$IREADFROMINDEX][$J]
- Next
- $ICOPYTO_INDEX -= 1
- $IINSERT_INDEX = $VRANGE[$IINSERTPOINT_INDEX]
- While $IREADFROMINDEX = $IINSERT_INDEX
- For $J = 0 To $IDIM_2 - 1
- If $J < $ISTART Then
- $AARRAY[$ICOPYTO_INDEX][$J] = ""
- ElseIf $J - $ISTART > $IVALDIM_2 - 1 Then
- $AARRAY[$ICOPYTO_INDEX][$J] = ""
- Else
- If $IINSERTPOINT_INDEX - 1 < $IVALDIM_1 Then
- If IsFunc($HDATATYPE) Then
- $AARRAY[$ICOPYTO_INDEX][$J] = $HDATATYPE($VVALUE[$IINSERTPOINT_INDEX - 1][$J - $ISTART])
- Else
- $AARRAY[$ICOPYTO_INDEX][$J] = $VVALUE[$IINSERTPOINT_INDEX - 1][$J - $ISTART]
- EndIf
- Else
- $AARRAY[$ICOPYTO_INDEX][$J] = ""
- EndIf
- EndIf
- Next
- $ICOPYTO_INDEX -= 1
- $IINSERTPOINT_INDEX -= 1
- If $IINSERTPOINT_INDEX = 0 Then ExitLoop 2
- $IINSERT_INDEX = $VRANGE[$IINSERTPOINT_INDEX]
- WEnd
- Next
- Case Else
- Return SetError(2, 0, -1)
- EndSwitch
- Return UBound($AARRAY, $UBOUND_ROWS)
- EndFunc ;==>_ArrayInsert
- Func _ArrayMax(Const ByRef $AARRAY, $ICOMPNUMERIC = 0, $ISTART = -1, $IEND = -1, $ISUBITEM = 0)
- Local $IRESULT = _ArrayMaxIndex($AARRAY, $ICOMPNUMERIC, $ISTART, $IEND, $ISUBITEM)
- If @error Then Return SetError(@error, 0, "")
- If UBound($AARRAY, $UBOUND_DIMENSIONS) = 1 Then
- Return $AARRAY[$IRESULT]
- Else
- Return $AARRAY[$IRESULT][$ISUBITEM]
- EndIf
- EndFunc ;==>_ArrayMax
- Func _ArrayMaxIndex(Const ByRef $AARRAY, $ICOMPNUMERIC = 0, $ISTART = -1, $IEND = -1, $ISUBITEM = 0)
- If $ICOMPNUMERIC = Default Then $ICOMPNUMERIC = 0
- If $ISTART = Default Then $ISTART = -1
- If $IEND = Default Then $IEND = -1
- If $ISUBITEM = Default Then $ISUBITEM = 0
- Local $IRET = __ARRAY_MINMAXINDEX($AARRAY, $ICOMPNUMERIC, $ISTART, $IEND, $ISUBITEM, __ARRAY_GREATERTHAN)
- Return SetError(@error, 0, $IRET)
- EndFunc ;==>_ArrayMaxIndex
- Func _ArrayMin(Const ByRef $AARRAY, $ICOMPNUMERIC = 0, $ISTART = -1, $IEND = -1, $ISUBITEM = 0)
- Local $IRESULT = _ArrayMinIndex($AARRAY, $ICOMPNUMERIC, $ISTART, $IEND, $ISUBITEM)
- If @error Then Return SetError(@error, 0, "")
- If UBound($AARRAY, $UBOUND_DIMENSIONS) = 1 Then
- Return $AARRAY[$IRESULT]
- Else
- Return $AARRAY[$IRESULT][$ISUBITEM]
- EndIf
- EndFunc ;==>_ArrayMin
- Func _ArrayMinIndex(Const ByRef $AARRAY, $ICOMPNUMERIC = 0, $ISTART = -1, $IEND = -1, $ISUBITEM = 0)
- If $ICOMPNUMERIC = Default Then $ICOMPNUMERIC = 0
- If $ISTART = Default Then $ISTART = -1
- If $IEND = Default Then $IEND = -1
- If $ISUBITEM = Default Then $ISUBITEM = 0
- Local $IRET = __ARRAY_MINMAXINDEX($AARRAY, $ICOMPNUMERIC, $ISTART, $IEND, $ISUBITEM, __ARRAY_LESSTHAN)
- Return SetError(@error, 0, $IRET)
- EndFunc ;==>_ArrayMinIndex
- Func _ArrayPermute(ByRef $AARRAY, $SDELIMITER = "")
- If $SDELIMITER = Default Then $SDELIMITER = ""
- If Not IsArray($AARRAY) Then Return SetError(1, 0, 0)
- If UBound($AARRAY, $UBOUND_DIMENSIONS) <> 1 Then Return SetError(2, 0, 0)
- Local $ISIZE = UBound($AARRAY), $IFACTORIAL = 1, $AIDX[$ISIZE], $ARESULT[1], $ICOUNT = 1
- If UBound($AARRAY) Then
- For $I = 0 To $ISIZE - 1
- $AIDX[$I] = $I
- Next
- For $I = $ISIZE To 1 Step -1
- $IFACTORIAL *= $I
- Next
- ReDim $ARESULT[$IFACTORIAL + 1]
- $ARESULT[0] = $IFACTORIAL
- __ARRAY_EXETERINTERNAL($AARRAY, 0, $ISIZE, $SDELIMITER, $AIDX, $ARESULT, $ICOUNT)
- Else
- $ARESULT[0] = 0
- EndIf
- Return $ARESULT
- EndFunc ;==>_ArrayPermute
- Func _ArrayPop(ByRef $AARRAY)
- If (Not IsArray($AARRAY)) Then Return SetError(1, 0, "")
- If UBound($AARRAY, $UBOUND_DIMENSIONS) <> 1 Then Return SetError(2, 0, "")
- Local $IUBOUND = UBound($AARRAY) - 1
- If $IUBOUND = -1 Then Return SetError(3, 0, "")
- Local $SLASTVAL = $AARRAY[$IUBOUND]
- If $IUBOUND > -1 Then
- ReDim $AARRAY[$IUBOUND]
- EndIf
- Return $SLASTVAL
- EndFunc ;==>_ArrayPop
- Func _ArrayPush(ByRef $AARRAY, $VVALUE, $IDIRECTION = 0)
- If $IDIRECTION = Default Then $IDIRECTION = 0
- If (Not IsArray($AARRAY)) Then Return SetError(1, 0, 0)
- If UBound($AARRAY, $UBOUND_DIMENSIONS) <> 1 Then Return SetError(3, 0, 0)
- Local $IUBOUND = UBound($AARRAY) - 1
- If IsArray($VVALUE) Then
- Local $IUBOUNDS = UBound($VVALUE)
- If ($IUBOUNDS - 1) > $IUBOUND Then Return SetError(2, 0, 0)
- If $IDIRECTION Then
- For $I = $IUBOUND To $IUBOUNDS Step -1
- $AARRAY[$I] = $AARRAY[$I - $IUBOUNDS]
- Next
- For $I = 0 To $IUBOUNDS - 1
- $AARRAY[$I] = $VVALUE[$I]
- Next
- Else
- For $I = 0 To $IUBOUND - $IUBOUNDS
- $AARRAY[$I] = $AARRAY[$I + $IUBOUNDS]
- Next
- For $I = 0 To $IUBOUNDS - 1
- $AARRAY[$I + $IUBOUND - $IUBOUNDS + 1] = $VVALUE[$I]
- Next
- EndIf
- Else
- If $IUBOUND > -1 Then
- If $IDIRECTION Then
- For $I = $IUBOUND To 1 Step -1
- $AARRAY[$I] = $AARRAY[$I - 1]
- Next
- $AARRAY[0] = $VVALUE
- Else
- For $I = 0 To $IUBOUND - 1
- $AARRAY[$I] = $AARRAY[$I + 1]
- Next
- $AARRAY[$IUBOUND] = $VVALUE
- EndIf
- EndIf
- EndIf
- Return 1
- EndFunc ;==>_ArrayPush
- Func _ArrayReverse(ByRef $AARRAY, $ISTART = 0, $IEND = 0)
- If $ISTART = Default Then $ISTART = 0
- If $IEND = Default Then $IEND = 0
- If Not IsArray($AARRAY) Then Return SetError(1, 0, 0)
- If UBound($AARRAY, $UBOUND_DIMENSIONS) <> 1 Then Return SetError(3, 0, 0)
- If Not UBound($AARRAY) Then Return SetError(4, 0, 0)
- Local $VTMP, $IUBOUND = UBound($AARRAY) - 1
- If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
- If $ISTART < 0 Then $ISTART = 0
- If $ISTART > $IEND Then Return SetError(2, 0, 0)
- For $I = $ISTART To Int(($ISTART + $IEND - 1) / 2)
- $VTMP = $AARRAY[$I]
- $AARRAY[$I] = $AARRAY[$IEND]
- $AARRAY[$IEND] = $VTMP
- $IEND -= 1
- Next
- Return 1
- EndFunc ;==>_ArrayReverse
- Func _ArraySearch(Const ByRef $AARRAY, $VVALUE, $ISTART = 0, $IEND = 0, $ICASE = 0, $ICOMPARE = 0, $IFORWARD = 1, $ISUBITEM = -1, $BROW = False)
- If $ISTART = Default Then $ISTART = 0
- If $IEND = Default Then $IEND = 0
- If $ICASE = Default Then $ICASE = 0
- If $ICOMPARE = Default Then $ICOMPARE = 0
- If $IFORWARD = Default Then $IFORWARD = 1
- If $ISUBITEM = Default Then $ISUBITEM = -1
- If $BROW = Default Then $BROW = False
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY) - 1
- If $IDIM_1 = -1 Then Return SetError(3, 0, -1)
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS) - 1
- Local $BCOMPTYPE = False
- If $ICOMPARE = 2 Then
- $ICOMPARE = 0
- $BCOMPTYPE = True
- EndIf
- If $BROW Then
- If UBound($AARRAY, $UBOUND_DIMENSIONS) = 1 Then Return SetError(5, 0, -1)
- If $IEND < 1 Or $IEND > $IDIM_2 Then $IEND = $IDIM_2
- If $ISTART < 0 Then $ISTART = 0
- If $ISTART > $IEND Then Return SetError(4, 0, -1)
- Else
- If $IEND < 1 Or $IEND > $IDIM_1 Then $IEND = $IDIM_1
- If $ISTART < 0 Then $ISTART = 0
- If $ISTART > $IEND Then Return SetError(4, 0, -1)
- EndIf
- Local $ISTEP = 1
- If Not $IFORWARD Then
- Local $ITMP = $ISTART
- $ISTART = $IEND
- $IEND = $ITMP
- $ISTEP = -1
- EndIf
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- If Not $ICOMPARE Then
- If Not $ICASE Then
- For $I = $ISTART To $IEND Step $ISTEP
- If $BCOMPTYPE And VarGetType($AARRAY[$I]) <> VarGetType($VVALUE) Then ContinueLoop
- If $AARRAY[$I] = $VVALUE Then Return $I
- Next
- Else
- For $I = $ISTART To $IEND Step $ISTEP
- If $BCOMPTYPE And VarGetType($AARRAY[$I]) <> VarGetType($VVALUE) Then ContinueLoop
- If $AARRAY[$I] == $VVALUE Then Return $I
- Next
- EndIf
- Else
- For $I = $ISTART To $IEND Step $ISTEP
- If $ICOMPARE = 3 Then
- If StringRegExp($AARRAY[$I], $VVALUE) Then Return $I
- Else
- If StringInStr($AARRAY[$I], $VVALUE, $ICASE) > 0 Then Return $I
- EndIf
- Next
- EndIf
- Case 2
- Local $IDIM_SUB
- If $BROW Then
- $IDIM_SUB = $IDIM_1
- If $ISUBITEM > $IDIM_SUB Then $ISUBITEM = $IDIM_SUB
- If $ISUBITEM < 0 Then
- $ISUBITEM = 0
- Else
- $IDIM_SUB = $ISUBITEM
- EndIf
- Else
- $IDIM_SUB = $IDIM_2
- If $ISUBITEM > $IDIM_SUB Then $ISUBITEM = $IDIM_SUB
- If $ISUBITEM < 0 Then
- $ISUBITEM = 0
- Else
- $IDIM_SUB = $ISUBITEM
- EndIf
- EndIf
- For $J = $ISUBITEM To $IDIM_SUB
- If Not $ICOMPARE Then
- If Not $ICASE Then
- For $I = $ISTART To $IEND Step $ISTEP
- If $BROW Then
- If $BCOMPTYPE And VarGetType($AARRAY[$J][$I]) <> VarGetType($VVALUE) Then ContinueLoop
- If $AARRAY[$J][$I] = $VVALUE Then Return $I
- Else
- If $BCOMPTYPE And VarGetType($AARRAY[$I][$J]) <> VarGetType($VVALUE) Then ContinueLoop
- If $AARRAY[$I][$J] = $VVALUE Then Return $I
- EndIf
- Next
- Else
- For $I = $ISTART To $IEND Step $ISTEP
- If $BROW Then
- If $BCOMPTYPE And VarGetType($AARRAY[$J][$I]) <> VarGetType($VVALUE) Then ContinueLoop
- If $AARRAY[$J][$I] == $VVALUE Then Return $I
- Else
- If $BCOMPTYPE And VarGetType($AARRAY[$I][$J]) <> VarGetType($VVALUE) Then ContinueLoop
- If $AARRAY[$I][$J] == $VVALUE Then Return $I
- EndIf
- Next
- EndIf
- Else
- For $I = $ISTART To $IEND Step $ISTEP
- If $ICOMPARE = 3 Then
- If $BROW Then
- If StringRegExp($AARRAY[$J][$I], $VVALUE) Then Return $I
- Else
- If StringRegExp($AARRAY[$I][$J], $VVALUE) Then Return $I
- EndIf
- Else
- If $BROW Then
- If StringInStr($AARRAY[$J][$I], $VVALUE, $ICASE) > 0 Then Return $I
- Else
- If StringInStr($AARRAY[$I][$J], $VVALUE, $ICASE) > 0 Then Return $I
- EndIf
- EndIf
- Next
- EndIf
- Next
- Case Else
- Return SetError(2, 0, -1)
- EndSwitch
- Return SetError(6, 0, -1)
- EndFunc ;==>_ArraySearch
- Func _ArrayShuffle(ByRef $AARRAY, $ISTART_ROW = 0, $IEND_ROW = 0, $ICOL = -1)
- If $ISTART_ROW = Default Then $ISTART_ROW = 0
- If $IEND_ROW = Default Then $IEND_ROW = 0
- If $ICOL = Default Then $ICOL = -1
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS)
- If $IEND_ROW = 0 Then $IEND_ROW = $IDIM_1 - 1
- If $ISTART_ROW < 0 Or $ISTART_ROW > $IDIM_1 - 1 Then Return SetError(3, 0, -1)
- If $IEND_ROW < 1 Or $IEND_ROW > $IDIM_1 - 1 Then Return SetError(3, 0, -1)
- If $ISTART_ROW > $IEND_ROW Then Return SetError(4, 0, -1)
- Local $VTMP, $IRAND
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- For $I = $IEND_ROW To $ISTART_ROW + 1 Step -1
- $IRAND = Random($ISTART_ROW, $I, 1)
- $VTMP = $AARRAY[$I]
- $AARRAY[$I] = $AARRAY[$IRAND]
- $AARRAY[$IRAND] = $VTMP
- Next
- Return 1
- Case 2
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS)
- If $ICOL < -1 Or $ICOL > $IDIM_2 - 1 Then Return SetError(5, 0, -1)
- Local $ICOL_START, $ICOL_END
- If $ICOL = -1 Then
- $ICOL_START = 0
- $ICOL_END = $IDIM_2 - 1
- Else
- $ICOL_START = $ICOL
- $ICOL_END = $ICOL
- EndIf
- For $I = $IEND_ROW To $ISTART_ROW + 1 Step -1
- $IRAND = Random($ISTART_ROW, $I, 1)
- For $J = $ICOL_START To $ICOL_END
- $VTMP = $AARRAY[$I][$J]
- $AARRAY[$I][$J] = $AARRAY[$IRAND][$J]
- $AARRAY[$IRAND][$J] = $VTMP
- Next
- Next
- Return 1
- Case Else
- Return SetError(2, 0, -1)
- EndSwitch
- EndFunc ;==>_ARRAYSHUFFLE
- Func _ArraySort(ByRef $AARRAY, $IDESCENDING = 0, $ISTART = 0, $IEND = 0, $ISUBITEM = 0, $IPIVOT = 0)
- If $IDESCENDING = Default Then $IDESCENDING = 0
- If $ISTART = Default Then $ISTART = 0
- If $IEND = Default Then $IEND = 0
- If $ISUBITEM = Default Then $ISUBITEM = 0
- If $IPIVOT = Default Then $IPIVOT = 0
- If Not IsArray($AARRAY) Then Return SetError(1, 0, 0)
- Local $IUBOUND = UBound($AARRAY) - 1
- If $IUBOUND = -1 Then Return SetError(5, 0, 0)
- If $IEND = Default Then $IEND = 0
- If $IEND < 1 Or $IEND > $IUBOUND Or $IEND = Default Then $IEND = $IUBOUND
- If $ISTART < 0 Or $ISTART = Default Then $ISTART = 0
- If $ISTART > $IEND Then Return SetError(2, 0, 0)
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- If $IPIVOT Then
- __ARRAYDUALPIVOTSORT($AARRAY, $ISTART, $IEND)
- Else
- __ARRAYQUICKSORT1D($AARRAY, $ISTART, $IEND)
- EndIf
- If $IDESCENDING Then _ArrayReverse($AARRAY, $ISTART, $IEND)
- Case 2
- If $IPIVOT Then Return SetError(6, 0, 0)
- Local $ISUBMAX = UBound($AARRAY, $UBOUND_COLUMNS) - 1
- If $ISUBITEM > $ISUBMAX Then Return SetError(3, 0, 0)
- If $IDESCENDING Then
- $IDESCENDING = -1
- Else
- $IDESCENDING = 1
- EndIf
- __ARRAYQUICKSORT2D($AARRAY, $IDESCENDING, $ISTART, $IEND, $ISUBITEM, $ISUBMAX)
- Case Else
- Return SetError(4, 0, 0)
- EndSwitch
- Return 1
- EndFunc ;==>_ArraySort
- Func __ARRAYQUICKSORT1D(ByRef $AARRAY, Const ByRef $ISTART, Const ByRef $IEND)
- If $IEND <= $ISTART Then Return
- Local $VTMP
- If ($IEND - $ISTART) < 15 Then
- Local $VCUR
- For $I = $ISTART + 1 To $IEND
- $VTMP = $AARRAY[$I]
- If IsNumber($VTMP) Then
- For $J = $I - 1 To $ISTART Step -1
- $VCUR = $AARRAY[$J]
- If ($VTMP >= $VCUR And IsNumber($VCUR)) Or (Not IsNumber($VCUR) And StringCompare($VTMP, $VCUR) >= 0) Then ExitLoop
- $AARRAY[$J + 1] = $VCUR
- Next
- Else
- For $J = $I - 1 To $ISTART Step -1
- If (StringCompare($VTMP, $AARRAY[$J]) >= 0) Then ExitLoop
- $AARRAY[$J + 1] = $AARRAY[$J]
- Next
- EndIf
- $AARRAY[$J + 1] = $VTMP
- Next
- Return
- EndIf
- Local $L = $ISTART, $R = $IEND, $VPIVOT = $AARRAY[Int(($ISTART + $IEND) / 2)], $BNUM = IsNumber($VPIVOT)
- Do
- If $BNUM Then
- While ($AARRAY[$L] < $VPIVOT And IsNumber($AARRAY[$L])) Or (Not IsNumber($AARRAY[$L]) And StringCompare($AARRAY[$L], $VPIVOT) < 0)
- $L += 1
- WEnd
- While ($AARRAY[$R] > $VPIVOT And IsNumber($AARRAY[$R])) Or (Not IsNumber($AARRAY[$R]) And StringCompare($AARRAY[$R], $VPIVOT) > 0)
- $R -= 1
- WEnd
- Else
- While (StringCompare($AARRAY[$L], $VPIVOT) < 0)
- $L += 1
- WEnd
- While (StringCompare($AARRAY[$R], $VPIVOT) > 0)
- $R -= 1
- WEnd
- EndIf
- If $L <= $R Then
- $VTMP = $AARRAY[$L]
- $AARRAY[$L] = $AARRAY[$R]
- $AARRAY[$R] = $VTMP
- $L += 1
- $R -= 1
- EndIf
- Until $L > $R
- __ARRAYQUICKSORT1D($AARRAY, $ISTART, $R)
- __ARRAYQUICKSORT1D($AARRAY, $L, $IEND)
- EndFunc ;==>__ARRAYQUICKSORT1D
- Func __ARRAYQUICKSORT2D(ByRef $AARRAY, Const ByRef $ISTEP, Const ByRef $ISTART, Const ByRef $IEND, Const ByRef $ISUBITEM, Const ByRef $ISUBMAX)
- If $IEND <= $ISTART Then Return
- Local $VTMP, $L = $ISTART, $R = $IEND, $VPIVOT = $AARRAY[Int(($ISTART + $IEND) / 2)][$ISUBITEM], $BNUM = IsNumber($VPIVOT)
- Do
- If $BNUM Then
- While ($ISTEP * ($AARRAY[$L][$ISUBITEM] - $VPIVOT) < 0 And IsNumber($AARRAY[$L][$ISUBITEM])) Or (Not IsNumber($AARRAY[$L][$ISUBITEM]) And $ISTEP * StringCompare($AARRAY[$L][$ISUBITEM], $VPIVOT) < 0)
- $L += 1
- WEnd
- While ($ISTEP * ($AARRAY[$R][$ISUBITEM] - $VPIVOT) > 0 And IsNumber($AARRAY[$R][$ISUBITEM])) Or (Not IsNumber($AARRAY[$R][$ISUBITEM]) And $ISTEP * StringCompare($AARRAY[$R][$ISUBITEM], $VPIVOT) > 0)
- $R -= 1
- WEnd
- Else
- While ($ISTEP * StringCompare($AARRAY[$L][$ISUBITEM], $VPIVOT) < 0)
- $L += 1
- WEnd
- While ($ISTEP * StringCompare($AARRAY[$R][$ISUBITEM], $VPIVOT) > 0)
- $R -= 1
- WEnd
- EndIf
- If $L <= $R Then
- For $I = 0 To $ISUBMAX
- $VTMP = $AARRAY[$L][$I]
- $AARRAY[$L][$I] = $AARRAY[$R][$I]
- $AARRAY[$R][$I] = $VTMP
- Next
- $L += 1
- $R -= 1
- EndIf
- Until $L > $R
- __ARRAYQUICKSORT2D($AARRAY, $ISTEP, $ISTART, $R, $ISUBITEM, $ISUBMAX)
- __ARRAYQUICKSORT2D($AARRAY, $ISTEP, $L, $IEND, $ISUBITEM, $ISUBMAX)
- EndFunc ;==>__ARRAYQUICKSORT2D
- Func __ARRAYDUALPIVOTSORT(ByRef $AARRAY, $IPIVOT_LEFT, $IPIVOT_RIGHT, $BLEFTMOST = True)
- If $IPIVOT_LEFT > $IPIVOT_RIGHT Then Return
- Local $ILENGTH = $IPIVOT_RIGHT - $IPIVOT_LEFT + 1
- Local $I, $J, $K, $IAI, $IAK, $IA1, $IA2, $ILAST
- If $ILENGTH < 45 Then
- If $BLEFTMOST Then
- $I = $IPIVOT_LEFT
- While $I < $IPIVOT_RIGHT
- $J = $I
- $IAI = $AARRAY[$I + 1]
- While $IAI < $AARRAY[$J]
- $AARRAY[$J + 1] = $AARRAY[$J]
- $J -= 1
- If $J + 1 = $IPIVOT_LEFT Then ExitLoop
- WEnd
- $AARRAY[$J + 1] = $IAI
- $I += 1
- WEnd
- Else
- While 1
- If $IPIVOT_LEFT >= $IPIVOT_RIGHT Then Return 1
- $IPIVOT_LEFT += 1
- If $AARRAY[$IPIVOT_LEFT] < $AARRAY[$IPIVOT_LEFT - 1] Then ExitLoop
- WEnd
- While 1
- $K = $IPIVOT_LEFT
- $IPIVOT_LEFT += 1
- If $IPIVOT_LEFT > $IPIVOT_RIGHT Then ExitLoop
- $IA1 = $AARRAY[$K]
- $IA2 = $AARRAY[$IPIVOT_LEFT]
- If $IA1 < $IA2 Then
- $IA2 = $IA1
- $IA1 = $AARRAY[$IPIVOT_LEFT]
- EndIf
- $K -= 1
- While $IA1 < $AARRAY[$K]
- $AARRAY[$K + 2] = $AARRAY[$K]
- $K -= 1
- WEnd
- $AARRAY[$K + 2] = $IA1
- While $IA2 < $AARRAY[$K]
- $AARRAY[$K + 1] = $AARRAY[$K]
- $K -= 1
- WEnd
- $AARRAY[$K + 1] = $IA2
- $IPIVOT_LEFT += 1
- WEnd
- $ILAST = $AARRAY[$IPIVOT_RIGHT]
- $IPIVOT_RIGHT -= 1
- While $ILAST < $AARRAY[$IPIVOT_RIGHT]
- $AARRAY[$IPIVOT_RIGHT + 1] = $AARRAY[$IPIVOT_RIGHT]
- $IPIVOT_RIGHT -= 1
- WEnd
- $AARRAY[$IPIVOT_RIGHT + 1] = $ILAST
- EndIf
- Return 1
- EndIf
- Local $ISEVENTH = BitShift($ILENGTH, 3) + BitShift($ILENGTH, 6) + 1
- Local $IE1, $IE2, $IE3, $IE4, $IE5, $T
- $IE3 = Ceiling(($IPIVOT_LEFT + $IPIVOT_RIGHT) / 2)
- $IE2 = $IE3 - $ISEVENTH
- $IE1 = $IE2 - $ISEVENTH
- $IE4 = $IE3 + $ISEVENTH
- $IE5 = $IE4 + $ISEVENTH
- If $AARRAY[$IE2] < $AARRAY[$IE1] Then
- $T = $AARRAY[$IE2]
- $AARRAY[$IE2] = $AARRAY[$IE1]
- $AARRAY[$IE1] = $T
- EndIf
- If $AARRAY[$IE3] < $AARRAY[$IE2] Then
- $T = $AARRAY[$IE3]
- $AARRAY[$IE3] = $AARRAY[$IE2]
- $AARRAY[$IE2] = $T
- If $T < $AARRAY[$IE1] Then
- $AARRAY[$IE2] = $AARRAY[$IE1]
- $AARRAY[$IE1] = $T
- EndIf
- EndIf
- If $AARRAY[$IE4] < $AARRAY[$IE3] Then
- $T = $AARRAY[$IE4]
- $AARRAY[$IE4] = $AARRAY[$IE3]
- $AARRAY[$IE3] = $T
- If $T < $AARRAY[$IE2] Then
- $AARRAY[$IE3] = $AARRAY[$IE2]
- $AARRAY[$IE2] = $T
- If $T < $AARRAY[$IE1] Then
- $AARRAY[$IE2] = $AARRAY[$IE1]
- $AARRAY[$IE1] = $T
- EndIf
- EndIf
- EndIf
- If $AARRAY[$IE5] < $AARRAY[$IE4] Then
- $T = $AARRAY[$IE5]
- $AARRAY[$IE5] = $AARRAY[$IE4]
- $AARRAY[$IE4] = $T
- If $T < $AARRAY[$IE3] Then
- $AARRAY[$IE4] = $AARRAY[$IE3]
- $AARRAY[$IE3] = $T
- If $T < $AARRAY[$IE2] Then
- $AARRAY[$IE3] = $AARRAY[$IE2]
- $AARRAY[$IE2] = $T
- If $T < $AARRAY[$IE1] Then
- $AARRAY[$IE2] = $AARRAY[$IE1]
- $AARRAY[$IE1] = $T
- EndIf
- EndIf
- EndIf
- EndIf
- Local $ILESS = $IPIVOT_LEFT
- Local $IGREATER = $IPIVOT_RIGHT
- If (($AARRAY[$IE1] <> $AARRAY[$IE2]) And ($AARRAY[$IE2] <> $AARRAY[$IE3]) And ($AARRAY[$IE3] <> $AARRAY[$IE4]) And ($AARRAY[$IE4] <> $AARRAY[$IE5])) Then
- Local $IPIVOT_1 = $AARRAY[$IE2]
- Local $IPIVOT_2 = $AARRAY[$IE4]
- $AARRAY[$IE2] = $AARRAY[$IPIVOT_LEFT]
- $AARRAY[$IE4] = $AARRAY[$IPIVOT_RIGHT]
- Do
- $ILESS += 1
- Until $AARRAY[$ILESS] >= $IPIVOT_1
- Do
- $IGREATER -= 1
- Until $AARRAY[$IGREATER] <= $IPIVOT_2
- $K = $ILESS
- While $K <= $IGREATER
- $IAK = $AARRAY[$K]
- If $IAK < $IPIVOT_1 Then
- $AARRAY[$K] = $AARRAY[$ILESS]
- $AARRAY[$ILESS] = $IAK
- $ILESS += 1
- ElseIf $IAK > $IPIVOT_2 Then
- While $AARRAY[$IGREATER] > $IPIVOT_2
- $IGREATER -= 1
- If $IGREATER + 1 = $K Then ExitLoop 2
- WEnd
- If $AARRAY[$IGREATER] < $IPIVOT_1 Then
- $AARRAY[$K] = $AARRAY[$ILESS]
- $AARRAY[$ILESS] = $AARRAY[$IGREATER]
- $ILESS += 1
- Else
- $AARRAY[$K] = $AARRAY[$IGREATER]
- EndIf
- $AARRAY[$IGREATER] = $IAK
- $IGREATER -= 1
- EndIf
- $K += 1
- WEnd
- $AARRAY[$IPIVOT_LEFT] = $AARRAY[$ILESS - 1]
- $AARRAY[$ILESS - 1] = $IPIVOT_1
- $AARRAY[$IPIVOT_RIGHT] = $AARRAY[$IGREATER + 1]
- $AARRAY[$IGREATER + 1] = $IPIVOT_2
- __ARRAYDUALPIVOTSORT($AARRAY, $IPIVOT_LEFT, $ILESS - 2, True)
- __ARRAYDUALPIVOTSORT($AARRAY, $IGREATER + 2, $IPIVOT_RIGHT, False)
- If ($ILESS < $IE1) And ($IE5 < $IGREATER) Then
- While $AARRAY[$ILESS] = $IPIVOT_1
- $ILESS += 1
- WEnd
- While $AARRAY[$IGREATER] = $IPIVOT_2
- $IGREATER -= 1
- WEnd
- $K = $ILESS
- While $K <= $IGREATER
- $IAK = $AARRAY[$K]
- If $IAK = $IPIVOT_1 Then
- $AARRAY[$K] = $AARRAY[$ILESS]
- $AARRAY[$ILESS] = $IAK
- $ILESS += 1
- ElseIf $IAK = $IPIVOT_2 Then
- While $AARRAY[$IGREATER] = $IPIVOT_2
- $IGREATER -= 1
- If $IGREATER + 1 = $K Then ExitLoop 2
- WEnd
- If $AARRAY[$IGREATER] = $IPIVOT_1 Then
- $AARRAY[$K] = $AARRAY[$ILESS]
- $AARRAY[$ILESS] = $IPIVOT_1
- $ILESS += 1
- Else
- $AARRAY[$K] = $AARRAY[$IGREATER]
- EndIf
- $AARRAY[$IGREATER] = $IAK
- $IGREATER -= 1
- EndIf
- $K += 1
- WEnd
- EndIf
- __ARRAYDUALPIVOTSORT($AARRAY, $ILESS, $IGREATER, False)
- Else
- Local $IPIVOT = $AARRAY[$IE3]
- $K = $ILESS
- While $K <= $IGREATER
- If $AARRAY[$K] = $IPIVOT Then
- $K += 1
- ContinueLoop
- EndIf
- $IAK = $AARRAY[$K]
- If $IAK < $IPIVOT Then
- $AARRAY[$K] = $AARRAY[$ILESS]
- $AARRAY[$ILESS] = $IAK
- $ILESS += 1
- Else
- While $AARRAY[$IGREATER] > $IPIVOT
- $IGREATER -= 1
- WEnd
- If $AARRAY[$IGREATER] < $IPIVOT Then
- $AARRAY[$K] = $AARRAY[$ILESS]
- $AARRAY[$ILESS] = $AARRAY[$IGREATER]
- $ILESS += 1
- Else
- $AARRAY[$K] = $IPIVOT
- EndIf
- $AARRAY[$IGREATER] = $IAK
- $IGREATER -= 1
- EndIf
- $K += 1
- WEnd
- __ARRAYDUALPIVOTSORT($AARRAY, $IPIVOT_LEFT, $ILESS - 1, True)
- __ARRAYDUALPIVOTSORT($AARRAY, $IGREATER + 1, $IPIVOT_RIGHT, False)
- EndIf
- EndFunc ;==>__ARRAYDUALPIVOTSORT
- Func _ArraySwap(ByRef $AARRAY, $IINDEX_1, $IINDEX_2, $BCOL = False, $ISTART = -1, $IEND = -1)
- If $BCOL = Default Then $BCOL = False
- If $ISTART = Default Then $ISTART = -1
- If $IEND = Default Then $IEND = -1
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS) - 1
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS) - 1
- If $IDIM_2 = -1 Then
- $BCOL = False
- $ISTART = -1
- $IEND = -1
- EndIf
- If $ISTART > $IEND Then Return SetError(5, 0, -1)
- If $BCOL Then
- If $IINDEX_1 < 0 Or $IINDEX_2 > $IDIM_2 Then Return SetError(3, 0, -1)
- If $ISTART = -1 Then $ISTART = 0
- If $IEND = -1 Then $IEND = $IDIM_1
- Else
- If $IINDEX_1 < 0 Or $IINDEX_2 > $IDIM_1 Then Return SetError(3, 0, -1)
- If $ISTART = -1 Then $ISTART = 0
- If $IEND = -1 Then $IEND = $IDIM_2
- EndIf
- Local $VTMP
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- $VTMP = $AARRAY[$IINDEX_1]
- $AARRAY[$IINDEX_1] = $AARRAY[$IINDEX_2]
- $AARRAY[$IINDEX_2] = $VTMP
- Case 2
- If $ISTART < -1 Or $IEND < -1 Then Return SetError(4, 0, -1)
- If $BCOL Then
- If $ISTART > $IDIM_1 Or $IEND > $IDIM_1 Then Return SetError(4, 0, -1)
- For $J = $ISTART To $IEND
- $VTMP = $AARRAY[$J][$IINDEX_1]
- $AARRAY[$J][$IINDEX_1] = $AARRAY[$J][$IINDEX_2]
- $AARRAY[$J][$IINDEX_2] = $VTMP
- Next
- Else
- If $ISTART > $IDIM_2 Or $IEND > $IDIM_2 Then Return SetError(4, 0, -1)
- For $J = $ISTART To $IEND
- $VTMP = $AARRAY[$IINDEX_1][$J]
- $AARRAY[$IINDEX_1][$J] = $AARRAY[$IINDEX_2][$J]
- $AARRAY[$IINDEX_2][$J] = $VTMP
- Next
- EndIf
- Case Else
- Return SetError(2, 0, -1)
- EndSwitch
- Return 1
- EndFunc ;==>_ArraySwap
- Func _ArrayToClip(Const ByRef $AARRAY, $SDELIM_COL = "|", $ISTART_ROW = -1, $IEND_ROW = -1, $SDELIM_ROW = @CRLF, $ISTART_COL = -1, $IEND_COL = -1)
- Local $SRESULT = _ArrayToString($AARRAY, $SDELIM_COL, $ISTART_ROW, $IEND_ROW, $SDELIM_ROW, $ISTART_COL, $IEND_COL)
- If @error Then Return SetError(@error, 0, 0)
- If ClipPut($SRESULT) Then Return 1
- Return SetError(-1, 0, 0)
- EndFunc ;==>_ArrayToClip
- Func _ArrayToString(Const ByRef $AARRAY, $SDELIM_COL = "|", $ISTART_ROW = -1, $IEND_ROW = -1, $SDELIM_ROW = @CRLF, $ISTART_COL = -1, $IEND_COL = -1)
- If $SDELIM_COL = Default Then $SDELIM_COL = "|"
- If $SDELIM_ROW = Default Then $SDELIM_ROW = @CRLF
- If $ISTART_ROW = Default Then $ISTART_ROW = -1
- If $IEND_ROW = Default Then $IEND_ROW = -1
- If $ISTART_COL = Default Then $ISTART_COL = -1
- If $IEND_COL = Default Then $IEND_COL = -1
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS) - 1
- If $ISTART_ROW = -1 Then $ISTART_ROW = 0
- If $IEND_ROW = -1 Then $IEND_ROW = $IDIM_1
- If $ISTART_ROW < -1 Or $IEND_ROW < -1 Then Return SetError(3, 0, -1)
- If $ISTART_ROW > $IDIM_1 Or $IEND_ROW > $IDIM_1 Then Return SetError(3, 0, "")
- If $ISTART_ROW > $IEND_ROW Then Return SetError(4, 0, -1)
- Local $SRET = ""
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- For $I = $ISTART_ROW To $IEND_ROW
- $SRET &= $AARRAY[$I] & $SDELIM_COL
- Next
- Return StringTrimRight($SRET, StringLen($SDELIM_COL))
- Case 2
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS) - 1
- If $ISTART_COL = -1 Then $ISTART_COL = 0
- If $IEND_COL = -1 Then $IEND_COL = $IDIM_2
- If $ISTART_COL < -1 Or $IEND_COL < -1 Then Return SetError(5, 0, -1)
- If $ISTART_COL > $IDIM_2 Or $IEND_COL > $IDIM_2 Then Return SetError(5, 0, -1)
- If $ISTART_COL > $IEND_COL Then Return SetError(6, 0, -1)
- For $I = $ISTART_ROW To $IEND_ROW
- For $J = $ISTART_COL To $IEND_COL
- $SRET &= $AARRAY[$I][$J] & $SDELIM_COL
- Next
- $SRET = StringTrimRight($SRET, StringLen($SDELIM_COL)) & $SDELIM_ROW
- Next
- Return StringTrimRight($SRET, StringLen($SDELIM_ROW))
- Case Else
- Return SetError(2, 0, -1)
- EndSwitch
- Return 1
- EndFunc ;==>_ArrayToString
- Func _ArrayTranspose(ByRef $AARRAY)
- Switch UBound($AARRAY, 0)
- Case 0
- Return SetError(2, 0, 0)
- Case 1
- Local $ATEMP[1][UBound($AARRAY)]
- For $I = 0 To UBound($AARRAY) - 1
- $ATEMP[0][$I] = $AARRAY[$I]
- Next
- $AARRAY = $ATEMP
- Case 2
- Local $IDIM_1 = UBound($AARRAY, 1), $IDIM_2 = UBound($AARRAY, 2)
- If $IDIM_1 <> $IDIM_2 Then
- Local $ATEMP[$IDIM_2][$IDIM_1]
- For $I = 0 To $IDIM_1 - 1
- For $J = 0 To $IDIM_2 - 1
- $ATEMP[$J][$I] = $AARRAY[$I][$J]
- Next
- Next
- $AARRAY = $ATEMP
- Else
- Local $VELEMENT
- For $I = 0 To $IDIM_1 - 1
- For $J = $I + 1 To $IDIM_2 - 1
- $VELEMENT = $AARRAY[$I][$J]
- $AARRAY[$I][$J] = $AARRAY[$J][$I]
- $AARRAY[$J][$I] = $VELEMENT
- Next
- Next
- EndIf
- Case Else
- Return SetError(1, 0, 0)
- EndSwitch
- Return 1
- EndFunc ;==>_ARRAYTRANSPOSE
- Func _ArrayTrim(ByRef $AARRAY, $ITRIMNUM, $IDIRECTION = 0, $ISTART = 0, $IEND = 0, $ISUBITEM = 0)
- If $IDIRECTION = Default Then $IDIRECTION = 0
- If $ISTART = Default Then $ISTART = 0
- If $IEND = Default Then $IEND = 0
- If $ISUBITEM = Default Then $ISUBITEM = 0
- If Not IsArray($AARRAY) Then Return SetError(1, 0, 0)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS) - 1
- If $IEND = 0 Then $IEND = $IDIM_1
- If $ISTART > $IEND Then Return SetError(3, 0, -1)
- If $ISTART < 0 Or $IEND < 0 Then Return SetError(3, 0, -1)
- If $ISTART > $IDIM_1 Or $IEND > $IDIM_1 Then Return SetError(3, 0, -1)
- If $ISTART > $IEND Then Return SetError(4, 0, -1)
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- If $IDIRECTION Then
- For $I = $ISTART To $IEND
- $AARRAY[$I] = StringTrimRight($AARRAY[$I], $ITRIMNUM)
- Next
- Else
- For $I = $ISTART To $IEND
- $AARRAY[$I] = StringTrimLeft($AARRAY[$I], $ITRIMNUM)
- Next
- EndIf
- Case 2
- Local $IDIM_2 = UBound($AARRAY, $UBOUND_COLUMNS) - 1
- If $ISUBITEM < 0 Or $ISUBITEM > $IDIM_2 Then Return SetError(5, 0, -1)
- If $IDIRECTION Then
- For $I = $ISTART To $IEND
- $AARRAY[$I][$ISUBITEM] = StringTrimRight($AARRAY[$I][$ISUBITEM], $ITRIMNUM)
- Next
- Else
- For $I = $ISTART To $IEND
- $AARRAY[$I][$ISUBITEM] = StringTrimLeft($AARRAY[$I][$ISUBITEM], $ITRIMNUM)
- Next
- EndIf
- Case Else
- Return SetError(2, 0, 0)
- EndSwitch
- Return 1
- EndFunc ;==>_ArrayTrim
- Func _ArrayUnique(Const ByRef $AARRAY, $ICOLUMN = 0, $IBASE = 0, $ICASE = 0, $ICOUNT = $ARRAYUNIQUE_COUNT, $IINTTYPE = $ARRAYUNIQUE_AUTO)
- If $ICOLUMN = Default Then $ICOLUMN = 0
- If $IBASE = Default Then $IBASE = 0
- If $ICASE = Default Then $ICASE = 0
- If $ICOUNT = Default Then $ICOUNT = $ARRAYUNIQUE_COUNT
- If UBound($AARRAY, $UBOUND_ROWS) = 0 Then Return SetError(1, 0, 0)
- Local $IDIMS = UBound($AARRAY, $UBOUND_DIMENSIONS), $INUMCOLUMNS = UBound($AARRAY, $UBOUND_COLUMNS)
- If $IDIMS > 2 Then Return SetError(2, 0, 0)
- If $IBASE < 0 Or $IBASE > 1 Or (Not IsInt($IBASE)) Then Return SetError(3, 0, 0)
- If $ICASE < 0 Or $ICASE > 1 Or (Not IsInt($ICASE)) Then Return SetError(3, 0, 0)
- If $ICOUNT < 0 Or $ICOUNT > 1 Or (Not IsInt($ICOUNT)) Then Return SetError(4, 0, 0)
- If $IINTTYPE < 0 Or $IINTTYPE > 4 Or (Not IsInt($IINTTYPE)) Then Return SetError(5, 0, 0)
- If $ICOLUMN < 0 Or ($INUMCOLUMNS = 0 And $ICOLUMN > 0) Or ($INUMCOLUMNS > 0 And $ICOLUMN >= $INUMCOLUMNS) Then Return SetError(6, 0, 0)
- If $IINTTYPE = $ARRAYUNIQUE_AUTO Then
- Local $BINT, $SVARTYPE
- If $IDIMS = 1 Then
- $BINT = IsInt($AARRAY[$IBASE])
- $SVARTYPE = VarGetType($AARRAY[$IBASE])
- Else
- $BINT = IsInt($AARRAY[$IBASE][$ICOLUMN])
- $SVARTYPE = VarGetType($AARRAY[$IBASE][$ICOLUMN])
- EndIf
- If $BINT And $SVARTYPE = "Int64" Then
- $IINTTYPE = $ARRAYUNIQUE_FORCE64
- Else
- $IINTTYPE = $ARRAYUNIQUE_FORCE32
- EndIf
- EndIf
- ObjEvent("AutoIt.Error", __ARRAYUNIQUE_AUTOERRFUNC)
- Local $ODICTIONARY = ObjCreate("Scripting.Dictionary")
- $ODICTIONARY.CompareMode = Number(Not $ICASE)
- Local $VELEM, $STYPE, $VKEY, $BCOMERROR = False
- For $I = $IBASE To UBound($AARRAY) - 1
- If $IDIMS = 1 Then
- $VELEM = $AARRAY[$I]
- Else
- $VELEM = $AARRAY[$I][$ICOLUMN]
- EndIf
- Switch $IINTTYPE
- Case $ARRAYUNIQUE_FORCE32
- $ODICTIONARY.Item($VELEM)
- If @error Then
- $BCOMERROR = True
- ExitLoop
- EndIf
- Case $ARRAYUNIQUE_FORCE64
- $STYPE = VarGetType($VELEM)
- If $STYPE = "Int32" Then
- $BCOMERROR = True
- ExitLoop
- EndIf
- $VKEY = "#" & $STYPE & "#" & String($VELEM)
- If Not $ODICTIONARY.Item($VKEY) Then
- $ODICTIONARY($VKEY) = $VELEM
- EndIf
- Case $ARRAYUNIQUE_MATCH
- $STYPE = VarGetType($VELEM)
- If StringLeft($STYPE, 3) = "Int" Then
- $VKEY = "#Int#" & String($VELEM)
- Else
- $VKEY = "#" & $STYPE & "#" & String($VELEM)
- EndIf
- If Not $ODICTIONARY.Item($VKEY) Then
- $ODICTIONARY($VKEY) = $VELEM
- EndIf
- Case $ARRAYUNIQUE_DISTINCT
- $VKEY = "#" & VarGetType($VELEM) & "#" & String($VELEM)
- If Not $ODICTIONARY.Item($VKEY) Then
- $ODICTIONARY($VKEY) = $VELEM
- EndIf
- EndSwitch
- Next
- Local $AVALUES, $J = 0
- If $BCOMERROR Then
- Return SetError(7, 0, 0)
- ElseIf $IINTTYPE <> $ARRAYUNIQUE_FORCE32 Then
- Local $AVALUES[$ODICTIONARY.Count]
- For $VKEY In $ODICTIONARY.Keys()
- $AVALUES[$J] = $ODICTIONARY($VKEY)
- If StringLeft($VKEY, 5) = "#Ptr#" Then
- $AVALUES[$J] = Ptr($AVALUES[$J])
- EndIf
- $J += 1
- Next
- Else
- $AVALUES = $ODICTIONARY.Keys()
- EndIf
- If $ICOUNT Then
- _ArrayInsert($AVALUES, 0, $ODICTIONARY.Count)
- EndIf
- Return $AVALUES
- EndFunc ;==>_ArrayUnique
- Func _Array1DToHistogram($AARRAY, $ISIZING = 100)
- If UBound($AARRAY, 0) > 1 Then Return SetError(1, 0, "")
- $ISIZING = $ISIZING * 8
- Local $T, $N, $IMIN = 0, $IMAX = 0, $IOFFSET = 0
- For $I = 0 To UBound($AARRAY) - 1
- $T = $AARRAY[$I]
- $T = IsNumber($T) ? Round($T) : 0
- If $T < $IMIN Then $IMIN = $T
- If $T > $IMAX Then $IMAX = $T
- Next
- Local $IRANGE = Int(Round(($IMAX - $IMIN) / 8)) * 8
- Local $ISPACERATIO = 4
- For $I = 0 To UBound($AARRAY) - 1
- $T = $AARRAY[$I]
- If $T Then
- $N = Abs(Round(($ISIZING * $T) / $IRANGE) / 8)
- $AARRAY[$I] = ""
- If $T > 0 Then
- If $IMIN Then
- $IOFFSET = Int(Abs(Round(($ISIZING * $IMIN) / $IRANGE) / 8) / 8 * $ISPACERATIO)
- $AARRAY[$I] = __ARRAY_STRINGREPEAT(ChrW(32), $IOFFSET)
- EndIf
- Else
- If $IMIN <> $T Then
- $IOFFSET = Int(Abs(Round(($ISIZING * ($T - $IMIN)) / $IRANGE) / 8) / 8 * $ISPACERATIO)
- $AARRAY[$I] = __ARRAY_STRINGREPEAT(ChrW(32), $IOFFSET)
- EndIf
- EndIf
- $AARRAY[$I] &= __ARRAY_STRINGREPEAT(ChrW(9608), Int($N / 8))
- $N = Mod($N, 8)
- If $N > 0 Then $AARRAY[$I] &= ChrW(9608 + 8 - $N)
- $AARRAY[$I] &= " " & $T
- Else
- $AARRAY[$I] = ""
- EndIf
- Next
- Return $AARRAY
- EndFunc ;==>_ARRAY1DTOHISTOGRAM
- Func __ARRAY_STRINGREPEAT($SSTRING, $IREPEATCOUNT)
- $IREPEATCOUNT = Int($IREPEATCOUNT)
- If StringLen($SSTRING) < 1 Or $IREPEATCOUNT <= 0 Then Return SetError(1, 0, "")
- Local $SRESULT = ""
- While $IREPEATCOUNT > 1
- If BitAND($IREPEATCOUNT, 1) Then $SRESULT &= $SSTRING
- $SSTRING &= $SSTRING
- $IREPEATCOUNT = BitShift($IREPEATCOUNT, 1)
- WEnd
- Return $SSTRING & $SRESULT
- EndFunc ;==>__ARRAY_STRINGREPEAT
- Func __ARRAY_EXETERINTERNAL(ByRef $AARRAY, $ISTART, $ISIZE, $SDELIMITER, ByRef $AIDX, ByRef $ARESULT, ByRef $ICOUNT)
- If $ISTART == $ISIZE - 1 Then
- For $I = 0 To $ISIZE - 1
- $ARESULT[$ICOUNT] &= $AARRAY[$AIDX[$I]] & $SDELIMITER
- Next
- If $SDELIMITER <> "" Then $ARESULT[$ICOUNT] = StringTrimRight($ARESULT[$ICOUNT], StringLen($SDELIMITER))
- $ICOUNT += 1
- Else
- Local $ITEMP
- For $I = $ISTART To $ISIZE - 1
- $ITEMP = $AIDX[$I]
- $AIDX[$I] = $AIDX[$ISTART]
- $AIDX[$ISTART] = $ITEMP
- __ARRAY_EXETERINTERNAL($AARRAY, $ISTART + 1, $ISIZE, $SDELIMITER, $AIDX, $ARESULT, $ICOUNT)
- $AIDX[$ISTART] = $AIDX[$I]
- $AIDX[$I] = $ITEMP
- Next
- EndIf
- EndFunc ;==>__ARRAY_EXETERINTERNAL
- Func __ARRAY_COMBINATIONS($IN, $IR)
- Local $I_TOTAL = 1
- For $I = $IR To 1 Step -1
- $I_TOTAL *= ($IN / $I)
- $IN -= 1
- Next
- Return Round($I_TOTAL)
- EndFunc ;==>__ARRAY_COMBINATIONS
- Func __ARRAY_GETNEXT($IN, $IR, ByRef $ILEFT, $ITOTAL, ByRef $AIDX)
- If $ILEFT == $ITOTAL Then
- $ILEFT -= 1
- Return
- EndIf
- Local $I = $IR - 1
- While $AIDX[$I] == $IN - $IR + $I
- $I -= 1
- WEnd
- $AIDX[$I] += 1
- For $J = $I + 1 To $IR - 1
- $AIDX[$J] = $AIDX[$I] + $J - $I
- Next
- $ILEFT -= 1
- EndFunc ;==>__ARRAY_GETNEXT
- Func __ARRAY_MINMAXINDEX(Const ByRef $AARRAY, $ICOMPNUMERIC, $ISTART, $IEND, $ISUBITEM, $FUCOMPARISON)
- If $ICOMPNUMERIC = Default Then $ICOMPNUMERIC = 0
- If $ICOMPNUMERIC <> 1 Then $ICOMPNUMERIC = 0
- If $ISTART = Default Then $ISTART = 0
- If $IEND = Default Then $IEND = 0
- If $ISUBITEM = Default Then $ISUBITEM = 0
- If Not IsArray($AARRAY) Then Return SetError(1, 0, -1)
- Local $IDIM_1 = UBound($AARRAY, $UBOUND_ROWS) - 1
- If $IDIM_1 < 0 Then Return SetError(1, 0, -1)
- If $IEND = -1 Then $IEND = $IDIM_1
- If $ISTART = -1 Then $ISTART = 0
- If $ISTART < -1 Or $IEND < -1 Then Return SetError(3, 0, -1)
- If $ISTART > $IDIM_1 Or $IEND > $IDIM_1 Then Return SetError(3, 0, -1)
- If $ISTART > $IEND Then Return SetError(4, 0, -1)
- If $IDIM_1 < 0 Then Return SetError(5, 0, -1)
- Local $IMAXMININDEX = $ISTART
- Switch UBound($AARRAY, $UBOUND_DIMENSIONS)
- Case 1
- If $ICOMPNUMERIC Then
- For $I = $ISTART To $IEND
- If $FUCOMPARISON(Number($AARRAY[$I]), Number($AARRAY[$IMAXMININDEX])) Then $IMAXMININDEX = $I
- Next
- Else
- For $I = $ISTART To $IEND
- If $FUCOMPARISON($AARRAY[$I], $AARRAY[$IMAXMININDEX]) Then $IMAXMININDEX = $I
- Next
- EndIf
- Case 2
- If $ISUBITEM < 0 Or $ISUBITEM > UBound($AARRAY, $UBOUND_COLUMNS) - 1 Then Return SetError(6, 0, -1)
- If $ICOMPNUMERIC Then
- For $I = $ISTART To $IEND
- If $FUCOMPARISON(Number($AARRAY[$I][$ISUBITEM]), Number($AARRAY[$IMAXMININDEX][$ISUBITEM])) Then $IMAXMININDEX = $I
- Next
- Else
- For $I = $ISTART To $IEND
- If $FUCOMPARISON($AARRAY[$I][$ISUBITEM], $AARRAY[$IMAXMININDEX][$ISUBITEM]) Then $IMAXMININDEX = $I
- Next
- EndIf
- Case Else
- Return SetError(2, 0, -1)
- EndSwitch
- Return $IMAXMININDEX
- EndFunc ;==>__ARRAY_MINMAXINDEX
- Func __ARRAY_GREATERTHAN($VVALUE1, $VVALUE2)
- Return $VVALUE1 > $VVALUE2
- EndFunc ;==>__ARRAY_GREATERTHAN
- Func __ARRAY_LESSTHAN($VVALUE1, $VVALUE2)
- Return $VVALUE1 < $VVALUE2
- EndFunc ;==>__ARRAY_LESSTHAN
- Func __ARRAYUNIQUE_AUTOERRFUNC()
- EndFunc ;==>__ARRAYUNIQUE_AUTOERRFUNC
- Global Const $HDF_LEFT = 0
- Global Const $HDF_RIGHT = 1
- Global Const $HDF_CENTER = 2
- Global Const $HDF_JUSTIFYMASK = 3
- Global Const $HDF_BITMAP_ON_RIGHT = 4096
- Global Const $HDF_BITMAP = 8192
- Global Const $HDF_STRING = 16384
- Global Const $HDF_OWNERDRAW = 32768
- Global Const $HDF_DISPLAYMASK = 61440
- Global Const $HDF_RTLREADING = 4
- Global Const $HDF_SORTDOWN = 512
- Global Const $HDF_IMAGE = 2048
- Global Const $HDF_SORTUP = 1024
- Global Const $HDF_FLAGMASK = 3588
- Global Const $HDI_WIDTH = 1
- Global Const $HDI_TEXT = 2
- Global Const $HDI_FORMAT = 4
- Global Const $HDI_PARAM = 8
- Global Const $HDI_BITMAP = 16
- Global Const $HDI_IMAGE = 32
- Global Const $HDI_DI_SETITEM = 64
- Global Const $HDI_ORDER = 128
- Global Const $HDI_FILTER = 256
- Global Const $HHT_NOWHERE = 1
- Global Const $HHT_ONHEADER = 2
- Global Const $HHT_ONDIVIDER = 4
- Global Const $HHT_ONDIVOPEN = 8
- Global Const $HHT_ONFILTER = 16
- Global Const $HHT_ONFILTERBUTTON = 32
- Global Const $HHT_ABOVE = 256
- Global Const $HHT_BELOW = 512
- Global Const $HHT_TORIGHT = 1024
- Global Const $HHT_TOLEFT = 2048
- Global Const $HDM_FIRST = 4608
- Global Const $HDM_CLEARFILTER = $HDM_FIRST + 24
- Global Const $HDM_CREATEDRAGIMAGE = $HDM_FIRST + 16
- Global Const $HDM_DELETEITEM = $HDM_FIRST + 2
- Global Const $HDM_EDITFILTER = $HDM_FIRST + 23
- Global Const $HDM_GETBITMAPMARGIN = $HDM_FIRST + 21
- Global Const $HDM_GETFOCUSEDITEM = $HDM_FIRST + 27
- Global Const $HDM_GETIMAGELIST = $HDM_FIRST + 9
- Global Const $HDM_GETITEMA = $HDM_FIRST + 3
- Global Const $HDM_GETITEMW = $HDM_FIRST + 11
- Global Const $HDM_GETITEMCOUNT = $HDM_FIRST + 0
- Global Const $HDM_GETITEMDROPDOWNRECT = $HDM_FIRST + 25
- Global Const $HDM_GETITEMRECT = $HDM_FIRST + 7
- Global Const $HDM_GETORDERARRAY = $HDM_FIRST + 17
- Global Const $HDM_GETOVERFLOWRECT = $HDM_FIRST + 26
- Global Const $HDM_GETUNICODEFORMAT = 8192 + 6
- Global Const $HDM_HITTEST = $HDM_FIRST + 6
- Global Const $HDM_INSERTITEMA = $HDM_FIRST + 1
- Global Const $HDM_INSERTITEMW = $HDM_FIRST + 10
- Global Const $HDM_LAYOUT = $HDM_FIRST + 5
- Global Const $HDM_ORDERTOINDEX = $HDM_FIRST + 15
- Global Const $HDM_SETBITMAPMARGIN = $HDM_FIRST + 20
- Global Const $HDM_SETFILTERCHANGETIMEOUT = $HDM_FIRST + 22
- Global Const $HDM_SETFOCUSEDITEM = $HDM_FIRST + 28
- Global Const $HDM_SETHOTDIVIDER = $HDM_FIRST + 19
- Global Const $HDM_SETIMAGELIST = $HDM_FIRST + 8
- Global Const $HDM_SETITEMA = $HDM_FIRST + 4
- Global Const $HDM_SETITEMW = $HDM_FIRST + 12
- Global Const $HDM_SETORDERARRAY = $HDM_FIRST + 18
- Global Const $HDM_SETUNICODEFORMAT = 8192 + 5
- Global Const $HDN_FIRST = -300
- Global Const $HDN_BEGINDRAG = $HDN_FIRST - 10
- Global Const $HDN_BEGINTRACK = $HDN_FIRST - 6
- Global Const $HDN_DIVIDERDBLCLICK = $HDN_FIRST - 5
- Global Const $HDN_ENDDRAG = $HDN_FIRST - 11
- Global Const $HDN_ENDTRACK = $HDN_FIRST - 7
- Global Const $HDN_FILTERBTNCLICK = $HDN_FIRST - 13
- Global Const $HDN_FILTERCHANGE = $HDN_FIRST - 12
- Global Const $HDN_GETDISPINFO = $HDN_FIRST - 9
- Global Const $HDN_ITEMCHANGED = $HDN_FIRST - 1
- Global Const $HDN_ITEMCHANGING = $HDN_FIRST + 0
- Global Const $HDN_ITEMCLICK = $HDN_FIRST - 2
- Global Const $HDN_ITEMDBLCLICK = $HDN_FIRST - 3
- Global Const $HDN_TRACK = $HDN_FIRST - 8
- Global Const $HDN_BEGINTRACKW = $HDN_FIRST - 26
- Global Const $HDN_DIVIDERDBLCLICKW = $HDN_FIRST - 25
- Global Const $HDN_ENDTRACKW = $HDN_FIRST - 27
- Global Const $HDN_GETDISPINFOW = $HDN_FIRST - 29
- Global Const $HDN_ITEMCHANGEDW = $HDN_FIRST - 21
- Global Const $HDN_ITEMCHANGINGW = $HDN_FIRST - 20
- Global Const $HDN_ITEMCLICKW = $HDN_FIRST - 22
- Global Const $HDN_ITEMDBLCLICKW = $HDN_FIRST - 23
- Global Const $HDN_TRACKW = $HDN_FIRST - 28
- Global Const $HDS_BUTTONS = 2
- Global Const $HDS_CHECKBOXES = 1024
- Global Const $HDS_DRAGDROP = 64
- Global Const $HDS_FILTERBAR = 256
- Global Const $HDS_FLAT = 512
- Global Const $HDS_FULLDRAG = 128
- Global Const $HDS_HIDDEN = 8
- Global Const $HDS_HORZ = 0
- Global Const $HDS_HOTTRACK = 4
- Global Const $HDS_NOSIZING = 2048
- Global Const $HDS_OVERFLOW = 4096
- Global Const $HDS_DEFAULT = 70
- Global Const $GMEM_FIXED = 0
- Global Const $GMEM_MOVEABLE = 2
- Global Const $GMEM_NOCOMPACT = 16
- Global Const $GMEM_NODISCARD = 32
- Global Const $GMEM_ZEROINIT = 64
- Global Const $GMEM_MODIFY = 128
- Global Const $GMEM_DISCARDABLE = 256
- Global Const $GMEM_NOT_BANKED = 4096
- Global Const $GMEM_SHARE = 8192
- Global Const $GMEM_DDESHARE = 8192
- Global Const $GMEM_NOTIFY = 16384
- Global Const $GMEM_LOWER = 4096
- Global Const $GMEM_VALID_FLAGS = 32626
- Global Const $GMEM_INVALID_HANDLE = 32768
- Global Const $GPTR = BitOR($GMEM_FIXED, $GMEM_ZEROINIT)
- Global Const $GHND = BitOR($GMEM_MOVEABLE, $GMEM_ZEROINIT)
- Global Const $MEM_COMMIT = 4096
- Global Const $MEM_RESERVE = 8192
- Global Const $MEM_TOP_DOWN = 1048576
- Global Const $MEM_SHARED = 134217728
- Global Const $PAGE_NOACCESS = 1
- Global Const $PAGE_READONLY = 2
- Global Const $PAGE_READWRITE = 4
- Global Const $PAGE_EXECUTE = 16
- Global Const $PAGE_EXECUTE_READ = 32
- Global Const $PAGE_EXECUTE_READWRITE = 64
- Global Const $PAGE_EXECUTE_WRITECOPY = 128
- Global Const $PAGE_GUARD = 256
- Global Const $PAGE_NOCACHE = 512
- Global Const $PAGE_WRITECOMBINE = 1024
- Global Const $PAGE_WRITECOPY = 8
- Global Const $MEM_DECOMMIT = 16384
- Global Const $MEM_RELEASE = 32768
- Global Enum $MEM_LOAD, $MEM_TOTALPHYSRAM, $MEM_AVAILPHYSRAM, $MEM_TOTALPAGEFILE, $MEM_AVAILPAGEFILE, $MEM_TOTALVIRTUAL, $MEM_AVAILVIRTUAL
- Global Const $PROCESS_TERMINATE = 1
- Global Const $PROCESS_CREATE_THREAD = 2
- Global Const $PROCESS_SET_SESSIONID = 4
- Global Const $PROCESS_VM_OPERATION = 8
- Global Const $PROCESS_VM_READ = 16
- Global Const $PROCESS_VM_WRITE = 32
- Global Const $PROCESS_DUP_HANDLE = 64
- Global Const $PROCESS_CREATE_PROCESS = 128
- Global Const $PROCESS_SET_QUOTA = 256
- Global Const $PROCESS_SET_INFORMATION = 512
- Global Const $PROCESS_QUERY_INFORMATION = 1024
- Global Const $PROCESS_QUERY_LIMITED_INFORMATION = 4096
- Global Const $PROCESS_SUSPEND_RESUME = 2048
- Global Const $PROCESS_ALL_ACCESS = 2035711
- Global Const $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
- Global Const $SE_AUDIT_NAME = "SeAuditPrivilege"
- Global Const $SE_BACKUP_NAME = "SeBackupPrivilege"
- Global Const $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
- Global Const $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
- Global Const $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
- Global Const $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
- Global Const $SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"
- Global Const $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
- Global Const $SE_DEBUG_NAME = "SeDebugPrivilege"
- Global Const $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
- Global Const $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
- Global Const $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
- Global Const $SE_INC_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege"
- Global Const $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
- Global Const $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
- Global Const $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
- Global Const $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
- Global Const $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
- Global Const $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
- Global Const $SE_RELABEL_NAME = "SeRelabelPrivilege"
- Global Const $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
- Global Const $SE_RESTORE_NAME = "SeRestorePrivilege"
- Global Const $SE_SECURITY_NAME = "SeSecurityPrivilege"
- Global Const $SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
- Global Const $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
- Global Const $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
- Global Const $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
- Global Const $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
- Global Const $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
- Global Const $SE_TCB_NAME = "SeTcbPrivilege"
- Global Const $SE_TIME_ZONE_NAME = "SeTimeZonePrivilege"
- Global Const $SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege"
- Global Const $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
- Global Const $SE_UNDOCK_NAME = "SeUndockPrivilege"
- Global Const $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1
- Global Const $SE_PRIVILEGE_ENABLED = 2
- Global Const $SE_PRIVILEGE_REMOVED = 4
- Global Const $SE_PRIVILEGE_USED_FOR_ACCESS = -2147483648
- Global Const $SE_GROUP_MANDATORY = 1
- Global Const $SE_GROUP_ENABLED_BY_DEFAULT = 2
- Global Const $SE_GROUP_ENABLED = 4
- Global Const $SE_GROUP_OWNER = 8
- Global Const $SE_GROUP_USE_FOR_DENY_ONLY = 16
- Global Const $SE_GROUP_INTEGRITY = 32
- Global Const $SE_GROUP_INTEGRITY_ENABLED = 64
- Global Const $SE_GROUP_RESOURCE = 536870912
- Global Const $SE_GROUP_LOGON_ID = -1073741824
- Global Enum $TOKENPRIMARY = 1, $TOKENIMPERSONATION
- Global Enum $SECURITYANONYMOUS = 0, $SECURITYIDENTIFICATION, $SECURITYIMPERSONATION, $SECURITYDELEGATION
- Global Enum $TOKENUSER = 1, $TOKENGROUPS, $TOKENPRIVILEGES, $TOKENOWNER, $TOKENPRIMARYGROUP, $TOKENDEFAULTDACL, $TOKENSOURCE, $TOKENTYPE, $TOKENIMPERSONATIONLEVEL, $TOKENSTATISTICS, $TOKENRESTRICTEDSIDS, $TOKENSESSIONID, $TOKENGROUPSANDPRIVILEGES, $TOKENSESSIONREFERENCE, $TOKENSANDBOXINERT, $TOKENAUDITPOLICY, $TOKENORIGIN, $TOKENELEVATIONTYPE, $TOKENLINKEDTOKEN, $TOKENELEVATION, $TOKENHASRESTRICTIONS, $TOKENACCESSINFORMATION, $TOKENVIRTUALIZATIONALLOWED, $TOKENVIRTUALIZATIONENABLED, $TOKENINTEGRITYLEVEL, $TOKENUIACCESS, $TOKENMANDATORYPOLICY, $TOKENLOGONSID
- Global Const $TOKEN_ASSIGN_PRIMARY = 1
- Global Const $TOKEN_DUPLICATE = 2
- Global Const $TOKEN_IMPERSONATE = 4
- Global Const $TOKEN_QUERY = 8
- Global Const $TOKEN_QUERY_SOURCE = 16
- Global Const $TOKEN_ADJUST_PRIVILEGES = 32
- Global Const $TOKEN_ADJUST_GROUPS = 64
- Global Const $TOKEN_ADJUST_DEFAULT = 128
- Global Const $TOKEN_ADJUST_SESSIONID = 256
- Global Const $TOKEN_ALL_ACCESS = 983551
- Global Const $TOKEN_READ = 131080
- Global Const $TOKEN_WRITE = 131296
- Global Const $TOKEN_EXECUTE = 131072
- Global Const $TOKEN_HAS_TRAVERSE_PRIVILEGE = 1
- Global Const $TOKEN_HAS_BACKUP_PRIVILEGE = 2
- Global Const $TOKEN_HAS_RESTORE_PRIVILEGE = 4
- Global Const $TOKEN_HAS_ADMIN_GROUP = 8
- Global Const $TOKEN_IS_RESTRICTED = 16
- Global Const $TOKEN_SESSION_NOT_REFERENCED = 32
- Global Const $TOKEN_SANDBOX_INERT = 64
- Global Const $TOKEN_HAS_IMPERSONATE_PRIVILEGE = 128
- Global Const $RIGHTS_DELETE = 65536
- Global Const $READ_CONTROL = 131072
- Global Const $WRITE_DAC = 262144
- Global Const $WRITE_OWNER = 524288
- Global Const $SYNCHRONIZE = 1048576
- Global Const $ACCESS_SYSTEM_SECURITY = 16777216
- Global Const $STANDARD_RIGHTS_REQUIRED = 983040
- Global Const $STANDARD_RIGHTS_READ = $READ_CONTROL
- Global Const $STANDARD_RIGHTS_WRITE = $READ_CONTROL
- Global Const $STANDARD_RIGHTS_EXECUTE = $READ_CONTROL
- Global Const $STANDARD_RIGHTS_ALL = 2031616
- Global Const $SPECIFIC_RIGHTS_ALL = 65535
- Global Enum $NOT_USED_ACCESS = 0, $GRANT_ACCESS, $SET_ACCESS, $DENY_ACCESS, $REVOKE_ACCESS, $SET_AUDIT_SUCCESS, $SET_AUDIT_FAILURE
- Global Enum $TRUSTEE_IS_UNKNOWN = 0, $TRUSTEE_IS_USER, $TRUSTEE_IS_GROUP, $TRUSTEE_IS_DOMAIN, $TRUSTEE_IS_ALIAS, $TRUSTEE_IS_WELL_KNOWN_GROUP, $TRUSTEE_IS_DELETED, $TRUSTEE_IS_INVALID, $TRUSTEE_IS_COMPUTER
- Global Const $LOGON_WITH_PROFILE = 1
- Global Const $LOGON_NETCREDENTIALS_ONLY = 2
- Global Enum $SIDTYPEUSER = 1, $SIDTYPEGROUP, $SIDTYPEDOMAIN, $SIDTYPEALIAS, $SIDTYPEWELLKNOWNGROUP, $SIDTYPEDELETEDACCOUNT, $SIDTYPEINVALID, $SIDTYPEUNKNOWN, $SIDTYPECOMPUTER, $SIDTYPELABEL
- Global Const $SID_ADMINISTRATORS = "S-1-5-32-544"
- Global Const $SID_USERS = "S-1-5-32-545"
- Global Const $SID_GUESTS = "S-1-5-32-546"
- Global Const $SID_ACCOUNT_OPERATORS = "S-1-5-32-548"
- Global Const $SID_SERVER_OPERATORS = "S-1-5-32-549"
- Global Const $SID_PRINT_OPERATORS = "S-1-5-32-550"
- Global Const $SID_BACKUP_OPERATORS = "S-1-5-32-551"
- Global Const $SID_REPLICATOR = "S-1-5-32-552"
- Global Const $SID_OWNER = "S-1-3-0"
- Global Const $SID_EVERYONE = "S-1-1-0"
- Global Const $SID_NETWORK = "S-1-5-2"
- Global Const $SID_INTERACTIVE = "S-1-5-4"
- Global Const $SID_SYSTEM = "S-1-5-18"
- Global Const $SID_AUTHENTICATED_USERS = "S-1-5-11"
- Global Const $SID_SCHANNEL_AUTHENTICATION = "S-1-5-64-14"
- Global Const $SID_DIGEST_AUTHENTICATION = "S-1-5-64-21"
- Global Const $SID_NT_SERVICE = "S-1-5-80"
- Global Const $SID_UNTRUSTED_MANDATORY_LEVEL = "S-1-16-0"
- Global Const $SID_LOW_MANDATORY_LEVEL = "S-1-16-4096"
- Global Const $SID_MEDIUM_MANDATORY_LEVEL = "S-1-16-8192"
- Global Const $SID_MEDIUM_PLUS_MANDATORY_LEVEL = "S-1-16-8448"
- Global Const $SID_HIGH_MANDATORY_LEVEL = "S-1-16-12288"
- Global Const $SID_SYSTEM_MANDATORY_LEVEL = "S-1-16-16384"
- Global Const $SID_PROTECTED_PROCESS_MANDATORY_LEVEL = "S-1-16-20480"
- Global Const $SID_SECURE_PROCESS_MANDATORY_LEVEL = "S-1-16-28672"
- Global Const $SID_ALL_SERVICES = "S-1-5-80-0"
- Func _Security__AdjustTokenPrivileges($HTOKEN, $BDISABLEALL, $TNEWSTATE, $IBUFFERLEN, $TPREVSTATE = 0, $PREQUIRED = 0)
- Local $ACALL = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $HTOKEN, "bool", $BDISABLEALL, "struct*", $TNEWSTATE, "dword", $IBUFFERLEN, "struct*", $TPREVSTATE, "struct*", $PREQUIRED)
- If @error Then Return SetError(@error, @extended, False)
- Return Not ($ACALL[0] = 0)
- EndFunc ;==>_Security__AdjustTokenPrivileges
- Func _Security__CreateProcessWithToken($HTOKEN, $ILOGONFLAGS, $SCOMMANDLINE, $ICREATIONFLAGS, $SCURDIR, $TSTARTUPINFO, $TPROCESS_INFORMATION)
- Local $ACALL = DllCall("advapi32.dll", "bool", "CreateProcessWithTokenW", "handle", $HTOKEN, "dword", $ILOGONFLAGS, "ptr", 0, "wstr", $SCOMMANDLINE, "dword", $ICREATIONFLAGS, "struct*", 0, "wstr", $SCURDIR, "struct*", $TSTARTUPINFO, "struct*", $TPROCESS_INFORMATION)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, False)
- Return True
- EndFunc ;==>_Security__CreateProcessWithToken
- Func _Security__DuplicateTokenEx($HEXISTINGTOKEN, $IDESIREDACCESS, $IIMPERSONATIONLEVEL, $ITOKENTYPE)
- Local $ACALL = DllCall("advapi32.dll", "bool", "DuplicateTokenEx", "handle", $HEXISTINGTOKEN, "dword", $IDESIREDACCESS, "struct*", 0, "int", $IIMPERSONATIONLEVEL, "int", $ITOKENTYPE, "handle*", 0)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, 0)
- Return $ACALL[6]
- EndFunc ;==>_Security__DuplicateTokenEx
- Func _Security__GetAccountSid($SACCOUNT, $SSYSTEM = "")
- Local $AACCT = _Security__LookupAccountName($SACCOUNT, $SSYSTEM)
- If @error Then Return SetError(@error, @extended, 0)
- If IsArray($AACCT) Then Return _Security__StringSidToSid($AACCT[0])
- Return ""
- EndFunc ;==>_Security__GetAccountSid
- Func _Security__GetLengthSid($PSID)
- If Not _Security__IsValidSid($PSID) Then Return SetError(@error + 10, @extended, 0)
- Local $ACALL = DllCall("advapi32.dll", "dword", "GetLengthSid", "struct*", $PSID)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ACALL[0]
- EndFunc ;==>_Security__GetLengthSid
- Func _Security__GetTokenInformation($HTOKEN, $ICLASS)
- Local $ACALL = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "struct*", 0, "dword", 0, "dword*", 0)
- If @error Or Not $ACALL[5] Then Return SetError(@error + 10, @extended, 0)
- Local $ILEN = $ACALL[5]
- Local $TBUFFER = DllStructCreate("byte[" & $ILEN & "]")
- $ACALL = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "struct*", $TBUFFER, "dword", DllStructGetSize($TBUFFER), "dword*", 0)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, 0)
- Return $TBUFFER
- EndFunc ;==>_Security__GetTokenInformation
- Func _Security__ImpersonateSelf($ILEVEL = $SECURITYIMPERSONATION)
- Local $ACALL = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $ILEVEL)
- If @error Then Return SetError(@error, @extended, False)
- Return Not ($ACALL[0] = 0)
- EndFunc ;==>_Security__ImpersonateSelf
- Func _Security__IsValidSid($PSID)
- Local $ACALL = DllCall("advapi32.dll", "bool", "IsValidSid", "struct*", $PSID)
- If @error Then Return SetError(@error, @extended, False)
- Return Not ($ACALL[0] = 0)
- EndFunc ;==>_Security__IsValidSid
- Func _Security__LookupAccountName($SACCOUNT, $SSYSTEM = "")
- Local $TDATA = DllStructCreate("byte SID[256]")
- Local $ACALL = DllCall("advapi32.dll", "bool", "LookupAccountNameW", "wstr", $SSYSTEM, "wstr", $SACCOUNT, "struct*", $TDATA, "dword*", DllStructGetSize($TDATA), "wstr", "", "dword*", DllStructGetSize($TDATA), "int*", 0)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, 0)
- Local $AACCT[3]
- $AACCT[0] = _Security__SidToStringSid(DllStructGetPtr($TDATA, "SID"))
- $AACCT[1] = $ACALL[5]
- $AACCT[2] = $ACALL[7]
- Return $AACCT
- EndFunc ;==>_Security__LookupAccountName
- Func _Security__LookupAccountSid($VSID, $SSYSTEM = "")
- Local $PSID, $AACCT[3]
- If IsString($VSID) Then
- $PSID = _Security__StringSidToSid($VSID)
- Else
- $PSID = $VSID
- EndIf
- If Not _Security__IsValidSid($PSID) Then Return SetError(@error + 10, @extended, 0)
- Local $STYPESYSTEM = "ptr"
- If $SSYSTEM Then $STYPESYSTEM = "wstr"
- Local $ACALL = DllCall("advapi32.dll", "bool", "LookupAccountSidW", $STYPESYSTEM, $SSYSTEM, "struct*", $PSID, "wstr", "", "dword*", 65536, "wstr", "", "dword*", 65536, "int*", 0)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, 0)
- Local $AACCT[3]
- $AACCT[0] = $ACALL[3]
- $AACCT[1] = $ACALL[5]
- $AACCT[2] = $ACALL[7]
- Return $AACCT
- EndFunc ;==>_Security__LookupAccountSid
- Func _Security__LookupPrivilegeValue($SSYSTEM, $SNAME)
- Local $ACALL = DllCall("advapi32.dll", "bool", "LookupPrivilegeValueW", "wstr", $SSYSTEM, "wstr", $SNAME, "int64*", 0)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, 0)
- Return $ACALL[3]
- EndFunc ;==>_Security__LookupPrivilegeValue
- Func _Security__OpenProcessToken($HPROCESS, $IACCESS)
- Local $ACALL = DllCall("advapi32.dll", "bool", "OpenProcessToken", "handle", $HPROCESS, "dword", $IACCESS, "handle*", 0)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, 0)
- Return $ACALL[3]
- EndFunc ;==>_Security__OpenProcessToken
- Func _Security__OpenThreadToken($IACCESS, $HTHREAD = 0, $BOPENASSELF = False)
- If $HTHREAD = 0 Then
- Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentThread")
- If @error Then Return SetError(@error + 10, @extended, 0)
- $HTHREAD = $ARESULT[0]
- EndIf
- Local $ACALL = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $HTHREAD, "dword", $IACCESS, "bool", $BOPENASSELF, "handle*", 0)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, 0)
- Return $ACALL[4]
- EndFunc ;==>_Security__OpenThreadToken
- Func _Security__OpenThreadTokenEx($IACCESS, $HTHREAD = 0, $BOPENASSELF = False)
- Local $HTOKEN = _Security__OpenThreadToken($IACCESS, $HTHREAD, $BOPENASSELF)
- If $HTOKEN = 0 Then
- Local Const $ERROR_NO_TOKEN = 1008
- If _WinAPI_GetLastError() <> $ERROR_NO_TOKEN Then Return SetError(20, _WinAPI_GetLastError(), 0)
- If Not _Security__ImpersonateSelf() Then Return SetError(@error + 10, _WinAPI_GetLastError(), 0)
- $HTOKEN = _Security__OpenThreadToken($IACCESS, $HTHREAD, $BOPENASSELF)
- If $HTOKEN = 0 Then Return SetError(@error, _WinAPI_GetLastError(), 0)
- EndIf
- Return $HTOKEN
- EndFunc ;==>_Security__OpenThreadTokenEx
- Func _Security__SetPrivilege($HTOKEN, $SPRIVILEGE, $BENABLE)
- Local $ILUID = _Security__LookupPrivilegeValue("", $SPRIVILEGE)
- If $ILUID = 0 Then Return SetError(@error + 10, @extended, False)
- Local Const $TAGTOKEN_PRIVILEGES = "dword Count;align 4;int64 LUID;dword Attributes"
- Local $TCURRSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
- Local $ICURRSTATE = DllStructGetSize($TCURRSTATE)
- Local $TPREVSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
- Local $IPREVSTATE = DllStructGetSize($TPREVSTATE)
- Local $TREQUIRED = DllStructCreate("int Data")
- DllStructSetData($TCURRSTATE, "Count", 1)
- DllStructSetData($TCURRSTATE, "LUID", $ILUID)
- If Not _Security__AdjustTokenPrivileges($HTOKEN, False, $TCURRSTATE, $ICURRSTATE, $TPREVSTATE, $TREQUIRED) Then Return SetError(2, @error, False)
- DllStructSetData($TPREVSTATE, "Count", 1)
- DllStructSetData($TPREVSTATE, "LUID", $ILUID)
- Local $IATTRIBUTES = DllStructGetData($TPREVSTATE, "Attributes")
- If $BENABLE Then
- $IATTRIBUTES = BitOR($IATTRIBUTES, $SE_PRIVILEGE_ENABLED)
- Else
- $IATTRIBUTES = BitAND($IATTRIBUTES, BitNOT($SE_PRIVILEGE_ENABLED))
- EndIf
- DllStructSetData($TPREVSTATE, "Attributes", $IATTRIBUTES)
- If Not _Security__AdjustTokenPrivileges($HTOKEN, False, $TPREVSTATE, $IPREVSTATE, $TCURRSTATE, $TREQUIRED) Then Return SetError(3, @error, False)
- Return True
- EndFunc ;==>_Security__SetPrivilege
- Func _Security__SetTokenInformation($HTOKEN, $ITOKENINFORMATION, $VTOKENINFORMATION, $ITOKENINFORMATIONLENGTH)
- Local $ACALL = DllCall("advapi32.dll", "bool", "SetTokenInformation", "handle", $HTOKEN, "int", $ITOKENINFORMATION, "struct*", $VTOKENINFORMATION, "dword", $ITOKENINFORMATIONLENGTH)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, False)
- Return True
- EndFunc ;==>_Security__SetTokenInformation
- Func _Security__SidToStringSid($PSID)
- If Not _Security__IsValidSid($PSID) Then Return SetError(@error + 10, 0, "")
- Local $ACALL = DllCall("advapi32.dll", "bool", "ConvertSidToStringSidW", "struct*", $PSID, "ptr*", 0)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, "")
- Local $PSTRINGSID = $ACALL[2]
- Local $ALEN = DllCall("kernel32.dll", "int", "lstrlenW", "struct*", $PSTRINGSID)
- Local $SSID = DllStructGetData(DllStructCreate("wchar Text[" & $ALEN[0] + 1 & "]", $PSTRINGSID), "Text")
- DllCall("kernel32.dll", "handle", "LocalFree", "handle", $PSTRINGSID)
- Return $SSID
- EndFunc ;==>_Security__SidToStringSid
- Func _Security__SidTypeStr($ITYPE)
- Switch $ITYPE
- Case $SIDTYPEUSER
- Return "User"
- Case $SIDTYPEGROUP
- Return "Group"
- Case $SIDTYPEDOMAIN
- Return "Domain"
- Case $SIDTYPEALIAS
- Return "Alias"
- Case $SIDTYPEWELLKNOWNGROUP
- Return "Well Known Group"
- Case $SIDTYPEDELETEDACCOUNT
- Return "Deleted Account"
- Case $SIDTYPEINVALID
- Return "Invalid"
- Case $SIDTYPEUNKNOWN
- Return "Unknown Type"
- Case $SIDTYPECOMPUTER
- Return "Computer"
- Case $SIDTYPELABEL
- Return "A mandatory integrity label SID"
- Case Else
- Return "Unknown SID Type"
- EndSwitch
- EndFunc ;==>_Security__SidTypeStr
- Func _Security__StringSidToSid($SSID)
- Local $ACALL = DllCall("advapi32.dll", "bool", "ConvertStringSidToSidW", "wstr", $SSID, "ptr*", 0)
- If @error Or Not $ACALL[0] Then Return SetError(@error, @extended, 0)
- Local $PSID = $ACALL[2]
- Local $TBUFFER = DllStructCreate("byte Data[" & _Security__GetLengthSid($PSID) & "]", $PSID)
- Local $TSID = DllStructCreate("byte Data[" & DllStructGetSize($TBUFFER) & "]")
- DllStructSetData($TSID, "Data", DllStructGetData($TBUFFER, "Data"))
- DllCall("kernel32.dll", "handle", "LocalFree", "handle", $PSID)
- Return $TSID
- EndFunc ;==>_Security__StringSidToSid
- Global Const $TAGPOINT = "struct;long X;long Y;endstruct"
- Global Const $TAGRECT = "struct;long Left;long Top;long Right;long Bottom;endstruct"
- Global Const $TAGSIZE = "struct;long X;long Y;endstruct"
- Global Const $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight"
- Global Const $TAGFILETIME = "struct;dword Lo;dword Hi;endstruct"
- Global Const $TAGSYSTEMTIME = "struct;word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds;endstruct"
- Global Const $TAGTIME_ZONE_INFORMATION = "struct;long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias;endstruct"
- Global Const $TAGNMHDR = "struct;hwnd hWndFrom;uint_ptr IDFrom;INT Code;endstruct"
- Global Const $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param"
- Global Const $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;wchar szText[260]"
- Global Const $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;wchar szText[260];int Why"
- Global Const $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param"
- Global Const $TAGDTPRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;" & "word MinSecond;word MinMSecond;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;" & "word MaxMinute;word MaxSecond;word MaxMSecond;bool MinValid;bool MaxValid"
- Global Const $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TAGSYSTEMTIME
- Global Const $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TAGSYSTEMTIME & ";ptr pDisplay;wchar Display[64]"
- Global Const $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;struct;long SizeX;long SizeY;endstruct"
- Global Const $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TAGSYSTEMTIME
- Global Const $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TAGSYSTEMTIME & ";dword Flags"
- Global Const $TAGEVENTLOGRECORD = "dword Length;dword Reserved;dword RecordNumber;dword TimeGenerated;dword TimeWritten;dword EventID;" & "word EventType;word NumStrings;word EventCategory;word ReservedFlags;dword ClosingRecordNumber;dword StringOffset;" & "dword UserSidLength;dword UserSidOffset;dword DataLength;dword DataOffset"
- Global Const $TAGGDIP_EFFECTPARAMS_BLUR = "float Radius; bool ExpandEdge"
- Global Const $TAGGDIP_EFFECTPARAMS_BRIGHTNESSCONTRAST = "int BrightnessLevel; int ContrastLevel"
- Global Const $TAGGDIP_EFFECTPARAMS_COLORBALANCE = "int CyanRed; int MagentaGreen; int YellowBlue"
- Global Const $TAGGDIP_EFFECTPARAMS_COLORCURVE = "int Adjustment; int Channel; int AdjustValue"
- Global Const $TAGGDIP_EFFECTPARAMS_COLORLUT = "byte LutB[256]; byte LutG[256]; byte LutR[256]; byte LutA[256]"
- Global Const $TAGGDIP_EFFECTPARAMS_HUESATURATIONLIGHTNESS = "int HueLevel; int SaturationLevel; int LightnessLevel"
- Global Const $TAGGDIP_EFFECTPARAMS_LEVELS = "int Highlight; int Midtone; int Shadow"
- Global Const $TAGGDIP_EFFECTPARAMS_REDEYECORRECTION = "uint NumberOfAreas; ptr Areas"
- Global Const $TAGGDIP_EFFECTPARAMS_SHARPEN = "float Radius; float Amount"
- Global Const $TAGGDIP_EFFECTPARAMS_TINT = "int Hue; int Amount"
- Global Const $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved"
- Global Const $TAGGDIPCOLORMATRIX = "float m[25]"
- Global Const $TAGGDIPENCODERPARAM = "struct;byte GUID[16];ulong NumberOfValues;ulong Type;ptr Values;endstruct"
- Global Const $TAGGDIPENCODERPARAMS = "uint Count;" & $TAGGDIPENCODERPARAM
- Global Const $TAGGDIPRECTF = "struct;float X;float Y;float Width;float Height;endstruct"
- Global Const $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs"
- Global Const $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc"
- Global Const $TAGGDIPIMAGECODECINFO = "byte CLSID[16];byte FormatID[16];ptr CodecName;ptr DllName;ptr FormatDesc;ptr FileExt;" & "ptr MimeType;dword Flags;dword Version;dword SigCount;dword SigSize;ptr SigPattern;ptr SigMask"
- Global Const $TAGGDIPPENCODERPARAMS = "uint Count;byte Params[1]"
- Global Const $TAGHDITEM = "uint Mask;int XY;ptr Text;handle hBMP;int TextMax;int Fmt;lparam Param;int Image;int Order;uint Type;ptr pFilter;uint State"
- Global Const $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam"
- Global Const $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT
- Global Const $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem"
- Global Const $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1"
- Global Const $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value"
- Global Const $TAGLVFINDINFO = "struct;uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction;endstruct"
- Global Const $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem;int iGroup"
- Global Const $TAGLVITEM = "struct;uint Mask;int Item;int SubItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;lparam Param;" & "int Indent;int GroupID;uint Columns;ptr pColumns;ptr piColFmt;int iGroup;endstruct"
- Global Const $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "struct;long ActionX;long ActionY;endstruct;lparam Param"
- Global Const $TAGNMLVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword dwDrawStage;handle hdc;" & $TAGRECT & ";dword_ptr dwItemSpec;uint uItemState;lparam lItemlParam;endstruct" & ";dword clrText;dword clrTextBk;int iSubItem;dword dwItemType;dword clrFace;int iIconEffect;" & "int iIconPhase;int iPartID;int iStateID;struct;long TextLeft;long TextTop;long TextRight;long TextBottom;endstruct;uint uAlign"
- Global Const $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM
- Global Const $TAGNMLVFINDITEM = $TAGNMHDR & ";int Start;" & $TAGLVFINDINFO
- Global Const $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam"
- Global Const $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags"
- Global Const $TAGNMLVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
- Global Const $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY"
- Global Const $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TAGSYSTEMTIME & ";" & $TAGRECT & ";int iOffset;int iRow;int iCol"
- Global Const $TAGMCMONTHRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short Span"
- Global Const $TAGMCRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short MinSet;short MaxSet"
- Global Const $TAGMCSELRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds"
- Global Const $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TAGSYSTEMTIME & ";int DayState;ptr pDayState"
- Global Const $TAGNMSELCHANGE = $TAGNMHDR & ";struct;word BegYear;word BegMonth;word BegDOW;word BegDay;word BegHour;word BegMinute;word BegSecond;word BegMSeconds;endstruct;" & "struct;word EndYear;word EndMonth;word EndDOW;word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds;endstruct"
- Global Const $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result;dword dwFlags"
- Global Const $TAGNMTCKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
- Global Const $TAGTVITEM = "struct;uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param;endstruct"
- Global Const $TAGTVITEMEX = "struct;" & $TAGTVITEM & ";int Integral;uint uStateEx;hwnd hwnd;int iExpandedImage;int iReserved;endstruct"
- Global Const $TAGNMTREEVIEW = $TAGNMHDR & ";uint Action;" & "struct;uint OldMask;handle OldhItem;uint OldState;uint OldStateMask;" & "ptr OldText;int OldTextMax;int OldImage;int OldSelectedImage;int OldChildren;lparam OldParam;endstruct;" & "struct;uint NewMask;handle NewhItem;uint NewState;uint NewStateMask;" & "ptr NewText;int NewTextMax;int NewImage;int NewSelectedImage;int NewChildren;lparam NewParam;endstruct;" & "struct;long PointX;long PointY;endstruct"
- Global Const $TAGNMTVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword DrawStage;handle HDC;" & $TAGRECT & ";dword_ptr ItemSpec;uint ItemState;lparam ItemParam;endstruct" & ";dword ClrText;dword ClrTextBk;int Level"
- Global Const $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM
- Global Const $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam"
- Global Const $TAGNMTVITEMCHANGE = $TAGNMHDR & ";uint Changed;handle hItem;uint StateNew;uint StateOld;lparam lParam;"
- Global Const $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item"
- Global Const $TAGNMTVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
- Global Const $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo"
- Global Const $TAGTOKEN_PRIVILEGES = "dword Count;align 4;int64 LUID;dword Attributes"
- Global Const $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT
- Global Const $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData"
- Global Const $TAGMENUITEMINFO = "uint Size;uint Mask;uint Type;uint State;uint ID;handle SubMenu;handle BmpChecked;handle BmpUnchecked;" & "ulong_ptr ItemData;ptr TypeData;uint CCH;handle BmpItem"
- ;Global Const $TAGREBARBANDINFO = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader" & ((@OSVersion = "WIN_XP") """;" & $TAGRECT & ";uint uChevronState")
- Global Const $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak"
- Global Const $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;" & "struct;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;endstruct;" & "struct;long ActualLeft;long ActualTop;long ActualRight;long ActualBottom;endstruct"
- Global Const $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;lparam lParam"
- Global Const $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM"
- Global Const $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;" & "struct;long CLeft;long CTop;long CRight;long CBottom;endstruct;" & "struct;long BLeft;long BTop;long BRight;long BBottom;endstruct"
- Global Const $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow"
- Global Const $TAGNMTOOLBAR = $TAGNMHDR & ";int iItem;" & "struct;int iBitmap;int idCommand;byte fsState;byte fsStyle;dword_ptr dwData;int_ptr iString;endstruct" & ";int cchText;ptr pszText;" & $TAGRECT
- Global Const $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags"
- Global Const $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;dword_ptr Param;int_ptr String"
- Global Const $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax"
- Global Const $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider"
- Global Const $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;struct;dword Offset;dword OffsetHigh;endstruct;handle hEvent"
- Global Const $TAGOPENFILENAME = "dword StructSize;hwnd hwndOwner;handle hInstance;ptr lpstrFilter;ptr lpstrCustomFilter;" & "dword nMaxCustFilter;dword nFilterIndex;ptr lpstrFile;dword nMaxFile;ptr lpstrFileTitle;dword nMaxFileTitle;" & "ptr lpstrInitialDir;ptr lpstrTitle;dword Flags;word nFileOffset;word nFileExtension;ptr lpstrDefExt;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName;ptr pvReserved;dword dwReserved;dword FlagsEx"
- Global Const $TAGBITMAPINFOHEADER = "struct;dword biSize;long biWidth;long biHeight;word biPlanes;word biBitCount;" & "dword biCompression;dword biSizeImage;long biXPelsPerMeter;long biYPelsPerMeter;dword biClrUsed;dword biClrImportant;endstruct"
- Global Const $TAGBITMAPINFO = $TAGBITMAPINFOHEADER & ";dword biRGBQuad[1]"
- Global Const $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format"
- Global Const $TAGGUID = "struct;ulong Data1;ushort Data2;ushort Data3;byte Data4[8];endstruct"
- Global Const $TAGWINDOWPLACEMENT = "uint length;uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]"
- Global Const $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags"
- Global Const $TAGSCROLLINFO = "uint cbSize;uint fMask;int nMin;int nMax;uint nPage;int nPos;int nTrackPos"
- Global Const $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]"
- Global Const $TAGLOGFONT = "struct;long Height;long Width;long Escapement;long Orientation;long Weight;byte Italic;byte Underline;" & "byte Strikeout;byte CharSet;byte OutPrecision;byte ClipPrecision;byte Quality;byte PitchAndFamily;wchar FaceName[32];endstruct"
- Global Const $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo"
- Global Const $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID"
- Global Const $TAGSTARTUPINFO = "dword Size;ptr Reserved1;ptr Desktop;ptr Title;dword X;dword Y;dword XSize;dword YSize;dword XCountChars;" & "dword YCountChars;dword FillAttribute;dword Flags;word ShowWindow;word Reserved2;ptr Reserved3;handle StdInput;" & "handle StdOutput;handle StdError"
- Global Const $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle"
- Global Const $TAGWIN32_FIND_DATA = "dword dwFileAttributes;dword ftCreationTime[2];dword ftLastAccessTime[2];dword ftLastWriteTime[2];dword nFileSizeHigh;dword nFileSizeLow;dword dwReserved0;dword dwReserved1;wchar cFileName[260];wchar cAlternateFileName[14]"
- Global Const $TAGTEXTMETRIC = "long tmHeight;long tmAscent;long tmDescent;long tmInternalLeading;long tmExternalLeading;" & "long tmAveCharWidth;long tmMaxCharWidth;long tmWeight;long tmOverhang;long tmDigitizedAspectX;long tmDigitizedAspectY;" & "wchar tmFirstChar;wchar tmLastChar;wchar tmDefaultChar;wchar tmBreakChar;byte tmItalic;byte tmUnderlined;byte tmStruckOut;" & "byte tmPitchAndFamily;byte tmCharSet"
- Global Const $TAGMEMMAP = "handle hProc;ulong_ptr Size;ptr Mem"
- Func _MEMFREE(ByRef $TMEMMAP)
- Local $PMEMORY = DllStructGetData($TMEMMAP, "Mem")
- Local $HPROCESS = DllStructGetData($TMEMMAP, "hProc")
- Local $BRESULT = _MemVirtualFreeEx($HPROCESS, $PMEMORY, 0, $MEM_RELEASE)
- DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HPROCESS)
- If @error Then Return SetError(@error, @extended, False)
- Return $BRESULT
- EndFunc ;==>_MEMFREE
- Func _MemGlobalAlloc($IBYTES, $IFLAGS = 0)
- Local $ARESULT = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", $IFLAGS, "ulong_ptr", $IBYTES)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_MemGlobalAlloc
- Func _MemGlobalFree($HMEMORY)
- Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $HMEMORY)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_MemGlobalFree
- Func _MemGlobalLock($HMEMORY)
- Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $HMEMORY)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_MemGlobalLock
- Func _MemGlobalSize($HMEMORY)
- Local $ARESULT = DllCall("kernel32.dll", "ulong_ptr", "GlobalSize", "handle", $HMEMORY)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_MemGlobalSize
- Func _MemGlobalUnlock($HMEMORY)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "GlobalUnlock", "handle", $HMEMORY)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_MemGlobalUnlock
- Func _MEMINIT($HWND, $ISIZE, ByRef $TMEMMAP)
- Local $ARESULT = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0)
- If @error Then Return SetError(@error + 10, @extended, 0)
- Local $IPROCESSID = $ARESULT[2]
- If $IPROCESSID = 0 Then Return SetError(1, 0, 0)
- Local $IACCESS = BitOR($PROCESS_VM_OPERATION, $PROCESS_VM_READ, $PROCESS_VM_WRITE)
- Local $HPROCESS = __MEM_OPENPROCESS($IACCESS, False, $IPROCESSID, True)
- Local $IALLOC = BitOR($MEM_RESERVE, $MEM_COMMIT)
- Local $PMEMORY = _MemVirtualAllocEx($HPROCESS, 0, $ISIZE, $IALLOC, $PAGE_READWRITE)
- If $PMEMORY = 0 Then Return SetError(2, 0, 0)
- $TMEMMAP = DllStructCreate($TAGMEMMAP)
- DllStructSetData($TMEMMAP, "hProc", $HPROCESS)
- DllStructSetData($TMEMMAP, "Size", $ISIZE)
- DllStructSetData($TMEMMAP, "Mem", $PMEMORY)
- Return $PMEMORY
- EndFunc ;==>_MEMINIT
- Func _MemMoveMemory($PSOURCE, $PDEST, $ILENGTH)
- DllCall("kernel32.dll", "none", "RtlMoveMemory", "struct*", $PDEST, "struct*", $PSOURCE, "ulong_ptr", $ILENGTH)
- If @error Then Return SetError(@error, @extended)
- EndFunc ;==>_MemMoveMemory
- Func _MEMREAD(ByRef $TMEMMAP, $PSRCE, $PDEST, $ISIZE)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PSRCE, "struct*", $PDEST, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_MEMREAD
- Func _MEMWRITE(ByRef $TMEMMAP, $PSRCE, $PDEST = 0, $ISIZE = 0, $SSRCE = "struct*")
- If $PDEST = 0 Then $PDEST = DllStructGetData($TMEMMAP, "Mem")
- If $ISIZE = 0 Then $ISIZE = DllStructGetData($TMEMMAP, "Size")
- Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PDEST, $SSRCE, $PSRCE, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_MEMWRITE
- Func _MemVirtualAlloc($PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT)
- Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_MemVirtualAlloc
- Func _MemVirtualAllocEx($HPROCESS, $PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT)
- Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAllocEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_MemVirtualAllocEx
- Func _MemVirtualFree($PADDRESS, $ISIZE, $IFREETYPE)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_MemVirtualFree
- Func _MemVirtualFreeEx($HPROCESS, $PADDRESS, $ISIZE, $IFREETYPE)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFreeEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_MemVirtualFreeEx
- Func __MEM_OPENPROCESS($IACCESS, $BINHERIT, $IPID, $BDEBUGPRIV = False)
- Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $BINHERIT, "dword", $IPID)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARESULT[0] Then Return $ARESULT[0]
- If Not $BDEBUGPRIV Then Return SetError(100, 0, 0)
- Local $HTOKEN = _Security__OpenThreadTokenEx(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
- If @error Then Return SetError(@error + 10, @extended, 0)
- _Security__SetPrivilege($HTOKEN, "SeDebugPrivilege", True)
- Local $IERROR = @error
- Local $IEXTENDED = @extended
- Local $IRET = 0
- If Not @error Then
- $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $BINHERIT, "dword", $IPID)
- $IERROR = @error
- $IEXTENDED = @extended
- If $ARESULT[0] Then $IRET = $ARESULT[0]
- _Security__SetPrivilege($HTOKEN, "SeDebugPrivilege", False)
- If @error Then
- $IERROR = @error + 20
- $IEXTENDED = @extended
- EndIf
- Else
- $IERROR = @error + 30
- EndIf
- DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HTOKEN)
- Return SetError($IERROR, $IEXTENDED, $IRET)
- EndFunc ;==>__MEM_OPENPROCESS
- Func _SendMessage($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
- Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageW", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
- If @error Then Return SetError(@error, @extended, "")
- If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN]
- Return $ARESULT
- EndFunc ;==>_SendMessage
- Func _SendMessageA($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
- Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageA", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
- If @error Then Return SetError(@error, @extended, "")
- If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN]
- Return $ARESULT
- EndFunc ;==>_SendMessageA
- Global Const $_UDF_GLOBALIDS_OFFSET = 2
- Global Const $_UDF_GLOBALID_MAX_WIN = 16
- Global Const $_UDF_STARTID = 10000
- Global Const $_UDF_GLOBALID_MAX_IDS = 55535
- Global Const $__UDFGUICONSTANT_WS_TABSTOP = 65536
- Global Const $__UDFGUICONSTANT_WS_VISIBLE = 268435456
- Global Const $__UDFGUICONSTANT_WS_CHILD = 1073741824
- Global $__G_AUDF_GLOBALIDS_USED[$_UDF_GLOBALID_MAX_WIN][$_UDF_GLOBALID_MAX_IDS + $_UDF_GLOBALIDS_OFFSET + 1]
- Func __UDF_GETNEXTGLOBALID($HWND)
- Local $NCTRLID, $IUSEDINDEX = -1, $BALLUSED = True
- If Not WinExists($HWND) Then Return SetError(-1, -1, 0)
- For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
- If $__G_AUDF_GLOBALIDS_USED[$IINDEX][0] <> 0 Then
- If Not WinExists($__G_AUDF_GLOBALIDS_USED[$IINDEX][0]) Then
- For $X = 0 To UBound($__G_AUDF_GLOBALIDS_USED, $UBOUND_COLUMNS) - 1
- $__G_AUDF_GLOBALIDS_USED[$IINDEX][$X] = 0
- Next
- $__G_AUDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID
- $BALLUSED = False
- EndIf
- EndIf
- Next
- For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
- If $__G_AUDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then
- $IUSEDINDEX = $IINDEX
- ExitLoop
- EndIf
- Next
- If $IUSEDINDEX = -1 Then
- For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
- If $__G_AUDF_GLOBALIDS_USED[$IINDEX][0] = 0 Then
- $__G_AUDF_GLOBALIDS_USED[$IINDEX][0] = $HWND
- $__G_AUDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID
- $BALLUSED = False
- $IUSEDINDEX = $IINDEX
- ExitLoop
- EndIf
- Next
- EndIf
- If $IUSEDINDEX = -1 And $BALLUSED Then Return SetError(16, 0, 0)
- If $__G_AUDF_GLOBALIDS_USED[$IUSEDINDEX][1] = $_UDF_STARTID + $_UDF_GLOBALID_MAX_IDS Then
- For $IIDINDEX = $_UDF_GLOBALIDS_OFFSET To UBound($__G_AUDF_GLOBALIDS_USED, $UBOUND_COLUMNS) - 1
- If $__G_AUDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = 0 Then
- $NCTRLID = ($IIDINDEX - $_UDF_GLOBALIDS_OFFSET) + 10000
- $__G_AUDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = $NCTRLID
- Return $NCTRLID
- EndIf
- Next
- Return SetError(-1, $_UDF_GLOBALID_MAX_IDS, 0)
- EndIf
- $NCTRLID = $__G_AUDF_GLOBALIDS_USED[$IUSEDINDEX][1]
- $__G_AUDF_GLOBALIDS_USED[$IUSEDINDEX][1] += 1
- $__G_AUDF_GLOBALIDS_USED[$IUSEDINDEX][($NCTRLID - 10000) + $_UDF_GLOBALIDS_OFFSET] = $NCTRLID
- Return $NCTRLID
- EndFunc ;==>__UDF_GETNEXTGLOBALID
- Func __UDF_FREEGLOBALID($HWND, $IGLOBALID)
- If $IGLOBALID - $_UDF_STARTID < 0 Or $IGLOBALID - $_UDF_STARTID > $_UDF_GLOBALID_MAX_IDS Then Return SetError(-1, 0, False)
- For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
- If $__G_AUDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then
- For $X = $_UDF_GLOBALIDS_OFFSET To UBound($__G_AUDF_GLOBALIDS_USED, $UBOUND_COLUMNS) - 1
- If $__G_AUDF_GLOBALIDS_USED[$IINDEX][$X] = $IGLOBALID Then
- $__G_AUDF_GLOBALIDS_USED[$IINDEX][$X] = 0
- Return True
- EndIf
- Next
- Return SetError(-3, 0, False)
- EndIf
- Next
- Return SetError(-2, 0, False)
- EndFunc ;==>__UDF_FREEGLOBALID
- #Region Global Variables and Constants
- Global $__G_VENUM, $__G_VEXT = 0
- Global $__G_IRGBMODE = 1
- Global Const $TAGOSVERSIONINFO = "struct;dword OSVersionInfoSize;dword MajorVersion;dword MinorVersion;dword BuildNumber;dword PlatformId;wchar CSDVersion[128];endstruct"
- Global Const $IMAGE_BITMAP = 0
- Global Const $IMAGE_ICON = 1
- Global Const $IMAGE_CURSOR = 2
- Global Const $IMAGE_ENHMETAFILE = 3
- Global Const $LR_DEFAULTCOLOR = 0
- Global Const $LR_MONOCHROME = 1
- Global Const $LR_COLOR = 2
- Global Const $LR_COPYRETURNORG = 4
- Global Const $LR_COPYDELETEORG = 8
- Global Const $LR_LOADFROMFILE = 16
- Global Const $LR_LOADTRANSPARENT = 32
- Global Const $LR_DEFAULTSIZE = 64
- Global Const $LR_VGACOLOR = 128
- Global Const $LR_LOADMAP3DCOLORS = 4096
- Global Const $LR_CREATEDIBSECTION = 8192
- Global Const $LR_COPYFROMRESOURCE = 16384
- Global Const $LR_SHARED = 32768
- Global Const $__TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & "struct;long X;long Y;endstruct"
- Global Const $__WINVER = __WINVER()
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_CreateFile($SFILENAME, $ICREATION, $IACCESS = 4, $ISHARE = 0, $IATTRIBUTES = 0, $TSECURITY = 0)
- Local $IDA = 0, $ISM = 0, $ICD = 0, $IFA = 0
- If BitAND($IACCESS, 1) <> 0 Then $IDA = BitOR($IDA, $GENERIC_EXECUTE)
- If BitAND($IACCESS, 2) <> 0 Then $IDA = BitOR($IDA, $GENERIC_READ)
- If BitAND($IACCESS, 4) <> 0 Then $IDA = BitOR($IDA, $GENERIC_WRITE)
- If BitAND($ISHARE, 1) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_DELETE)
- If BitAND($ISHARE, 2) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_READ)
- If BitAND($ISHARE, 4) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_WRITE)
- Switch $ICREATION
- Case 0
- $ICD = $CREATE_NEW
- Case 1
- $ICD = $CREATE_ALWAYS
- Case 2
- $ICD = $OPEN_EXISTING
- Case 3
- $ICD = $OPEN_ALWAYS
- Case 4
- $ICD = $TRUNCATE_EXISTING
- EndSwitch
- If BitAND($IATTRIBUTES, 1) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_ARCHIVE)
- If BitAND($IATTRIBUTES, 2) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_HIDDEN)
- If BitAND($IATTRIBUTES, 4) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_READONLY)
- If BitAND($IATTRIBUTES, 8) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_SYSTEM)
- Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateFileW", "wstr", $SFILENAME, "dword", $IDA, "dword", $ISM, "struct*", $TSECURITY, "dword", $ICD, "dword", $IFA, "ptr", 0)
- If @error Or ($ARESULT[0] = Ptr(-1)) Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateFile
- Func _WinAPI_FreeLibrary($HMODULE)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "FreeLibrary", "handle", $HMODULE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_FreeLibrary
- Func _WinAPI_GetCursorInfo()
- Local $TCURSOR = DllStructCreate($__TAGCURSORINFO)
- Local $ICURSOR = DllStructGetSize($TCURSOR)
- DllStructSetData($TCURSOR, "Size", $ICURSOR)
- Local $ARET = DllCall("user32.dll", "bool", "GetCursorInfo", "struct*", $TCURSOR)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Local $ACURSOR[5]
- $ACURSOR[0] = True
- $ACURSOR[1] = DllStructGetData($TCURSOR, "Flags") <> 0
- $ACURSOR[2] = DllStructGetData($TCURSOR, "hCursor")
- $ACURSOR[3] = DllStructGetData($TCURSOR, "X")
- $ACURSOR[4] = DllStructGetData($TCURSOR, "Y")
- Return $ACURSOR
- EndFunc ;==>_WinAPI_GetCursorInfo
- Func _WinAPI_GetDlgCtrlID($HWND)
- Local $ARESULT = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetDlgCtrlID
- Func _WinAPI_GetModuleHandle($SMODULENAME)
- Local $SMODULENAMETYPE = "wstr"
- If $SMODULENAME = "" Then
- $SMODULENAME = 0
- $SMODULENAMETYPE = "ptr"
- EndIf
- Local $ARESULT = DllCall("kernel32.dll", "handle", "GetModuleHandleW", $SMODULENAMETYPE, $SMODULENAME)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetModuleHandle
- Func _WinAPI_GetString($PSTRING, $BUNICODE = True)
- Local $ILENGTH = _WinAPI_StrLen($PSTRING, $BUNICODE)
- If @error Or Not $ILENGTH Then Return SetError(@error + 10, @extended, "")
- Local $TSTRING = DllStructCreate(($BUNICODE ? "wchar" : "char") & "[" & ($ILENGTH + 1) & "]", $PSTRING)
- If @error Then Return SetError(@error, @extended, "")
- Return SetExtended($ILENGTH, DllStructGetData($TSTRING, 1))
- EndFunc ;==>_WINAPI_GETSTRING
- Func _WinAPI_IsWow64Process($IPID = 0)
- If Not $IPID Then $IPID = @AutoItPID
- Local $HPROCESS = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", ($__WINVER < 153610244096), "bool", 0, "dword", $IPID)
- If @error Or Not $HPROCESS[0] Then Return SetError(@error + 20, @extended, False)
- Local $ARET = DllCall("kernel32.dll", "bool", "IsWow64Process", "handle", $HPROCESS[0], "bool*", 0)
- If __CHECKERRORCLOSEHANDLE($ARET, $HPROCESS[0]) Then Return SetError(@error, @extended, False)
- Return $ARET[2]
- EndFunc ;==>_WINAPI_ISWOW64PROCESS
- Func _WinAPI_LoadImage($HINSTANCE, $SIMAGE, $ITYPE, $IXDESIRED, $IYDESIRED, $ILOAD)
- Local $ARESULT, $SIMAGETYPE = "int"
- If IsString($SIMAGE) Then $SIMAGETYPE = "wstr"
- $ARESULT = DllCall("user32.dll", "handle", "LoadImageW", "handle", $HINSTANCE, $SIMAGETYPE, $SIMAGE, "uint", $ITYPE, "int", $IXDESIRED, "int", $IYDESIRED, "uint", $ILOAD)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_LoadImage
- Func _WinAPI_LoadLibrary($SFILENAME)
- Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryW", "wstr", $SFILENAME)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_LoadLibrary
- Func _WinAPI_PathIsDirectory($SFILEPATH)
- Local $ARET = DllCall("shlwapi.dll", "bool", "PathIsDirectoryW", "wstr", $SFILEPATH)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PATHISDIRECTORY
- Func _WinAPI_ReadFile($HFILE, $PBUFFER, $ITOREAD, ByRef $IREAD, $TOVERLAPPED = 0)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadFile", "handle", $HFILE, "struct*", $PBUFFER, "dword", $ITOREAD, "dword*", 0, "struct*", $TOVERLAPPED)
- If @error Then Return SetError(@error, @extended, False)
- $IREAD = $ARESULT[4]
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_ReadFile
- Func _WinAPI_StrLen($PSTRING, $BUNICODE = True)
- Local $W = ""
- If $BUNICODE Then $W = "W"
- Local $ARET = DllCall("kernel32.dll", "int", "lstrlen" & $W, "struct*", $PSTRING)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_STRLEN
- Func _WinAPI_SwitchColor($ICOLOR)
- If $ICOLOR = -1 Then Return $ICOLOR
- Return BitOR(BitAND($ICOLOR, 65280), BitShift(BitAND($ICOLOR, 255), -16), BitShift(BitAND($ICOLOR, 16711680), 16))
- EndFunc ;==>_WINAPI_SWITCHCOLOR
- Func _WinAPI_WriteFile($HFILE, $PBUFFER, $ITOWRITE, ByRef $IWRITTEN, $TOVERLAPPED = 0)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteFile", "handle", $HFILE, "struct*", $PBUFFER, "dword", $ITOWRITE, "dword*", 0, "struct*", $TOVERLAPPED)
- If @error Then Return SetError(@error, @extended, False)
- $IWRITTEN = $ARESULT[4]
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_WriteFile
- #EndRegion Public Functions
- #Region Internal Functions
- Func __CHECKERRORARRAYBOUNDS(Const ByRef $ADATA, ByRef $ISTART, ByRef $IEND, $NDIM = 1, $IDIM = $UBOUND_DIMENSIONS)
- If Not IsArray($ADATA) Then Return SetError(1, 0, 1)
- If UBound($ADATA, $IDIM) <> $NDIM Then Return SetError(2, 0, 1)
- If $ISTART < 0 Then $ISTART = 0
- Local $IUBOUND = UBound($ADATA) - 1
- If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
- If $ISTART > $IEND Then Return SetError(4, 0, 1)
- Return 0
- EndFunc ;==>__CHECKERRORARRAYBOUNDS
- Func __CHECKERRORCLOSEHANDLE($ARET, $HFILE, $BLASTERROR = False, $ICURERR = @error, $ICUREXT = @extended)
- If Not $ICURERR And Not $ARET[0] Then $ICURERR = 10
- Local $ALASTERROR = DllCall("kernel32.dll", "dword", "GetLastError")
- DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HFILE)
- If $ICURERR Then DllCall("kernel32.dll", "none", "SetLastError", "dword", $ALASTERROR[0])
- If $BLASTERROR Then $ICUREXT = $ALASTERROR[0]
- Return SetError($ICURERR, $ICUREXT, $ICURERR)
- EndFunc ;==>__CHECKERRORCLOSEHANDLE
- Func __DLL($SPATH, $BPIN = False)
- Local $ARET = DllCall("kernel32.dll", "bool", "GetModuleHandleExW", "dword", ($BPIN ? 1 : 2), "wstr", $SPATH, "ptr*", 0)
- If Not $ARET[3] Then
- Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryW", "wstr", $SPATH)
- If Not $ARESULT[0] Then Return 0
- EndIf
- Return 1
- EndFunc ;==>__DLL
- Func __ENUMWINDOWSPROC($HWND, $BVISIBLE)
- Local $ARESULT
- If $BVISIBLE Then
- $ARESULT = DllCall("user32.dll", "bool", "IsWindowVisible", "hwnd", $HWND)
- If Not $ARESULT[0] Then
- Return 1
- EndIf
- EndIf
- __INC($__G_VENUM)
- $__G_VENUM[$__G_VENUM[0][0]][0] = $HWND
- $ARESULT = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $HWND, "wstr", "", "int", 4096)
- $__G_VENUM[$__G_VENUM[0][0]][1] = $ARESULT[2]
- Return 1
- EndFunc ;==>__ENUMWINDOWSPROC
- Func __FATALEXIT($ICODE, $STEXT = "")
- If $STEXT Then MsgBox($MB_SYSTEMMODAL, "AutoIt", $STEXT)
- DllCall("kernel32.dll", "none", "FatalExit", "int", $ICODE)
- EndFunc ;==>__FATALEXIT
- Func __INC(ByRef $ADATA, $IINCREMENT = 100)
- Select
- Case UBound($ADATA, $UBOUND_COLUMNS)
- If $IINCREMENT < 0 Then
- ReDim $ADATA[$ADATA[0][0] + 1][UBound($ADATA, $UBOUND_COLUMNS)]
- Else
- $ADATA[0][0] += 1
- If $ADATA[0][0] > UBound($ADATA) - 1 Then
- ReDim $ADATA[$ADATA[0][0] + $IINCREMENT][UBound($ADATA, $UBOUND_COLUMNS)]
- EndIf
- EndIf
- Case UBound($ADATA, $UBOUND_ROWS)
- If $IINCREMENT < 0 Then
- ReDim $ADATA[$ADATA[0] + 1]
- Else
- $ADATA[0] += 1
- If $ADATA[0] > UBound($ADATA) - 1 Then
- ReDim $ADATA[$ADATA[0] + $IINCREMENT]
- EndIf
- EndIf
- Case Else
- Return 0
- EndSelect
- Return 1
- EndFunc ;==>__INC
- Func __RGB($ICOLOR)
- If $__G_IRGBMODE Then
- $ICOLOR = _WinAPI_SwitchColor($ICOLOR)
- EndIf
- Return $ICOLOR
- EndFunc ;==>__RGB
- Func __WINVER()
- Local $TOSVI = DllStructCreate($TAGOSVERSIONINFO)
- DllStructSetData($TOSVI, 1, DllStructGetSize($TOSVI))
- Local $ARET = DllCall("kernel32.dll", "bool", "GetVersionExW", "struct*", $TOSVI)
- If @error Or Not $ARET[0] Then Return SetError(@error, @extended, 0)
- Return BitOR(BitShift(DllStructGetData($TOSVI, 2), -8), DllStructGetData($TOSVI, 3))
- EndFunc ;==>__WINVER
- #EndRegion Internal Functions
- #Region Global Variables and Constants
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_CharToOem($SSTR)
- Local $ARET = DllCall("user32.dll", "bool", "CharToOemW", "wstr", $SSTR, "wstr", "")
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, "")
- Return $ARET[2]
- EndFunc ;==>_WINAPI_CHARTOOEM
- Func _WinAPI_ClientToScreen($HWND, ByRef $TPOINT)
- Local $ARET = DllCall("user32.dll", "bool", "ClientToScreen", "hwnd", $HWND, "struct*", $TPOINT)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TPOINT
- EndFunc ;==>_WinAPI_ClientToScreen
- Func _WinAPI_DWordToFloat($IVALUE)
- Local $TDWORD = DllStructCreate("dword")
- Local $TFLOAT = DllStructCreate("float", DllStructGetPtr($TDWORD))
- DllStructSetData($TDWORD, 1, $IVALUE)
- Return DllStructGetData($TFLOAT, 1)
- EndFunc ;==>_WINAPI_DWORDTOFLOAT
- Func _WinAPI_DWordToInt($IVALUE)
- Local $TDATA = DllStructCreate("int")
- DllStructSetData($TDATA, 1, $IVALUE)
- Return DllStructGetData($TDATA, 1)
- EndFunc ;==>_WINAPI_DWORDTOINT
- Func _WinAPI_FloatToDWord($IVALUE)
- Local $TFLOAT = DllStructCreate("float")
- Local $TDWORD = DllStructCreate("dword", DllStructGetPtr($TFLOAT))
- DllStructSetData($TFLOAT, 1, $IVALUE)
- Return DllStructGetData($TDWORD, 1)
- EndFunc ;==>_WINAPI_FLOATTODWORD
- Func _WinAPI_FloatToInt($NFLOAT)
- Local $TFLOAT = DllStructCreate("float")
- Local $TINT = DllStructCreate("int", DllStructGetPtr($TFLOAT))
- DllStructSetData($TFLOAT, 1, $NFLOAT)
- Return DllStructGetData($TINT, 1)
- EndFunc ;==>_WinAPI_FloatToInt
- Func _WinAPI_GetXYFromPoint(ByRef $TPOINT, ByRef $IX, ByRef $IY)
- $IX = DllStructGetData($TPOINT, "X")
- $IY = DllStructGetData($TPOINT, "Y")
- EndFunc ;==>_WinAPI_GetXYFromPoint
- Func _WinAPI_GUIDFromString($SGUID)
- Local $TGUID = DllStructCreate($TAGGUID)
- _WinAPI_GUIDFromStringEx($SGUID, $TGUID)
- If @error Then Return SetError(@error + 10, @extended, 0)
- Return $TGUID
- EndFunc ;==>_WinAPI_GUIDFromString
- Func _WinAPI_GUIDFromStringEx($SGUID, $TGUID)
- Local $ARESULT = DllCall("ole32.dll", "long", "CLSIDFromString", "wstr", $SGUID, "struct*", $TGUID)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GUIDFromStringEx
- Func _WinAPI_HashData($PMEMORY, $ISIZE, $ILENGTH = 32)
- If ($ILENGTH <= 0) Or ($ILENGTH > 256) Then Return SetError(11, 0, 0)
- Local $TDATA = DllStructCreate("byte[" & $ILENGTH & "]")
- Local $ARET = DllCall("shlwapi.dll", "uint", "HashData", "struct*", $PMEMORY, "dword", $ISIZE, "struct*", $TDATA, "dword", $ILENGTH)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return DllStructGetData($TDATA, 1)
- EndFunc ;==>_WINAPI_HASHDATA
- Func _WinAPI_HashString($SSTRING, $BCASESENSITIVE = True, $ILENGTH = 32)
- Local $ILENGTHS = StringLen($SSTRING)
- If Not $ILENGTHS Or ($ILENGTH > 256) Then Return SetError(12, 0, 0)
- Local $TSTRING = DllStructCreate("wchar[" & ($ILENGTHS + 1) & "]")
- If Not $BCASESENSITIVE Then
- $SSTRING = StringLower($SSTRING)
- EndIf
- DllStructSetData($TSTRING, 1, $SSTRING)
- Local $SHASH = _WinAPI_HashData($TSTRING, 2 * $ILENGTHS, $ILENGTH)
- If @error Then Return SetError(@error, @extended, 0)
- Return $SHASH
- EndFunc ;==>_WINAPI_HASHSTRING
- Func _WinAPI_HiByte($IVALUE)
- Return BitAND(BitShift($IVALUE, 8), 255)
- EndFunc ;==>_WINAPI_HIBYTE
- Func _WinAPI_HiDWord($IVALUE)
- Local $TINT64 = DllStructCreate("int64")
- Local $TQWORD = DllStructCreate("dword;dword", DllStructGetPtr($TINT64))
- DllStructSetData($TINT64, 1, $IVALUE)
- Return DllStructGetData($TQWORD, 2)
- EndFunc ;==>_WINAPI_HIDWORD
- Func _WinAPI_HiWord($ILONG)
- Return BitShift($ILONG, 16)
- EndFunc ;==>_WinAPI_HiWord
- Func _WinAPI_IntToDWord($IVALUE)
- Local $TDATA = DllStructCreate("dword")
- DllStructSetData($TDATA, 1, $IVALUE)
- Return DllStructGetData($TDATA, 1)
- EndFunc ;==>_WINAPI_INTTODWORD
- Func _WinAPI_IntToFloat($IINT)
- Local $TINT = DllStructCreate("int")
- Local $TFLOAT = DllStructCreate("float", DllStructGetPtr($TINT))
- DllStructSetData($TINT, 1, $IINT)
- Return DllStructGetData($TFLOAT, 1)
- EndFunc ;==>_WinAPI_IntToFloat
- Func _WinAPI_LoByte($IVALUE)
- Return BitAND($IVALUE, 255)
- EndFunc ;==>_WINAPI_LOBYTE
- Func _WinAPI_LoDWord($IVALUE)
- Local $TINT64 = DllStructCreate("int64")
- Local $TQWORD = DllStructCreate("dword;dword", DllStructGetPtr($TINT64))
- DllStructSetData($TINT64, 1, $IVALUE)
- Return DllStructGetData($TQWORD, 1)
- EndFunc ;==>_WINAPI_LODWORD
- Func _WinAPI_LoWord($ILONG)
- Return BitAND($ILONG, 65535)
- EndFunc ;==>_WinAPI_LoWord
- Func _WinAPI_LongMid($IVALUE, $ISTART, $ICOUNT)
- Return BitAND(BitShift($IVALUE, $ISTART), BitOR(BitShift(BitShift(2147483647, 32 - ($ICOUNT + 1)), 1), BitShift(1, -($ICOUNT - 1))))
- EndFunc ;==>_WINAPI_LONGMID
- Func _WinAPI_MAKELANGID($ILNGIDPRIMARY, $ILNGIDSUB)
- Return BitOR(BitShift($ILNGIDSUB, -10), $ILNGIDPRIMARY)
- EndFunc ;==>_WinAPI_MAKELANGID
- Func _WinAPI_MAKELCID($ILNGID, $ISORTID)
- Return BitOR(BitShift($ISORTID, -16), $ILNGID)
- EndFunc ;==>_WinAPI_MAKELCID
- Func _WinAPI_MakeLong($ILO, $IHI)
- Return BitOR(BitShift($IHI, -16), BitAND($ILO, 65535))
- EndFunc ;==>_WinAPI_MakeLong
- Func _WinAPI_MakeQWord($ILODWORD, $IHIDWORD)
- Local $TINT64 = DllStructCreate("uint64")
- Local $TDWORDS = DllStructCreate("dword;dword", DllStructGetPtr($TINT64))
- DllStructSetData($TDWORDS, 1, $ILODWORD)
- DllStructSetData($TDWORDS, 2, $IHIDWORD)
- Return DllStructGetData($TINT64, 1)
- EndFunc ;==>_WinAPI_MakeQWord
- Func _WinAPI_MakeWord($ILO, $IHI)
- Local $TWORD = DllStructCreate("ushort")
- Local $TBYTE = DllStructCreate("byte;byte", DllStructGetPtr($TWORD))
- DllStructSetData($TBYTE, 1, $IHI)
- DllStructSetData($TBYTE, 2, $ILO)
- Return DllStructGetData($TWORD, 1)
- EndFunc ;==>_WINAPI_MAKEWORD
- Func _WinAPI_MultiByteToWideChar($VTEXT, $ICODEPAGE = 0, $IFLAGS = 0, $BRETSTRING = False)
- Local $STEXTTYPE = "str"
- If Not IsString($VTEXT) Then $STEXTTYPE = "struct*"
- Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $VTEXT, "int", -1, "ptr", 0, "int", 0)
- If @error Or Not $ARESULT[0] Then Return SetError(@error + 10, @extended, 0)
- Local $IOUT = $ARESULT[0]
- Local $TOUT = DllStructCreate("wchar[" & $IOUT & "]")
- $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $VTEXT, "int", -1, "struct*", $TOUT, "int", $IOUT)
- If @error Or Not $ARESULT[0] Then Return SetError(@error + 20, @extended, 0)
- If $BRETSTRING Then Return DllStructGetData($TOUT, 1)
- Return $TOUT
- EndFunc ;==>_WinAPI_MultiByteToWideChar
- Func _WinAPI_MultiByteToWideCharEx($STEXT, $PTEXT, $ICODEPAGE = 0, $IFLAGS = 0)
- Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, "STR", $STEXT, "int", -1, "struct*", $PTEXT, "int", (StringLen($STEXT) + 1) * 2)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_MultiByteToWideCharEx
- Func _WinAPI_OemToChar($SSTR)
- Local $ARET = DllCall("user32.dll", "bool", "OemToChar", "str", $SSTR, "str", "")
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, "")
- Return $ARET[2]
- EndFunc ;==>_WINAPI_OEMTOCHAR
- Func _WinAPI_PointFromRect(ByRef $TRECT, $BCENTER = True)
- Local $IX1 = DllStructGetData($TRECT, "Left")
- Local $IY1 = DllStructGetData($TRECT, "Top")
- Local $IX2 = DllStructGetData($TRECT, "Right")
- Local $IY2 = DllStructGetData($TRECT, "Bottom")
- If $BCENTER Then
- $IX1 = $IX1 + (($IX2 - $IX1) / 2)
- $IY1 = $IY1 + (($IY2 - $IY1) / 2)
- EndIf
- Local $TPOINT = DllStructCreate($TAGPOINT)
- DllStructSetData($TPOINT, "X", $IX1)
- DllStructSetData($TPOINT, "Y", $IY1)
- Return $TPOINT
- EndFunc ;==>_WinAPI_PointFromRect
- Func _WinAPI_PrimaryLangId($ILNGID)
- Return BitAND($ILNGID, 1023)
- EndFunc ;==>_WinAPI_PrimaryLangId
- Func _WinAPI_ScreenToClient($HWND, ByRef $TPOINT)
- Local $ARESULT = DllCall("user32.dll", "bool", "ScreenToClient", "hwnd", $HWND, "struct*", $TPOINT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_ScreenToClient
- Func _WinAPI_ShortToWord($IVALUE)
- Return BitAND($IVALUE, 65535)
- EndFunc ;==>_WINAPI_SHORTTOWORD
- Func _WinAPI_StrFormatByteSize($ISIZE)
- Local $ARET = DllCall("shlwapi.dll", "ptr", "StrFormatByteSizeW", "int64", $ISIZE, "wstr", "", "uint", 1024)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, "")
- Return $ARET[2]
- EndFunc ;==>_WINAPI_STRFORMATBYTESIZE
- Func _WinAPI_StrFormatByteSizeEx($ISIZE)
- Local $ASYMBOL = DllCall("kernel32.dll", "int", "GetLocaleInfoW", "dword", 1024, "dword", 15, "wstr", "", "int", 2048)
- If @error Then Return SetError(@error + 10, @extended, "")
- Local $SSIZE = _WinAPI_StrFormatByteSize(0)
- If @error Then Return SetError(@error, @extended, "")
- Return StringReplace($SSIZE, "0", StringRegExpReplace(Number($ISIZE), "(?<=\d)(?=(\d{3})+\z)", $ASYMBOL[3]))
- EndFunc ;==>_WINAPI_STRFORMATBYTESIZEEX
- Func _WinAPI_StrFormatKBSize($ISIZE)
- Local $ARET = DllCall("shlwapi.dll", "ptr", "StrFormatKBSizeW", "int64", $ISIZE, "wstr", "", "uint", 1024)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, "")
- Return $ARET[2]
- EndFunc ;==>_WINAPI_STRFORMATKBSIZE
- Func _WinAPI_StrFromTimeInterval($ITIME, $IDIGITS = 7)
- Local $ARET = DllCall("shlwapi.dll", "int", "StrFromTimeIntervalW", "wstr", "", "uint", 1024, "dword", $ITIME, "int", $IDIGITS)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, "")
- Return StringStripWS($ARET[1], $STR_STRIPLEADING + $STR_STRIPTRAILING)
- EndFunc ;==>_WINAPI_STRFROMTIMEINTERVAL
- Func _WinAPI_StringFromGUID($TGUID)
- Local $ARESULT = DllCall("ole32.dll", "int", "StringFromGUID2", "struct*", $TGUID, "wstr", "", "int", 40)
- If @error Or Not $ARESULT[0] Then Return SetError(@error, @extended, "")
- Return SetExtended($ARESULT[0], $ARESULT[2])
- EndFunc ;==>_WinAPI_StringFromGUID
- Func _WinAPI_SubLangId($ILNGID)
- Return BitShift($ILNGID, 10)
- EndFunc ;==>_WinAPI_SubLangId
- Func _WinAPI_SwapDWord($IVALUE)
- Local $TSTRUCT1 = DllStructCreate("dword;dword")
- Local $TSTRUCT2 = DllStructCreate("byte[4];byte[4]", DllStructGetPtr($TSTRUCT1))
- DllStructSetData($TSTRUCT1, 1, $IVALUE)
- For $I = 1 To 4
- DllStructSetData($TSTRUCT2, 2, DllStructGetData($TSTRUCT2, 1, 5 - $I), $I)
- Next
- Return DllStructGetData($TSTRUCT1, 2)
- EndFunc ;==>_WINAPI_SWAPDWORD
- Func _WinAPI_SwapQWord($IVALUE)
- Local $TSTRUCT1 = DllStructCreate("int64;int64")
- Local $TSTRUCT2 = DllStructCreate("byte[8];byte[8]", DllStructGetPtr($TSTRUCT1))
- DllStructSetData($TSTRUCT1, 1, $IVALUE)
- For $I = 1 To 8
- DllStructSetData($TSTRUCT2, 2, DllStructGetData($TSTRUCT2, 1, 9 - $I), $I)
- Next
- Return DllStructGetData($TSTRUCT1, 2)
- EndFunc ;==>_WINAPI_SWAPQWORD
- Func _WinAPI_SwapWord($IVALUE)
- Local $TSTRUCT1 = DllStructCreate("word;word")
- Local $TSTRUCT2 = DllStructCreate("byte[2];byte[2]", DllStructGetPtr($TSTRUCT1))
- DllStructSetData($TSTRUCT1, 1, $IVALUE)
- For $I = 1 To 2
- DllStructSetData($TSTRUCT2, 2, DllStructGetData($TSTRUCT2, 1, 3 - $I), $I)
- Next
- Return DllStructGetData($TSTRUCT1, 2)
- EndFunc ;==>_WINAPI_SWAPWORD
- Func _WinAPI_WideCharToMultiByte($VUNICODE, $ICODEPAGE = 0, $BRETNOSTRUCT = True, $BRETBINARY = False)
- Local $SUNICODETYPE = "wstr"
- If Not IsString($VUNICODE) Then $SUNICODETYPE = "struct*"
- Local $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $VUNICODE, "int", -1, "ptr", 0, "int", 0, "ptr", 0, "ptr", 0)
- If @error Or Not $ARESULT[0] Then Return SetError(@error + 20, @extended, "")
- Local $TMULTIBYTE = DllStructCreate((($BRETBINARY) ? ("byte") : ("char")) & "[" & $ARESULT[0] & "]")
- $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $VUNICODE, "int", -1, "struct*", $TMULTIBYTE, "int", $ARESULT[0], "ptr", 0, "ptr", 0)
- If @error Or Not $ARESULT[0] Then Return SetError(@error + 10, @extended, "")
- If $BRETNOSTRUCT Then Return DllStructGetData($TMULTIBYTE, 1)
- Return $TMULTIBYTE
- EndFunc ;==>_WinAPI_WideCharToMultiByte
- Func _WinAPI_WordToShort($IVALUE)
- If BitAND($IVALUE, 32768) Then
- Return BitOR($IVALUE, -32768)
- EndIf
- Return BitAND($IVALUE, 32767)
- EndFunc ;==>_WINAPI_WORDTOSHORT
- #EndRegion Public Functions
- #Region Global Variables and Constants
- Global Const $DUPLICATE_CLOSE_SOURCE = 1
- Global Const $DUPLICATE_SAME_ACCESS = 2
- Global Const $OBJ_BITMAP = 7
- Global Const $OBJ_BRUSH = 2
- Global Const $OBJ_COLORSPACE = 14
- Global Const $OBJ_DC = 3
- Global Const $OBJ_ENHMETADC = 12
- Global Const $OBJ_ENHMETAFILE = 13
- Global Const $OBJ_EXTPEN = 11
- Global Const $OBJ_FONT = 6
- Global Const $OBJ_MEMDC = 10
- Global Const $OBJ_METADC = 4
- Global Const $OBJ_METAFILE = 9
- Global Const $OBJ_PAL = 5
- Global Const $OBJ_PEN = 1
- Global Const $OBJ_REGION = 8
- Global Const $NULL_BRUSH = 5
- Global Const $NULL_PEN = 8
- Global Const $BLACK_BRUSH = 4
- Global Const $DKGRAY_BRUSH = 3
- Global Const $DC_BRUSH = 18
- Global Const $GRAY_BRUSH = 2
- Global Const $HOLLOW_BRUSH = $NULL_BRUSH
- Global Const $LTGRAY_BRUSH = 1
- Global Const $WHITE_BRUSH = 0
- Global Const $BLACK_PEN = 7
- Global Const $DC_PEN = 19
- Global Const $WHITE_PEN = 6
- Global Const $ANSI_FIXED_FONT = 11
- Global Const $ANSI_VAR_FONT = 12
- Global Const $DEVICE_DEFAULT_FONT = 14
- Global Const $DEFAULT_GUI_FONT = 17
- Global Const $OEM_FIXED_FONT = 10
- Global Const $SYSTEM_FONT = 13
- Global Const $SYSTEM_FIXED_FONT = 16
- Global Const $DEFAULT_PALETTE = 15
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_CloseHandle($HOBJECT)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HOBJECT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CloseHandle
- Func _WinAPI_DeleteObject($HOBJECT)
- Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $HOBJECT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_DeleteObject
- Func _WinAPI_DuplicateHandle($HSOURCEPROCESSHANDLE, $HSOURCEHANDLE, $HTARGETPROCESSHANDLE, $IDESIREDACCESS, $IINHERITHANDLE, $IOPTIONS)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "DuplicateHandle", "handle", $HSOURCEPROCESSHANDLE, "handle", $HSOURCEHANDLE, "handle", $HTARGETPROCESSHANDLE, "handle*", 0, "dword", $IDESIREDACCESS, "bool", $IINHERITHANDLE, "dword", $IOPTIONS)
- If @error Or Not $ARESULT[0] Then Return SetError(@error, @extended, 0)
- Return $ARESULT[4]
- EndFunc ;==>_WinAPI_DuplicateHandle
- Func _WinAPI_GetCurrentObject($HDC, $ITYPE)
- Local $ARET = DllCall("gdi32.dll", "handle", "GetCurrentObject", "handle", $HDC, "uint", $ITYPE)
- If @error Or Not $ARET[0] Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETCURRENTOBJECT
- Func _WinAPI_GetCurrentProcess()
- Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentProcess")
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetCurrentProcess
- Func _WinAPI_GetObject($HOBJECT, $ISIZE, $POBJECT)
- Local $ARESULT = DllCall("gdi32.dll", "int", "GetObjectW", "handle", $HOBJECT, "int", $ISIZE, "struct*", $POBJECT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetObject
- Func _WinAPI_GetObjectInfoByHandle($HOBJECT)
- Local $TAGPUBLIC_OBJECT_BASIC_INFORMATION = "ulong Attributes;ulong GrantedAcess;ulong HandleCount;ulong PointerCount;ulong Reserved[10]"
- Local $TPOBI = DllStructCreate($TAGPUBLIC_OBJECT_BASIC_INFORMATION)
- Local $ARET = DllCall("ntdll.dll", "long", "ZwQueryObject", "handle", $HOBJECT, "uint", 0, "struct*", $TPOBI, "ulong", DllStructGetSize($TPOBI), "ptr", 0)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Local $ARESULT[4]
- For $I = 0 To 3
- $ARESULT[$I] = DllStructGetData($TPOBI, $I + 1)
- Next
- Return $ARESULT
- EndFunc ;==>_WINAPI_GETOBJECTINFOBYHANDLE
- Func _WinAPI_GetObjectNameByHandle($HOBJECT)
- Local $TAGUNICODE_STRING = "struct;ushort Length;ushort MaximumLength;ptr Buffer;endstruct"
- Local $TAGPUBLIC_OBJECT_TYPE_INFORMATION = "struct;" & $TAGUNICODE_STRING & ";ulong Reserved[22];endstruct"
- Local $TPOTI = DllStructCreate($TAGPUBLIC_OBJECT_TYPE_INFORMATION & ";byte[32]")
- Local $ARET = DllCall("ntdll.dll", "long", "ZwQueryObject", "handle", $HOBJECT, "uint", 2, "struct*", $TPOTI, "ulong", DllStructGetSize($TPOTI), "ulong*", 0)
- If @error Then Return SetError(@error, @extended, "")
- If $ARET[0] Then Return SetError(10, $ARET[0], "")
- Local $PDATA = DllStructGetData($TPOTI, 3)
- If Not $PDATA Then Return SetError(11, 0, "")
- Return _WinAPI_GetString($PDATA)
- EndFunc ;==>_WINAPI_GETOBJECTNAMEBYHANDLE
- Func _WinAPI_GetObjectType($HOBJECT)
- Local $ARET = DllCall("gdi32.dll", "dword", "GetObjectType", "handle", $HOBJECT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETOBJECTTYPE
- Func _WinAPI_GetStdHandle($ISTDHANDLE)
- If $ISTDHANDLE < 0 Or $ISTDHANDLE > 2 Then Return SetError(2, 0, -1)
- Local Const $AHANDLE[3] = [-10, -11, -12]
- Local $ARESULT = DllCall("kernel32.dll", "handle", "GetStdHandle", "dword", $AHANDLE[$ISTDHANDLE])
- If @error Then Return SetError(@error, @extended, -1)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetStdHandle
- Func _WinAPI_GetStockObject($IOBJECT)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "GetStockObject", "int", $IOBJECT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetStockObject
- Func _WinAPI_SelectObject($HDC, $HGDIOBJ)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HDC, "handle", $HGDIOBJ)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SelectObject
- Func _WinAPI_SetHandleInformation($HOBJECT, $IMASK, $IFLAGS)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "SetHandleInformation", "handle", $HOBJECT, "dword", $IMASK, "dword", $IFLAGS)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SetHandleInformation
- #EndRegion Public Functions
- #Region Global Variables and Constants
- Global $__G_AINPROCESS_WINAPI[64][2] = [[0, 0]]
- Global $__G_AWINLIST_WINAPI[64][2] = [[0, 0]]
- Global Const $GW_HWNDFIRST = 0
- Global Const $GW_HWNDLAST = 1
- Global Const $GW_HWNDNEXT = 2
- Global Const $GW_HWNDPREV = 3
- Global Const $GW_OWNER = 4
- Global Const $GW_CHILD = 5
- Global Const $GW_ENABLEDPOPUP = 6
- Global Const $GWL_WNDPROC = -4
- Global Const $GWL_HINSTANCE = -6
- Global Const $GWL_HWNDPARENT = -8
- Global Const $GWL_ID = -12
- Global Const $GWL_STYLE = -16
- Global Const $GWL_EXSTYLE = -20
- Global Const $GWL_USERDATA = -21
- Global Const $__WINAPICONSTANT_WM_SETFONT = 48
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_CreateWindowEx($IEXSTYLE, $SCLASS, $SNAME, $ISTYLE, $IX, $IY, $IWIDTH, $IHEIGHT, $HPARENT, $HMENU = 0, $HINSTANCE = 0, $PPARAM = 0)
- If $HINSTANCE = 0 Then $HINSTANCE = _WinAPI_GetModuleHandle("")
- Local $ARESULT = DllCall("user32.dll", "hwnd", "CreateWindowExW", "dword", $IEXSTYLE, "wstr", $SCLASS, "wstr", $SNAME, "dword", $ISTYLE, "int", $IX, "int", $IY, "int", $IWIDTH, "int", $IHEIGHT, "hwnd", $HPARENT, "handle", $HMENU, "handle", $HINSTANCE, "struct*", $PPARAM)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateWindowEx
- Func _WinAPI_GetClientRect($HWND)
- Local $TRECT = DllStructCreate($TAGRECT)
- Local $ARET = DllCall("user32.dll", "bool", "GetClientRect", "hwnd", $HWND, "struct*", $TRECT)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TRECT
- EndFunc ;==>_WinAPI_GetClientRect
- Func _WinAPI_GetDesktopWindow()
- Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDesktopWindow")
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetDesktopWindow
- Func _WinAPI_DestroyWindow($HWND)
- Local $ARESULT = DllCall("user32.dll", "bool", "DestroyWindow", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_DestroyWindow
- Func _WinAPI_EnableWindow($HWND, $BENABLE = True)
- Local $ARESULT = DllCall("user32.dll", "bool", "EnableWindow", "hwnd", $HWND, "bool", $BENABLE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_EnableWindow
- Func _WinAPI_EnumWindows($BVISIBLE = True, $HWND = Default)
- __WINAPI_ENUMWINDOWSINIT()
- If $HWND = Default Then $HWND = _WinAPI_GetDesktopWindow()
- __WINAPI_ENUMWINDOWSCHILD($HWND, $BVISIBLE)
- Return $__G_AWINLIST_WINAPI
- EndFunc ;==>_WinAPI_EnumWindows
- Func _WinAPI_EnumWindowsPopup()
- __WINAPI_ENUMWINDOWSINIT()
- Local $HWND = _WinAPI_GetWindow(_WinAPI_GetDesktopWindow(), $GW_CHILD)
- Local $SCLASS
- While $HWND <> 0
- If _WinAPI_IsWindowVisible($HWND) Then
- $SCLASS = _WinAPI_GetClassName($HWND)
- If $SCLASS = "#32768" Then
- __WINAPI_ENUMWINDOWSADD($HWND)
- ElseIf $SCLASS = "ToolbarWindow32" Then
- __WINAPI_ENUMWINDOWSADD($HWND)
- ElseIf $SCLASS = "ToolTips_Class32" Then
- __WINAPI_ENUMWINDOWSADD($HWND)
- ElseIf $SCLASS = "BaseBar" Then
- __WINAPI_ENUMWINDOWSCHILD($HWND)
- EndIf
- EndIf
- $HWND = _WinAPI_GetWindow($HWND, $GW_HWNDNEXT)
- WEnd
- Return $__G_AWINLIST_WINAPI
- EndFunc ;==>_WinAPI_EnumWindowsPopup
- Func _WinAPI_EnumWindowsTop()
- __WINAPI_ENUMWINDOWSINIT()
- Local $HWND = _WinAPI_GetWindow(_WinAPI_GetDesktopWindow(), $GW_CHILD)
- While $HWND <> 0
- If _WinAPI_IsWindowVisible($HWND) Then __WINAPI_ENUMWINDOWSADD($HWND)
- $HWND = _WinAPI_GetWindow($HWND, $GW_HWNDNEXT)
- WEnd
- Return $__G_AWINLIST_WINAPI
- EndFunc ;==>_WinAPI_EnumWindowsTop
- Func _WinAPI_GetClassName($HWND)
- If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
- Local $ARESULT = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $HWND, "wstr", "", "int", 4096)
- If @error Or Not $ARESULT[0] Then Return SetError(@error, @extended, "")
- Return SetExtended($ARESULT[0], $ARESULT[2])
- EndFunc ;==>_WinAPI_GetClassName
- Func _WinAPI_GetFocus()
- Local $ARESULT = DllCall("user32.dll", "hwnd", "GetFocus")
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetFocus
- Func _WinAPI_GetParent($HWND)
- Local $ARESULT = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetParent
- Func _WinAPI_GetSysColor($IINDEX)
- Local $ARESULT = DllCall("user32.dll", "INT", "GetSysColor", "int", $IINDEX)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetSysColor
- Func _WinAPI_GetSystemMetrics($IINDEX)
- Local $ARESULT = DllCall("user32.dll", "int", "GetSystemMetrics", "int", $IINDEX)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetSystemMetrics
- Func _WinAPI_GetWindow($HWND, $ICMD)
- Local $ARESULT = DllCall("user32.dll", "hwnd", "GetWindow", "hwnd", $HWND, "uint", $ICMD)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetWindow
- Func _WinAPI_GetWindowHeight($HWND)
- Local $TRECT = _WinAPI_GetWindowRect($HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top")
- EndFunc ;==>_WinAPI_GetWindowHeight
- Func _WinAPI_GetWindowLong($HWND, $IINDEX)
- Local $SFUNCNAME = "GetWindowLongW"
- If @AutoItX64 Then $SFUNCNAME = "GetWindowLongPtrW"
- Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX)
- If @error Or Not $ARESULT[0] Then Return SetError(@error + 10, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetWindowLong
- Func _WinAPI_GetWindowRect($HWND)
- Local $TRECT = DllStructCreate($TAGRECT)
- Local $ARET = DllCall("user32.dll", "bool", "GetWindowRect", "hwnd", $HWND, "struct*", $TRECT)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TRECT
- EndFunc ;==>_WinAPI_GetWindowRect
- Func _WinAPI_GetWindowText($HWND)
- Local $ARESULT = DllCall("user32.dll", "int", "GetWindowTextW", "hwnd", $HWND, "wstr", "", "int", 4096)
- If @error Or Not $ARESULT[0] Then Return SetError(@error + 10, @extended, "")
- Return SetExtended($ARESULT[0], $ARESULT[2])
- EndFunc ;==>_WinAPI_GetWindowText
- Func _WinAPI_GetWindowThreadProcessId($HWND, ByRef $IPID)
- Local $ARESULT = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- $IPID = $ARESULT[2]
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetWindowThreadProcessId
- Func _WinAPI_GetWindowWidth($HWND)
- Local $TRECT = _WinAPI_GetWindowRect($HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left")
- EndFunc ;==>_WinAPI_GetWindowWidth
- Func _WinAPI_InProcess($HWND, ByRef $HLASTWND)
- If $HWND = $HLASTWND Then Return True
- For $II = $__G_AINPROCESS_WINAPI[0][0] To 1 Step -1
- If $HWND = $__G_AINPROCESS_WINAPI[$II][0] Then
- If $__G_AINPROCESS_WINAPI[$II][1] Then
- $HLASTWND = $HWND
- Return True
- Else
- Return False
- EndIf
- EndIf
- Next
- Local $IPID
- _WinAPI_GetWindowThreadProcessId($HWND, $IPID)
- Local $ICOUNT = $__G_AINPROCESS_WINAPI[0][0] + 1
- If $ICOUNT >= 64 Then $ICOUNT = 1
- $__G_AINPROCESS_WINAPI[0][0] = $ICOUNT
- $__G_AINPROCESS_WINAPI[$ICOUNT][0] = $HWND
- $__G_AINPROCESS_WINAPI[$ICOUNT][1] = ($IPID = @AutoItPID)
- Return $__G_AINPROCESS_WINAPI[$ICOUNT][1]
- EndFunc ;==>_WinAPI_InProcess
- Func _WinAPI_InvalidateRect($HWND, $TRECT = 0, $BERASE = True)
- Local $ARESULT = DllCall("user32.dll", "bool", "InvalidateRect", "hwnd", $HWND, "struct*", $TRECT, "bool", $BERASE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_InvalidateRect
- Func _WinAPI_IsClassName($HWND, $SCLASSNAME)
- Local $SSEPARATOR = Opt("GUIDataSeparatorChar")
- Local $ACLASSNAME = StringSplit($SCLASSNAME, $SSEPARATOR)
- If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
- Local $SCLASSCHECK = _WinAPI_GetClassName($HWND)
- For $X = 1 To UBound($ACLASSNAME) - 1
- If StringUpper(StringMid($SCLASSCHECK, 1, StringLen($ACLASSNAME[$X]))) = StringUpper($ACLASSNAME[$X]) Then Return True
- Next
- Return False
- EndFunc ;==>_WinAPI_IsClassName
- Func _WinAPI_IsWindow($HWND)
- Local $ARESULT = DllCall("user32.dll", "bool", "IsWindow", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_IsWindow
- Func _WinAPI_IsWindowVisible($HWND)
- Local $ARESULT = DllCall("user32.dll", "bool", "IsWindowVisible", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_IsWindowVisible
- Func _WinAPI_MoveWindow($HWND, $IX, $IY, $IWIDTH, $IHEIGHT, $BREPAINT = True)
- Local $ARESULT = DllCall("user32.dll", "bool", "MoveWindow", "hwnd", $HWND, "int", $IX, "int", $IY, "int", $IWIDTH, "int", $IHEIGHT, "bool", $BREPAINT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_MoveWindow
- Func _WinAPI_SetFocus($HWND)
- Local $ARESULT = DllCall("user32.dll", "hwnd", "SetFocus", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SetFocus
- Func _WinAPI_SetFont($HWND, $HFONT, $BREDRAW = True)
- _SendMessage($HWND, $__WINAPICONSTANT_WM_SETFONT, $HFONT, $BREDRAW, 0, "hwnd")
- EndFunc ;==>_WinAPI_SetFont
- Func _WinAPI_SetParent($HWNDCHILD, $HWNDPARENT)
- Local $ARESULT = DllCall("user32.dll", "hwnd", "SetParent", "hwnd", $HWNDCHILD, "hwnd", $HWNDPARENT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SetParent
- Func _WinAPI_SetWindowPos($HWND, $HAFTER, $IX, $IY, $ICX, $ICY, $IFLAGS)
- Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowPos", "hwnd", $HWND, "hwnd", $HAFTER, "int", $IX, "int", $IY, "int", $ICX, "int", $ICY, "uint", $IFLAGS)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SetWindowPos
- Func _WinAPI_SetWindowText($HWND, $STEXT)
- Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowTextW", "hwnd", $HWND, "wstr", $STEXT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SetWindowText
- Func _WinAPI_ShowWindow($HWND, $ICMDSHOW = 5)
- Local $ARESULT = DllCall("user32.dll", "bool", "ShowWindow", "hwnd", $HWND, "int", $ICMDSHOW)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_ShowWindow
- Func _WinAPI_UpdateWindow($HWND)
- Local $ARESULT = DllCall("user32.dll", "bool", "UpdateWindow", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_UpdateWindow
- #EndRegion Public Functions
- #Region Internal Functions
- Func __WINAPI_ENUMWINDOWSADD($HWND, $SCLASS = "")
- If $SCLASS = "" Then $SCLASS = _WinAPI_GetClassName($HWND)
- $__G_AWINLIST_WINAPI[0][0] += 1
- Local $ICOUNT = $__G_AWINLIST_WINAPI[0][0]
- If $ICOUNT >= $__G_AWINLIST_WINAPI[0][1] Then
- ReDim $__G_AWINLIST_WINAPI[$ICOUNT + 64][2]
- $__G_AWINLIST_WINAPI[0][1] += 64
- EndIf
- $__G_AWINLIST_WINAPI[$ICOUNT][0] = $HWND
- $__G_AWINLIST_WINAPI[$ICOUNT][1] = $SCLASS
- EndFunc ;==>__WINAPI_ENUMWINDOWSADD
- Func __WINAPI_ENUMWINDOWSCHILD($HWND, $BVISIBLE = True)
- $HWND = _WinAPI_GetWindow($HWND, $GW_CHILD)
- While $HWND <> 0
- If (Not $BVISIBLE) Or _WinAPI_IsWindowVisible($HWND) Then
- __WINAPI_ENUMWINDOWSADD($HWND)
- __WINAPI_ENUMWINDOWSCHILD($HWND, $BVISIBLE)
- EndIf
- $HWND = _WinAPI_GetWindow($HWND, $GW_HWNDNEXT)
- WEnd
- EndFunc ;==>__WINAPI_ENUMWINDOWSCHILD
- Func __WINAPI_ENUMWINDOWSINIT()
- ReDim $__G_AWINLIST_WINAPI[64][2]
- $__G_AWINLIST_WINAPI[0][0] = 0
- $__G_AWINLIST_WINAPI[0][1] = 64
- EndFunc ;==>__WINAPI_ENUMWINDOWSINIT
- #EndRegion Internal Functions
- Global $__G_HHDRLASTWND
- Global Const $__HEADERCONSTANT_CLASSNAME = "SysHeader32"
- Global Const $__HEADERCONSTANT_DEFAULT_GUI_FONT = 17
- Global Const $__HEADERCONSTANT_SWP_SHOWWINDOW = 64
- Global Const $TAGHDHITTESTINFO = $TAGPOINT & ";uint Flags;int Item"
- Global Const $TAGHDLAYOUT = "ptr Rect;ptr WindowPos"
- Global Const $TAGHDTEXTFILTER = "ptr Text;int TextMax"
- Func _GUICtrlHeader_AddItem($HWND, $STEXT, $IWIDTH = 50, $IALIGN = 0, $IIMAGE = -1, $BONRIGHT = False)
- Return _GUICtrlHeader_InsertItem($HWND, _GUICtrlHeader_GetItemCount($HWND), $STEXT, $IWIDTH, $IALIGN, $IIMAGE, $BONRIGHT)
- EndFunc ;==>_GUICtrlHeader_AddItem
- Func _GUICtrlHeader_ClearFilter($HWND, $IINDEX)
- Return _SendMessage($HWND, $HDM_CLEARFILTER, $IINDEX) <> 0
- EndFunc ;==>_GUICtrlHeader_ClearFilter
- Func _GUICtrlHeader_ClearFilterAll($HWND)
- Return _SendMessage($HWND, $HDM_CLEARFILTER, -1) <> 0
- EndFunc ;==>_GUICtrlHeader_ClearFilterAll
- Func _GUICtrlHeader_Create($HWND, $ISTYLE = 70)
- $ISTYLE = BitOR($ISTYLE, $__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE)
- Local $NCTRLID = __UDF_GETNEXTGLOBALID($HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Local $HHEADER = _WinAPI_CreateWindowEx(0, $__HEADERCONSTANT_CLASSNAME, "", $ISTYLE, 0, 0, 0, 0, $HWND, $NCTRLID)
- Local $TRECT = _WinAPI_GetClientRect($HWND)
- Local $TWINDOWPOS = _GUICtrlHeader_Layout($HHEADER, $TRECT)
- Local $IFLAGS = BitOR(DllStructGetData($TWINDOWPOS, "Flags"), $__HEADERCONSTANT_SWP_SHOWWINDOW)
- _WinAPI_SetWindowPos($HHEADER, DllStructGetData($TWINDOWPOS, "InsertAfter"), DllStructGetData($TWINDOWPOS, "X"), DllStructGetData($TWINDOWPOS, "Y"), DllStructGetData($TWINDOWPOS, "CX"), DllStructGetData($TWINDOWPOS, "CY"), $IFLAGS)
- _WinAPI_SetFont($HHEADER, _WinAPI_GetStockObject($__HEADERCONSTANT_DEFAULT_GUI_FONT))
- Return $HHEADER
- EndFunc ;==>_GUICtrlHeader_Create
- Func _GUICtrlHeader_CreateDragImage($HWND, $IINDEX)
- Return Ptr(_SendMessage($HWND, $HDM_CREATEDRAGIMAGE, $IINDEX))
- EndFunc ;==>_GUICtrlHeader_CreateDragImage
- Func _GUICtrlHeader_DeleteItem($HWND, $IINDEX)
- Return _SendMessage($HWND, $HDM_DELETEITEM, $IINDEX) <> 0
- EndFunc ;==>_GUICtrlHeader_DeleteItem
- Func _GUICtrlHeader_Destroy(ByRef $HWND)
- If Not _WinAPI_IsClassName($HWND, $__HEADERCONSTANT_CLASSNAME) Then Return SetError(2, 2, False)
- Local $IDESTROYED = 0
- If IsHWnd($HWND) Then
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- Local $NCTRLID = _WinAPI_GetDlgCtrlID($HWND)
- Local $HPARENT = _WinAPI_GetParent($HWND)
- $IDESTROYED = _WinAPI_DestroyWindow($HWND)
- Local $IRET = __UDF_FREEGLOBALID($HPARENT, $NCTRLID)
- If Not $IRET Then
- EndIf
- Else
- Return SetError(1, 1, False)
- EndIf
- Else
- $IDESTROYED = GUICtrlDelete($HWND)
- EndIf
- If $IDESTROYED Then $HWND = 0
- Return $IDESTROYED <> 0
- EndFunc ;==>_GUICtrlHeader_Destroy
- Func _GUICtrlHeader_EditFilter($HWND, $IINDEX, $BDISCARD = True)
- Return _SendMessage($HWND, $HDM_EDITFILTER, $IINDEX, $BDISCARD) <> 0
- EndFunc ;==>_GUICtrlHeader_EditFilter
- Func _GUICtrlHeader_GetBitmapMargin($HWND)
- Return _SendMessage($HWND, $HDM_GETBITMAPMARGIN)
- EndFunc ;==>_GUICtrlHeader_GetBitmapMargin
- Func _GUICtrlHeader_GetImageList($HWND)
- Return Ptr(_SendMessage($HWND, $HDM_GETIMAGELIST))
- EndFunc ;==>_GUICtrlHeader_GetImageList
- Func _GUICtrlHeader_GetItem($HWND, $IINDEX, ByRef $TITEM)
- Local $BUNICODE = _GUICtrlHeader_GetUnicodeFormat($HWND)
- Local $IRET
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- $IRET = _SendMessage($HWND, $HDM_GETITEMW, $IINDEX, $TITEM, 0, "wparam", "struct*")
- Else
- Local $IITEM = DllStructGetSize($TITEM)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $IITEM, $TMEMMAP)
- _MEMWRITE($TMEMMAP, $TITEM)
- If $BUNICODE Then
- $IRET = _SendMessage($HWND, $HDM_GETITEMW, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- Else
- $IRET = _SendMessage($HWND, $HDM_GETITEMA, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- EndIf
- _MEMREAD($TMEMMAP, $PMEMORY, $TITEM, $IITEM)
- _MEMFREE($TMEMMAP)
- EndIf
- Return $IRET <> 0
- EndFunc ;==>_GUICtrlHeader_GetItem
- Func _GUICtrlHeader_GetItemAlign($HWND, $IINDEX)
- Switch BitAND(_GUICtrlHeader_GetItemFormat($HWND, $IINDEX), $HDF_JUSTIFYMASK)
- Case $HDF_LEFT
- Return 0
- Case $HDF_RIGHT
- Return 1
- Case $HDF_CENTER
- Return 2
- Case Else
- Return -1
- EndSwitch
- EndFunc ;==>_GUICtrlHeader_GetItemAlign
- Func _GUICtrlHeader_GetItemBitmap($HWND, $IINDEX)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_BITMAP)
- _GUICtrlHeader_GetItem($HWND, $IINDEX, $TITEM)
- Return DllStructGetData($TITEM, "hBmp")
- EndFunc ;==>_GUICtrlHeader_GetItemBitmap
- Func _GUICtrlHeader_GetItemCount($HWND)
- Return _SendMessage($HWND, $HDM_GETITEMCOUNT)
- EndFunc ;==>_GUICtrlHeader_GetItemCount
- Func _GUICtrlHeader_GetItemDisplay($HWND, $IINDEX)
- Local $IRET = 0
- Local $IFORMAT = _GUICtrlHeader_GetItemFormat($HWND, $IINDEX)
- If BitAND($IFORMAT, $HDF_BITMAP) <> 0 Then $IRET = BitOR($IRET, 1)
- If BitAND($IFORMAT, $HDF_BITMAP_ON_RIGHT) <> 0 Then $IRET = BitOR($IRET, 2)
- If BitAND($IFORMAT, $HDF_OWNERDRAW) <> 0 Then $IRET = BitOR($IRET, 4)
- If BitAND($IFORMAT, $HDF_STRING) <> 0 Then $IRET = BitOR($IRET, 8)
- Return $IRET
- EndFunc ;==>_GUICtrlHeader_GetItemDisplay
- Func _GUICtrlHeader_GetItemFlags($HWND, $IINDEX)
- Local $IRET = 0
- Local $IFORMAT = _GUICtrlHeader_GetItemFormat($HWND, $IINDEX)
- If BitAND($IFORMAT, $HDF_IMAGE) <> 0 Then $IRET = BitOR($IRET, 1)
- If BitAND($IFORMAT, $HDF_RTLREADING) <> 0 Then $IRET = BitOR($IRET, 2)
- If BitAND($IFORMAT, $HDF_SORTDOWN) <> 0 Then $IRET = BitOR($IRET, 4)
- If BitAND($IFORMAT, $HDF_SORTUP) <> 0 Then $IRET = BitOR($IRET, 8)
- Return $IRET
- EndFunc ;==>_GUICtrlHeader_GetItemFlags
- Func _GUICtrlHeader_GetItemFormat($HWND, $IINDEX)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_FORMAT)
- _GUICtrlHeader_GetItem($HWND, $IINDEX, $TITEM)
- Return DllStructGetData($TITEM, "Fmt")
- EndFunc ;==>_GUICtrlHeader_GetItemFormat
- Func _GUICtrlHeader_GetItemImage($HWND, $IINDEX)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_IMAGE)
- _GUICtrlHeader_GetItem($HWND, $IINDEX, $TITEM)
- Return DllStructGetData($TITEM, "Image")
- EndFunc ;==>_GUICtrlHeader_GetItemImage
- Func _GUICtrlHeader_GetItemOrder($HWND, $IINDEX)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_ORDER)
- _GUICtrlHeader_GetItem($HWND, $IINDEX, $TITEM)
- Return DllStructGetData($TITEM, "Order")
- EndFunc ;==>_GUICtrlHeader_GetItemOrder
- Func _GUICtrlHeader_GetItemParam($HWND, $IINDEX)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_PARAM)
- _GUICtrlHeader_GetItem($HWND, $IINDEX, $TITEM)
- Return DllStructGetData($TITEM, "Param")
- EndFunc ;==>_GUICtrlHeader_GetItemParam
- Func _GUICtrlHeader_GetItemRect($HWND, $IINDEX)
- Local $ARECT[4]
- Local $TRECT = _GUICtrlHeader_GetItemRectEx($HWND, $IINDEX)
- $ARECT[0] = DllStructGetData($TRECT, "Left")
- $ARECT[1] = DllStructGetData($TRECT, "Top")
- $ARECT[2] = DllStructGetData($TRECT, "Right")
- $ARECT[3] = DllStructGetData($TRECT, "Bottom")
- Return $ARECT
- EndFunc ;==>_GUICtrlHeader_GetItemRect
- Func _GUICtrlHeader_GetItemRectEx($HWND, $IINDEX)
- Local $TRECT = DllStructCreate($TAGRECT)
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- _SendMessage($HWND, $HDM_GETITEMRECT, $IINDEX, $TRECT, 0, "wparam", "struct*")
- Else
- Local $IRECT = DllStructGetSize($TRECT)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $IRECT, $TMEMMAP)
- _MEMWRITE($TMEMMAP, $TRECT)
- _SendMessage($HWND, $HDM_GETITEMRECT, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- _MEMREAD($TMEMMAP, $PMEMORY, $TRECT, $IRECT)
- _MEMFREE($TMEMMAP)
- EndIf
- Return $TRECT
- EndFunc ;==>_GUICtrlHeader_GetItemRectEx
- Func _GUICtrlHeader_GetItemText($HWND, $IINDEX)
- Local $BUNICODE = _GUICtrlHeader_GetUnicodeFormat($HWND)
- Local $TBUFFER
- If $BUNICODE Then
- $TBUFFER = DllStructCreate("wchar Text[4096]")
- Else
- $TBUFFER = DllStructCreate("char Text[4096]")
- EndIf
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_TEXT)
- DllStructSetData($TITEM, "TextMax", 4096)
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- DllStructSetData($TITEM, "Text", DllStructGetPtr($TBUFFER))
- _SendMessage($HWND, $HDM_GETITEMW, $IINDEX, $TITEM, 0, "wparam", "struct*")
- Else
- Local $IITEM = DllStructGetSize($TITEM)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $IITEM + DllStructGetSize($TBUFFER), $TMEMMAP)
- Local $PTEXT = $PMEMORY + $IITEM
- DllStructSetData($TITEM, "Text", $PTEXT)
- _MEMWRITE($TMEMMAP, $TITEM, $PMEMORY, $IITEM)
- If $BUNICODE Then
- _SendMessage($HWND, $HDM_GETITEMW, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- Else
- _SendMessage($HWND, $HDM_GETITEMA, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- EndIf
- _MEMREAD($TMEMMAP, $PTEXT, $TBUFFER, DllStructGetSize($TBUFFER))
- _MEMFREE($TMEMMAP)
- EndIf
- Return DllStructGetData($TBUFFER, "Text")
- EndFunc ;==>_GUICtrlHeader_GetItemText
- Func _GUICtrlHeader_GetItemWidth($HWND, $IINDEX)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_WIDTH)
- _GUICtrlHeader_GetItem($HWND, $IINDEX, $TITEM)
- Return DllStructGetData($TITEM, "XY")
- EndFunc ;==>_GUICtrlHeader_GetItemWidth
- Func _GUICtrlHeader_GetOrderArray($HWND)
- Local $IITEMS = _GUICtrlHeader_GetItemCount($HWND)
- Local $TBUFFER = DllStructCreate("int[" & $IITEMS & "]")
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- _SendMessage($HWND, $HDM_GETORDERARRAY, $IITEMS, $TBUFFER, 0, "wparam", "struct*")
- Else
- Local $IBUFFER = DllStructGetSize($TBUFFER)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP)
- _SendMessage($HWND, $HDM_GETORDERARRAY, $IITEMS, $PMEMORY, 0, "wparam", "ptr")
- _MEMREAD($TMEMMAP, $PMEMORY, $TBUFFER, $IBUFFER)
- _MEMFREE($TMEMMAP)
- EndIf
- Local $ABUFFER[$IITEMS + 1]
- $ABUFFER[0] = $IITEMS
- For $II = 1 To $IITEMS
- $ABUFFER[$II] = DllStructGetData($TBUFFER, 1, $II)
- Next
- Return $ABUFFER
- EndFunc ;==>_GUICtrlHeader_GetOrderArray
- Func _GUICtrlHeader_GetUnicodeFormat($HWND)
- Return _SendMessage($HWND, $HDM_GETUNICODEFORMAT) <> 0
- EndFunc ;==>_GUICtrlHeader_GetUnicodeFormat
- Func _GUICtrlHeader_HitTest($HWND, $IX, $IY)
- Local $TTEST = DllStructCreate($TAGHDHITTESTINFO)
- DllStructSetData($TTEST, "X", $IX)
- DllStructSetData($TTEST, "Y", $IY)
- Local $ATEST[11]
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- $ATEST[0] = _SendMessage($HWND, $HDM_HITTEST, 0, $TTEST, 0, "wparam", "struct*")
- Else
- Local $ITEST = DllStructGetSize($TTEST)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $ITEST, $TMEMMAP)
- _MEMWRITE($TMEMMAP, $TTEST)
- $ATEST[0] = _SendMessage($HWND, $HDM_HITTEST, 0, $PMEMORY, 0, "wparam", "ptr")
- _MEMREAD($TMEMMAP, $PMEMORY, $TTEST, $ITEST)
- _MEMFREE($TMEMMAP)
- EndIf
- Local $IFLAGS = DllStructGetData($TTEST, "Flags")
- $ATEST[1] = BitAND($IFLAGS, $HHT_NOWHERE) <> 0
- $ATEST[2] = BitAND($IFLAGS, $HHT_ONHEADER) <> 0
- $ATEST[3] = BitAND($IFLAGS, $HHT_ONDIVIDER) <> 0
- $ATEST[4] = BitAND($IFLAGS, $HHT_ONDIVOPEN) <> 0
- $ATEST[5] = BitAND($IFLAGS, $HHT_ONFILTER) <> 0
- $ATEST[6] = BitAND($IFLAGS, $HHT_ONFILTERBUTTON) <> 0
- $ATEST[7] = BitAND($IFLAGS, $HHT_ABOVE) <> 0
- $ATEST[8] = BitAND($IFLAGS, $HHT_BELOW) <> 0
- $ATEST[9] = BitAND($IFLAGS, $HHT_TORIGHT) <> 0
- $ATEST[10] = BitAND($IFLAGS, $HHT_TOLEFT) <> 0
- Return $ATEST
- EndFunc ;==>_GUICtrlHeader_HitTest
- Func _GUICtrlHeader_InsertItem($HWND, $IINDEX, $STEXT, $IWIDTH = 50, $IALIGN = 0, $IIMAGE = -1, $BONRIGHT = False)
- Local $AALIGN[3] = [$HDF_LEFT, $HDF_RIGHT, $HDF_CENTER]
- Local $BUNICODE = _GUICtrlHeader_GetUnicodeFormat($HWND)
- Local $PBUFFER, $IBUFFER
- If $STEXT <> -1 Then
- $IBUFFER = StringLen($STEXT) + 1
- Local $TBUFFER
- If $BUNICODE Then
- $TBUFFER = DllStructCreate("wchar Text[" & $IBUFFER & "]")
- $IBUFFER *= 2
- Else
- $TBUFFER = DllStructCreate("char Text[" & $IBUFFER & "]")
- EndIf
- DllStructSetData($TBUFFER, "Text", $STEXT)
- $PBUFFER = DllStructGetPtr($TBUFFER)
- Else
- $IBUFFER = 0
- $PBUFFER = -1
- EndIf
- Local $TITEM = DllStructCreate($TAGHDITEM)
- Local $IFMT = $AALIGN[$IALIGN]
- Local $IMASK = BitOR($HDI_WIDTH, $HDI_FORMAT)
- If $STEXT <> "" Then
- $IMASK = BitOR($IMASK, $HDI_TEXT)
- $IFMT = BitOR($IFMT, $HDF_STRING)
- EndIf
- If $IIMAGE <> -1 Then
- $IMASK = BitOR($IMASK, $HDI_IMAGE)
- $IFMT = BitOR($IFMT, $HDF_IMAGE)
- EndIf
- If $BONRIGHT Then $IFMT = BitOR($IFMT, $HDF_BITMAP_ON_RIGHT)
- DllStructSetData($TITEM, "Mask", $IMASK)
- DllStructSetData($TITEM, "XY", $IWIDTH)
- DllStructSetData($TITEM, "Fmt", $IFMT)
- DllStructSetData($TITEM, "Image", $IIMAGE)
- Local $IRET
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- DllStructSetData($TITEM, "Text", $PBUFFER)
- $IRET = _SendMessage($HWND, $HDM_INSERTITEMW, $IINDEX, $TITEM, 0, "wparam", "struct*")
- Else
- Local $IITEM = DllStructGetSize($TITEM)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $IITEM + $IBUFFER, $TMEMMAP)
- If $STEXT <> -1 Then
- Local $PTEXT = $PMEMORY + $IITEM
- DllStructSetData($TITEM, "Text", $PTEXT)
- _MEMWRITE($TMEMMAP, $TBUFFER, $PTEXT, $IBUFFER)
- Else
- DllStructSetData($TITEM, "Text", -1)
- EndIf
- _MEMWRITE($TMEMMAP, $TITEM, $PMEMORY, $IITEM)
- If $BUNICODE Then
- $IRET = _SendMessage($HWND, $HDM_INSERTITEMW, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- Else
- $IRET = _SendMessage($HWND, $HDM_INSERTITEMA, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- EndIf
- _MEMFREE($TMEMMAP)
- EndIf
- Return $IRET
- EndFunc ;==>_GUICtrlHeader_InsertItem
- Func _GUICtrlHeader_Layout($HWND, ByRef $TRECT)
- Local $TLAYOUT = DllStructCreate($TAGHDLAYOUT)
- Local $TWINDOWPOS = DllStructCreate($TAGWINDOWPOS)
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- DllStructSetData($TLAYOUT, "Rect", DllStructGetPtr($TRECT))
- DllStructSetData($TLAYOUT, "WindowPos", DllStructGetPtr($TWINDOWPOS))
- _SendMessage($HWND, $HDM_LAYOUT, 0, $TLAYOUT, 0, "wparam", "struct*")
- Else
- Local $ILAYOUT = DllStructGetSize($TLAYOUT)
- Local $IRECT = DllStructGetSize($TRECT)
- Local $IWINDOWPOS = DllStructGetSize($TWINDOWPOS)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $ILAYOUT + $IRECT + $IWINDOWPOS, $TMEMMAP)
- DllStructSetData($TLAYOUT, "Rect", $PMEMORY + $ILAYOUT)
- DllStructSetData($TLAYOUT, "WindowPos", $PMEMORY + $ILAYOUT + $IRECT)
- _MEMWRITE($TMEMMAP, $TLAYOUT, $PMEMORY, $ILAYOUT)
- _MEMWRITE($TMEMMAP, $TRECT, $PMEMORY + $ILAYOUT, $IRECT)
- _SendMessage($HWND, $HDM_LAYOUT, 0, $PMEMORY, 0, "wparam", "ptr")
- _MEMREAD($TMEMMAP, $PMEMORY + $ILAYOUT + $IRECT, $TWINDOWPOS, $IWINDOWPOS)
- _MEMFREE($TMEMMAP)
- EndIf
- Return $TWINDOWPOS
- EndFunc ;==>_GUICtrlHeader_Layout
- Func _GUICtrlHeader_OrderToIndex($HWND, $IORDER)
- Return _SendMessage($HWND, $HDM_ORDERTOINDEX, $IORDER)
- EndFunc ;==>_GUICtrlHeader_OrderToIndex
- Func _GUICtrlHeader_SetBitmapMargin($HWND, $IWIDTH)
- Return _SendMessage($HWND, $HDM_SETBITMAPMARGIN, $IWIDTH)
- EndFunc ;==>_GUICtrlHeader_SetBitmapMargin
- Func _GUICtrlHeader_SetFilterChangeTimeout($HWND, $ITIMEOUT)
- Return _SendMessage($HWND, $HDM_SETFILTERCHANGETIMEOUT, 0, $ITIMEOUT)
- EndFunc ;==>_GUICtrlHeader_SetFilterChangeTimeout
- Func _GUICtrlHeader_SetHotDivider($HWND, $IFLAG, $IINPUTVALUE)
- Return _SendMessage($HWND, $HDM_SETHOTDIVIDER, $IFLAG, $IINPUTVALUE)
- EndFunc ;==>_GUICtrlHeader_SetHotDivider
- Func _GUICtrlHeader_SetImageList($HWND, $HIMAGE)
- Return _SendMessage($HWND, $HDM_SETIMAGELIST, 0, $HIMAGE, 0, "wparam", "handle", "handle")
- EndFunc ;==>_GUICtrlHeader_SetImageList
- Func _GUICtrlHeader_SetItem($HWND, $IINDEX, ByRef $TITEM)
- Local $BUNICODE = _GUICtrlHeader_GetUnicodeFormat($HWND)
- Local $IRET
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- $IRET = _SendMessage($HWND, $HDM_SETITEMW, $IINDEX, $TITEM, 0, "wparam", "struct*")
- Else
- Local $IITEM = DllStructGetSize($TITEM)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $IITEM, $TMEMMAP)
- _MEMWRITE($TMEMMAP, $TITEM)
- If $BUNICODE Then
- $IRET = _SendMessage($HWND, $HDM_SETITEMW, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- Else
- $IRET = _SendMessage($HWND, $HDM_SETITEMA, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- EndIf
- _MEMFREE($TMEMMAP)
- EndIf
- Return $IRET <> 0
- EndFunc ;==>_GUICtrlHeader_SetItem
- Func _GUICtrlHeader_SetItemAlign($HWND, $IINDEX, $IALIGN)
- Local $AALIGN[3] = [$HDF_LEFT, $HDF_RIGHT, $HDF_CENTER]
- Local $IFORMAT = _GUICtrlHeader_GetItemFormat($HWND, $IINDEX)
- $IFORMAT = BitAND($IFORMAT, BitNOT($HDF_JUSTIFYMASK))
- $IFORMAT = BitOR($IFORMAT, $AALIGN[$IALIGN])
- Return _GUICtrlHeader_SetItemFormat($HWND, $IINDEX, $IFORMAT)
- EndFunc ;==>_GUICtrlHeader_SetItemAlign
- Func _GUICtrlHeader_SetItemBitmap($HWND, $IINDEX, $HBITMAP)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", BitOR($HDI_FORMAT, $HDI_BITMAP))
- DllStructSetData($TITEM, "Fmt", $HDF_BITMAP)
- DllStructSetData($TITEM, "hBMP", $HBITMAP)
- Return _GUICtrlHeader_SetItem($HWND, $IINDEX, $TITEM)
- EndFunc ;==>_GUICtrlHeader_SetItemBitmap
- Func _GUICtrlHeader_SetItemDisplay($HWND, $IINDEX, $IDISPLAY)
- Local $IFORMAT = BitAND(_GUICtrlHeader_GetItemFormat($HWND, $IINDEX), Not $HDF_DISPLAYMASK)
- If BitAND($IDISPLAY, 1) <> 0 Then $IFORMAT = BitOR($IFORMAT, $HDF_BITMAP)
- If BitAND($IDISPLAY, 2) <> 0 Then $IFORMAT = BitOR($IFORMAT, $HDF_BITMAP_ON_RIGHT)
- If BitAND($IDISPLAY, 4) <> 0 Then $IFORMAT = BitOR($IFORMAT, $HDF_OWNERDRAW)
- If BitAND($IDISPLAY, 8) <> 0 Then $IFORMAT = BitOR($IFORMAT, $HDF_STRING)
- Return _GUICtrlHeader_SetItemFormat($HWND, $IINDEX, $IFORMAT)
- EndFunc ;==>_GUICtrlHeader_SetItemDisplay
- Func _GUICtrlHeader_SetItemFlags($HWND, $IINDEX, $IFLAGS)
- Local $IFORMAT = _GUICtrlHeader_GetItemFormat($HWND, $IINDEX)
- $IFORMAT = BitAND($IFORMAT, BitNOT($HDF_FLAGMASK))
- If BitAND($IFLAGS, 1) <> 0 Then $IFORMAT = BitOR($IFORMAT, $HDF_IMAGE)
- If BitAND($IFLAGS, 2) <> 0 Then $IFORMAT = BitOR($IFORMAT, $HDF_RTLREADING)
- If BitAND($IFLAGS, 4) <> 0 Then $IFORMAT = BitOR($IFORMAT, $HDF_SORTDOWN)
- If BitAND($IFLAGS, 8) <> 0 Then $IFORMAT = BitOR($IFORMAT, $HDF_SORTUP)
- Return _GUICtrlHeader_SetItemFormat($HWND, $IINDEX, $IFORMAT)
- EndFunc ;==>_GUICtrlHeader_SetItemFlags
- Func _GUICtrlHeader_SetItemFormat($HWND, $IINDEX, $IFORMAT)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_FORMAT)
- DllStructSetData($TITEM, "Fmt", $IFORMAT)
- Return _GUICtrlHeader_SetItem($HWND, $IINDEX, $TITEM)
- EndFunc ;==>_GUICtrlHeader_SetItemFormat
- Func _GUICtrlHeader_SetItemImage($HWND, $IINDEX, $IIMAGE)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_IMAGE)
- DllStructSetData($TITEM, "Image", $IIMAGE)
- Return _GUICtrlHeader_SetItem($HWND, $IINDEX, $TITEM)
- EndFunc ;==>_GUICtrlHeader_SetItemImage
- Func _GUICtrlHeader_SetItemOrder($HWND, $IINDEX, $IORDER)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_ORDER)
- DllStructSetData($TITEM, "Order", $IORDER)
- Return _GUICtrlHeader_SetItem($HWND, $IINDEX, $TITEM)
- EndFunc ;==>_GUICtrlHeader_SetItemOrder
- Func _GUICtrlHeader_SetItemParam($HWND, $IINDEX, $IPARAM)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_PARAM)
- DllStructSetData($TITEM, "Param", $IPARAM)
- Return _GUICtrlHeader_SetItem($HWND, $IINDEX, $TITEM)
- EndFunc ;==>_GUICtrlHeader_SetItemParam
- Func _GUICtrlHeader_SetItemText($HWND, $IINDEX, $STEXT)
- Local $BUNICODE = _GUICtrlHeader_GetUnicodeFormat($HWND)
- Local $IBUFFER, $PBUFFER
- If $STEXT <> -1 Then
- $IBUFFER = StringLen($STEXT) + 1
- Local $TBUFFER
- If $BUNICODE Then
- $TBUFFER = DllStructCreate("wchar Text[" & $IBUFFER & "]")
- $IBUFFER *= 2
- Else
- $TBUFFER = DllStructCreate("char Text[" & $IBUFFER & "]")
- EndIf
- DllStructSetData($TBUFFER, "Text", $STEXT)
- $PBUFFER = DllStructGetPtr($TBUFFER)
- Else
- $IBUFFER = 0
- $PBUFFER = -1
- EndIf
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_TEXT)
- DllStructSetData($TITEM, "TextMax", $IBUFFER)
- Local $IRET
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- DllStructSetData($TITEM, "Text", $PBUFFER)
- $IRET = _SendMessage($HWND, $HDM_SETITEMW, $IINDEX, $TITEM, 0, "wparam", "struct*")
- Else
- Local $IITEM = DllStructGetSize($TITEM)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $IITEM + $IBUFFER, $TMEMMAP)
- If $STEXT <> -1 Then
- Local $PTEXT = $PMEMORY + $IITEM
- DllStructSetData($TITEM, "Text", $PTEXT)
- _MEMWRITE($TMEMMAP, $TBUFFER, $PTEXT, $IBUFFER)
- Else
- DllStructSetData($TITEM, "Text", -1)
- EndIf
- _MEMWRITE($TMEMMAP, $TITEM, $PMEMORY, $IITEM)
- If $BUNICODE Then
- $IRET = _SendMessage($HWND, $HDM_SETITEMW, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- Else
- $IRET = _SendMessage($HWND, $HDM_SETITEMA, $IINDEX, $PMEMORY, 0, "wparam", "ptr")
- EndIf
- _MEMFREE($TMEMMAP)
- EndIf
- Return $IRET <> 0
- EndFunc ;==>_GUICtrlHeader_SetItemText
- Func _GUICtrlHeader_SetItemWidth($HWND, $IINDEX, $IWIDTH)
- Local $TITEM = DllStructCreate($TAGHDITEM)
- DllStructSetData($TITEM, "Mask", $HDI_WIDTH)
- DllStructSetData($TITEM, "XY", $IWIDTH)
- Return _GUICtrlHeader_SetItem($HWND, $IINDEX, $TITEM)
- EndFunc ;==>_GUICtrlHeader_SetItemWidth
- Func _GUICtrlHeader_SetOrderArray($HWND, ByRef $AORDER)
- Local $TBUFFER = DllStructCreate("int[" & $AORDER[0] & "]")
- For $II = 1 To $AORDER[0]
- DllStructSetData($TBUFFER, 1, $AORDER[$II], $II)
- Next
- Local $IRET
- If _WinAPI_InProcess($HWND, $__G_HHDRLASTWND) Then
- $IRET = _SendMessage($HWND, $HDM_SETORDERARRAY, $AORDER[0], $TBUFFER, 0, "wparam", "struct*")
- Else
- Local $IBUFFER = DllStructGetSize($TBUFFER)
- Local $TMEMMAP
- Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP)
- _MEMWRITE($TMEMMAP, $TBUFFER)
- $IRET = _SendMessage($HWND, $HDM_SETORDERARRAY, $AORDER[0], $PMEMORY, 0, "wparam", "ptr")
- _MEMFREE($TMEMMAP)
- EndIf
- Return $IRET <> 0
- EndFunc ;==>_GUICtrlHeader_SetOrderArray
- Func _GUICtrlHeader_SetUnicodeFormat($HWND, $BUNICODE)
- Return _SendMessage($HWND, $HDM_SETUNICODEFORMAT, $BUNICODE)
- EndFunc ;==>_GUICtrlHeader_SetUnicodeFormat
- Global Const $LVGS_NORMAL = 0
- Global Const $LVGS_COLLAPSED = 1
- Global Const $LVGS_HIDDEN = 2
- Global Const $LVGS_NOHEADER = 4
- Global Const $LVGS_COLLAPSIBLE = 8
- Global Const $LVGS_FOCUSED = 16
- Global Const $LVGS_SELECTED = 32
- Global Const $LVGS_SUBSETED = 64
- Global Const $LVGS_SUBSETLINKFOCUSED = 128
- Global Const $LVGGR_GROUP = 0
- Global Const $LVGGR_HEADER = 1
- Global Const $LVGGR_LABEL = 2
- Global Const $LVGGR_SUBSETLINK = 3
- Global Const $LV_ERR = -1
- Global Const $LVBKIF_SOURCE_NONE = 0
- Global Const $LVBKIF_SOURCE_HBITMAP = 1
- Global Const $LVBKIF_SOURCE_URL = 2
- Global Const $LVBKIF_SOURCE_MASK = 3
- Global Const $LVBKIF_STYLE_NORMAL = 0
- Global Const $LVBKIF_STYLE_TILE = 16
- Global Const $LVBKIF_STYLE_MASK = 16
- Global Const $LVBKIF_FLAG_TILEOFFSET = 256
- Global Const $LVBKIF_TYPE_WATERMARK = 268435456
- Global Const $LV_VIEW_DETAILS = 1
- Global Const $LV_VIEW_ICON = 0
- Global Const $LV_VIEW_LIST = 3
- Global Const $LV_VIEW_SMALLICON = 2
- Global Const $LV_VIEW_TILE = 4
- Global Const $LVA_ALIGNLEFT = 1
- Global Const $LVA_ALIGNTOP = 2
- Global Const $LVA_DEFAULT = 0
- Global Const $LVA_SNAPTOGRID = 5
- Global Const $LVCDI_ITEM = 0
- Global Const $LVCDI_GROUP = 1
- Global Const $LVCF_ALLDATA = 63
- Global Const $LVCF_FMT = 1
- Global Const $LVCF_IMAGE = 16
- Global Const $LVCFMT_JUSTIFYMASK = 3
- Global Const $LVCF_TEXT = 4
- Global Const $LVCF_WIDTH = 2
- Global Const $LVCFMT_BITMAP_ON_RIGHT = 4096
- Global Const $LVCFMT_CENTER = 2
- Global Const $LVCFMT_COL_HAS_IMAGES = 32768
- Global Const $LVCFMT_IMAGE = 2048
- Global Const $LVCFMT_LEFT = 0
- Global Const $LVCFMT_RIGHT = 1
- Global Const $LVCFMT_LINE_BREAK = 1048576
- Global Const $LVCFMT_FILL = 2097152
- Global Const $LVCFMT_WRAP = 4194304
- Global Const $LVCFMT_NO_TITLE = 8388608
- Global Const $LVCFMT_TILE_PLACEMENTMASK = BitOR($LVCFMT_LINE_BREAK, $LVCFMT_FILL)
- Global Const $LVFI_NEARESTXY = 64
- Global Const $LVFI_PARAM = 1
- Global Const $LVFI_PARTIAL = 8
- Global Const $LVFI_STRING = 2
- Global Const $LVFI_SUBSTRING = 4
- Global Const $LVFI_WRAP = 32
- Global Const $LVGA_FOOTER_LEFT = 8
- Global Const $LVGA_FOOTER_CENTER = 16
- Global Const $LVGA_FOOTER_RIGHT = 32
- Global Const $LVGA_HEADER_LEFT = 1
- Global Const $LVGA_HEADER_CENTER = 2
- Global Const $LVGA_HEADER_RIGHT = 4
- Global Const $LVGF_ALIGN = 8
- Global Const $LVGF_DESCRIPTIONTOP = 1024
- Global Const $LVGF_DESCRIPTIONBOTTOM = 2048
- Global Const $LVGF_EXTENDEDIMAGE = 8192
- Global Const $LVGF_FOOTER = 2
- Global Const $LVGF_GROUPID = 16
- Global Const $LVGF_HEADER = 1
- Global Const $LVGF_ITEMS = 16384
- Global Const $LVGF_NONE = 0
- Global Const $LVGF_STATE = 4
- Global Const $LVGF_SUBSET = 32768
- Global Const $LVGF_SUBSETITEMS = 65536
- Global Const $LVGF_SUBTITLE = 256
- Global Const $LVGF_TASK = 512
- Global Const $LVGF_TITLEIMAGE = 4096
- Global Const $LVHT_ABOVE = 8
- Global Const $LVHT_BELOW = 16
- Global Const $LVHT_NOWHERE = 1
- Global Const $LVHT_ONITEMICON = 2
- Global Const $LVHT_ONITEMLABEL = 4
- Global Const $LVHT_ONITEMSTATEICON = 8
- Global Const $LVHT_TOLEFT = 64
- Global Const $LVHT_TORIGHT = 32
- Global Const $LVHT_ONITEM = BitOR($LVHT_ONITEMICON, $LVHT_ONITEMLABEL, $LVHT_ONITEMSTATEICON)
- Global Const $LVHT_EX_GROUP_HEADER = 268435456
- Global Const $LVHT_EX_GROUP_FOOTER = 536870912
- Global Const $LVHT_EX_GROUP_COLLAPSE = 1073741824
- Global Const $LVHT_EX_GROUP_BACKGROUND = -2147483648
- Global Const $LVHT_EX_GROUP_STATEICON = 16777216
- Global Const $LVHT_EX_GROUP_SUBSETLINK = 33554432
- Global Const $LVHT_EX_GROUP = BitOR($LVHT_EX_GROUP_BACKGROUND, $LVHT_EX_GROUP_COLLAPSE, $LVHT_EX_GROUP_FOOTER, $LVHT_EX_GROUP_HEADER, $LVHT_EX_GROUP_STATEICON, $LVHT_EX_GROUP_SUBSETLINK)
- Global Const $LVHT_EX_ONCONTENTS = 67108864
- Global Const $LVHT_EX_FOOTER = 134217728
- Global Const $LVIF_COLFMT = 65536
- Global Const $LVIF_COLUMNS = 512
- Global Const $LVIF_GROUPID = 256
- Global Const $LVIF_IMAGE = 2
- Global Const $LVIF_INDENT = 16
- Global Const $LVIF_NORECOMPUTE = 2048
- Global Const $LVIF_PARAM = 4
- Global Const $LVIF_STATE = 8
- Global Const $LVIF_TEXT = 1
- Global Const $LVIM_AFTER = 1
- Global Const $LVIR_BOUNDS = 0
- Global Const $LVIR_ICON = 1
- Global Const $LVIR_LABEL = 2
- Global Const $LVIR_SELECTBOUNDS = 3
- Global Const $LVIS_CUT = 4
- Global Const $LVIS_DROPHILITED = 8
- Global Const $LVIS_FOCUSED = 1
- Global Const $LVIS_OVERLAYMASK = 3840
- Global Const $LVIS_SELECTED = 2
- Global Const $LVIS_STATEIMAGEMASK = 61440
- Global Const $LVS_ALIGNLEFT = 2048
- Global Const $LVS_ALIGNMASK = 3072
- Global Const $LVS_ALIGNTOP = 0
- Global Const $LVS_AUTOARRANGE = 256
- Global Const $LVS_DEFAULT = 13
- Global Const $LVS_EDITLABELS = 512
- Global Const $LVS_ICON = 0
- Global Const $LVS_LIST = 3
- Global Const $LVS_NOCOLUMNHEADER = 16384
- Global Const $LVS_NOLABELWRAP = 128
- Global Const $LVS_NOSCROLL = 8192
- Global Const $LVS_NOSORTHEADER = 32768
- Global Const $LVS_OWNERDATA = 4096
- Global Const $LVS_OWNERDRAWFIXED = 1024
- Global Const $LVS_REPORT = 1
- Global Const $LVS_SHAREIMAGELISTS = 64
- Global Const $LVS_SHOWSELALWAYS = 8
- Global Const $LVS_SINGLESEL = 4
- Global Const $LVS_SMALLICON = 2
- Global Const $LVS_SORTASCENDING = 16
- Global Const $LVS_SORTDESCENDING = 32
- Global Const $LVS_TYPEMASK = 3
- Global Const $LVS_TYPESTYLEMASK = 64512
- Global Const $LVS_EX_AUTOAUTOARRANGE = 16777216
- Global Const $LVS_EX_AUTOCHECKSELECT = 134217728
- Global Const $LVS_EX_AUTOSIZECOLUMNS = 268435456
- Global Const $LVS_EX_BORDERSELECT = 32768
- Global Const $LVS_EX_CHECKBOXES = 4
- Global Const $LVS_EX_COLUMNOVERFLOW = -2147483648
- Global Const $LVS_EX_COLUMNSNAPPOINTS = 1073741824
- Global Const $LVS_EX_DOUBLEBUFFER = 65536
- Global Const $LVS_EX_FLATSB = 256
- Global Const $LVS_EX_FULLROWSELECT = 32
- Global Const $LVS_EX_GRIDLINES = 1
- Global Const $LVS_EX_HEADERDRAGDROP = 16
- Global Const $LVS_EX_HEADERINALLVIEWS = 33554432
- Global Const $LVS_EX_HIDELABELS = 131072
- Global Const $LVS_EX_INFOTIP = 1024
- Global Const $LVS_EX_JUSTIFYCOLUMNS = 2097152
- Global Const $LVS_EX_LABELTIP = 16384
- Global Const $LVS_EX_MULTIWORKAREAS = 8192
- Global Const $LVS_EX_ONECLICKACTIVATE = 64
- Global Const $LVS_EX_REGIONAL = 512
- Global Const $LVS_EX_SIMPLESELECT = 1048576
- Global Const $LVS_EX_SNAPTOGRID = 524288
- Global Const $LVS_EX_SUBITEMIMAGES = 2
- Global Const $LVS_EX_TRACKSELECT = 8
- Global Const $LVS_EX_TRANSPARENTBKGND = 4194304
- Global Const $LVS_EX_TRANSPARENTSHADOWTEXT = 8388608
- Global Const $LVS_EX_TWOCLICKACTIVATE = 128
- Global Const $LVS_EX_UNDERLINECOLD = 4096
- Global Const $LVS_EX_UNDERLINEHOT = 2048
- Global Const $GUI_SS_DEFAULT_LISTVIEW = BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL)
- Global Const $LVM_FIRST = 4096
- Global Const $LVM_APPROXIMATEVIEWRECT = ($LVM_FIRST + 64)
- Global Const $LVM_ARRANGE = ($LVM_FIRST + 22)
- Global Const $LVM_CANCELEDITLABEL = ($LVM_FIRST + 179)
- Global Const $LVM_CREATEDRAGIMAGE = ($LVM_FIRST + 33)
- Global Const $LVM_DELETEALLITEMS = ($LVM_FIRST + 9)
- Global Const $LVM_DELETECOLUMN = ($LVM_FIRST + 28)
- Global Const $LVM_DELETEITEM = ($LVM_FIRST + 8)
- Global Const $LVM_EDITLABELA = ($LVM_FIRST + 23)
- Global Const $LVM_EDITLABELW = ($LVM_FIRST + 118)
- Global Const $LVM_EDITLABEL = $LVM_EDITLABELA
- Global Const $LVM_ENABLEGROUPVIEW = ($LVM_FIRST + 157)
- Global Const $LVM_ENSUREVISIBLE = ($LVM_FIRST + 19)
- Global Const $LVM_FINDITEM = ($LVM_FIRST + 13)
- Global Const $LVM_GETBKCOLOR = ($LVM_FIRST + 0)
- Global Const $LVM_GETBKIMAGEA = ($LVM_FIRST + 69)
- Global Const $LVM_GETBKIMAGEW = ($LVM_FIRST + 139)
- Global Const $LVM_GETCALLBACKMASK = ($LVM_FIRST + 10)
- Global Const $LVM_GETCOLUMNA = ($LVM_FIRST + 25)
- Global Const $LVM_GETCOLUMNW = ($LVM_FIRST + 95)
- Global Const $LVM_GETCOLUMNORDERARRAY = ($LVM_FIRST + 59)
- Global Const $LVM_GETCOLUMNWIDTH = ($LVM_FIRST + 29)
- Global Const $LVM_GETCOUNTPERPAGE = ($LVM_FIRST + 40)
- Global Const $LVM_GETEDITCONTROL = ($LVM_FIRST + 24)
- Global Const $LVM_GETEMPTYTEXT = ($LVM_FIRST + 204)
- Global Const $LVM_GETEXTENDEDLISTVIEWSTYLE = ($LVM_FIRST + 55)
- Global Const $LVM_GETFOCUSEDGROUP = ($LVM_FIRST + 93)
- Global Const $LVM_GETFOOTERINFO = ($LVM_FIRST + 206)
- Global Const $LVM_GETFOOTERITEM = ($LVM_FIRST + 208)
- Global Const $LVM_GETFOOTERITEMRECT = ($LVM_FIRST + 207)
- Global Const $LVM_GETFOOTERRECT = ($LVM_FIRST + 205)
- Global Const $LVM_GETGROUPCOUNT = ($LVM_FIRST + 152)
- Global Const $LVM_GETGROUPINFO = ($LVM_FIRST + 149)
- Global Const $LVM_GETGROUPINFOBYINDEX = ($LVM_FIRST + 153)
- Global Const $LVM_GETGROUPMETRICS = ($LVM_FIRST + 156)
- Global Const $LVM_GETGROUPRECT = ($LVM_FIRST + 98)
- Global Const $LVM_GETGROUPSTATE = ($LVM_FIRST + 92)
- Global Const $LVM_GETHEADER = ($LVM_FIRST + 31)
- Global Const $LVM_GETHOTCURSOR = ($LVM_FIRST + 63)
- Global Const $LVM_GETHOTITEM = ($LVM_FIRST + 61)
- Global Const $LVM_GETHOVERTIME = ($LVM_FIRST + 72)
- Global Const $LVM_GETIMAGELIST = ($LVM_FIRST + 2)
- Global Const $LVM_GETINSERTMARK = ($LVM_FIRST + 167)
- Global Const $LVM_GETINSERTMARKCOLOR = ($LVM_FIRST + 171)
- Global Const $LVM_GETINSERTMARKRECT = ($LVM_FIRST + 169)
- Global Const $LVM_GETISEARCHSTRINGA = ($LVM_FIRST + 52)
- Global Const $LVM_GETISEARCHSTRINGW = ($LVM_FIRST + 117)
- Global Const $LVM_GETITEMA = ($LVM_FIRST + 5)
- Global Const $LVM_GETITEMW = ($LVM_FIRST + 75)
- Global Const $LVM_GETITEMCOUNT = ($LVM_FIRST + 4)
- Global Const $LVM_GETITEMINDEXRECT = ($LVM_FIRST + 209)
- Global Const $LVM_GETITEMPOSITION = ($LVM_FIRST + 16)
- Global Const $LVM_GETITEMRECT = ($LVM_FIRST + 14)
- Global Const $LVM_GETITEMSPACING = ($LVM_FIRST + 51)
- Global Const $LVM_GETITEMSTATE = ($LVM_FIRST + 44)
- Global Const $LVM_GETITEMTEXTA = ($LVM_FIRST + 45)
- Global Const $LVM_GETITEMTEXTW = ($LVM_FIRST + 115)
- Global Const $LVM_GETNEXTITEM = ($LVM_FIRST + 12)
- Global Const $LVM_GETNEXTITEMINDEX = ($LVM_FIRST + 211)
- Global Const $LVM_GETNUMBEROFWORKAREAS = ($LVM_FIRST + 73)
- Global Const $LVM_GETORIGIN = ($LVM_FIRST + 41)
- Global Const $LVM_GETOUTLINECOLOR = ($LVM_FIRST + 176)
- Global Const $LVM_GETSELECTEDCOLUMN = ($LVM_FIRST + 174)
- Global Const $LVM_GETSELECTEDCOUNT = ($LVM_FIRST + 50)
- Global Const $LVM_GETSELECTIONMARK = ($LVM_FIRST + 66)
- Global Const $LVM_GETSTRINGWIDTHA = ($LVM_FIRST + 17)
- Global Const $LVM_GETSTRINGWIDTHW = ($LVM_FIRST + 87)
- Global Const $LVM_GETSUBITEMRECT = ($LVM_FIRST + 56)
- Global Const $LVM_GETTEXTBKCOLOR = ($LVM_FIRST + 37)
- Global Const $LVM_GETTEXTCOLOR = ($LVM_FIRST + 35)
- Global Const $LVM_GETTILEINFO = ($LVM_FIRST + 165)
- Global Const $LVM_GETTILEVIEWINFO = ($LVM_FIRST + 163)
- Global Const $LVM_GETTOOLTIPS = ($LVM_FIRST + 78)
- Global Const $LVM_GETTOPINDEX = ($LVM_FIRST + 39)
- Global Const $LVM_GETUNICODEFORMAT = 8192 + 6
- Global Const $LVM_GETVIEW = ($LVM_FIRST + 143)
- Global Const $LVM_GETVIEWRECT = ($LVM_FIRST + 34)
- Global Const $LVM_GETWORKAREAS = ($LVM_FIRST + 70)
- Global Const $LVM_HASGROUP = ($LVM_FIRST + 161)
- Global Const $LVM_HITTEST = ($LVM_FIRST + 18)
- Global Const $LVM_INSERTCOLUMNA = ($LVM_FIRST + 27)
- Global Const $LVM_INSERTCOLUMNW = ($LVM_FIRST + 97)
- Global Const $LVM_INSERTGROUP = ($LVM_FIRST + 145)
- Global Const $LVM_INSERTGROUPSORTED = ($LVM_FIRST + 159)
- Global Const $LVM_INSERTITEMA = ($LVM_FIRST + 7)
- Global Const $LVM_INSERTITEMW = ($LVM_FIRST + 77)
- Global Const $LVM_INSERTMARKHITTEST = ($LVM_FIRST + 168)
- Global Const $LVM_ISGROUPVIEWENABLED = ($LVM_FIRST + 175)
- Global Const $LVM_ISITEMVISIBLE = ($LVM_FIRST + 182)
- Global Const $LVM_MAPIDTOINDEX = ($LVM_FIRST + 181)
- Global Const $LVM_MAPINDEXTOID = ($LVM_FIRST + 180)
- Global Const $LVM_MOVEGROUP = ($LVM_FIRST + 151)
- Global Const $LVM_REDRAWITEMS = ($LVM_FIRST + 21)
- Global Const $LVM_REMOVEALLGROUPS = ($LVM_FIRST + 160)
- Global Const $LVM_REMOVEGROUP = ($LVM_FIRST + 150)
- Global Const $LVM_SCROLL = ($LVM_FIRST + 20)
- Global Const $LVM_SETBKCOLOR = ($LVM_FIRST + 1)
- Global Const $LVM_SETBKIMAGEA = ($LVM_FIRST + 68)
- Global Const $LVM_SETBKIMAGEW = ($LVM_FIRST + 138)
- Global Const $LVM_SETCALLBACKMASK = ($LVM_FIRST + 11)
- Global Const $LVM_SETCOLUMNA = ($LVM_FIRST + 26)
- Global Const $LVM_SETCOLUMNW = ($LVM_FIRST + 96)
- Global Const $LVM_SETCOLUMNORDERARRAY = ($LVM_FIRST + 58)
- Global Const $LVM_SETCOLUMNWIDTH = ($LVM_FIRST + 30)
- Global Const $LVM_SETEXTENDEDLISTVIEWSTYLE = ($LVM_FIRST + 54)
- Global Const $LVM_SETGROUPINFO = ($LVM_FIRST + 147)
- Global Const $LVM_SETGROUPMETRICS = ($LVM_FIRST + 155)
- Global Const $LVM_SETHOTCURSOR = ($LVM_FIRST + 62)
- Global Const $LVM_SETHOTITEM = ($LVM_FIRST + 60)
- Global Const $LVM_SETHOVERTIME = ($LVM_FIRST + 71)
- Global Const $LVM_SETICONSPACING = ($LVM_FIRST + 53)
- Global Const $LVM_SETIMAGELIST = ($LVM_FIRST + 3)
- Global Const $LVM_SETINFOTIP = ($LVM_FIRST + 173)
- Global Const $LVM_SETINSERTMARK = ($LVM_FIRST + 166)
- Global Const $LVM_SETINSERTMARKCOLOR = ($LVM_FIRST + 170)
- Global Const $LVM_SETITEMA = ($LVM_FIRST + 6)
- Global Const $LVM_SETITEMW = ($LVM_FIRST + 76)
- Global Const $LVM_SETITEMCOUNT = ($LVM_FIRST + 47)
- Global Const $LVM_SETITEMINDEXSTATE = ($LVM_FIRST + 210)
- Global Const $LVM_SETITEMPOSITION = ($LVM_FIRST + 15)
- Global Const $LVM_SETITEMPOSITION32 = ($LVM_FIRST + 49)
- Global Const $LVM_SETITEMSTATE = ($LVM_FIRST + 43)
- Global Const $LVM_SETITEMTEXTA = ($LVM_FIRST + 46)
- Global Const $LVM_SETITEMTEXTW = ($LVM_FIRST + 116)
- Global Const $LVM_SETOUTLINECOLOR = ($LVM_FIRST + 177)
- Global Const $LVM_SETSELECTEDCOLUMN = ($LVM_FIRST + 140)
- Global Const $LVM_SETSELECTIONMARK = ($LVM_FIRST + 67)
- Global Const $LVM_SETTEXTBKCOLOR = ($LVM_FIRST + 38)
- Global Const $LVM_SETTEXTCOLOR = ($LVM_FIRST + 36)
- Global Const $LVM_SETTILEINFO = ($LVM_FIRST + 164)
- Global Const $LVM_SETTILEVIEWINFO = ($LVM_FIRST + 162)
- Global Const $LVM_SETTILEWIDTH = ($LVM_FIRST + 141)
- Global Const $LVM_SETTOOLTIPS = ($LVM_FIRST + 74)
- Global Const $LVM_SETUNICODEFORMAT = 8192 + 5
- Global Const $LVM_SETVIEW = ($LVM_FIRST + 142)
- Global Const $LVM_SETWORKAREAS = ($LVM_FIRST + 65)
- Global Const $LVM_SORTGROUPS = ($LVM_FIRST + 158)
- Global Const $LVM_SORTITEMS = ($LVM_FIRST + 48)
- Global Const $LVM_SORTITEMSEX = ($LVM_FIRST + 81)
- Global Const $LVM_SUBITEMHITTEST = ($LVM_FIRST + 57)
- Global Const $LVM_UPDATE = ($LVM_FIRST + 42)
- Global Const $LVN_FIRST = -100
- Global Const $LVN_LAST = -199
- Global Const $LVN_BEGINDRAG = ($LVN_FIRST - 9)
- Global Const $LVN_BEGINLABELEDITA = ($LVN_FIRST - 5)
- Global Const $LVN_BEGINLABELEDITW = ($LVN_FIRST - 75)
- Global Const $LVN_BEGINRDRAG = ($LVN_FIRST - 11)
- Global Const $LVN_BEGINSCROLL = ($LVN_FIRST - 80)
- Global Const $LVN_COLUMNCLICK = ($LVN_FIRST - 8)
- Global Const $LVN_COLUMNDROPDOWN = ($LVN_FIRST - 64)
- Global Const $LVN_COLUMNOVERFLOWCLICK = ($LVN_FIRST - 66)
- Global Const $LVN_DELETEALLITEMS = ($LVN_FIRST - 4)
- Global Const $LVN_DELETEITEM = ($LVN_FIRST - 3)
- Global Const $LVN_ENDLABELEDITA = ($LVN_FIRST - 6)
- Global Const $LVN_ENDLABELEDITW = ($LVN_FIRST - 76)
- Global Const $LVN_ENDSCROLL = ($LVN_FIRST - 81)
- Global Const $LVN_GETDISPINFOA = ($LVN_FIRST - 50)
- Global Const $LVN_GETDISPINFOW = ($LVN_FIRST - 77)
- Global Const $LVN_GETDISPINFO = $LVN_GETDISPINFOA
- Global Const $LVN_GETEMPTYMARKUP = ($LVN_FIRST - 87)
- Global Const $LVN_GETINFOTIPA = ($LVN_FIRST - 57)
- Global Const $LVN_GETINFOTIPW = ($LVN_FIRST - 58)
- Global Const $LVN_HOTTRACK = ($LVN_FIRST - 21)
- Global Const $LVN_INCREMENTALSEARCHA = ($LVN_FIRST - 62)
- Global Const $LVN_INCREMENTALSEARCHW = ($LVN_FIRST - 63)
- Global Const $LVN_INSERTITEM = ($LVN_FIRST - 2)
- Global Const $LVN_ITEMACTIVATE = ($LVN_FIRST - 14)
- Global Const $LVN_ITEMCHANGED = ($LVN_FIRST - 1)
- Global Const $LVN_ITEMCHANGING = ($LVN_FIRST + 0)
- Global Const $LVN_KEYDOWN = ($LVN_FIRST - 55)
- Global Const $LVN_LINKCLICK = ($LVN_FIRST - 84)
- Global Const $LVN_MARQUEEBEGIN = ($LVN_FIRST - 56)
- Global Const $LVN_ODCACHEHINT = ($LVN_FIRST - 13)
- Global Const $LVN_ODFINDITEMA = ($LVN_FIRST - 52)
- Global Const $LVN_ODFINDITEMW = ($LVN_FIRST - 79)
- Global Const $LVN_ODFINDITEM = $LVN_ODFINDITEMA
- Global Const $LVN_ODSTATECHANGED = ($LVN_FIRST - 15)
- Global Const $LVN_SETDISPINFOA = ($LVN_FIRST - 51)
- Global Const $LVN_SETDISPINFOW = ($LVN_FIRST - 78)
- Global Const $LVNI_ABOVE = 256
- Global Const $LVNI_BELOW = 512
- Global Const $LVNI_TOLEFT = 1024
- Global Const $LVNI_TORIGHT = 2048
- Global Const $LVNI_ALL = 0
- Global Const $LVNI_CUT = 4
- Global Const $LVNI_DROPHILITED = 8
- Global Const $LVNI_FOCUSED = 1
- Global Const $LVNI_SELECTED = 2
- Global Const $LVSCW_AUTOSIZE = -1
- Global Const $LVSCW_AUTOSIZE_USEHEADER = -2
- Global Const $LVSICF_NOINVALIDATEALL = 1
- Global Const $LVSICF_NOSCROLL = 2
- Global Const $LVSIL_NORMAL = 0
- Global Const $LVSIL_SMALL = 1
- Global Const $LVSIL_STATE = 2
- Global Const $LVFN_DIR_LEFT = 0
- Global Const $LVFN_DIR_RIGHT = 1
- Global Const $LVFN_DIR_UP = 2
- Global Const $LVFN_DIR_DOWN = 3
- Global Const $LVFN_DIR_START = 4
- Global Const $LVFN_DIR_MEND = 5
- Global Const $LVFN_DIR_PRIOR = 6
- Global Const $LVFN_DIR_NEXT = 7
- Global Const $FR_PRIVATE = 16
- Global Const $FR_NOT_ENUM = 32
- Global Const $COMPRESSION_BITMAP_PNG = 0
- Global Const $COMPRESSION_BITMAP_JPEG = 1
- Global Const $BS_DIBPATTERN = 5
- Global Const $BS_DIBPATTERN8X8 = 8
- Global Const $BS_DIBPATTERNPT = 6
- Global Const $BS_HATCHED = 2
- Global Const $BS_HOLLOW = 1
- Global Const $BS_NULL = 1
- Global Const $BS_PATTERN = 3
- Global Const $BS_PATTERN8X8 = 7
- Global Const $BS_SOLID = 0
- Global Const $HS_BDIAGONAL = 3
- Global Const $HS_CROSS = 4
- Global Const $HS_DIAGCROSS = 5
- Global Const $HS_FDIAGONAL = 2
- Global Const $HS_HORIZONTAL = 0
- Global Const $HS_VERTICAL = 1
- Global Const $DIB_PAL_COLORS = 1
- Global Const $DIB_RGB_COLORS = 0
- Global Const $CA_NEGATIVE = 1
- Global Const $CA_LOG_FILTER = 2
- Global Const $ILLUMINANT_DEVICE_DEFAULT = 0
- Global Const $ILLUMINANT_A = 1
- Global Const $ILLUMINANT_B = 2
- Global Const $ILLUMINANT_C = 3
- Global Const $ILLUMINANT_D50 = 4
- Global Const $ILLUMINANT_D55 = 5
- Global Const $ILLUMINANT_D65 = 6
- Global Const $ILLUMINANT_D75 = 7
- Global Const $ILLUMINANT_F2 = 8
- Global Const $ILLUMINANT_TUNGSTEN = $ILLUMINANT_A
- Global Const $ILLUMINANT_DAYLIGHT = $ILLUMINANT_C
- Global Const $ILLUMINANT_FLUORESCENT = $ILLUMINANT_F2
- Global Const $ILLUMINANT_NTSC = $ILLUMINANT_C
- Global Const $BI_RGB = 0
- Global Const $BI_RLE8 = 1
- Global Const $BI_RLE4 = 2
- Global Const $BI_BITFIELDS = 3
- Global Const $BI_JPEG = 4
- Global Const $BI_PNG = 5
- Global Const $ALTERNATE = 1
- Global Const $WINDING = 2
- Global Const $DWMWA_NCRENDERING_ENABLED = 1
- Global Const $DWMWA_NCRENDERING_POLICY = 2
- Global Const $DWMWA_TRANSITIONS_FORCEDISABLED = 3
- Global Const $DWMWA_ALLOW_NCPAINT = 4
- Global Const $DWMWA_CAPTION_BUTTON_BOUNDS = 5
- Global Const $DWMWA_NONCLIENT_RTL_LAYOUT = 6
- Global Const $DWMWA_FORCE_ICONIC_REPRESENTATION = 7
- Global Const $DWMWA_FLIP3D_POLICY = 8
- Global Const $DWMWA_EXTENDED_FRAME_BOUNDS = 9
- Global Const $DWMWA_HAS_ICONIC_BITMAP = 10
- Global Const $DWMWA_DISALLOW_PEEK = 11
- Global Const $DWMWA_EXCLUDED_FROM_PEEK = 12
- Global Const $DWMNCRP_USEWINDOWSTYLE = 0
- Global Const $DWMNCRP_DISABLED = 1
- Global Const $DWMNCRP_ENABLED = 2
- Global Const $DWMFLIP3D_DEFAULT = 0
- Global Const $DWMFLIP3D_EXCLUDEBELOW = 1
- Global Const $DWMFLIP3D_EXCLUDEABOVE = 2
- Global Const $DM_BITSPERPEL = 262144
- Global Const $DM_COLLATE = 32768
- Global Const $DM_COLOR = 2048
- Global Const $DM_COPIES = 256
- Global Const $DM_DEFAULTSOURCE = 512
- Global Const $DM_DISPLAYFIXEDOUTPUT = 536870912
- Global Const $DM_DISPLAYFLAGS = 2097152
- Global Const $DM_DISPLAYFREQUENCY = 4194304
- Global Const $DM_DISPLAYORIENTATION = 128
- Global Const $DM_DITHERTYPE = 67108864
- Global Const $DM_DUPLEX = 4096
- Global Const $DM_FORMNAME = 65536
- Global Const $DM_ICMINTENT = 16777216
- Global Const $DM_ICMMETHOD = 8388608
- Global Const $DM_LOGPIXELS = 131072
- Global Const $DM_MEDIATYPE = 33554432
- Global Const $DM_NUP = 64
- Global Const $DM_ORIENTATION = 1
- Global Const $DM_PANNINGHEIGHT = 268435456
- Global Const $DM_PANNINGWIDTH = 134217728
- Global Const $DM_PAPERLENGTH = 4
- Global Const $DM_PAPERSIZE = 2
- Global Const $DM_PAPERWIDTH = 8
- Global Const $DM_PELSHEIGHT = 1048576
- Global Const $DM_PELSWIDTH = 524288
- Global Const $DM_POSITION = 32
- Global Const $DM_PRINTQUALITY = 1024
- Global Const $DM_SCALE = 16
- Global Const $DM_TTOPTION = 16384
- Global Const $DM_YRESOLUTION = 8192
- Global Const $DMPAPER_LETTER = 1
- Global Const $DMPAPER_LETTERSMALL = 2
- Global Const $DMPAPER_TABLOID = 3
- Global Const $DMPAPER_LEDGER = 4
- Global Const $DMPAPER_LEGAL = 5
- Global Const $DMPAPER_STATEMENT = 6
- Global Const $DMPAPER_EXECUTIVE = 7
- Global Const $DMPAPER_A3 = 8
- Global Const $DMPAPER_A4 = 9
- Global Const $DMPAPER_A4SMALL = 10
- Global Const $DMPAPER_A5 = 11
- Global Const $DMPAPER_B4 = 12
- Global Const $DMPAPER_B5 = 13
- Global Const $DMPAPER_FOLIO = 14
- Global Const $DMPAPER_QUARTO = 15
- Global Const $DMPAPER_10X14 = 16
- Global Const $DMPAPER_11X17 = 17
- Global Const $DMPAPER_NOTE = 18
- Global Const $DMPAPER_ENV_9 = 19
- Global Const $DMPAPER_ENV_10 = 20
- Global Const $DMPAPER_ENV_11 = 21
- Global Const $DMPAPER_ENV_12 = 22
- Global Const $DMPAPER_ENV_14 = 23
- Global Const $DMPAPER_CSHEET = 24
- Global Const $DMPAPER_DSHEET = 25
- Global Const $DMPAPER_ESHEET = 26
- Global Const $DMPAPER_ENV_DL = 27
- Global Const $DMPAPER_ENV_C5 = 28
- Global Const $DMPAPER_ENV_C3 = 29
- Global Const $DMPAPER_ENV_C4 = 30
- Global Const $DMPAPER_ENV_C6 = 31
- Global Const $DMPAPER_ENV_C65 = 32
- Global Const $DMPAPER_ENV_B4 = 33
- Global Const $DMPAPER_ENV_B5 = 34
- Global Const $DMPAPER_ENV_B6 = 35
- Global Const $DMPAPER_ENV_ITALY = 36
- Global Const $DMPAPER_ENV_MONARCH = 37
- Global Const $DMPAPER_ENV_PERSONAL = 38
- Global Const $DMPAPER_FANFOLD_US = 39
- Global Const $DMPAPER_FANFOLD_STD_GERMAN = 40
- Global Const $DMPAPER_FANFOLD_LGL_GERMAN = 41
- Global Const $DMPAPER_ISO_B4 = 42
- Global Const $DMPAPER_JAPANESE_POSTCARD = 43
- Global Const $DMPAPER_9X11 = 44
- Global Const $DMPAPER_10X11 = 45
- Global Const $DMPAPER_15X11 = 46
- Global Const $DMPAPER_ENV_INVITE = 47
- Global Const $DMPAPER_RESERVED_48 = 48
- Global Const $DMPAPER_RESERVED_49 = 49
- Global Const $DMPAPER_LETTER_EXTRA = 50
- Global Const $DMPAPER_LEGAL_EXTRA = 51
- Global Const $DMPAPER_TABLOID_EXTRA = 52
- Global Const $DMPAPER_A4_EXTRA = 53
- Global Const $DMPAPER_LETTER_TRANSVERSE = 54
- Global Const $DMPAPER_A4_TRANSVERSE = 55
- Global Const $DMPAPER_LETTER_EXTRA_TRANSVERSE = 56
- Global Const $DMPAPER_A_PLUS = 57
- Global Const $DMPAPER_B_PLUS = 58
- Global Const $DMPAPER_LETTER_PLUS = 59
- Global Const $DMPAPER_A4_PLUS = 60
- Global Const $DMPAPER_A5_TRANSVERSE = 61
- Global Const $DMPAPER_B5_TRANSVERSE = 62
- Global Const $DMPAPER_A3_EXTRA = 63
- Global Const $DMPAPER_A5_EXTRA = 64
- Global Const $DMPAPER_B5_EXTRA = 65
- Global Const $DMPAPER_A2 = 66
- Global Const $DMPAPER_A3_TRANSVERSE = 67
- Global Const $DMPAPER_A3_EXTRA_TRANSVERSE = 68
- Global Const $DMPAPER_DBL_JAPANESE_POSTCARD = 69
- Global Const $DMPAPER_A6 = 70
- Global Const $DMPAPER_JENV_KAKU2 = 71
- Global Const $DMPAPER_JENV_KAKU3 = 72
- Global Const $DMPAPER_JENV_CHOU3 = 73
- Global Const $DMPAPER_JENV_CHOU4 = 74
- Global Const $DMPAPER_LETTER_ROTATED = 75
- Global Const $DMPAPER_A3_ROTATED = 76
- Global Const $DMPAPER_A4_ROTATED = 77
- Global Const $DMPAPER_A5_ROTATED = 78
- Global Const $DMPAPER_B4_JIS_ROTATED = 79
- Global Const $DMPAPER_B5_JIS_ROTATED = 80
- Global Const $DMPAPER_JAPANESE_POSTCARD_ROTATED = 81
- Global Const $DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = 82
- Global Const $DMPAPER_A6_ROTATED = 83
- Global Const $DMPAPER_JENV_KAKU2_ROTATED = 84
- Global Const $DMPAPER_JENV_KAKU3_ROTATED = 85
- Global Const $DMPAPER_JENV_CHOU3_ROTATED = 86
- Global Const $DMPAPER_JENV_CHOU4_ROTATED = 87
- Global Const $DMPAPER_B6_JIS = 88
- Global Const $DMPAPER_B6_JIS_ROTATED = 89
- Global Const $DMPAPER_12X11 = 90
- Global Const $DMPAPER_JENV_YOU4 = 91
- Global Const $DMPAPER_JENV_YOU4_ROTATED = 92
- Global Const $DMPAPER_P16K = 93
- Global Const $DMPAPER_P32K = 94
- Global Const $DMPAPER_P32KBIG = 95
- Global Const $DMPAPER_PENV_1 = 96
- Global Const $DMPAPER_PENV_2 = 97
- Global Const $DMPAPER_PENV_3 = 98
- Global Const $DMPAPER_PENV_4 = 99
- Global Const $DMPAPER_PENV_5 = 100
- Global Const $DMPAPER_PENV_6 = 101
- Global Const $DMPAPER_PENV_7 = 102
- Global Const $DMPAPER_PENV_8 = 103
- Global Const $DMPAPER_PENV_9 = 104
- Global Const $DMPAPER_PENV_10 = 105
- Global Const $DMPAPER_P16K_ROTATED = 106
- Global Const $DMPAPER_P32K_ROTATED = 107
- Global Const $DMPAPER_P32KBIG_ROTATED = 108
- Global Const $DMPAPER_PENV_1_ROTATED = 109
- Global Const $DMPAPER_PENV_2_ROTATED = 110
- Global Const $DMPAPER_PENV_3_ROTATED = 111
- Global Const $DMPAPER_PENV_4_ROTATED = 112
- Global Const $DMPAPER_PENV_5_ROTATED = 113
- Global Const $DMPAPER_PENV_6_ROTATED = 114
- Global Const $DMPAPER_PENV_7_ROTATED = 115
- Global Const $DMPAPER_PENV_8_ROTATED = 116
- Global Const $DMPAPER_PENV_9_ROTATED = 117
- Global Const $DMPAPER_PENV_10_ROTATED = 118
- Global Const $DMPAPER_USER = 256
- Global Const $DMBIN_UPPER = 1
- Global Const $DMBIN_LOWER = 2
- Global Const $DMBIN_MIDDLE = 3
- Global Const $DMBIN_MANUAL = 4
- Global Const $DMBIN_ENVELOPE = 5
- Global Const $DMBIN_ENVMANUAL = 6
- Global Const $DMBIN_AUTO = 7
- Global Const $DMBIN_TRACTOR = 8
- Global Const $DMBIN_SMALLFMT = 9
- Global Const $DMBIN_LARGEFMT = 10
- Global Const $DMBIN_LARGECAPACITY = 11
- Global Const $DMBIN_CASSETTE = 14
- Global Const $DMBIN_FORMSOURCE = 15
- Global Const $DMBIN_USER = 256
- Global Const $DMRES_DRAFT = -1
- Global Const $DMRES_LOW = -2
- Global Const $DMRES_MEDIUM = -3
- Global Const $DMRES_HIGH = -4
- Global Const $DMDO_DEFAULT = 0
- Global Const $DMDO_90 = 1
- Global Const $DMDO_180 = 2
- Global Const $DMDO_270 = 3
- Global Const $DMDFO_DEFAULT = 0
- Global Const $DMDFO_STRETCH = 1
- Global Const $DMDFO_CENTER = 2
- Global Const $DMCOLOR_MONOCHROME = 1
- Global Const $DMCOLOR_COLOR = 2
- Global Const $DMDUP_SIMPLEX = 1
- Global Const $DMDUP_VERTICAL = 2
- Global Const $DMDUP_HORIZONTAL = 3
- Global Const $DMTT_BITMAP = 1
- Global Const $DMTT_DOWNLOAD = 2
- Global Const $DMTT_SUBDEV = 3
- Global Const $DMTT_DOWNLOAD_OUTLINE = 4
- Global Const $DMCOLLATE_FALSE = 0
- Global Const $DMCOLLATE_TRUE = 1
- Global Const $DM_GRAYSCALE = 1
- Global Const $DM_INTERLACED = 2
- Global Const $DMNUP_SYSTEM = 1
- Global Const $DMNUP_ONEUP = 2
- Global Const $DMICMMETHOD_NONE = 1
- Global Const $DMICMMETHOD_SYSTEM = 2
- Global Const $DMICMMETHOD_DRIVER = 3
- Global Const $DMICMMETHOD_DEVICE = 4
- Global Const $DMICMMETHOD_USER = 256
- Global Const $DMICM_SATURATE = 1
- Global Const $DMICM_CONTRAST = 2
- Global Const $DMICM_COLORIMETRIC = 3
- Global Const $DMICM_ABS_COLORIMETRIC = 4
- Global Const $DMICM_USER = 256
- Global Const $DMMEDIA_STANDARD = 1
- Global Const $DMMEDIA_TRANSPARENCY = 2
- Global Const $DMMEDIA_GLOSSY = 3
- Global Const $DMMEDIA_USER = 256
- Global Const $DMDITHER_NONE = 1
- Global Const $DMDITHER_COARSE = 2
- Global Const $DMDITHER_FINE = 3
- Global Const $DMDITHER_LINEART = 4
- Global Const $DMDITHER_ERRORDIFFUSION = 5
- Global Const $DMDITHER_RESERVED6 = 6
- Global Const $DMDITHER_RESERVED7 = 7
- Global Const $DMDITHER_RESERVED8 = 8
- Global Const $DMDITHER_RESERVED9 = 9
- Global Const $DMDITHER_GRAYSCALE = 10
- Global Const $DMDITHER_USER = 256
- Global Const $ENUM_CURRENT_SETTINGS = -1
- Global Const $ENUM_REGISTRY_SETTINGS = -2
- Global Const $DEVICE_FONTTYPE = 2
- Global Const $RASTER_FONTTYPE = 1
- Global Const $TRUETYPE_FONTTYPE = 4
- Global Const $NTM_BOLD = 32
- Global Const $NTM_DSIG = 2097152
- Global Const $NTM_ITALIC = 1
- Global Const $NTM_MULTIPLEMASTER = 524288
- Global Const $NTM_NONNEGATIVE_AC = 65536
- Global Const $NTM_PS_OPENTYPE = 131072
- Global Const $NTM_REGULAR = 64
- Global Const $NTM_TT_OPENTYPE = 262144
- Global Const $NTM_TYPE1 = 1048576
- Global Const $FLOODFILLBORDER = 0
- Global Const $FLOODFILLSURFACE = 1
- Global Const $AD_COUNTERCLOCKWISE = 1
- Global Const $AD_CLOCKWISE = 2
- Global Const $DCB_ACCUMULATE = 2
- Global Const $DCB_DISABLE = 8
- Global Const $DCB_ENABLE = 4
- Global Const $DCB_RESET = 1
- Global Const $DCB_SET = BitOR($DCB_RESET, $DCB_ACCUMULATE)
- Global Const $DCX_WINDOW = 1
- Global Const $DCX_CACHE = 2
- Global Const $DCX_PARENTCLIP = 32
- Global Const $DCX_CLIPSIBLINGS = 16
- Global Const $DCX_CLIPCHILDREN = 8
- Global Const $DCX_NORESETATTRS = 4
- Global Const $DCX_LOCKWINDOWUPDATE = 1024
- Global Const $DCX_EXCLUDERGN = 64
- Global Const $DCX_INTERSECTRGN = 128
- Global Const $DCX_INTERSECTUPDATE = 512
- Global Const $DCX_VALIDATE = 2097152
- Global Const $GGO_BEZIER = 3
- Global Const $GGO_BITMAP = 1
- Global Const $GGO_GLYPH_INDEX = 128
- Global Const $GGO_GRAY2_BITMAP = 4
- Global Const $GGO_GRAY4_BITMAP = 5
- Global Const $GGO_GRAY8_BITMAP = 6
- Global Const $GGO_METRICS = 0
- Global Const $GGO_NATIVE = 2
- Global Const $GGO_UNHINTED = 256
- Global Const $GM_COMPATIBLE = 1
- Global Const $GM_ADVANCED = 2
- Global Const $MM_ANISOTROPIC = 8
- Global Const $MM_HIENGLISH = 5
- Global Const $MM_HIMETRIC = 3
- Global Const $MM_ISOTROPIC = 7
- Global Const $MM_LOENGLISH = 4
- Global Const $MM_LOMETRIC = 2
- Global Const $MM_TEXT = 1
- Global Const $MM_TWIPS = 6
- Global Const $R2_BLACK = 1
- Global Const $R2_COPYPEN = 13
- Global Const $R2_LAST = 16
- Global Const $R2_MASKNOTPEN = 3
- Global Const $R2_MASKPEN = 9
- Global Const $R2_MASKPENNOT = 5
- Global Const $R2_MERGENOTPEN = 12
- Global Const $R2_MERGEPEN = 15
- Global Const $R2_MERGEPENNOT = 14
- Global Const $R2_NOP = 11
- Global Const $R2_NOT = 6
- Global Const $R2_NOTCOPYPEN = 4
- Global Const $R2_NOTMASKPEN = 8
- Global Const $R2_NOTMERGEPEN = 2
- Global Const $R2_NOTXORPEN = 10
- Global Const $R2_WHITE = 16
- Global Const $R2_XORPEN = 7
- Global Const $BLACKONWHITE = 1
- Global Const $COLORONCOLOR = 3
- Global Const $HALFTONE = 4
- Global Const $WHITEONBLACK = 2
- Global Const $STRETCH_ANDSCANS = $BLACKONWHITE
- Global Const $STRETCH_DELETESCANS = $COLORONCOLOR
- Global Const $STRETCH_HALFTONE = $HALFTONE
- Global Const $STRETCH_ORSCANS = $WHITEONBLACK
- Global Const $TA_BASELINE = 24
- Global Const $TA_BOTTOM = 8
- Global Const $TA_TOP = 0
- Global Const $TA_CENTER = 6
- Global Const $TA_LEFT = 0
- Global Const $TA_RIGHT = 2
- Global Const $TA_NOUPDATECP = 0
- Global Const $TA_RTLREADING = 256
- Global Const $TA_UPDATECP = 1
- Global Const $VTA_BASELINE = $TA_BASELINE
- Global Const $VTA_BOTTOM = $TA_RIGHT
- Global Const $VTA_TOP = $TA_LEFT
- Global Const $VTA_CENTER = $TA_CENTER
- Global Const $VTA_LEFT = $TA_BOTTOM
- Global Const $VTA_RIGHT = $TA_TOP
- Global Const $UDF_BGR = 1
- Global Const $UDF_RGB = 0
- Global Const $MWT_IDENTITY = 1
- Global Const $MWT_LEFTMULTIPLY = 2
- Global Const $MWT_RIGHTMULTIPLY = 3
- Global Const $MWT_SET = 4
- Global Const $MONITOR_DEFAULTTONEAREST = 2
- Global Const $MONITOR_DEFAULTTONULL = 0
- Global Const $MONITOR_DEFAULTTOPRIMARY = 1
- Global Const $PT_BEZIERTO = 4
- Global Const $PT_LINETO = 2
- Global Const $PT_MOVETO = 6
- Global Const $PT_CLOSEFIGURE = 1
- Global Const $COINIT_APARTMENTTHREADED = 2
- Global Const $COINIT_DISABLE_OLE1DDE = 4
- Global Const $COINIT_MULTITHREADED = 0
- Global Const $COINIT_SPEED_OVER_MEMORY = 8
- #Region Global Variables and Constants
- Global Const $__TAGWINAPICOM_GUID = "struct;ulong Data1;ushort Data2;ushort Data3;byte Data4[8];endstruct"
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_CLSIDFromProgID($SPROGID)
- Local $TGUID = DllStructCreate($__TAGWINAPICOM_GUID)
- Local $ARETURN = DllCall("ole32.dll", "long", "CLSIDFromProgID", "wstr", $SPROGID, "struct*", $TGUID)
- If @error Then Return SetError(@error, @extended, "")
- If $ARETURN[0] Then Return SetError(10, $ARETURN[0], "")
- $ARETURN = DllCall("ole32.dll", "int", "StringFromGUID2", "struct*", $TGUID, "wstr", "", "int", 39)
- If @error Or Not $ARETURN[0] Then Return SetError(@error + 20, @extended, "")
- Return $ARETURN[2]
- EndFunc ;==>_WINAPI_CLSIDFROMPROGID
- Func _WinAPI_CoInitialize($IFLAGS = 0)
- Local $ARETURN = DllCall("ole32.dll", "long", "CoInitializeEx", "ptr", 0, "dword", $IFLAGS)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARETURN[0] Then Return SetError(10, $ARETURN[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_COINITIALIZE
- Func _WinAPI_CoTaskMemAlloc($ISIZE)
- Local $ARETURN = DllCall("ole32.dll", "ptr", "CoTaskMemAlloc", "uint_ptr", $ISIZE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARETURN[0]
- EndFunc ;==>_WINAPI_COTASKMEMALLOC
- Func _WinAPI_CoTaskMemFree($PMEMORY)
- DllCall("ole32.dll", "none", "CoTaskMemFree", "ptr", $PMEMORY)
- If @error Then Return SetError(@error, @extended, 0)
- Return 1
- EndFunc ;==>_WINAPI_COTASKMEMFREE
- Func _WinAPI_CoTaskMemRealloc($PMEMORY, $ISIZE)
- Local $ARETURN = DllCall("ole32.dll", "ptr", "CoTaskMemRealloc", "ptr", $PMEMORY, "ulong_ptr", $ISIZE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARETURN[0]
- EndFunc ;==>_WINAPI_COTASKMEMREALLOC
- Func _WinAPI_CoUninitialize()
- DllCall("ole32.dll", "none", "CoUninitialize")
- If @error Then Return SetError(@error, @extended, 0)
- Return 1
- EndFunc ;==>_WINAPI_COUNINITIALIZE
- Func _WinAPI_CreateGUID()
- Local $TGUID = DllStructCreate($__TAGWINAPICOM_GUID)
- Local $ARETURN = DllCall("ole32.dll", "long", "CoCreateGuid", "struct*", $TGUID)
- If @error Then Return SetError(@error, @extended, "")
- If $ARETURN[0] Then Return SetError(10, $ARETURN[0], "")
- $ARETURN = DllCall("ole32.dll", "int", "StringFromGUID2", "struct*", $TGUID, "wstr", "", "int", 65536)
- If @error Or Not $ARETURN[0] Then Return SetError(@error + 20, @extended, "")
- Return $ARETURN[2]
- EndFunc ;==>_WINAPI_CREATEGUID
- Func _WinAPI_CreateStreamOnHGlobal($HGLOBAL = 0, $BDELETEONRELEASE = True)
- Local $ARETURN = DllCall("ole32.dll", "long", "CreateStreamOnHGlobal", "handle", $HGLOBAL, "bool", $BDELETEONRELEASE, "ptr*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARETURN[0] Then Return SetError(10, $ARETURN[0], 0)
- Return $ARETURN[3]
- EndFunc ;==>_WINAPI_CREATESTREAMONHGLOBAL
- Func _WinAPI_GetHGlobalFromStream($PSTREAM)
- Local $ARETURN = DllCall("ole32.dll", "uint", "GetHGlobalFromStream", "ptr", $PSTREAM, "ptr*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARETURN[0] Then Return SetError(10, $ARETURN[0], 0)
- Return $ARETURN[2]
- EndFunc ;==>_WINAPI_GETHGLOBALFROMSTREAM
- Func _WinAPI_ProgIDFromCLSID($SCLSID)
- Local $TGUID = DllStructCreate($__TAGWINAPICOM_GUID)
- Local $ARETURN = DllCall("ole32.dll", "uint", "CLSIDFromString", "wstr", $SCLSID, "struct*", $TGUID)
- If @error Or $ARETURN[0] Then Return SetError(@error + 20, @extended, "")
- $ARETURN = DllCall("ole32.dll", "uint", "ProgIDFromCLSID", "struct*", $TGUID, "ptr*", 0)
- If @error Then Return SetError(@error, @extended, "")
- If $ARETURN[0] Then Return SetError(10, $ARETURN[0], "")
- Local $SID = _WinAPI_GetString($ARETURN[2])
- _WinAPI_CoTaskMemFree($ARETURN[2])
- Return $SID
- EndFunc ;==>_WINAPI_PROGIDFROMCLSID
- Func _WinAPI_ReleaseStream($PSTREAM)
- Local $ARETURN = DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $PSTREAM, "ulong_ptr", 8 * (1 + @AutoItX64), "uint", 4, "ushort", 23, "uint", 0, "ptr", 0, "ptr", 0, "str", "")
- If @error Then Return SetError(@error, @extended, 0)
- If $ARETURN[0] Then Return SetError(10, $ARETURN[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_RELEASESTREAM
- #EndRegion Public Functions
- #Region Global Variables and Constants
- Global $__G_HHEAP = 0
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_CreateBuffer($ILENGTH, $PBUFFER = 0, $BABORT = True)
- $PBUFFER = __HEAPREALLOC($PBUFFER, $ILENGTH, 0, $BABORT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $PBUFFER
- EndFunc ;==>_WINAPI_CREATEBUFFER
- Func _WinAPI_CreateBufferFromStruct($TSTRUCT, $PBUFFER = 0, $BABORT = True)
- If Not IsDllStruct($TSTRUCT) Then Return SetError(1, 0, 0)
- $PBUFFER = __HEAPREALLOC($PBUFFER, DllStructGetSize($TSTRUCT), 0, $BABORT)
- If @error Then Return SetError(@error + 100, @extended, 0)
- _WinAPI_MoveMemory($PBUFFER, $TSTRUCT, DllStructGetSize($TSTRUCT))
- Return $PBUFFER
- EndFunc ;==>_WINAPI_CREATEBUFFERFROMSTRUCT
- Func _WinAPI_CreateString($SSTRING, $PSTRING = 0, $ILENGTH = -1, $BUNICODE = True, $BABORT = True)
- $ILENGTH = Number($ILENGTH)
- If $ILENGTH >= 0 Then
- $SSTRING = StringLeft($SSTRING, $ILENGTH)
- Else
- $ILENGTH = StringLen($SSTRING)
- EndIf
- Local $ISIZE = $ILENGTH + 1
- If $BUNICODE Then
- $ISIZE *= 2
- EndIf
- $PSTRING = __HEAPREALLOC($PSTRING, $ISIZE, 0, $BABORT)
- If @error Then Return SetError(@error, @extended, 0)
- DllStructSetData(DllStructCreate(($BUNICODE ? "wchar" : "char") & "[" & ($ILENGTH + 1) & "]", $PSTRING), 1, $SSTRING)
- Return SetExtended($ILENGTH, $PSTRING)
- EndFunc ;==>_WINAPI_CREATESTRING
- Func _WinAPI_EqualMemory($PSOURCE1, $PSOURCE2, $ILENGTH)
- If _WinAPI_IsBadReadPtr($PSOURCE1, $ILENGTH) Then Return SetError(11, @extended, 0)
- If _WinAPI_IsBadReadPtr($PSOURCE2, $ILENGTH) Then Return SetError(12, @extended, 0)
- Local $ARET = DllCall("ntdll.dll", "ulong_ptr", "RtlCompareMemory", "struct*", $PSOURCE1, "struct*", $PSOURCE2, "ulong_ptr", $ILENGTH)
- If @error Then Return SetError(@error, @extended, 0)
- Return Number($ARET[0] = $ILENGTH)
- EndFunc ;==>_WINAPI_EQUALMEMORY
- Func _WinAPI_FillMemory($PMEMORY, $ILENGTH, $IVALUE = 0)
- If _WinAPI_IsBadWritePtr($PMEMORY, $ILENGTH) Then Return SetError(11, @extended, 0)
- DllCall("ntdll.dll", "none", "RtlFillMemory", "struct*", $PMEMORY, "ulong_ptr", $ILENGTH, "byte", $IVALUE)
- If @error Then Return SetError(@error, @extended, 0)
- Return 1
- EndFunc ;==>_WINAPI_FILLMEMORY
- Func _WinAPI_FreeMemory($PMEMORY)
- If Not __HEAPFREE($PMEMORY, 1) Then Return SetError(@error, @extended, 0)
- Return 1
- EndFunc ;==>_WINAPI_FREEMEMORY
- Func _WinAPI_GetMemorySize($PMEMORY)
- Local $IRESULT = __HEAPSIZE($PMEMORY, 1)
- If @error Then Return SetError(@error, @extended, 0)
- Return $IRESULT
- EndFunc ;==>_WINAPI_GETMEMORYSIZE
- Func _WinAPI_GlobalMemoryStatus()
- Local Const $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"
- Local $TMEM = DllStructCreate($TAGMEMORYSTATUSEX)
- DllStructSetData($TMEM, 1, DllStructGetSize($TMEM))
- Local $ARET = DllCall("kernel32.dll", "bool", "GlobalMemoryStatusEx", "struct*", $TMEM)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Local $AMEM[7]
- $AMEM[0] = DllStructGetData($TMEM, 2)
- $AMEM[1] = DllStructGetData($TMEM, 3)
- $AMEM[2] = DllStructGetData($TMEM, 4)
- $AMEM[3] = DllStructGetData($TMEM, 5)
- $AMEM[4] = DllStructGetData($TMEM, 6)
- $AMEM[5] = DllStructGetData($TMEM, 7)
- $AMEM[6] = DllStructGetData($TMEM, 8)
- Return $AMEM
- EndFunc ;==>_WinAPI_GlobalMemoryStatus
- Func _WinAPI_IsBadCodePtr($PADDRESS)
- Local $ARET = DllCall("kernel32.dll", "bool", "IsBadCodePtr", "struct*", $PADDRESS)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ISBADCODEPTR
- Func _WinAPI_IsBadReadPtr($PADDRESS, $ILENGTH)
- Local $ARET = DllCall("kernel32.dll", "bool", "IsBadReadPtr", "struct*", $PADDRESS, "uint_ptr", $ILENGTH)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ISBADREADPTR
- Func _WinAPI_IsBadStringPtr($PADDRESS, $ILENGTH)
- Local $ARET = DllCall("kernel32.dll", "bool", "IsBadStringPtr", "struct*", $PADDRESS, "uint_ptr", $ILENGTH)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ISBADSTRINGPTR
- Func _WinAPI_IsBadWritePtr($PADDRESS, $ILENGTH)
- Local $ARET = DllCall("kernel32.dll", "bool", "IsBadWritePtr", "struct*", $PADDRESS, "uint_ptr", $ILENGTH)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ISBADWRITEPTR
- Func _WinAPI_IsMemory($PMEMORY)
- Local $BRESULT = __HEAPVALIDATE($PMEMORY)
- Return SetError(@error, @extended, $BRESULT)
- EndFunc ;==>_WINAPI_ISMEMORY
- Func _WinAPI_LocalFree($HMEMORY)
- Local $ARESULT = DllCall("kernel32.dll", "handle", "LocalFree", "handle", $HMEMORY)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_LocalFree
- Func _WinAPI_MoveMemory($PDESTINATION, $PSOURCE, $ILENGTH)
- If _WinAPI_IsBadReadPtr($PSOURCE, $ILENGTH) Then Return SetError(10, @extended, 0)
- If _WinAPI_IsBadWritePtr($PDESTINATION, $ILENGTH) Then Return SetError(11, @extended, 0)
- DllCall("ntdll.dll", "none", "RtlMoveMemory", "struct*", $PDESTINATION, "struct*", $PSOURCE, "ulong_ptr", $ILENGTH)
- If @error Then Return SetError(@error, @extended, 0)
- Return 1
- EndFunc ;==>_WINAPI_MOVEMEMORY
- Func _WinAPI_ReadProcessMemory($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IREAD)
- Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, "struct*", $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
- If @error Then Return SetError(@error, @extended, False)
- $IREAD = $ARESULT[5]
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_ReadProcessMemory
- Func _WinAPI_WriteProcessMemory($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IWRITTEN, $SBUFFER = "ptr")
- Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, $SBUFFER, $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
- If @error Then Return SetError(@error, @extended, False)
- $IWRITTEN = $ARESULT[5]
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_WriteProcessMemory
- Func _WinAPI_ZeroMemory($PMEMORY, $ILENGTH)
- If _WinAPI_IsBadWritePtr($PMEMORY, $ILENGTH) Then Return SetError(11, @extended, 0)
- DllCall("ntdll.dll", "none", "RtlZeroMemory", "struct*", $PMEMORY, "ulong_ptr", $ILENGTH)
- If @error Then Return SetError(@error, @extended, 0)
- Return 1
- EndFunc ;==>_WINAPI_ZEROMEMORY
- #EndRegion Public Functions
- #Region Internal Functions
- Func __HEAPALLOC($ISIZE, $BABORT = False)
- Local $ARET
- If Not $__G_HHEAP Then
- $ARET = DllCall("kernel32.dll", "handle", "HeapCreate", "dword", 0, "ulong_ptr", 0, "ulong_ptr", 0)
- If @error Or Not $ARET[0] Then __FATALEXIT(1, "Error allocating memory.")
- $__G_HHEAP = $ARET[0]
- EndIf
- $ARET = DllCall("kernel32.dll", "ptr", "HeapAlloc", "handle", $__G_HHEAP, "dword", 8, "ulong_ptr", $ISIZE)
- If @error Or Not $ARET[0] Then
- If $BABORT Then __FATALEXIT(1, "Error allocating memory.")
- Return SetError(@error + 30, @extended, 0)
- EndIf
- Return $ARET[0]
- EndFunc ;==>__HEAPALLOC
- Func __HEAPFREE(ByRef $PMEMORY, $BCHECK = False, $ICURERR = @error, $ICUREXT = @extended)
- If $BCHECK And (Not __HEAPVALIDATE($PMEMORY)) Then Return SetError(@error, @extended, 0)
- Local $ARET = DllCall("kernel32.dll", "int", "HeapFree", "handle", $__G_HHEAP, "dword", 0, "ptr", $PMEMORY)
- If @error Or Not $ARET[0] Then Return SetError(@error + 40, @extended, 0)
- $PMEMORY = 0
- Return SetError($ICURERR, $ICUREXT, 1)
- EndFunc ;==>__HEAPFREE
- Func __HEAPREALLOC($PMEMORY, $ISIZE, $BAMOUNT = False, $BABORT = False)
- Local $ARET, $PRET
- If __HEAPVALIDATE($PMEMORY) Then
- If $BAMOUNT And (__HEAPSIZE($PMEMORY) >= $ISIZE) Then Return SetExtended(1, Ptr($PMEMORY))
- $ARET = DllCall("kernel32.dll", "ptr", "HeapReAlloc", "handle", $__G_HHEAP, "dword", 8, "ptr", $PMEMORY, "ulong_ptr", $ISIZE)
- If @error Or Not $ARET[0] Then
- If $BABORT Then __FATALEXIT(1, "Error allocating memory.")
- Return SetError(@error + 20, @extended, Ptr($PMEMORY))
- EndIf
- $PRET = $ARET[0]
- Else
- $PRET = __HEAPALLOC($ISIZE, $BABORT)
- If @error Then Return SetError(@error, @extended, 0)
- EndIf
- Return $PRET
- EndFunc ;==>__HEAPREALLOC
- Func __HEAPSIZE($PMEMORY, $BCHECK = False)
- If $BCHECK And (Not __HEAPVALIDATE($PMEMORY)) Then Return SetError(@error, @extended, 0)
- Local $ARET = DllCall("kernel32.dll", "ulong_ptr", "HeapSize", "handle", $__G_HHEAP, "dword", 0, "ptr", $PMEMORY)
- If @error Or ($ARET[0] = Ptr(-1)) Then Return SetError(@error + 50, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>__HEAPSIZE
- Func __HEAPVALIDATE($PMEMORY)
- If (Not $__G_HHEAP) Or (Not Ptr($PMEMORY)) Then Return SetError(9, 0, False)
- Local $ARET = DllCall("kernel32.dll", "int", "HeapValidate", "handle", $__G_HHEAP, "dword", 0, "ptr", $PMEMORY)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>__HEAPVALIDATE
- #EndRegion Internal Functions
- Global Const $SND_APPLICATION = 128
- Global Const $SND_ALIAS = 65536
- Global Const $SND_ALIAS_ID = 1114112
- Global Const $SND_ASYNC = 1
- Global Const $SND_FILENAME = 131072
- Global Const $SND_LOOP = 8
- Global Const $SND_MEMORY = 4
- Global Const $SND_NODEFAULT = 2
- Global Const $SND_NOSTOP = 16
- Global Const $SND_NOWAIT = 8192
- Global Const $SND_PURGE = 64
- Global Const $SND_RESOURCE = 262148
- Global Const $SND_SENTRY = 524288
- Global Const $SND_SYNC = 0
- Global Const $SND_SYSTEM = 2097152
- Global Const $SND_SYSTEM_NOSTOP = 2097168
- Global Const $SND_ALIAS_SYSTEMASTERISK = "SystemAsterisk"
- Global Const $SND_ALIAS_SYSTEMDEFAULT = "SystemDefault"
- Global Const $SND_ALIAS_SYSTEMEXCLAMATION = "SystemExclamation"
- Global Const $SND_ALIAS_SYSTEMEXIT = "SystemExit"
- Global Const $SND_ALIAS_SYSTEMHAND = "SystemHand"
- Global Const $SND_ALIAS_SYSTEMQUESTION = "SystemQuestion"
- Global Const $SND_ALIAS_SYSTEMSTART = "SystemStart"
- Global Const $SND_ALIAS_SYSTEMWELCOME = "SystemWelcome"
- #Region Global Variables and Constants
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_ArrayToStruct(Const ByRef $ADATA, $ISTART = 0, $IEND = -1)
- If __CHECKERRORARRAYBOUNDS($ADATA, $ISTART, $IEND) Then Return SetError(@error + 10, @extended, 0)
- Local $TAGSTRUCT = ""
- For $I = $ISTART To $IEND
- $TAGSTRUCT &= "wchar[" & (StringLen($ADATA[$I]) + 1) & "];"
- Next
- Local $TDATA = DllStructCreate($TAGSTRUCT & "wchar[1]")
- Local $ICOUNT = 1
- For $I = $ISTART To $IEND
- DllStructSetData($TDATA, $ICOUNT, $ADATA[$I])
- $ICOUNT += 1
- Next
- DllStructSetData($TDATA, $ICOUNT, ChrW(0))
- Return $TDATA
- EndFunc ;==>_WINAPI_ARRAYTOSTRUCT
- Func _WinAPI_CreateMargins($ILEFTWIDTH, $IRIGHTWIDTH, $ITOPHEIGHT, $IBOTTOMHEIGHT)
- Local $TMARGINS = DllStructCreate($TAGMARGINS)
- DllStructSetData($TMARGINS, 1, $ILEFTWIDTH)
- DllStructSetData($TMARGINS, 2, $IRIGHTWIDTH)
- DllStructSetData($TMARGINS, 3, $ITOPHEIGHT)
- DllStructSetData($TMARGINS, 4, $IBOTTOMHEIGHT)
- Return $TMARGINS
- EndFunc ;==>_WINAPI_CREATEMARGINS
- Func _WinAPI_CreatePoint($IX, $IY)
- Local $TPOINT = DllStructCreate($TAGPOINT)
- DllStructSetData($TPOINT, 1, $IX)
- DllStructSetData($TPOINT, 2, $IY)
- Return $TPOINT
- EndFunc ;==>_WINAPI_CREATEPOINT
- Func _WinAPI_CreateRect($ILEFT, $ITOP, $IRIGHT, $IBOTTOM)
- Local $TRECT = DllStructCreate($TAGRECT)
- DllStructSetData($TRECT, 1, $ILEFT)
- DllStructSetData($TRECT, 2, $ITOP)
- DllStructSetData($TRECT, 3, $IRIGHT)
- DllStructSetData($TRECT, 4, $IBOTTOM)
- Return $TRECT
- EndFunc ;==>_WINAPI_CREATERECT
- Func _WinAPI_CreateRectEx($IX, $IY, $IWIDTH, $IHEIGHT)
- Local $TRECT = DllStructCreate($TAGRECT)
- DllStructSetData($TRECT, 1, $IX)
- DllStructSetData($TRECT, 2, $IY)
- DllStructSetData($TRECT, 3, $IX + $IWIDTH)
- DllStructSetData($TRECT, 4, $IY + $IHEIGHT)
- Return $TRECT
- EndFunc ;==>_WINAPI_CREATERECTEX
- Func _WinAPI_CreateSize($IWIDTH, $IHEIGHT)
- Local $TSIZE = DllStructCreate($TAGSIZE)
- DllStructSetData($TSIZE, 1, $IWIDTH)
- DllStructSetData($TSIZE, 2, $IHEIGHT)
- Return $TSIZE
- EndFunc ;==>_WINAPI_CREATESIZE
- Func _WinAPI_CopyStruct($TSTRUCT, $SSTRUCT = "")
- Local $ISIZE = DllStructGetSize($TSTRUCT)
- If Not $ISIZE Then Return SetError(1, 0, 0)
- Local $TRESULT
- If Not StringStripWS($SSTRUCT, $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES) Then
- $TRESULT = DllStructCreate("byte[" & $ISIZE & "]")
- Else
- $TRESULT = DllStructCreate($SSTRUCT)
- EndIf
- If DllStructGetSize($TRESULT) < $ISIZE Then Return SetError(2, 0, 0)
- _WinAPI_MoveMemory($TRESULT, $TSTRUCT, $ISIZE)
- Return $TRESULT
- EndFunc ;==>_WINAPI_COPYSTRUCT
- Func _WinAPI_GetExtended()
- Return $__G_VEXT
- EndFunc ;==>_WINAPI_GETEXTENDED
- Func _WinAPI_GetMousePos($BTOCLIENT = False, $HWND = 0)
- Local $IMODE = Opt("MouseCoordMode", 1)
- Local $APOS = MouseGetPos()
- Opt("MouseCoordMode", $IMODE)
- Local $TPOINT = DllStructCreate($TAGPOINT)
- DllStructSetData($TPOINT, "X", $APOS[0])
- DllStructSetData($TPOINT, "Y", $APOS[1])
- If $BTOCLIENT And Not _WinAPI_ScreenToClient($HWND, $TPOINT) Then Return SetError(@error + 20, @extended, 0)
- Return $TPOINT
- EndFunc ;==>_WinAPI_GetMousePos
- Func _WinAPI_GetMousePosX($BTOCLIENT = False, $HWND = 0)
- Local $TPOINT = _WinAPI_GetMousePos($BTOCLIENT, $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return DllStructGetData($TPOINT, "X")
- EndFunc ;==>_WinAPI_GetMousePosX
- Func _WinAPI_GetMousePosY($BTOCLIENT = False, $HWND = 0)
- Local $TPOINT = _WinAPI_GetMousePos($BTOCLIENT, $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return DllStructGetData($TPOINT, "Y")
- EndFunc ;==>_WinAPI_GetMousePosY
- Func _WinAPI_MulDiv($INUMBER, $INUMERATOR, $IDENOMINATOR)
- Local $ARESULT = DllCall("kernel32.dll", "int", "MulDiv", "int", $INUMBER, "int", $INUMERATOR, "int", $IDENOMINATOR)
- If @error Then Return SetError(@error, @extended, -1)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_MulDiv
- Func _WinAPI_PlaySound($SSOUND, $IFLAGS = $SND_SYSTEM_NOSTOP, $HINSTANCE = 0)
- Local $STYPEOFSOUND = "ptr"
- If $SSOUND Then
- If IsString($SSOUND) Then
- $STYPEOFSOUND = "wstr"
- EndIf
- Else
- $SSOUND = 0
- $IFLAGS = 0
- EndIf
- Local $ARET = DllCall("winmm.dll", "bool", "PlaySoundW", $STYPEOFSOUND, $SSOUND, "handle", $HINSTANCE, "dword", $IFLAGS)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PLAYSOUND
- Func _WinAPI_StringLenA(Const ByRef $TSTRING)
- Local $ARESULT = DllCall("kernel32.dll", "int", "lstrlenA", "struct*", $TSTRING)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_StringLenA
- Func _WinAPI_StringLenW(Const ByRef $TSTRING)
- Local $ARESULT = DllCall("kernel32.dll", "int", "lstrlenW", "struct*", $TSTRING)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_StringLenW
- Func _WinAPI_StructToArray(ByRef $TSTRUCT, $IITEMS = 0)
- Local $ISIZE = 2 * Floor(DllStructGetSize($TSTRUCT) / 2)
- Local $PSTRUCT = DllStructGetPtr($TSTRUCT)
- If Not $ISIZE Or Not $PSTRUCT Then Return SetError(1, 0, 0)
- Local $TDATA, $ILENGTH, $IOFFSET = 0
- Local $ARESULT[101] = [0]
- While 1
- $ILENGTH = _WinAPI_StrLen($PSTRUCT + $IOFFSET)
- If Not $ILENGTH Then
- ExitLoop
- EndIf
- If 2 * (1 + $ILENGTH) + $IOFFSET > $ISIZE Then Return SetError(3, 0, 0)
- $TDATA = DllStructCreate("wchar[" & (1 + $ILENGTH) & "]", $PSTRUCT + $IOFFSET)
- If @error Then Return SetError(@error + 10, 0, 0)
- __INC($ARESULT)
- $ARESULT[$ARESULT[0]] = DllStructGetData($TDATA, 1)
- If $ARESULT[0] = $IITEMS Then
- ExitLoop
- EndIf
- $IOFFSET += 2 * (1 + $ILENGTH)
- If $IOFFSET >= $ISIZE Then Return SetError(3, 0, 0)
- WEnd
- If Not $ARESULT[0] Then Return SetError(2, 0, 0)
- __INC($ARESULT, -1)
- Return $ARESULT
- EndFunc ;==>_WINAPI_STRUCTTOARRAY
- Func _WinAPI_UnionStruct($TSTRUCT1, $TSTRUCT2, $SSTRUCT = "")
- Local $ASIZE[2] = [DllStructGetSize($TSTRUCT1), DllStructGetSize($TSTRUCT2)]
- If Not $ASIZE[0] Or Not $ASIZE[1] Then Return SetError(1, 0, 0)
- Local $TRESULT
- If Not StringStripWS($SSTRUCT, $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES) Then
- $TRESULT = DllStructCreate("byte[" & ($ASIZE[0] + $ASIZE[1]) & "]")
- Else
- $TRESULT = DllStructCreate($SSTRUCT)
- EndIf
- If DllStructGetSize($TRESULT) < ($ASIZE[0] + $ASIZE[1]) Then Return SetError(2, 0, 0)
- _WinAPI_MoveMemory($TRESULT, $TSTRUCT1, $ASIZE[0])
- _WinAPI_MoveMemory(DllStructGetPtr($TRESULT) + $ASIZE[0], $TSTRUCT2, $ASIZE[1])
- Return $TRESULT
- EndFunc ;==>_WINAPI_UNIONSTRUCT
- #EndRegion Public Functions
- #Region Global Variables and Constants
- Global Const $TAGBITMAP = "struct;long bmType;long bmWidth;long bmHeight;long bmWidthBytes;ushort bmPlanes;ushort bmBitsPixel;ptr bmBits;endstruct"
- Global Const $TAGBITMAPV5HEADER = "struct;dword bV5Size;long bV5Width;long bV5Height;ushort bV5Planes;ushort bV5BitCount;dword bV5Compression;dword bV5SizeImage;long bV5XPelsPerMeter;long bV5YPelsPerMeter;dword bV5ClrUsed;dword bV5ClrImportant;dword bV5RedMask;dword bV5GreenMask;dword bV5BlueMask;dword bV5AlphaMask;dword bV5CSType;int bV5Endpoints[9];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved;endstruct"
- Global Const $TAGDIBSECTION = $TAGBITMAP & ";" & $TAGBITMAPINFOHEADER & ";dword dsBitfields[3];ptr dshSection;dword dsOffset"
- Global Const $TMPF_FIXED_PITCH = 1
- Global Const $TMPF_VECTOR = 2
- Global Const $TMPF_TRUETYPE = 4
- Global Const $TMPF_DEVICE = 8
- Global Const $__WINAPICONSTANT_FW_NORMAL = 400
- Global Const $__WINAPICONSTANT_DEFAULT_CHARSET = 1
- Global Const $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0
- Global Const $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0
- Global Const $__WINAPICONSTANT_DEFAULT_QUALITY = 0
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_BitBlt($HDESTDC, $IXDEST, $IYDEST, $IWIDTH, $IHEIGHT, $HSRCDC, $IXSRC, $IYSRC, $IROP)
- Local $ARESULT = DllCall("gdi32.dll", "bool", "BitBlt", "handle", $HDESTDC, "int", $IXDEST, "int", $IYDEST, "int", $IWIDTH, "int", $IHEIGHT, "handle", $HSRCDC, "int", $IXSRC, "int", $IYSRC, "dword", $IROP)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_BitBlt
- Func _WinAPI_CombineRgn($HRGNDEST, $HRGNSRC1, $HRGNSRC2, $ICOMBINEMODE)
- Local $ARESULT = DllCall("gdi32.dll", "int", "CombineRgn", "handle", $HRGNDEST, "handle", $HRGNSRC1, "handle", $HRGNSRC2, "int", $ICOMBINEMODE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CombineRgn
- Func _WinAPI_CopyBitmap($HBITMAP)
- $HBITMAP = _WinAPI_CopyImage($HBITMAP, 0, 0, 0, 8192)
- Return SetError(@error, @extended, $HBITMAP)
- EndFunc ;==>_WINAPI_COPYBITMAP
- Func _WinAPI_CopyImage($HIMAGE, $ITYPE = 0, $IXDESIREDPIXELS = 0, $IYDESIREDPIXELS = 0, $IFLAGS = 0)
- Local $ARET = DllCall("user32.dll", "handle", "CopyImage", "handle", $HIMAGE, "uint", $ITYPE, "int", $IXDESIREDPIXELS, "int", $IYDESIREDPIXELS, "uint", $IFLAGS)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_COPYIMAGE
- Func _WinAPI_CreateANDBitmap($HBITMAP)
- Local $IERROR = 0, $HDIB = 0
- $HBITMAP = _WinAPI_CopyBitmap($HBITMAP)
- If Not $HBITMAP Then Return SetError(@error + 20, @extended, 0)
- Do
- Local $ATDIB[2]
- $ATDIB[0] = DllStructCreate($TAGDIBSECTION)
- If (Not _WinAPI_GetObject($HBITMAP, DllStructGetSize($ATDIB[0]), $ATDIB[0])) Or (DllStructGetData($ATDIB[0], "bmBitsPixel") <> 32) Or (DllStructGetData($ATDIB[0], "biCompression")) Then
- $IERROR = 10
- ExitLoop
- EndIf
- $ATDIB[1] = DllStructCreate($TAGBITMAP)
- $HDIB = _WinAPI_CreateDIB(DllStructGetData($ATDIB[0], "bmWidth"), DllStructGetData($ATDIB[0], "bmHeight"), 1)
- If Not _WinAPI_GetObject($HDIB, DllStructGetSize($ATDIB[1]), $ATDIB[1]) Then
- $IERROR = 11
- ExitLoop
- EndIf
- Local $ARET = DllCall("user32.dll", "lresult", "CallWindowProc", "ptr", __ANDPROC(), "ptr", 0, "uint", 0, "wparam", DllStructGetPtr($ATDIB[0]), "lparam", DllStructGetPtr($ATDIB[1]))
- If @error Then
- $IERROR = @error
- ExitLoop
- EndIf
- If Not $ARET[0] Then
- $IERROR = 12
- ExitLoop
- EndIf
- $IERROR = 0
- Until 1
- _WinAPI_DeleteObject($HBITMAP)
- If $IERROR Then
- If $HDIB Then
- _WinAPI_DeleteObject($HDIB)
- EndIf
- $HDIB = 0
- EndIf
- Return SetError($IERROR, 0, $HDIB)
- EndFunc ;==>_WINAPI_CREATEANDBITMAP
- Func _WinAPI_CreateBitmap($IWIDTH, $IHEIGHT, $IPLANES = 1, $IBITSPERPEL = 1, $PBITS = 0)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateBitmap", "int", $IWIDTH, "int", $IHEIGHT, "uint", $IPLANES, "uint", $IBITSPERPEL, "struct*", $PBITS)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateBitmap
- Func _WinAPI_CreateCompatibleBitmap($HDC, $IWIDTH, $IHEIGHT)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleBitmap", "handle", $HDC, "int", $IWIDTH, "int", $IHEIGHT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateCompatibleBitmap
- Func _WinAPI_CreateDIB($IWIDTH, $IHEIGHT, $IBITSPERPEL = 32, $TCOLORTABLE = 0, $ICOLORCOUNT = 0)
- Local $ARGBQ[2], $ICOLORS, $TAGRGBQ
- Switch $IBITSPERPEL
- Case 1
- $ICOLORS = 2
- Case 4
- $ICOLORS = 16
- Case 8
- $ICOLORS = 256
- Case Else
- $ICOLORS = 0
- EndSwitch
- If $ICOLORS Then
- If Not IsDllStruct($TCOLORTABLE) Then
- Switch $IBITSPERPEL
- Case 1
- $ARGBQ[0] = 0
- $ARGBQ[1] = 16777215
- $TCOLORTABLE = _WinAPI_CreateDIBColorTable($ARGBQ)
- Case Else
- EndSwitch
- Else
- If $ICOLORS > $ICOLORCOUNT Then
- $ICOLORS = $ICOLORCOUNT
- EndIf
- If (Not $ICOLORS) Or ((4 * $ICOLORS) > DllStructGetSize($TCOLORTABLE)) Then
- Return SetError(20, 0, 0)
- EndIf
- EndIf
- $TAGRGBQ = ";dword aRGBQuad[" & $ICOLORS & "]"
- Else
- $TAGRGBQ = ""
- EndIf
- Local $TBITMAPINFO = DllStructCreate($TAGBITMAPINFOHEADER & $TAGRGBQ)
- DllStructSetData($TBITMAPINFO, "biSize", 40)
- DllStructSetData($TBITMAPINFO, "biWidth", $IWIDTH)
- DllStructSetData($TBITMAPINFO, "biHeight", $IHEIGHT)
- DllStructSetData($TBITMAPINFO, "biPlanes", 1)
- DllStructSetData($TBITMAPINFO, "biBitCount", $IBITSPERPEL)
- DllStructSetData($TBITMAPINFO, "biCompression", 0)
- DllStructSetData($TBITMAPINFO, "biSizeImage", 0)
- DllStructSetData($TBITMAPINFO, "biXPelsPerMeter", 0)
- DllStructSetData($TBITMAPINFO, "biYPelsPerMeter", 0)
- DllStructSetData($TBITMAPINFO, "biClrUsed", $ICOLORS)
- DllStructSetData($TBITMAPINFO, "biClrImportant", 0)
- If $ICOLORS Then
- If IsDllStruct($TCOLORTABLE) Then
- _WinAPI_MoveMemory(DllStructGetPtr($TBITMAPINFO, "aRGBQuad"), $TCOLORTABLE, 4 * $ICOLORS)
- Else
- _WinAPI_ZeroMemory(DllStructGetPtr($TBITMAPINFO, "aRGBQuad"), 4 * $ICOLORS)
- EndIf
- EndIf
- Local $HBITMAP = _WinAPI_CreateDIBSection(0, $TBITMAPINFO, 0, $__G_VEXT)
- If Not $HBITMAP Then Return SetError(@error, @extended, 0)
- Return $HBITMAP
- EndFunc ;==>_WINAPI_CREATEDIB
- Func _WinAPI_CreateDIBSection($HDC, $TBITMAPINFO, $IUSAGE, ByRef $PBITS, $HSECTION = 0, $IOFFSET = 0)
- $PBITS = 0
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateDIBSection", "handle", $HDC, "struct*", $TBITMAPINFO, "uint", $IUSAGE, "ptr*", 0, "handle", $HSECTION, "dword", $IOFFSET)
- If @error Or Not $ARET[0] Then Return SetError(@error, @extended, 0)
- $PBITS = $ARET[4]
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEDIBSECTION
- Func _WinAPI_CreateDIBColorTable(Const ByRef $ACOLORTABLE, $ISTART = 0, $IEND = -1)
- If __CHECKERRORARRAYBOUNDS($ACOLORTABLE, $ISTART, $IEND) Then Return SetError(@error + 10, @extended, 0)
- Local $TCOLORTABLE = DllStructCreate("dword[" & ($IEND - $ISTART + 1) & "]")
- Local $ICOUNT = 1
- For $I = $ISTART To $IEND
- DllStructSetData($TCOLORTABLE, 1, _WinAPI_SwitchColor(__RGB($ACOLORTABLE[$I])), $ICOUNT)
- $ICOUNT += 1
- Next
- Return $TCOLORTABLE
- EndFunc ;==>_WINAPI_CREATEDIBCOLORTABLE
- Func _WinAPI_CreateFont($IHEIGHT, $IWIDTH, $IESCAPE = 0, $IORIENTN = 0, $IWEIGHT = $__WINAPICONSTANT_FW_NORMAL, $BITALIC = False, $BUNDERLINE = False, $BSTRIKEOUT = False, $ICHARSET = $__WINAPICONSTANT_DEFAULT_CHARSET, $IOUTPUTPREC = $__WINAPICONSTANT_OUT_DEFAULT_PRECIS, $ICLIPPREC = $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS, $IQUALITY = $__WINAPICONSTANT_DEFAULT_QUALITY, $IPITCH = 0, $SFACE = "Arial")
- Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateFontW", "int", $IHEIGHT, "int", $IWIDTH, "int", $IESCAPE, "int", $IORIENTN, "int", $IWEIGHT, "dword", $BITALIC, "dword", $BUNDERLINE, "dword", $BSTRIKEOUT, "dword", $ICHARSET, "dword", $IOUTPUTPREC, "dword", $ICLIPPREC, "dword", $IQUALITY, "dword", $IPITCH, "wstr", $SFACE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateFont
- Func _WinAPI_CreateFontIndirect($TLOGFONT)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateFontIndirectW", "struct*", $TLOGFONT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateFontIndirect
- Func _WinAPI_CreateRectRgn($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateRectRgn
- Func _WinAPI_CreateRoundRectRgn($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT, $IWIDTHELLIPSE, $IHEIGHTELLIPSE)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRoundRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT, "int", $IWIDTHELLIPSE, "int", $IHEIGHTELLIPSE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateRoundRectRgn
- Func _WinAPI_CreateSolidBrush($ICOLOR)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateSolidBrush", "INT", $ICOLOR)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateSolidBrush
- Func _WinAPI_GetBitmapDimension($HBITMAP)
- Local $TOBJ = DllStructCreate($TAGBITMAP)
- Local $ARET = DllCall("gdi32.dll", "int", "GetObject", "handle", $HBITMAP, "int", DllStructGetSize($TOBJ), "struct*", $TOBJ)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return _WinAPI_CreateSize(DllStructGetData($TOBJ, "bmWidth"), DllStructGetData($TOBJ, "bmHeight"))
- EndFunc ;==>_WINAPI_GETBITMAPDIMENSION
- Func _WinAPI_GetSysColorBrush($IINDEX)
- Local $ARESULT = DllCall("user32.dll", "handle", "GetSysColorBrush", "int", $IINDEX)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetSysColorBrush
- Func _WinAPI_GetTextExtentPoint32($HDC, $STEXT)
- Local $TSIZE = DllStructCreate($TAGSIZE)
- Local $ISIZE = StringLen($STEXT)
- Local $ARET = DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $HDC, "wstr", $STEXT, "int", $ISIZE, "struct*", $TSIZE)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TSIZE
- EndFunc ;==>_WinAPI_GetTextExtentPoint32
- Func _WinAPI_GetTextMetrics($HDC)
- Local $TTEXTMETRIC = DllStructCreate($TAGTEXTMETRIC)
- Local $ARET = DllCall("gdi32.dll", "bool", "GetTextMetricsW", "handle", $HDC, "struct*", $TTEXTMETRIC)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TTEXTMETRIC
- EndFunc ;==>_WinAPI_GetTextMetrics
- Func _WinAPI_GetWindowRgn($HWND, $HRGN)
- Local $ARESULT = DllCall("user32.dll", "int", "GetWindowRgn", "hwnd", $HWND, "handle", $HRGN)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetWindowRgn
- Func _WinAPI_IsAlphaBitmap($HBITMAP)
- $HBITMAP = _WinAPI_CopyBitmap($HBITMAP)
- If Not $HBITMAP Then Return SetError(@error + 20, @extended, 0)
- Local $ARET, $IERROR = 0
- Do
- Local $TDIB = DllStructCreate($TAGDIBSECTION)
- If (Not _WinAPI_GetObject($HBITMAP, DllStructGetSize($TDIB), $TDIB)) Or (DllStructGetData($TDIB, "bmBitsPixel") <> 32) Or (DllStructGetData($TDIB, "biCompression")) Then
- $IERROR = 1
- ExitLoop
- EndIf
- $ARET = DllCall("user32.dll", "int", "CallWindowProc", "ptr", __ALPHAPROC(), "ptr", 0, "uint", 0, "struct*", $TDIB, "ptr", 0)
- If @error Or ($ARET[0] = -1) Then
- $IERROR = @error + 10
- ExitLoop
- EndIf
- Until 1
- _WinAPI_DeleteObject($HBITMAP)
- If $IERROR Then Return SetError($IERROR, 0, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ISALPHABITMAP
- Func _WinAPI_PtInRect(ByRef $TRECT, ByRef $TPOINT)
- Local $ARESULT = DllCall("user32.dll", "bool", "PtInRect", "struct*", $TRECT, "struct", $TPOINT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_PtInRect
- Func _WinAPI_RedrawWindow($HWND, $TRECT = 0, $HREGION = 0, $IFLAGS = 5)
- Local $ARESULT = DllCall("user32.dll", "bool", "RedrawWindow", "hwnd", $HWND, "struct*", $TRECT, "handle", $HREGION, "uint", $IFLAGS)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_RedrawWindow
- Func _WinAPI_SetWindowRgn($HWND, $HRGN, $BREDRAW = True)
- Local $ARESULT = DllCall("user32.dll", "int", "SetWindowRgn", "hwnd", $HWND, "handle", $HRGN, "bool", $BREDRAW)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SetWindowRgn
- #EndRegion Public Functions
- #Region Embedded DLL Functions
- Func __ALPHAPROC()
- Static $PPROC = 0
- If Not $PPROC Then
- If @AutoItX64 Then
- $PPROC = __INIT(Binary("0x48894C240848895424104C894424184C894C24205541574831C050504883EC28" & "48837C24600074054831C0EB0748C7C0010000004821C0751F488B6C24604883" & "7D180074054831C0EB0748C7C0010000004821C07502EB0948C7C001000000EB" & "034831C04821C0740C48C7C0FFFFFFFF4863C0EB6F48C744242800000000488B" & "6C24604C637D04488B6C2460486345084C0FAFF849C1E7024983C7FC4C3B7C24" & "287C36488B6C24604C8B7D184C037C24284983C7034C897C2430488B6C243080" & "7D0000740C48C7C0010000004863C0EB1348834424280471A54831C04863C0EB" & "034831C04883C438415F5DC3"))
- Else
- $PPROC = __INIT(Binary("0x555331C05050837C241C00740431C0EB05B80100000021C075198B6C241C837D" & "1400740431C0EB05B80100000021C07502EB07B801000000EB0231C021C07407" & "B8FFFFFFFFEB4FC70424000000008B6C241C8B5D048B6C241C0FAF5D08C1E302" & "83C3FC3B1C247C288B6C241C8B5D14031C2483C303895C24048B6C2404807D00" & "007407B801000000EB0C8304240471BE31C0EB0231C083C4085B5DC21000"))
- EndIf
- EndIf
- Return $PPROC
- EndFunc ;==>__ALPHAPROC
- Func __ANDPROC()
- Static $PPROC = 0
- If Not $PPROC Then
- If @AutoItX64 Then
- $PPROC = __INIT(Binary("0x48894C240848895424104C894424184C894C2420554157415648C7C009000000" & "4883EC0848C704240000000048FFC875EF4883EC284883BC24A0000000007405" & "4831C0EB0748C7C0010000004821C00F85840000004883BC24A8000000007405" & "4831C0EB0748C7C0010000004821C07555488BAC24A000000048837D18007405" & "4831C0EB0748C7C0010000004821C07522488BAC24A800000048837D18007405" & "4831C0EB0748C7C0010000004821C07502EB0948C7C001000000EB034831C048" & "21C07502EB0948C7C001000000EB034831C04821C07502EB0948C7C001000000" & "EB034831C04821C0740B4831C04863C0E9D701000048C74424280000000048C7" & "44243000000000488BAC24A00000004C637D0849FFCF4C3B7C24300F8C9C0100" & "0048C74424380000000048C74424400000000048C744244800000000488BAC24" & "A00000004C637D0449FFCF4C3B7C24480F8CDB000000488BAC24A00000004C8B" & "7D184C037C24284983C7034C897C2450488B6C2450807D000074264C8B7C2440" & "4C8B74243849F7DE4983C61F4C89F148C7C00100000048D3E04909C74C897C24" & "4048FF4424384C8B7C24384983FF1F7E6F4C8B7C244049F7D74C897C244048C7" & "442458180000004831C0483B4424587F3D488BAC24A80000004C8B7D184C037C" & "24604C897C24504C8B7C2440488B4C245849D3FF4C89F850488B6C2458588845" & "0048FF4424604883442458F871B948C74424380000000048C744244000000000" & "48834424280448FF4424480F810BFFFFFF48837C24380074794C8B7C244049F7" & "D74C8B74243849F7DE4983C6204C89F148C7C0FFFFFFFF48D3E04921C74C897C" & "244048C7442458180000004831C0483B4424587F3D488BAC24A80000004C8B7D" & "184C037C24604C897C24504C8B7C2440488B4C245849D3FF4C89F850488B6C24" & "585888450048FF4424604883442458F871B948FF4424300F814AFEFFFF48C7C0" & "010000004863C0EB034831C04883C470415E415F5DC3"))
- Else
- $PPROC = __INIT(Binary("0x555357BA0800000083EC04C70424000000004A75F3837C243800740431C0EB05" & "B80100000021C07562837C243C00740431C0EB05B80100000021C0753F8B6C24" & "38837D1400740431C0EB05B80100000021C075198B6C243C837D1400740431C0" & "EB05B80100000021C07502EB07B801000000EB0231C021C07502EB07B8010000" & "00EB0231C021C07502EB07B801000000EB0231C021C0740731C0E969010000C7" & "042400000000C7442404000000008B6C24388B5D084B3B5C24040F8C3F010000" & "C744240800000000C744240C00000000C7442410000000008B6C24388B5D044B" & "3B5C24100F8CA90000008B6C24388B5D14031C2483C303895C24148B6C241480" & "7D0000741C8B5C240C8B7C2408F7DF83C71F89F9B801000000D3E009C3895C24" & "0CFF4424088B5C240883FB1F7E578B5C240CF7D3895C240CC744241818000000" & "31C03B4424187F2D8B6C243C8B5D14035C241C895C24148B5C240C8B4C2418D3" & "FB538B6C241858884500FF44241C83442418F871CBC744240800000000C74424" & "0C0000000083042404FF4424100F8145FFFFFF837C240800745B8B5C240CF7D3" & "8B7C2408F7DF83C72089F9B8FFFFFFFFD3E021C3895C240CC744241818000000" & "31C03B4424187F2D8B6C243C8B5D14035C241C895C24148B5C240C8B4C2418D3" & "FB538B6C241858884500FF44241C83442418F871CBFF4424040F81AFFEFFFFB8" & "01000000EB0231C083C4205F5B5DC21000"))
- EndIf
- EndIf
- Return $PPROC
- EndFunc ;==>__ANDPROC
- Func __XORPROC()
- Static $PPROC = 0
- If Not $PPROC Then
- If @AutoItX64 Then
- $PPROC = __INIT(Binary("0x48894C240848895424104C894424184C894C24205541574831C050504883EC28" & "48837C24600074054831C0EB0748C7C0010000004821C0751B48837C24680074" & "054831C0EB0748C7C0010000004821C07502EB0948C7C001000000EB034831C0" & "4821C074084831C04863C0EB7748C7442428000000004C637C24584983C7FC4C" & "3B7C24287C4F4C8B7C24604C037C24284C897C2430488B6C2430807D00007405" & "4831C0EB0748C7C0010000004821C0741C4C8B7C24684C037C24284983C7034C" & "897C2430488B6C2430C64500FF48834424280471A148C7C0010000004863C0EB" & "034831C04883C438415F5DC3"))
- Else
- $PPROC = __INIT(Binary("0x555331C05050837C241C00740431C0EB05B80100000021C07516837C24200074" & "0431C0EB05B80100000021C07502EB07B801000000EB0231C021C0740431C0EB" & "5AC70424000000008B5C241883C3FC3B1C247C3E8B5C241C031C24895C24048B" & "6C2404807D0000740431C0EB05B80100000021C074168B5C2420031C2483C303" & "895C24048B6C2404C64500FF8304240471B6B801000000EB0231C083C4085B5D" & "C21000"))
- EndIf
- EndIf
- Return $PPROC
- EndFunc ;==>__XORPROC
- #EndRegion Embedded DLL Functions
- #Region Internal Functions
- Func __INIT($DDATA)
- Local $ILENGTH = BinaryLen($DDATA)
- Local $ARET = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", 0, "ulong_ptr", $ILENGTH, "dword", 4096, "dword", 64)
- If @error Or Not $ARET[0] Then __FATALEXIT(1, "Error allocating memory.")
- Local $TDATA = DllStructCreate("byte[" & $ILENGTH & "]", $ARET[0])
- DllStructSetData($TDATA, 1, $DDATA)
- Return $ARET[0]
- EndFunc ;==>__INIT
- #EndRegion Internal Functions
- #Region Global Variables and Constants
- Global Const $DI_MASK = 1
- Global Const $DI_IMAGE = 2
- Global Const $DI_NORMAL = 3
- Global Const $DI_COMPAT = 4
- Global Const $DI_DEFAULTSIZE = 8
- Global Const $DI_NOMIRROR = 16
- Global Const $DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1
- Global Const $DISPLAY_DEVICE_MULTI_DRIVER = 2
- Global Const $DISPLAY_DEVICE_PRIMARY_DEVICE = 4
- Global Const $DISPLAY_DEVICE_MIRRORING_DRIVER = 8
- Global Const $DISPLAY_DEVICE_VGA_COMPATIBLE = 16
- Global Const $DISPLAY_DEVICE_REMOVABLE = 32
- Global Const $DISPLAY_DEVICE_DISCONNECT = 33554432
- Global Const $DISPLAY_DEVICE_REMOTE = 67108864
- Global Const $DISPLAY_DEVICE_MODESPRUNED = 134217728
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_CreateCompatibleDC($HDC)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreateCompatibleDC
- Func _WinAPI_DeleteDC($HDC)
- Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_DeleteDC
- Func _WinAPI_DrawEdge($HDC, $TRECT, $IEDGETYPE, $IFLAGS)
- Local $ARESULT = DllCall("user32.dll", "bool", "DrawEdge", "handle", $HDC, "struct*", $TRECT, "uint", $IEDGETYPE, "uint", $IFLAGS)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_DrawEdge
- Func _WinAPI_DrawFrameControl($HDC, $TRECT, $ITYPE, $ISTATE)
- Local $ARESULT = DllCall("user32.dll", "bool", "DrawFrameControl", "handle", $HDC, "struct*", $TRECT, "uint", $ITYPE, "uint", $ISTATE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_DrawFrameControl
- Func _WinAPI_DrawIcon($HDC, $IX, $IY, $HICON)
- Local $ARESULT = DllCall("user32.dll", "bool", "DrawIcon", "handle", $HDC, "int", $IX, "int", $IY, "handle", $HICON)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_DrawIcon
- Func _WinAPI_DrawIconEx($HDC, $IX, $IY, $HICON, $IWIDTH = 0, $IHEIGHT = 0, $ISTEP = 0, $HBRUSH = 0, $IFLAGS = 3)
- Local $IOPTIONS
- Switch $IFLAGS
- Case 1
- $IOPTIONS = $DI_MASK
- Case 2
- $IOPTIONS = $DI_IMAGE
- Case 3
- $IOPTIONS = $DI_NORMAL
- Case 4
- $IOPTIONS = $DI_COMPAT
- Case 5
- $IOPTIONS = $DI_DEFAULTSIZE
- Case Else
- $IOPTIONS = $DI_NOMIRROR
- EndSwitch
- Local $ARESULT = DllCall("user32.dll", "bool", "DrawIconEx", "handle", $HDC, "int", $IX, "int", $IY, "handle", $HICON, "int", $IWIDTH, "int", $IHEIGHT, "uint", $ISTEP, "handle", $HBRUSH, "uint", $IOPTIONS)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_DrawIconEx
- Func _WinAPI_DrawText($HDC, $STEXT, ByRef $TRECT, $IFLAGS)
- Local $ARESULT = DllCall("user32.dll", "int", "DrawTextW", "handle", $HDC, "wstr", $STEXT, "int", -1, "struct*", $TRECT, "uint", $IFLAGS)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_DrawText
- Func _WinAPI_EnumDisplayDevices($SDEVICE, $IDEVNUM)
- Local $TNAME = 0, $IFLAGS = 0, $ADEVICE[5]
- If $SDEVICE <> "" Then
- $TNAME = DllStructCreate("wchar Text[" & StringLen($SDEVICE) + 1 & "]")
- DllStructSetData($TNAME, "Text", $SDEVICE)
- EndIf
- Local Const $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]"
- Local $TDEVICE = DllStructCreate($TAGDISPLAY_DEVICE)
- Local $IDEVICE = DllStructGetSize($TDEVICE)
- DllStructSetData($TDEVICE, "Size", $IDEVICE)
- Local $ARET = DllCall("user32.dll", "bool", "EnumDisplayDevicesW", "struct*", $TNAME, "dword", $IDEVNUM, "struct*", $TDEVICE, "dword", 1)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Local $IN = DllStructGetData($TDEVICE, "Flags")
- If BitAND($IN, $DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) <> 0 Then $IFLAGS = BitOR($IFLAGS, 1)
- If BitAND($IN, $DISPLAY_DEVICE_PRIMARY_DEVICE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 2)
- If BitAND($IN, $DISPLAY_DEVICE_MIRRORING_DRIVER) <> 0 Then $IFLAGS = BitOR($IFLAGS, 4)
- If BitAND($IN, $DISPLAY_DEVICE_VGA_COMPATIBLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 8)
- If BitAND($IN, $DISPLAY_DEVICE_REMOVABLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 16)
- If BitAND($IN, $DISPLAY_DEVICE_MODESPRUNED) <> 0 Then $IFLAGS = BitOR($IFLAGS, 32)
- $ADEVICE[0] = True
- $ADEVICE[1] = DllStructGetData($TDEVICE, "Name")
- $ADEVICE[2] = DllStructGetData($TDEVICE, "String")
- $ADEVICE[3] = $IFLAGS
- $ADEVICE[4] = DllStructGetData($TDEVICE, "ID")
- Return $ADEVICE
- EndFunc ;==>_WinAPI_EnumDisplayDevices
- Func _WinAPI_FillRect($HDC, $TRECT, $HBRUSH)
- Local $ARESULT
- If IsPtr($HBRUSH) Then
- $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "struct*", $TRECT, "handle", $HBRUSH)
- Else
- $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "struct*", $TRECT, "dword_ptr", $HBRUSH)
- EndIf
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_FillRect
- Func _WinAPI_FrameRect($HDC, $TRECT, $HBRUSH)
- Local $ARESULT = DllCall("user32.dll", "int", "FrameRect", "handle", $HDC, "struct*", $TRECT, "handle", $HBRUSH)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_FrameRect
- Func _WinAPI_GetBkMode($HDC)
- Local $ARESULT = DllCall("gdi32.dll", "int", "GetBkMode", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetBkMode
- Func _WinAPI_GetDC($HWND)
- Local $ARESULT = DllCall("user32.dll", "handle", "GetDC", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetDC
- Func _WinAPI_GetDCEx($HWND, $HRGN, $IFLAGS)
- Local $ARET = DllCall("user32.dll", "handle", "GetDCEx", "hwnd", $HWND, "handle", $HRGN, "dword", $IFLAGS)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETDCEX
- Func _WinAPI_GetDeviceCaps($HDC, $IINDEX)
- Local $ARESULT = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $HDC, "int", $IINDEX)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetDeviceCaps
- Func _WinAPI_GetTextColor($HDC)
- Local $ARET = DllCall("gdi32.dll", "dword", "GetTextColor", "handle", $HDC)
- If @error Or ($ARET[0] = 4294967295) Then Return SetError(@error, @extended, -1)
- Return __RGB($ARET[0])
- EndFunc ;==>_WINAPI_GETTEXTCOLOR
- Func _WinAPI_GetWindowDC($HWND)
- Local $ARESULT = DllCall("user32.dll", "handle", "GetWindowDC", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetWindowDC
- Func _WinAPI_PrintWindow($HWND, $HDC, $BCLIENT = False)
- Local $ARET = DllCall("user32.dll", "bool", "PrintWindow", "hwnd", $HWND, "handle", $HDC, "uint", $BCLIENT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PRINTWINDOW
- Func _WinAPI_ReleaseDC($HWND, $HDC)
- Local $ARESULT = DllCall("user32.dll", "int", "ReleaseDC", "hwnd", $HWND, "handle", $HDC)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_ReleaseDC
- Func _WinAPI_RestoreDC($HDC, $IID)
- Local $ARET = DllCall("gdi32.dll", "bool", "RestoreDC", "handle", $HDC, "int", $IID)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_RESTOREDC
- Func _WinAPI_SaveDC($HDC)
- Local $ARET = DllCall("gdi32.dll", "int", "SaveDC", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_SAVEDC
- Func _WinAPI_SetBkColor($HDC, $ICOLOR)
- Local $ARESULT = DllCall("gdi32.dll", "INT", "SetBkColor", "handle", $HDC, "INT", $ICOLOR)
- If @error Then Return SetError(@error, @extended, -1)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SetBkColor
- Func _WinAPI_SetBkMode($HDC, $IBKMODE)
- Local $ARESULT = DllCall("gdi32.dll", "int", "SetBkMode", "handle", $HDC, "int", $IBKMODE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SetBkMode
- Func _WinAPI_SetTextColor($HDC, $ICOLOR)
- Local $ARESULT = DllCall("gdi32.dll", "INT", "SetTextColor", "handle", $HDC, "INT", $ICOLOR)
- If @error Then Return SetError(@error, @extended, -1)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_SetTextColor
- Func _WinAPI_TwipsPerPixelX()
- Local $HDC, $ITWIPSPERPIXELX
- $HDC = _WinAPI_GetDC(0)
- Local Const $__WINAPICONSTANT_LOGPIXELSX = 88
- $ITWIPSPERPIXELX = 1440 / _WinAPI_GetDeviceCaps($HDC, $__WINAPICONSTANT_LOGPIXELSX)
- _WinAPI_ReleaseDC(0, $HDC)
- Return $ITWIPSPERPIXELX
- EndFunc ;==>_WinAPI_TwipsPerPixelX
- Func _WinAPI_TwipsPerPixelY()
- Local $HDC, $ITWIPSPERPIXELY
- $HDC = _WinAPI_GetDC(0)
- Local Const $__WINAPICONSTANT_LOGPIXELSY = 90
- $ITWIPSPERPIXELY = 1440 / _WinAPI_GetDeviceCaps($HDC, $__WINAPICONSTANT_LOGPIXELSY)
- _WinAPI_ReleaseDC(0, $HDC)
- Return $ITWIPSPERPIXELY
- EndFunc ;==>_WinAPI_TwipsPerPixelY
- #EndRegion Public Functions
- #Region Internal Functions
- #EndRegion Internal Functions
- #Region Global Variables and Constants
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Global Const $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
- Func _WinAPI_AddIconTransparency($HICON, $IPERCENT = 50, $BDELETE = False)
- Local $TBITMAP, $HDIB = 0, $HRESULT = 0
- Local $AHBITMAP[2]
- Local $TICONINFO = DllStructCreate($TAGICONINFO)
- Local $ARET = DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HICON, "struct*", $TICONINFO)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- For $I = 0 To 1
- $AHBITMAP[$I] = DllStructGetData($TICONINFO, $I + 4)
- Next
- Local $IERROR = 0
- Do
- $HDIB = _WinAPI_CopyBitmap($AHBITMAP[1])
- If Not $HDIB Then
- $IERROR = 20
- ExitLoop
- EndIf
- $TBITMAP = DllStructCreate($TAGBITMAP)
- If (Not _WinAPI_GetObject($HDIB, DllStructGetSize($TBITMAP), $TBITMAP)) Or (DllStructGetData($TBITMAP, "bmBitsPixel") <> 32) Then
- $IERROR = 21
- ExitLoop
- EndIf
- $ARET = DllCall("user32.dll", "lresult", "CallWindowProc", "PTR", __TRANSPARENCYPROC(), "hwnd", 0, "uint", $IPERCENT, "wparam", DllStructGetPtr($TBITMAP), "lparam", 0)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 30
- ExitLoop
- EndIf
- If $ARET[0] = -1 Then
- $HRESULT = _WinAPI_CreateEmptyIcon(DllStructGetData($TBITMAP, "bmWidth"), DllStructGetData($TBITMAP, "bmHeight"))
- Else
- $HRESULT = _WinAPI_CreateIconIndirect($HDIB, $AHBITMAP[0])
- EndIf
- If Not $HRESULT Then $IERROR = 22
- Until 1
- If $HDIB Then
- _WinAPI_DeleteObject($HDIB)
- EndIf
- For $I = 0 To 1
- If $AHBITMAP[$I] Then
- _WinAPI_DeleteObject($AHBITMAP[$I])
- EndIf
- Next
- If $IERROR Then Return SetError($IERROR, 0, 0)
- If $BDELETE Then
- _WinAPI_DestroyIcon($HICON)
- EndIf
- Return $HRESULT
- EndFunc ;==>_WINAPI_ADDICONTRANSPARENCY
- Func _WinAPI_CopyIcon($HICON)
- Local $ARESULT = DllCall("user32.dll", "handle", "CopyIcon", "handle", $HICON)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CopyIcon
- Func _WinAPI_Create32BitHICON($HICON, $BDELETE = False)
- Local $AHBITMAP[2], $HRESULT = 0
- Local $ADIB[2][2] = [[0, 0], [0, 0]]
- Local $TICONINFO = DllStructCreate($TAGICONINFO)
- Local $ARET = DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HICON, "struct*", $TICONINFO)
- If @error Then Return SetError(@error, @extended, 0)
- If Not $ARET[0] Then Return SetError(10, 0, 0)
- For $I = 0 To 1
- $AHBITMAP[$I] = DllStructGetData($TICONINFO, $I + 4)
- Next
- If _WinAPI_IsAlphaBitmap($AHBITMAP[1]) Then
- $ADIB[0][0] = _WinAPI_CreateANDBitmap($AHBITMAP[1])
- If Not @error Then
- $HRESULT = _WinAPI_CreateIconIndirect($AHBITMAP[1], $ADIB[0][0])
- EndIf
- Else
- Local $TSIZE = _WinAPI_GetBitmapDimension($AHBITMAP[1])
- Local $ASIZE[2]
- For $I = 0 To 1
- $ASIZE[$I] = DllStructGetData($TSIZE, $I + 1)
- Next
- Local $HSRCDC = _WinAPI_CreateCompatibleDC(0)
- Local $HDSTDC = _WinAPI_CreateCompatibleDC(0)
- Local $HSRCSV, $HDSTSV
- For $I = 0 To 1
- $ADIB[$I][0] = _WinAPI_CreateDIB($ASIZE[0], $ASIZE[1])
- $ADIB[$I][1] = $__G_VEXT
- $HSRCSV = _WinAPI_SelectObject($HSRCDC, $AHBITMAP[$I])
- $HDSTSV = _WinAPI_SelectObject($HDSTDC, $ADIB[$I][0])
- _WinAPI_BitBlt($HDSTDC, 0, 0, $ASIZE[0], $ASIZE[1], $HSRCDC, 0, 0, 12583114)
- _WinAPI_SelectObject($HSRCDC, $HSRCSV)
- _WinAPI_SelectObject($HDSTDC, $HDSTSV)
- Next
- _WinAPI_DeleteDC($HSRCDC)
- _WinAPI_DeleteDC($HDSTDC)
- $ARET = DllCall("user32.dll", "lresult", "CallWindowProc", "ptr", __XORPROC(), "ptr", 0, "uint", $ASIZE[0] * $ASIZE[1] * 4, "wparam", $ADIB[0][1], "lparam", $ADIB[1][1])
- If Not @error And $ARET[0] Then
- $HRESULT = _WinAPI_CreateIconIndirect($ADIB[1][0], $AHBITMAP[0])
- EndIf
- EndIf
- For $I = 0 To 1
- _WinAPI_DeleteObject($AHBITMAP[$I])
- If $ADIB[$I][0] Then
- _WinAPI_DeleteObject($ADIB[$I][0])
- EndIf
- Next
- If Not $HRESULT Then Return SetError(11, 0, 0)
- If $BDELETE Then
- _WinAPI_DestroyIcon($HICON)
- EndIf
- Return $HRESULT
- EndFunc ;==>_WINAPI_CREATE32BITHICON
- Func _WinAPI_CreateEmptyIcon($IWIDTH, $IHEIGHT, $IBITSPERPEL = 32)
- Local $HXOR = _WinAPI_CreateDIB($IWIDTH, $IHEIGHT, $IBITSPERPEL)
- Local $HAND = _WinAPI_CreateDIB($IWIDTH, $IHEIGHT, 1)
- Local $HDC = _WinAPI_CreateCompatibleDC(0)
- Local $HSV = _WinAPI_SelectObject($HDC, $HAND)
- Local $HBRUSH = _WinAPI_CreateSolidBrush(16777215)
- Local $TRECT = _WinAPI_CreateRect(0, 0, $IWIDTH, $IHEIGHT)
- _WinAPI_FillRect($HDC, $TRECT, $HBRUSH)
- _WinAPI_DeleteObject($HBRUSH)
- _WinAPI_SelectObject($HDC, $HSV)
- _WinAPI_DeleteDC($HDC)
- Local $HICON = _WinAPI_CreateIconIndirect($HXOR, $HAND)
- Local $IERROR = @error
- If $HXOR Then
- _WinAPI_DeleteObject($HXOR)
- EndIf
- If $HAND Then
- _WinAPI_DeleteObject($HAND)
- EndIf
- If Not $HICON Then Return SetError($IERROR + 10, 0, 0)
- Return $HICON
- EndFunc ;==>_WINAPI_CREATEEMPTYICON
- Func _WinAPI_CreateIcon($HINSTANCE, $IWIDTH, $IHEIGHT, $IPLANES, $IBITSPIXEL, $PANDBITS, $PXORBITS)
- Local $ARET = DllCall("user32.dll", "handle", "CreateIcon", "handle", $HINSTANCE, "int", $IWIDTH, "int", $IHEIGHT, "byte", $IPLANES, "byte", $IBITSPIXEL, "struct*", $PANDBITS, "struct*", $PXORBITS)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEICON
- Func _WinAPI_CreateIconFromResourceEx($PDATA, $ISIZE, $BICON = True, $IXDESIREDPIXELS = 0, $IYDESIREDPIXELS = 0, $IFLAGS = 0)
- Local $ARET = DllCall("user32.dll", "handle", "CreateIconFromResourceEx", "ptr", $PDATA, "dword", $ISIZE, "bool", $BICON, "dword", 196608, "int", $IXDESIREDPIXELS, "int", $IYDESIREDPIXELS, "uint", $IFLAGS)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEICONFROMRESOURCEEX
- Func _WinAPI_CreateIconIndirect($HBITMAP, $HMASK, $IXHOTSPOT = 0, $IYHOTSPOT = 0, $BICON = True)
- Local $TICONINFO = DllStructCreate($TAGICONINFO)
- DllStructSetData($TICONINFO, 1, $BICON)
- DllStructSetData($TICONINFO, 2, $IXHOTSPOT)
- DllStructSetData($TICONINFO, 3, $IYHOTSPOT)
- DllStructSetData($TICONINFO, 4, $HMASK)
- DllStructSetData($TICONINFO, 5, $HBITMAP)
- Local $ARET = DllCall("user32.dll", "handle", "CreateIconIndirect", "struct*", $TICONINFO)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEICONINDIRECT
- Func _WinAPI_DestroyIcon($HICON)
- Local $ARESULT = DllCall("user32.dll", "bool", "DestroyIcon", "handle", $HICON)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_DestroyIcon
- Func _WinAPI_ExtractIcon($SICON, $IINDEX, $BSMALL = False)
- Local $PLARGE, $PSMALL, $TPTR = DllStructCreate("ptr")
- If $BSMALL Then
- $PLARGE = 0
- $PSMALL = DllStructGetPtr($TPTR)
- Else
- $PLARGE = DllStructGetPtr($TPTR)
- $PSMALL = 0
- EndIf
- DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $SICON, "int", $IINDEX, "ptr", $PLARGE, "ptr", $PSMALL, "uint", 1)
- If @error Then Return SetError(@error, @extended, 0)
- Return DllStructGetData($TPTR, 1)
- EndFunc ;==>_WINAPI_EXTRACTICON
- Func _WinAPI_ExtractIconEx($SFILEPATH, $IINDEX, $PALARGE, $PASMALL, $IICONS)
- Local $ARESULT = DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $SFILEPATH, "int", $IINDEX, "struct*", $PALARGE, "struct*", $PASMALL, "uint", $IICONS)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_ExtractIconEx
- Func _WinAPI_FileIconInit($BRESTORE = True)
- Local $ARET = DllCall("shell32.dll", "int", 660, "int", $BRESTORE)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return 1
- EndFunc ;==>_WINAPI_FILEICONINIT
- Func _WinAPI_GetIconDimension($HICON)
- Local $TICONINFO = DllStructCreate($TAGICONINFO)
- Local $ARET = DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HICON, "struct*", $TICONINFO)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Local $TSIZE = _WinAPI_GetBitmapDimension(DllStructGetData($TICONINFO, 5))
- For $I = 4 To 5
- _WinAPI_DeleteObject(DllStructGetData($TICONINFO, $I))
- Next
- If Not IsDllStruct($TSIZE) Then Return SetError(20, 0, 0)
- Return $TSIZE
- EndFunc ;==>_WINAPI_GETICONDIMENSION
- Func _WinAPI_GetIconInfo($HICON)
- Local $TINFO = DllStructCreate($TAGICONINFO)
- Local $ARET = DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HICON, "struct*", $TINFO)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Local $AICON[6]
- $AICON[0] = True
- $AICON[1] = DllStructGetData($TINFO, "Icon") <> 0
- $AICON[2] = DllStructGetData($TINFO, "XHotSpot")
- $AICON[3] = DllStructGetData($TINFO, "YHotSpot")
- $AICON[4] = DllStructGetData($TINFO, "hMask")
- $AICON[5] = DllStructGetData($TINFO, "hColor")
- Return $AICON
- EndFunc ;==>_WinAPI_GetIconInfo
- Func _WinAPI_GetIconInfoEx($HICON)
- Local $TIIEX = DllStructCreate("dword;int;dword;dword;ptr;ptr;ushort;wchar[260];wchar[260]")
- DllStructSetData($TIIEX, 1, DllStructGetSize($TIIEX))
- Local $ARET = DllCall("user32.dll", "bool", "GetIconInfoExW", "handle", $HICON, "struct*", $TIIEX)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Local $ARESULT[8]
- For $I = 0 To 7
- $ARESULT[$I] = DllStructGetData($TIIEX, $I + 2)
- Next
- Return $ARESULT
- EndFunc ;==>_WINAPI_GETICONINFOEX
- Func _WinAPI_LoadIcon($HINSTANCE, $SNAME)
- Local $STYPEOFNAME = "int"
- If IsString($SNAME) Then
- $STYPEOFNAME = "wstr"
- EndIf
- Local $ARET = DllCall("user32.dll", "handle", "LoadIconW", "handle", $HINSTANCE, $STYPEOFNAME, $SNAME)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_LOADICON
- Func _WinAPI_LoadIconMetric($HINSTANCE, $SNAME, $IMETRIC)
- Local $STYPEOFNAME = "int"
- If IsString($SNAME) Then
- $STYPEOFNAME = "wstr"
- EndIf
- Local $ARET = DllCall("comctl32.dll", "long", "LoadIconMetric", "handle", $HINSTANCE, $STYPEOFNAME, $SNAME, "int", $IMETRIC, "handle*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return $ARET[4]
- EndFunc ;==>_WINAPI_LOADICONMETRIC
- Func _WinAPI_LoadIconWithScaleDown($HINSTANCE, $SNAME, $IWIDTH, $IHEIGHT)
- Local $STYPEOFNAME = "int"
- If IsString($SNAME) Then
- $STYPEOFNAME = "wstr"
- EndIf
- Local $ARET = DllCall("comctl32.dll", "long", "LoadIconWithScaleDown", "handle", $HINSTANCE, $STYPEOFNAME, $SNAME, "int", $IWIDTH, "int", $IHEIGHT, "handle*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return $ARET[5]
- EndFunc ;==>_WINAPI_LOADICONWITHSCALEDOWN
- Func _WinAPI_LoadShell32Icon($IICONID)
- Local $TICONS = DllStructCreate("ptr Data")
- Local $IICONS = _WinAPI_ExtractIconEx("shell32.dll", $IICONID, 0, $TICONS, 1)
- If @error Then Return SetError(@error, @extended, 0)
- If $IICONS <= 0 Then Return SetError(10, 0, 0)
- Return DllStructGetData($TICONS, "Data")
- EndFunc ;==>_WinAPI_LoadShell32Icon
- Func _WinAPI_LookupIconIdFromDirectoryEx($PDATA, $BICON = True, $IXDESIREDPIXELS = 0, $IYDESIREDPIXELS = 0, $IFLAGS = 0)
- Local $ARET = DllCall("user32.dll", "int", "LookupIconIdFromDirectoryEx", "ptr", $PDATA, "bool", $BICON, "int", $IXDESIREDPIXELS, "int", $IYDESIREDPIXELS, "uint", $IFLAGS)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_LOOKUPICONIDFROMDIRECTORYEX
- Func _WinAPI_MirrorIcon($HICON, $BDELETE = False)
- If Not $BDELETE Then
- $HICON = _WinAPI_CopyIcon($HICON)
- EndIf
- Local $ARET = DllCall("comctl32.dll", "int", 414, "ptr", 0, "ptr*", $HICON)
- If @error Or Not $ARET[0] Then
- Local $IERROR = @error + 10
- If $HICON And Not $BDELETE Then
- _WinAPI_DestroyIcon($HICON)
- EndIf
- Return SetError($IERROR, 0, 0)
- EndIf
- Return $ARET[2]
- EndFunc ;==>_WINAPI_MIRRORICON
- #EndRegion Public Functions
- #Region Embedded DLL Functions
- Func __TRANSPARENCYPROC()
- Static $PPROC = 0
- If Not $PPROC Then
- If @AutoItX64 Then
- $PPROC = __INIT(Binary("0x48894C240848895424104C894424184C894C24205541574831C0505050505050" & "4883EC284883BC24800000000074054831C0EB0748C7C0010000004821C07522" & "488BAC248000000048837D180074054831C0EB0748C7C0010000004821C07502" & "EB0948C7C001000000EB034831C04821C0740B4831C04863C0E93C0100004C63" & "7C24784983FF647E0F48C7C0010000004863C0E9220100004C637C24784D21FF" & "7D08C74424780000000048C74424280100000048C74424300000000048C74424" & "3800000000488BAC24800000004C637D04488BAC2480000000486345084C0FAF" & "F849C1E7024983C7FC4C3B7C24380F8C88000000488BAC24800000004C8B7D18" & "4C037C24384983C7034C897C2440488B6C2440480FB64500505888442448807C" & "244800744B4C0FB67C244848634424784C0FAFF84C89F848C7C1640000004899" & "48F7F94989C74C89F850488B6C244858884500488B6C2440807D0000740948C7" & "4424280000000048C7442430010000004883442438040F8149FFFFFF48837C24" & "3000741148837C242800740948C7C001000000EB034831C04821C0740E48C7C0" & "FFFFFFFF4863C0EB11EB0C48C7C0010000004863C0EB034831C04883C458415F" & "5DC3"))
- Else
- $PPROC = __INIT(Binary("0x555331C05050505050837C242800740431C0EB05B80100000021C075198B6C24" & "28837D1400740431C0EB05B80100000021C07502EB07B801000000EB0231C021" & "C0740731C0E9E50000008B5C242483FB647E0AB801000000E9D20000008B5C24" & "2421DB7D08C744242400000000C7042401000000C744240400000000C7442408" & "000000008B6C24288B5D048B6C24280FAF5D08C1E30283C3FC3B5C24087C648B" & "6C24288B5D14035C240883C303895C240C8B6C240C0FB6450088442410807C24" & "100074380FB65C24100FAF5C242489D8B96400000099F7F989C3538B6C241058" & "8845008B6C240C807D00007407C7042400000000C74424040100000083442408" & "047181837C240400740D833C24007407B801000000EB0231C021C07409B8FFFF" & "FFFFEB0BEB07B801000000EB0231C083C4145B5DC21000"))
- EndIf
- EndIf
- Return $PPROC
- EndFunc ;==>__TRANSPARENCYPROC
- #EndRegion Embedded DLL Functions
- #Region Global Variables and Constants
- Global Const $TAGBITMAPV4HEADER = "struct;dword bV4Size;long bV4Width;long bV4Height;ushort bV4Planes;ushort bV4BitCount;dword bV4Compression;dword bV4SizeImage;long bV4XPelsPerMeter;long bV4YPelsPerMeter;dword bV4ClrUsed;dword bV4ClrImportant;dword bV4RedMask;dword bV4GreenMask;dword bV4BlueMask;dword bV4AlphaMask;dword bV4CSType;int bV4Endpoints[9];dword bV4GammaRed;dword bV4GammaGreen;dword bV4GammaBlue;endstruct"
- Global Const $TAGCOLORADJUSTMENT = "ushort Size;ushort Flags;ushort IlluminantIndex;ushort RedGamma;ushort GreenGamma;ushort BlueGamma;ushort ReferenceBlack;ushort ReferenceWhite;short Contrast;short Brightness;short Colorfulness;short RedGreenTint"
- Global Const $TAGDEVMODE = "wchar DeviceName[32];ushort SpecVersion;ushort DriverVersion;ushort Size;ushort DriverExtra;dword Fields;short Orientation;short PaperSize;short PaperLength;short PaperWidth;short Scale;short Copies;short DefaultSource;short PrintQuality;short Color;short Duplex;short YResolution;short TTOption;short Collate;wchar FormName[32];ushort Unused1;dword Unused2[3];dword Nup;dword Unused3;dword ICMMethod;dword ICMIntent;dword MediaType;dword DitherType;dword Reserved1;dword Reserved2;dword PanningWidth;dword PanningHeight"
- Global Const $TAGDEVMODE_DISPLAY = "wchar DeviceName[32];ushort SpecVersion;ushort DriverVersion;ushort Size;ushort DriverExtra;dword Fields;" & $TAGPOINT & ";dword DisplayOrientation;dword DisplayFixedOutput;short Unused1[5];wchar Unused2[32];ushort LogPixels;dword BitsPerPel;dword PelsWidth;dword PelsHeight;dword DisplayFlags;dword DisplayFrequency"
- Global Const $TAGDWM_COLORIZATION_PARAMETERS = "dword Color;dword AfterGlow;uint ColorBalance;uint AfterGlowBalance;uint BlurBalance;uint GlassReflectionIntensity; uint OpaqueBlend"
- Global Const $TAGENHMETAHEADER = "struct;dword Type;dword Size;long rcBounds[4];long rcFrame[4];dword Signature;dword Version;dword Bytes;dword Records;ushort Handles;ushort Reserved;dword Description;dword OffDescription;dword PalEntries;long Device[2];long Millimeters[2];dword PixelFormat;dword OffPixelFormat;dword OpenGL;long Micrometers[2];endstruct"
- Global Const $TAGEXTLOGPEN = "dword PenStyle;dword Width;uint BrushStyle;dword Color;ulong_ptr Hatch;dword NumEntries"
- Global Const $TAGFONTSIGNATURE = "dword fsUsb[4];dword fsCsb[2]"
- Global Const $TAGGLYPHMETRICS = "uint BlackBoxX;uint BlackBoxY;" & $TAGPOINT & ";short CellIncX;short CellIncY"
- Global Const $TAGLOGBRUSH = "uint Style;dword Color;ulong_ptr Hatch"
- Global Const $TAGLOGPEN = "uint Style;dword Width;dword Color"
- Global Const $TAGMAT2 = "short eM11[2];short eM12[2];short eM21[2];short eM22[2]"
- Global Const $TAGNEWTEXTMETRIC = $TAGTEXTMETRIC & ";dword ntmFlags;uint ntmSizeEM;uint ntmCellHeight;uint ntmAvgWidth"
- Global Const $TAGNEWTEXTMETRICEX = $TAGNEWTEXTMETRIC & ";" & $TAGFONTSIGNATURE
- Global Const $TAGPANOSE = "struct;byte bFamilyType;byte bSerifStyle;byte bWeight;byte bProportion;byte bContrast;byte bStrokeVariation;byte bArmStyle;byte bLetterform;byte bMidline;byte bXHeight;endstruct"
- Global Const $TAGOUTLINETEXTMETRIC = "struct;uint otmSize;" & $TAGTEXTMETRIC & ";byte otmFiller;" & $TAGPANOSE & ";byte bugFiller[3];uint otmSelection;uint otmType;int otmCharSlopeRise;int otmCharSlopeRun;int otmItalicAngle;uint otmEMSquare;int otmAscent;int otmDescent;uint otmLineGap;uint otmCapEmHeight;uint otmXHeight;long otmFontBox[4];int otmMacAscent;int otmMacDescent;uint otmMacLineGap;uint otmMinimumPPEM;long otmSubscriptSize[2];long otmSubscriptOffset[2];long otmSuperscriptSize[2];long otmSuperscriptOffse[2];uint otmStrikeoutSize;int otmStrikeoutPosition;int otmUnderscoreSize;int otmUnderscorePosition;uint_ptr otmFamilyName;uint_ptr otmFaceName;uint_ptr otmStyleName;uint_ptr otmFullName;endstruct"
- Global Const $TAGPAINTSTRUCT = "hwnd hDC;int fErase;dword rPaint[4];int fRestore;int fIncUpdate;byte rgbReserved[32]"
- Global Const $TAGRGNDATAHEADER = "struct;dword Size;dword Type;dword Count;dword RgnSize;" & $TAGRECT & ";endstruct"
- Global Const $TAGXFORM = "float eM11;float eM12;float eM21;float eM22;float eDx;float eDy"
- #EndRegion Global Variables and Constants
- #Region Functions list
- #EndRegion Functions list
- #Region Public Functions
- Func _WinAPI_AbortPath($HDC)
- Local $ARET = DllCall("gdi32.dll", "bool", "AbortPath", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ABORTPATH
- Func _WinAPI_AddFontMemResourceEx($PDATA, $ISIZE)
- Local $ARET = DllCall("gdi32.dll", "handle", "AddFontMemResourceEx", "ptr", $PDATA, "dword", $ISIZE, "ptr", 0, "dword*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- Return SetExtended($ARET[4], $ARET[0])
- EndFunc ;==>_WINAPI_ADDFONTMEMRESOURCEEX
- Func _WinAPI_AddFontResourceEx($SFONT, $IFLAG = 0, $BNOTIFY = False)
- Local $ARET = DllCall("gdi32.dll", "int", "AddFontResourceExW", "wstr", $SFONT, "dword", $IFLAG, "ptr", 0)
- If @error Or Not $ARET[0] Then Return SetError(@error, @extended, 0)
- If $BNOTIFY Then
- Local Const $WM_FONTCHANGE = 29
- Local Const $HWND_BROADCAST = 65535
- DllCall("user32.dll", "lresult", "SendMessage", "hwnd", $HWND_BROADCAST, "uint", $WM_FONTCHANGE, "wparam", 0, "lparam", 0)
- EndIf
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ADDFONTRESOURCEEX
- Func _WinAPI_AddIconOverlay($HICON, $HOVERLAY)
- Local $ARET, $HRESULT = 0, $IERROR = 0
- Local $AHDEV[2] = [0, 0]
- Local $TSIZE = _WinAPI_GetIconDimension($HICON)
- Local $HIL = DllCall("comctl32.dll", "handle", "ImageList_Create", "int", DllStructGetData($TSIZE, 1), "int", DllStructGetData($TSIZE, 2), "uint", 33, "int", 2, "int", 2)
- If @error Or Not $HIL[0] Then Return SetError(@error + 10, @extended, 0)
- Do
- $AHDEV[0] = _WinAPI_Create32BitHICON($HICON)
- If @error Then
- $IERROR = @error + 100
- ExitLoop
- EndIf
- $ARET = DllCall("comctl32.dll", "int", "ImageList_ReplaceIcon", "handle", $HIL[0], "int", -1, "handle", $AHDEV[0])
- If @error Or ($ARET[0] = -1) Then
- $IERROR = @error + 200
- ExitLoop
- EndIf
- $AHDEV[1] = _WinAPI_Create32BitHICON($HOVERLAY)
- If @error Then
- $IERROR = @error + 300
- ExitLoop
- EndIf
- $ARET = DllCall("comctl32.dll", "int", "ImageList_ReplaceIcon", "handle", $HIL[0], "int", -1, "handle", $AHDEV[1])
- If @error Or ($ARET[0] = -1) Then
- $IERROR = @error + 400
- ExitLoop
- EndIf
- $ARET = DllCall("comctl32.dll", "bool", "ImageList_SetOverlayImage", "handle", $HIL[0], "int", 1, "int", 1)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 500
- ExitLoop
- EndIf
- $ARET = DllCall("comctl32.dll", "handle", "ImageList_GetIcon", "handle", $HIL[0], "int", 0, "uint", 256)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 600
- ExitLoop
- EndIf
- $HRESULT = $ARET[0]
- Until 1
- DllCall("comctl32.dll", "bool", "ImageList_Destroy", "handle", $HIL[0])
- For $I = 0 To 1
- If $AHDEV[$I] Then
- _WinAPI_DestroyIcon($AHDEV[$I])
- EndIf
- Next
- If Not $HRESULT Then Return SetError($IERROR, 0, 0)
- Return $HRESULT
- EndFunc ;==>_WINAPI_ADDICONOVERLAY
- Func _WinAPI_AdjustBitmap($HBITMAP, $IWIDTH, $IHEIGHT, $IMODE = 3, $TADJUSTMENT = 0)
- Local $TOBJ = DllStructCreate($TAGBITMAP)
- Local $ARET = DllCall("gdi32.dll", "int", "GetObject", "handle", $HBITMAP, "int", DllStructGetSize($TOBJ), "struct*", $TOBJ)
- If @error Or Not $ARET[0] Then Return SetError(@error, @extended, 0)
- If $IWIDTH = -1 Then
- $IWIDTH = DllStructGetData($TOBJ, "bmWidth")
- EndIf
- If $IHEIGHT = -1 Then
- $IHEIGHT = DllStructGetData($TOBJ, "bmHeight")
- EndIf
- $ARET = DllCall("user32.dll", "handle", "GetDC", "hwnd", 0)
- Local $HDC = $ARET[0]
- $ARET = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $HDC)
- Local $HDESTDC = $ARET[0]
- $ARET = DllCall("gdi32.dll", "handle", "CreateCompatibleBitmap", "handle", $HDC, "int", $IWIDTH, "int", $IHEIGHT)
- Local $HBMP = $ARET[0]
- $ARET = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HDESTDC, "handle", $HBMP)
- Local $HDESTSV = $ARET[0]
- $ARET = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $HDC)
- Local $HSRCDC = $ARET[0]
- $ARET = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HSRCDC, "handle", $HBITMAP)
- Local $HSRCSV = $ARET[0]
- If _WinAPI_SetStretchBltMode($HDESTDC, $IMODE) Then
- Switch $IMODE
- Case 4
- If IsDllStruct($TADJUSTMENT) Then
- If Not _WinAPI_SetColorAdjustment($HDESTDC, $TADJUSTMENT) Then
- EndIf
- EndIf
- Case Else
- EndSwitch
- EndIf
- $ARET = _WinAPI_StretchBlt($HDESTDC, 0, 0, $IWIDTH, $IHEIGHT, $HSRCDC, 0, 0, DllStructGetData($TOBJ, "bmWidth"), DllStructGetData($TOBJ, "bmHeight"), 13369376)
- DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $HDC)
- DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HDESTDC, "handle", $HDESTSV)
- DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HSRCDC, "handle", $HSRCSV)
- DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $HDESTDC)
- DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $HSRCDC)
- If Not $ARET Then Return SetError(10, 0, 0)
- Return $HBMP
- EndFunc ;==>_WINAPI_ADJUSTBITMAP
- Func _WinAPI_AlphaBlend($HDESTDC, $IXDEST, $IYDEST, $IWIDTHDEST, $IHEIGHTDEST, $HSRCDC, $IXSRC, $IYSRC, $IWIDTHSRC, $IHEIGHTSRC, $IALPHA, $BALPHA = False)
- Local $IBLEND = BitOR(BitShift(Not ($BALPHA = False), -24), BitShift(BitAND($IALPHA, 255), -16))
- Local $ARET = DllCall("gdi32.dll", "bool", "GdiAlphaBlend", "handle", $HDESTDC, "int", $IXDEST, "int", $IYDEST, "int", $IWIDTHDEST, "int", $IHEIGHTDEST, "handle", $HSRCDC, "int", $IXSRC, "int", $IYSRC, "int", $IWIDTHSRC, "int", $IHEIGHTSRC, "dword", $IBLEND)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ALPHABLEND
- Func _WinAPI_AngleArc($HDC, $IX, $IY, $IRADIUS, $NSTARTANGLE, $NSWEEPANGLE)
- Local $ARET = DllCall("gdi32.dll", "bool", "AngleArc", "handle", $HDC, "int", $IX, "int", $IY, "dword", $IRADIUS, "float", $NSTARTANGLE, "float", $NSWEEPANGLE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ANGLEARC
- Func _WinAPI_Arc($HDC, $TRECT, $IXSTARTARC, $IYSTARTARC, $IXENDARC, $IYENDARC)
- Local $ARET = DllCall("gdi32.dll", "bool", "Arc", "handle", $HDC, "int", DllStructGetData($TRECT, 1), "int", DllStructGetData($TRECT, 2), "int", DllStructGetData($TRECT, 3), "int", DllStructGetData($TRECT, 4), "int", $IXSTARTARC, "int", $IYSTARTARC, "int", $IXENDARC, "int", $IYENDARC)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ARC
- Func _WinAPI_ArcTo($HDC, $TRECT, $IXRADIAL1, $IYRADIAL1, $IXRADIAL2, $IYRADIAL2)
- Local $ARET = DllCall("gdi32.dll", "bool", "ArcTo", "handle", $HDC, "int", DllStructGetData($TRECT, 1), "int", DllStructGetData($TRECT, 2), "int", DllStructGetData($TRECT, 3), "int", DllStructGetData($TRECT, 4), "int", $IXRADIAL1, "int", $IYRADIAL1, "int", $IXRADIAL2, "int", $IYRADIAL2)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ARCTO
- Func _WinAPI_BeginPaint($HWND, ByRef $TPAINTSTRUCT)
- $TPAINTSTRUCT = DllStructCreate($TAGPAINTSTRUCT)
- Local $ARET = DllCall("user32.dll", "handle", "BeginPaint", "hwnd", $HWND, "struct*", $TPAINTSTRUCT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_BEGINPAINT
- Func _WinAPI_BeginPath($HDC)
- Local $ARET = DllCall("gdi32.dll", "bool", "BeginPath", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_BEGINPATH
- Func _WinAPI_CloseEnhMetaFile($HDC)
- Local $ARET = DllCall("gdi32.dll", "handle", "CloseEnhMetaFile", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CLOSEENHMETAFILE
- Func _WinAPI_CloseFigure($HDC)
- Local $ARET = DllCall("gdi32.dll", "bool", "CloseFigure", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CLOSEFIGURE
- Func _WinAPI_ColorAdjustLuma($IRGB, $IPERCENT, $BSCALE = True)
- If $IRGB = -1 Then Return SetError(10, 0, -1)
- If $BSCALE Then
- $IPERCENT = Floor($IPERCENT * 10)
- EndIf
- Local $ARET = DllCall("shlwapi.dll", "dword", "ColorAdjustLuma", "dword", __RGB($IRGB), "int", $IPERCENT, "bool", $BSCALE)
- If @error Then Return SetError(@error, @extended, -1)
- Return __RGB($ARET[0])
- EndFunc ;==>_WINAPI_COLORADJUSTLUMA
- Func _WinAPI_ColorHLSToRGB($IHUE, $ILUMINANCE, $ISATURATION)
- If Not $ISATURATION Then $IHUE = 160
- Local $ARET = DllCall("shlwapi.dll", "dword", "ColorHLSToRGB", "word", $IHUE, "word", $ILUMINANCE, "word", $ISATURATION)
- If @error Then Return SetError(@error, @extended, -1)
- Return __RGB($ARET[0])
- EndFunc ;==>_WINAPI_COLORHLSTORGB
- Func _WinAPI_ColorRGBToHLS($IRGB, ByRef $IHUE, ByRef $ILUMINANCE, ByRef $ISATURATION)
- Local $ARET = DllCall("shlwapi.dll", "none", "ColorRGBToHLS", "dword", __RGB($IRGB), "word*", 0, "word*", 0, "word*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- $IHUE = $ARET[2]
- $ILUMINANCE = $ARET[3]
- $ISATURATION = $ARET[4]
- Return 1
- EndFunc ;==>_WINAPI_COLORRGBTOHLS
- Func _WinAPI_CombineTransform($TXFORM1, $TXFORM2)
- Local $TXFORM = DllStructCreate($TAGXFORM)
- Local $ARET = DllCall("gdi32.dll", "bool", "CombineTransform", "struct*", $TXFORM, "struct*", $TXFORM1, "struct*", $TXFORM2)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TXFORM
- EndFunc ;==>_WINAPI_COMBINETRANSFORM
- Func _WinAPI_CompressBitmapBits($HBITMAP, ByRef $PBUFFER, $ICOMPRESSION = 0, $IQUALITY = 100)
- If Not __DLL("gdiplus.dll") Then Return SetError(103, 0, 0)
- Local $ASIZE[2], $ICOUNT, $IFORMAT, $ILENGTH, $SMIME, $ARET, $HDC, $HSV, $HMEM, $TBITS, $TDATA, $PDATA, $IERROR = 1
- Local $HSOURCE = 0, $HIMAGE = 0, $HTOKEN = 0, $PSTREAM = 0, $TPARAM = 0
- Local $TDIB = DllStructCreate($TAGDIBSECTION)
- Do
- Switch $ICOMPRESSION
- Case 0
- $SMIME = "image/png"
- Case 1
- $SMIME = "image/jpeg"
- Case Else
- $IERROR = 10
- ExitLoop
- EndSwitch
- While $HBITMAP
- If Not _WinAPI_GetObject($HBITMAP, DllStructGetSize($TDIB), $TDIB) Then
- $IERROR = 11
- ExitLoop 2
- EndIf
- If (DllStructGetData($TDIB, "bmBitsPixel") = 32) And (Not DllStructGetData($TDIB, "biCompression")) Then
- $IERROR = 12
- ExitLoop
- EndIf
- If $HSOURCE Then
- $IERROR = 13
- ExitLoop 2
- EndIf
- $HSOURCE = _WinAPI_CreateDIB(DllStructGetData($TDIB, "bmWidth"), DllStructGetData($TDIB, "bmHeight"))
- If Not $HSOURCE Then
- $IERROR = @error + 100
- ExitLoop 2
- EndIf
- $HDC = _WinAPI_CreateCompatibleDC(0)
- $HSV = _WinAPI_SelectObject($HDC, $HSOURCE)
- If _WinAPI_DrawBitmap($HDC, 0, 0, $HBITMAP) Then
- $HBITMAP = $HSOURCE
- Else
- $IERROR = @error + 200
- $HBITMAP = 0
- EndIf
- _WinAPI_SelectObject($HDC, $HSV)
- _WinAPI_DeleteDC($HDC)
- WEnd
- If Not $HBITMAP Then
- ExitLoop
- EndIf
- For $I = 0 To 1
- $ASIZE[$I] = DllStructGetData($TDIB, $I + 2)
- Next
- $TBITS = DllStructCreate("byte[" & ($ASIZE[0] * $ASIZE[1] * 4) & "]")
- If Not _WinAPI_GetBitmapBits($HBITMAP, DllStructGetSize($TBITS), $TBITS) Then
- $IERROR = @error + 300
- ExitLoop
- EndIf
- $TDATA = DllStructCreate($TAGGDIPSTARTUPINPUT)
- DllStructSetData($TDATA, "Version", 1)
- $ARET = DllCall("gdiplus.dll", "int", "GdiplusStartup", "ulong_ptr*", 0, "struct*", $TDATA, "ptr", 0)
- If @error Or $ARET[0] Then
- $IERROR = @error + 400
- ExitLoop
- EndIf
- If _WinAPI_IsAlphaBitmap($HBITMAP) Then
- $IFORMAT = 2498570
- Else
- $IFORMAT = 139273
- EndIf
- $HTOKEN = $ARET[1]
- $ARET = DllCall("gdiplus.dll", "int", "GdipCreateBitmapFromScan0", "int", $ASIZE[0], "int", $ASIZE[1], "uint", $ASIZE[0] * 4, "int", $IFORMAT, "struct*", $TBITS, "ptr*", 0)
- If @error Or $ARET[0] Then
- $IERROR = @error + 500
- ExitLoop
- EndIf
- $HIMAGE = $ARET[6]
- $ARET = DllCall("gdiplus.dll", "int", "GdipGetImageEncodersSize", "uint*", 0, "uint*", 0)
- If @error Or $ARET[0] Then
- $IERROR = @error + 600
- ExitLoop
- EndIf
- $ICOUNT = $ARET[1]
- $TDATA = DllStructCreate("byte[" & $ARET[2] & "]")
- If @error Then
- $IERROR = @error + 700
- ExitLoop
- EndIf
- $PDATA = DllStructGetPtr($TDATA)
- $ARET = DllCall("gdiplus.dll", "int", "GdipGetImageEncoders", "uint", $ICOUNT, "uint", $ARET[2], "struct*", $TDATA)
- If @error Or $ARET[0] Then
- $IERROR = @error + 800
- ExitLoop
- EndIf
- Local $TCODEC, $PENCODER = 0
- For $I = 1 To $ICOUNT
- $TCODEC = DllStructCreate($TAGGDIPIMAGECODECINFO, $PDATA)
- If Not StringInStr(_WinAPI_WideCharToMultiByte(DllStructGetData($TCODEC, "MimeType")), $SMIME) Then
- $PDATA += DllStructGetSize($TAGGDIPIMAGECODECINFO)
- Else
- $PENCODER = $PDATA
- $IERROR = 0
- ExitLoop
- EndIf
- Next
- If Not $PENCODER Then
- $IERROR = 15
- ExitLoop
- EndIf
- Switch $ICOMPRESSION
- Case 0
- Case 1
- Local Const $TAGENCODERPARAMETER = "byte[16] GUID;ulong NumberOfValues;dword Type;ptr pValue"
- $TPARAM = DllStructCreate("dword Count;" & $TAGENCODERPARAMETER & ";ulong Quality")
- DllStructSetData($TPARAM, "Count", 1)
- DllStructSetData($TPARAM, "NumberOfValues", 1)
- DllStructSetData($TPARAM, "Type", 4)
- DllStructSetData($TPARAM, "pValue", DllStructGetPtr($TPARAM, "Quality"))
- DllStructSetData($TPARAM, "Quality", $IQUALITY)
- $ARET = DllCall("ole32.dll", "long", "CLSIDFromString", "wstr", "{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}", "ptr", DllStructGetPtr($TPARAM, 2))
- If @error Or $ARET[0] Then
- $TPARAM = 0
- EndIf
- EndSwitch
- $PSTREAM = _WinAPI_CreateStreamOnHGlobal()
- $ARET = DllCall("gdiplus.dll", "int", "GdipSaveImageToStream", "handle", $HIMAGE, "ptr", $PSTREAM, "ptr", $PENCODER, "struct*", $TPARAM)
- If @error Or $ARET[0] Then
- $IERROR = @error + 900
- ExitLoop
- EndIf
- $HMEM = _WinAPI_GetHGlobalFromStream($PSTREAM)
- $ARET = DllCall("kernel32.dll", "ulong_ptr", "GlobalSize", "handle", $HMEM)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 1000
- ExitLoop
- EndIf
- $ILENGTH = $ARET[0]
- $ARET = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $HMEM)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 1100
- ExitLoop
- EndIf
- $PBUFFER = __HEAPREALLOC($PBUFFER, $ILENGTH, 1)
- If Not @error Then
- _WinAPI_MoveMemory($PBUFFER, $ARET[0], $ILENGTH)
- Else
- $IERROR = @error + 1300
- EndIf
- Until 1
- If $PSTREAM Then
- _WinAPI_ReleaseStream($PSTREAM)
- EndIf
- If $HIMAGE Then
- DllCall("gdiplus.dll", "int", "GdipDisposeImage", "handle", $HIMAGE)
- EndIf
- If $HTOKEN Then
- DllCall("gdiplus.dll", "none", "GdiplusShutdown", "ulong_ptr", $HTOKEN)
- EndIf
- If $HSOURCE Then
- _WinAPI_DeleteObject($HSOURCE)
- EndIf
- If $IERROR Then Return SetError($IERROR, 0, 0)
- Return $ILENGTH
- EndFunc ;==>_WINAPI_COMPRESSBITMAPBITS
- Func _WinAPI_CopyEnhMetaFile($HEMF, $SFILEPATH = "")
- Local $STYPEOFFILE = "wstr"
- If Not StringStripWS($SFILEPATH, $STR_STRIPLEADING + $STR_STRIPTRAILING) Then
- $STYPEOFFILE = "ptr"
- $SFILEPATH = 0
- EndIf
- Local $ARET = DllCall("gdi32.dll", "handle", "CopyEnhMetaFileW", "handle", $HEMF, $STYPEOFFILE, $SFILEPATH)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_COPYENHMETAFILE
- Func _WinAPI_CopyRect($TRECT)
- Local $TDATA = DllStructCreate($TAGRECT)
- Local $ARET = DllCall("user32.dll", "bool", "CopyRect", "struct*", $TDATA, "struct*", $TRECT)
- If @error Or Not $ARET[0] Then SetError(@error + 10, @extended, 0)
- Return $TDATA
- EndFunc ;==>_WINAPI_COPYRECT
- Func _WinAPI_Create32BitHBITMAP($HICON, $BDIB = False, $BDELETE = False)
- Local $HBITMAP = 0
- Local $ADIB[2] = [0, 0]
- Local $HTEMP = _WinAPI_Create32BitHICON($HICON)
- If @error Then Return SetError(@error, @extended, 0)
- Local $IERROR = 0
- Do
- Local $TICONINFO = DllStructCreate($TAGICONINFO)
- Local $ARET = DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HTEMP, "struct*", $TICONINFO)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 10
- ExitLoop
- EndIf
- For $I = 0 To 1
- $ADIB[$I] = DllStructGetData($TICONINFO, $I + 4)
- Next
- Local $TBITMAP = DllStructCreate($TAGBITMAP)
- If Not _WinAPI_GetObject($ADIB[0], DllStructGetSize($TBITMAP), $TBITMAP) Then
- $IERROR = @error + 20
- ExitLoop
- EndIf
- If $BDIB Then
- $HBITMAP = _WinAPI_CreateDIB(DllStructGetData($TBITMAP, "bmWidth"), DllStructGetData($TBITMAP, "bmHeight"))
- Local $HDC = _WinAPI_CreateCompatibleDC(0)
- Local $HSV = _WinAPI_SelectObject($HDC, $HBITMAP)
- _WinAPI_DrawIconEx($HDC, 0, 0, $HTEMP)
- _WinAPI_SelectObject($HDC, $HSV)
- _WinAPI_DeleteDC($HDC)
- Else
- $HBITMAP = $ADIB[1]
- $ADIB[1] = 0
- EndIf
- Until 1
- For $I = 0 To 1
- If $ADIB[$I] Then
- _WinAPI_DeleteObject($ADIB[$I])
- EndIf
- Next
- _WinAPI_DestroyIcon($HTEMP)
- If $IERROR Then Return SetError($IERROR, 0, 0)
- If Not $HBITMAP Then Return SetError(12, 0, 0)
- If $BDELETE Then
- _WinAPI_DestroyIcon($HICON)
- EndIf
- Return $HBITMAP
- EndFunc ;==>_WINAPI_CREATE32BITHBITMAP
- Func _WinAPI_CreateBitmapIndirect(ByRef $TBITMAP)
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateBitmapIndirect", "struct*", $TBITMAP)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEBITMAPINDIRECT
- Func _WinAPI_CreateBrushIndirect($ISTYLE, $IRGB, $IHATCH = 0)
- Local $TLOGBRUSH = DllStructCreate($TAGLOGBRUSH)
- DllStructSetData($TLOGBRUSH, 1, $ISTYLE)
- DllStructSetData($TLOGBRUSH, 2, __RGB($IRGB))
- DllStructSetData($TLOGBRUSH, 3, $IHATCH)
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateBrushIndirect", "struct*", $TLOGBRUSH)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEBRUSHINDIRECT
- Func _WinAPI_CreateColorAdjustment($IFLAGS = 0, $IILLUMINANT = 0, $IGAMMAR = 10000, $IGAMMAG = 10000, $IGAMMAB = 10000, $IBLACK = 0, $IWHITE = 10000, $ICONTRAST = 0, $IBRIGHTNESS = 0, $ICOLORFULNESS = 0, $ITINT = 0)
- Local $TCA = DllStructCreate($TAGCOLORADJUSTMENT)
- DllStructSetData($TCA, 1, DllStructGetSize($TCA))
- DllStructSetData($TCA, 2, $IFLAGS)
- DllStructSetData($TCA, 3, $IILLUMINANT)
- DllStructSetData($TCA, 4, $IGAMMAR)
- DllStructSetData($TCA, 5, $IGAMMAG)
- DllStructSetData($TCA, 6, $IGAMMAB)
- DllStructSetData($TCA, 7, $IBLACK)
- DllStructSetData($TCA, 8, $IWHITE)
- DllStructSetData($TCA, 9, $ICONTRAST)
- DllStructSetData($TCA, 10, $IBRIGHTNESS)
- DllStructSetData($TCA, 11, $ICOLORFULNESS)
- DllStructSetData($TCA, 12, $ITINT)
- Return $TCA
- EndFunc ;==>_WINAPI_CREATECOLORADJUSTMENT
- Func _WinAPI_CreateCompatibleBitmapEx($HDC, $IWIDTH, $IHEIGHT, $IRGB)
- Local $HBRUSH = _WinAPI_CreateBrushIndirect(0, $IRGB)
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $HDC)
- Local $HDESTDC = $ARET[0]
- $ARET = DllCall("gdi32.dll", "handle", "CreateCompatibleBitmap", "handle", $HDC, "int", $IWIDTH, "int", $IHEIGHT)
- Local $HBMP = $ARET[0]
- $ARET = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HDESTDC, "handle", $HBMP)
- Local $HDESTSV = $ARET[0]
- Local $TRECT = _WinAPI_CreateRectEx(0, 0, $IWIDTH, $IHEIGHT)
- Local $IERROR = 0
- $ARET = DllCall("user32.dll", "int", "FillRect", "handle", $HDESTDC, "struct*", $TRECT, "handle", $HBRUSH)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 10
- _WinAPI_DeleteObject($HBMP)
- EndIf
- _WinAPI_DeleteObject($HBRUSH)
- DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HDESTDC, "handle", $HDESTSV)
- DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $HDESTDC)
- If $IERROR Then Return SetError($IERROR, 0, 0)
- Return $HBMP
- EndFunc ;==>_WINAPI_CREATECOMPATIBLEBITMAPEX
- Func _WinAPI_CreateDIBitmap($HDC, ByRef $TBITMAPINFO, $IUSAGE, $PBITS = 0)
- Local $IINIT = 0
- If $PBITS Then
- $IINIT = 4
- EndIf
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateDIBitmap", "handle", $HDC, "struct*", $TBITMAPINFO, "dword", $IINIT, "struct*", $PBITS, "struct*", $TBITMAPINFO, "uint", $IUSAGE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEDIBITMAP
- Func _WinAPI_CreateEllipticRgn($TRECT)
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateEllipticRgnIndirect", "struct*", $TRECT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEELLIPTICRGN
- Func _WinAPI_CreateEnhMetaFile($HDC = 0, $TRECT = 0, $BPIXELS = False, $SFILEPATH = "", $SDESCRIPTION = "")
- Local $STYPEOFFILE = "wstr"
- If Not StringStripWS($SFILEPATH, $STR_STRIPLEADING + $STR_STRIPTRAILING) Then
- $STYPEOFFILE = "ptr"
- $SFILEPATH = 0
- EndIf
- Local $TDATA = 0, $ADATA = StringSplit($SDESCRIPTION, "|", $STR_NOCOUNT)
- If UBound($ADATA) < 2 Then
- ReDim $ADATA[2]
- $ADATA[1] = ""
- EndIf
- For $I = 0 To 1
- $ADATA[$I] = StringStripWS($ADATA[$I], $STR_STRIPLEADING + $STR_STRIPTRAILING)
- Next
- If ($ADATA[0]) Or ($ADATA[1]) Then
- $TDATA = _WinAPI_ArrayToStruct($ADATA)
- EndIf
- Local $IXP, $IYP, $IXM, $IYM, $HREF = 0
- If $BPIXELS And (IsDllStruct($TRECT)) Then
- If Not $HDC Then
- $HREF = _WinAPI_GetDC(0)
- EndIf
- $IXP = _WinAPI_GetDeviceCaps($HREF, 8)
- $IYP = _WinAPI_GetDeviceCaps($HREF, 10)
- $IXM = _WinAPI_GetDeviceCaps($HREF, 4)
- $IYM = _WinAPI_GetDeviceCaps($HREF, 6)
- If $HREF Then
- _WinAPI_ReleaseDC(0, $HREF)
- EndIf
- For $I = 1 To 3 Step 2
- DllStructSetData($TRECT, $I, Round(DllStructGetData($TRECT, $I) * $IXM / $IXP * 100))
- Next
- For $I = 2 To 4 Step 2
- DllStructSetData($TRECT, $I, Round(DllStructGetData($TRECT, $I) * $IYM / $IYP * 100))
- Next
- EndIf
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateEnhMetaFileW", "handle", $HDC, $STYPEOFFILE, $SFILEPATH, "struct*", $TRECT, "struct*", $TDATA)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEENHMETAFILE
- Func _WinAPI_CreateFontEx($IHEIGHT, $IWIDTH = 0, $IESCAPEMENT = 0, $IORIENTATION = 0, $IWEIGHT = 400, $BITALIC = False, $BUNDERLINE = False, $BSTRIKEOUT = False, $ICHARSET = 1, $IOUTPRECISION = 0, $ICLIPPRECISION = 0, $IQUALITY = 0, $IPITCHANDFAMILY = 0, $SFACENAME = "", $ISTYLE = 0)
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateFontW", "int", $IHEIGHT, "int", $IWIDTH, "int", $IESCAPEMENT, "int", $IORIENTATION, "int", $IWEIGHT, "dword", $BITALIC, "dword", $BUNDERLINE, "dword", $BSTRIKEOUT, "dword", $ICHARSET, "dword", $IOUTPRECISION, "dword", $ICLIPPRECISION, "dword", $IQUALITY, "dword", $IPITCHANDFAMILY, "wstr", _WinAPI_GetFontName($SFACENAME, $ISTYLE, $ICHARSET))
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEFONTEX
- Func _WinAPI_CreateNullRgn()
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateRectRgn", "int", 0, "int", 0, "int", 0, "int", 0)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATENULLRGN
- Func _WinAPI_CreatePen($IPENSTYLE, $IWIDTH, $ICOLOR)
- Local $ARESULT = DllCall("gdi32.dll", "handle", "CreatePen", "int", $IPENSTYLE, "int", $IWIDTH, "INT", $ICOLOR)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_CreatePen
- Func _WinAPI_CreatePolygonRgn(Const ByRef $APOINT, $ISTART = 0, $IEND = -1, $IMODE = 1)
- If __CHECKERRORARRAYBOUNDS($APOINT, $ISTART, $IEND, 2, 2) Then Return SetError(@error + 10, @extended, 0)
- Local $TAGSTRUCT = ""
- For $I = $ISTART To $IEND
- $TAGSTRUCT &= "int[2];"
- Next
- Local $TDATA = DllStructCreate($TAGSTRUCT)
- Local $ICOUNT = 1
- For $I = $ISTART To $IEND
- For $J = 0 To 1
- DllStructSetData($TDATA, $ICOUNT, $APOINT[$I][$J], $J + 1)
- Next
- $ICOUNT += 1
- Next
- Local $ARET = DllCall("gdi32.dll", "handle", "CreatePolygonRgn", "struct*", $TDATA, "int", $ICOUNT - 1, "int", $IMODE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATEPOLYGONRGN
- Func _WinAPI_CreateRectRgnIndirect($TRECT)
- Local $ARET = DllCall("gdi32.dll", "handle", "CreateRectRgnIndirect", "struct*", $TRECT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_CREATERECTRGNINDIRECT
- Func _WinAPI_CreateSolidBitmap($HWND, $ICOLOR, $IWIDTH, $IHEIGHT, $BRGB = 1)
- Local $HDC = _WinAPI_GetDC($HWND)
- Local $HDESTDC = _WinAPI_CreateCompatibleDC($HDC)
- Local $HBITMAP = _WinAPI_CreateCompatibleBitmap($HDC, $IWIDTH, $IHEIGHT)
- Local $HOLD = _WinAPI_SelectObject($HDESTDC, $HBITMAP)
- Local $TRECT = DllStructCreate($TAGRECT)
- DllStructSetData($TRECT, 1, 0)
- DllStructSetData($TRECT, 2, 0)
- DllStructSetData($TRECT, 3, $IWIDTH)
- DllStructSetData($TRECT, 4, $IHEIGHT)
- If $BRGB Then
- $ICOLOR = BitOR(BitAND($ICOLOR, 65280), BitShift(BitAND($ICOLOR, 255), -16), BitShift(BitAND($ICOLOR, 16711680), 16))
- EndIf
- Local $HBRUSH = _WinAPI_CreateSolidBrush($ICOLOR)
- If Not _WinAPI_FillRect($HDESTDC, $TRECT, $HBRUSH) Then
- _WinAPI_DeleteObject($HBITMAP)
- $HBITMAP = 0
- EndIf
- _WinAPI_DeleteObject($HBRUSH)
- _WinAPI_ReleaseDC($HWND, $HDC)
- _WinAPI_SelectObject($HDESTDC, $HOLD)
- _WinAPI_DeleteDC($HDESTDC)
- If Not $HBITMAP Then Return SetError(1, 0, 0)
- Return $HBITMAP
- EndFunc ;==>_WinAPI_CreateSolidBitmap
- Func _WinAPI_CreateTransform($NM11 = 1, $NM12 = 0, $NM21 = 0, $NM22 = 1, $NDX = 0, $NDY = 0)
- Local $TXFORM = DllStructCreate($TAGXFORM)
- DllStructSetData($TXFORM, 1, $NM11)
- DllStructSetData($TXFORM, 2, $NM12)
- DllStructSetData($TXFORM, 3, $NM21)
- DllStructSetData($TXFORM, 4, $NM22)
- DllStructSetData($TXFORM, 5, $NDX)
- DllStructSetData($TXFORM, 6, $NDY)
- Return $TXFORM
- EndFunc ;==>_WINAPI_CREATETRANSFORM
- Func _WinAPI_DeleteEnhMetaFile($HEMF)
- Local $ARET = DllCall("gdi32.dll", "bool", "DeleteEnhMetaFile", "handle", $HEMF)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_DELETEENHMETAFILE
- Func _WinAPI_DPtoLP($HDC, ByRef $TPOINT, $ICOUNT = 1)
- Local $ARET = DllCall("gdi32.dll", "bool", "DPtoLP", "handle", $HDC, "struct*", $TPOINT, "int", $ICOUNT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_DPTOLP
- Func _WinAPI_DrawAnimatedRects($HWND, $TRECTFROM, $TRECTTO)
- Local $ARET = DllCall("user32.dll", "bool", "DrawAnimatedRects", "hwnd", $HWND, "int", 3, "struct*", $TRECTFROM, "struct*", $TRECTTO)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_DRAWANIMATEDRECTS
- Func _WinAPI_DrawBitmap($HDC, $IX, $IY, $HBITMAP, $IROP = 13369376)
- Local $TOBJ = DllStructCreate($TAGBITMAP)
- Local $ARET = DllCall("gdi32.dll", "int", "GetObject", "handle", $HBITMAP, "int", DllStructGetSize($TOBJ), "struct*", $TOBJ)
- If @error Or Not $ARET[0] Then Return SetError(@error + 20, @extended, 0)
- $ARET = DllCall("user32.dll", "handle", "GetDC", "hwnd", 0)
- Local $_HDC = $ARET[0]
- $ARET = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $_HDC)
- Local $HSRCDC = $ARET[0]
- $ARET = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HSRCDC, "handle", $HBITMAP)
- Local $HSRCSV = $ARET[0]
- Local $IERROR = 0
- $ARET = DllCall("gdi32.dll", "int", "BitBlt", "hwnd", $HDC, "int", $IX, "int", $IY, "int", DllStructGetData($TOBJ, "bmWidth"), "int", DllStructGetData($TOBJ, "bmHeight"), "hwnd", $HSRCDC, "int", 0, "int", 0, "int", $IROP)
- If @error Or Not $ARET[0] Then
- $IERROR = @error + 1
- EndIf
- DllCall("user32.dll", "int", "ReleaseDC", "hwnd", 0, "handle", $_HDC)
- DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HSRCDC, "handle", $HSRCSV)
- DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $HSRCDC)
- If $IERROR Then Return SetError(10, 0, 0)
- Return 1
- EndFunc ;==>_WINAPI_DRAWBITMAP
- Func _WinAPI_DrawFocusRect($HDC, $TRECT)
- Local $ARET = DllCall("user32.dll", "bool", "DrawFocusRect", "handle", $HDC, "struct*", $TRECT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_DRAWFOCUSRECT
- Func _WinAPI_DrawLine($HDC, $IX1, $IY1, $IX2, $IY2)
- _WinAPI_MoveTo($HDC, $IX1, $IY1)
- If @error Then Return SetError(@error, @extended, False)
- _WinAPI_LineTo($HDC, $IX2, $IY2)
- If @error Then Return SetError(@error + 10, @extended, False)
- Return True
- EndFunc ;==>_WinAPI_DrawLine
- Func _WinAPI_DrawShadowText($HDC, $STEXT, $IRGBTEXT, $IRGBSHADOW, $IXOFFSET = 0, $IYOFFSET = 0, $TRECT = 0, $IFLAGS = 0)
- Local $ARET
- If Not IsDllStruct($TRECT) Then
- $TRECT = DllStructCreate($TAGRECT)
- $ARET = DllCall("user32.dll", "bool", "GetClientRect", "hwnd", _WinAPI_WindowFromDC($HDC), "struct*", $TRECT)
- If @error Then Return SetError(@error + 10, @extended, 0)
- If Not $ARET[0] Then Return SetError(10, 0, 0)
- EndIf
- $ARET = DllCall("comctl32.dll", "int", "DrawShadowText", "handle", $HDC, "wstr", $STEXT, "uint", -1, "struct*", $TRECT, "dword", $IFLAGS, "int", __RGB($IRGBTEXT), "int", __RGB($IRGBSHADOW), "int", $IXOFFSET, "int", $IYOFFSET)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_DRAWSHADOWTEXT
- Func _WinAPI_DwmDefWindowProc($HWND, $IMSG, $WPARAM, $LPARAM)
- Local $ARET = DllCall("dwmapi.dll", "bool", "DwmDefWindowProc", "hwnd", $HWND, "uint", $IMSG, "wparam", $WPARAM, "lparam", $LPARAM, "lresult*", 0)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $ARET[5]
- EndFunc ;==>_WINAPI_DWMDEFWINDOWPROC
- Func _WinAPI_DwmEnableBlurBehindWindow($HWND, $BENABLE = True, $BTRANSITION = False, $HRGN = 0)
- Local $TBLURBEHIND = DllStructCreate("dword;bool;handle;bool")
- Local $IFLAGS = 0
- If $HRGN Then
- $IFLAGS += 2
- DllStructSetData($TBLURBEHIND, 3, $HRGN)
- EndIf
- DllStructSetData($TBLURBEHIND, 1, BitOR($IFLAGS, 5))
- DllStructSetData($TBLURBEHIND, 2, $BENABLE)
- DllStructSetData($TBLURBEHIND, 4, $BTRANSITION)
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmEnableBlurBehindWindow", "hwnd", $HWND, "struct*", $TBLURBEHIND)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMENABLEBLURBEHINDWINDOW
- Func _WinAPI_DwmEnableComposition($BENABLE)
- If $BENABLE Then $BENABLE = 1
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmEnableComposition", "uint", $BENABLE)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMENABLECOMPOSITION
- Func _WinAPI_DwmExtendFrameIntoClientArea($HWND, $TMARGINS = 0)
- If Not IsDllStruct($TMARGINS) Then
- $TMARGINS = _WinAPI_CreateMargins(-1, -1, -1, -1)
- EndIf
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmExtendFrameIntoClientArea", "hwnd", $HWND, "struct*", $TMARGINS)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMEXTENDFRAMEINTOCLIENTAREA
- Func _WinAPI_DwmGetColorizationColor()
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmGetColorizationColor", "dword*", 0, "bool*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return SetExtended($ARET[2], $ARET[1])
- EndFunc ;==>_WINAPI_DWMGETCOLORIZATIONCOLOR
- Func _WinAPI_DwmGetColorizationParameters()
- Local $TDWMCP = DllStructCreate($TAGDWM_COLORIZATION_PARAMETERS)
- Local $ARET = DllCall("dwmapi.dll", "uint", 127, "struct*", $TDWMCP)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return $TDWMCP
- EndFunc ;==>_WINAPI_DWMGETCOLORIZATIONPARAMETERS
- Func _WinAPI_DwmGetWindowAttribute($HWND, $IATTRIBUTE)
- Local $TAGSTRUCT
- Switch $IATTRIBUTE
- Case 5, 9
- $TAGSTRUCT = $TAGRECT
- Case 1
- $TAGSTRUCT = "uint"
- Case Else
- Return SetError(11, 0, 0)
- EndSwitch
- Local $TDATA = DllStructCreate($TAGSTRUCT)
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmGetWindowAttribute", "hwnd", $HWND, "dword", $IATTRIBUTE, "struct*", $TDATA, "dword", DllStructGetSize($TDATA))
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Switch $IATTRIBUTE
- Case 1
- Return DllStructGetData($TDATA, 1)
- Case Else
- Return $TDATA
- EndSwitch
- EndFunc ;==>_WINAPI_DWMGETWINDOWATTRIBUTE
- Func _WinAPI_DwmInvalidateIconicBitmaps($HWND)
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmInvalidateIconicBitmaps", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMINVALIDATEICONICBITMAPS
- Func _WinAPI_DwmIsCompositionEnabled()
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmIsCompositionEnabled", "bool*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return $ARET[1]
- EndFunc ;==>_WINAPI_DWMISCOMPOSITIONENABLED
- Func _WinAPI_DwmQueryThumbnailSourceSize($HTHUMBNAIL)
- Local $TSIZE = DllStructCreate($TAGSIZE)
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmQueryThumbnailSourceSize", "handle", $HTHUMBNAIL, "struct*", $TSIZE)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return $TSIZE
- EndFunc ;==>_WINAPI_DWMQUERYTHUMBNAILSOURCESIZE
- Func _WinAPI_DwmRegisterThumbnail($HDESTINATION, $HSOURCE)
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmRegisterThumbnail", "hwnd", $HDESTINATION, "hwnd", $HSOURCE, "handle*", 0)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return $ARET[3]
- EndFunc ;==>_WINAPI_DWMREGISTERTHUMBNAIL
- Func _WinAPI_DwmSetColorizationParameters($TDWMCP)
- Local $ARET = DllCall("dwmapi.dll", "uint", 131, "struct*", $TDWMCP, "uint", 0)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMSETCOLORIZATIONPARAMETERS
- Func _WinAPI_DwmSetIconicLivePreviewBitmap($HWND, $HBITMAP, $BFRAME = False, $TCLIENT = 0)
- Local $IFLAGS
- If $BFRAME Then
- $IFLAGS = 1
- Else
- $IFLAGS = 0
- EndIf
- Local $ARET = DllCall("dwmapi.dll", "uint", "DwmSetIconicLivePreviewBitmap", "hwnd", $HWND, "handle", $HBITMAP, "struct*", $TCLIENT, "dword", $IFLAGS)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMSETICONICLIVEPREVIEWBITMAP
- Func _WinAPI_DwmSetIconicThumbnail($HWND, $HBITMAP, $BFRAME = False)
- Local $IFLAGS
- If $BFRAME Then
- $IFLAGS = 1
- Else
- $IFLAGS = 0
- EndIf
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmSetIconicThumbnail", "hwnd", $HWND, "handle", $HBITMAP, "dword", $IFLAGS)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMSETICONICTHUMBNAIL
- Func _WinAPI_DwmSetWindowAttribute($HWND, $IATTRIBUTE, $IDATA)
- Switch $IATTRIBUTE
- Case 2, 3, 4, 6, 7, 8, 10, 11, 12
- Case Else
- Return SetError(1, 0, 0)
- EndSwitch
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmSetWindowAttribute", "hwnd", $HWND, "dword", $IATTRIBUTE, "dword*", $IDATA, "dword", 4)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMSETWINDOWATTRIBUTE
- Func _WinAPI_DwmUnregisterThumbnail($HTHUMBNAIL)
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmUnregisterThumbnail", "handle", $HTHUMBNAIL)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMUNREGISTERTHUMBNAIL
- Func _WinAPI_DwmUpdateThumbnailProperties($HTHUMBNAIL, $BVISIBLE = True, $BCLIENTAREAONLY = False, $IOPACITY = 255, $TRECTDEST = 0, $TRECTSRC = 0)
- Local Const $TAGDWM_THUMBNAIL_PROPERTIES = "struct;dword dwFlags;int rcDestination[4];int rcSource[4];byte opacity;bool opacity;bool fSourceClientAreaOnly;endstruct"
- Local $TTHUMBNAILPROPERTIES = DllStructCreate($TAGDWM_THUMBNAIL_PROPERTIES)
- Local $TSIZE, $IFLAGS = 0
- If Not IsDllStruct($TRECTDEST) Then
- $TSIZE = _WinAPI_DwmQueryThumbnailSourceSize($HTHUMBNAIL)
- If @error Then
- Return SetError(@error + 10, @extended, 0)
- EndIf
- $TRECTDEST = _WinAPI_CreateRectEx(0, 0, DllStructGetData($TSIZE, 1), DllStructGetData($TSIZE, 2))
- EndIf
- For $I = 1 To 4
- DllStructSetData($TTHUMBNAILPROPERTIES, 2, DllStructGetData($TRECTDEST, $I), $I)
- Next
- If IsDllStruct($TRECTSRC) Then
- $IFLAGS += 2
- For $I = 1 To 4
- DllStructSetData($TTHUMBNAILPROPERTIES, 3, DllStructGetData($TRECTSRC, $I), $I)
- Next
- EndIf
- DllStructSetData($TTHUMBNAILPROPERTIES, 1, BitOR($IFLAGS, 29))
- DllStructSetData($TTHUMBNAILPROPERTIES, 4, $IOPACITY)
- DllStructSetData($TTHUMBNAILPROPERTIES, 5, $BVISIBLE)
- DllStructSetData($TTHUMBNAILPROPERTIES, 6, $BCLIENTAREAONLY)
- Local $ARET = DllCall("dwmapi.dll", "long", "DwmUpdateThumbnailProperties", "handle", $HTHUMBNAIL, "struct*", $TTHUMBNAILPROPERTIES)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] Then Return SetError(10, $ARET[0], 0)
- Return 1
- EndFunc ;==>_WINAPI_DWMUPDATETHUMBNAILPROPERTIES
- Func _WinAPI_Ellipse($HDC, $TRECT)
- Local $ARET = DllCall("gdi32.dll", "bool", "Ellipse", "handle", $HDC, "int", DllStructGetData($TRECT, 1), "int", DllStructGetData($TRECT, 2), "int", DllStructGetData($TRECT, 3), "int", DllStructGetData($TRECT, 4))
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ELLIPSE
- Func _WinAPI_EndPaint($HWND, ByRef $TPAINTSTRUCT)
- Local $ARET = DllCall("user32.dll", "bool", "EndPaint", "hwnd", $HWND, "struct*", $TPAINTSTRUCT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ENDPAINT
- Func _WinAPI_EndPath($HDC)
- Local $ARET = DllCall("gdi32.dll", "bool", "EndPath", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ENDPATH
- Func _WinAPI_EnumDisplayMonitors($HDC = 0, $TRECT = 0)
- Local $HENUMPROC = DllCallbackRegister("__EnumDisplayMonitorsProc", "bool", "handle;handle;ptr;lparam")
- Dim $__G_VENUM[101][2] = [[0]]
- Local $ARET = DllCall("user32.dll", "bool", "EnumDisplayMonitors", "handle", $HDC, "struct*", $TRECT, "ptr", DllCallbackGetPtr($HENUMPROC), "lparam", 0)
- If @error Or Not $ARET[0] Or Not $__G_VENUM[0][0] Then
- $__G_VENUM = @error + 10
- EndIf
- DllCallbackFree($HENUMPROC)
- If $__G_VENUM Then Return SetError($__G_VENUM, 0, 0)
- __INC($__G_VENUM, -1)
- Return $__G_VENUM
- EndFunc ;==>_WINAPI_ENUMDISPLAYMONITORS
- Func _WinAPI_EnumDisplaySettings($SDEVICE, $IMODE)
- Local $STYPEOFDEVICE = "wstr"
- If Not StringStripWS($SDEVICE, $STR_STRIPLEADING + $STR_STRIPTRAILING) Then
- $STYPEOFDEVICE = "ptr"
- $SDEVICE = 0
- EndIf
- Local $TDEVMODE = DllStructCreate($TAGDEVMODE_DISPLAY)
- DllStructSetData($TDEVMODE, "Size", DllStructGetSize($TDEVMODE))
- DllStructSetData($TDEVMODE, "DriverExtra", 0)
- Local $ARET = DllCall("user32.dll", "bool", "EnumDisplaySettingsW", $STYPEOFDEVICE, $SDEVICE, "dword", $IMODE, "struct*", $TDEVMODE)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Local $ARESULT[5]
- $ARESULT[0] = DllStructGetData($TDEVMODE, "PelsWidth")
- $ARESULT[1] = DllStructGetData($TDEVMODE, "PelsHeight")
- $ARESULT[2] = DllStructGetData($TDEVMODE, "BitsPerPel")
- $ARESULT[3] = DllStructGetData($TDEVMODE, "DisplayFrequency")
- $ARESULT[4] = DllStructGetData($TDEVMODE, "DisplayFlags")
- Return $ARESULT
- EndFunc ;==>_WINAPI_ENUMDISPLAYSETTINGS
- Func _WinAPI_EnumFontFamilies($HDC = 0, $SFACENAME = "", $ICHARSET = 1, $IFONTTYPE = 7, $SPATTERN = "", $BEXCLUDE = False)
- Local $TLOGFONT = DllStructCreate($TAGLOGFONT)
- Local $TPATTERN = DllStructCreate("uint;uint;ptr;wchar[" & (StringLen($SPATTERN) + 1) & "]")
- DllStructSetData($TPATTERN, 1, $IFONTTYPE)
- If Not $SPATTERN Then
- DllStructSetData($TPATTERN, 2, 0)
- DllStructSetData($TPATTERN, 3, 0)
- Else
- DllStructSetData($TPATTERN, 2, $BEXCLUDE)
- DllStructSetData($TPATTERN, 3, DllStructGetPtr($TPATTERN, 4))
- DllStructSetData($TPATTERN, 4, $SPATTERN)
- EndIf
- DllStructSetData($TLOGFONT, 9, $ICHARSET)
- DllStructSetData($TLOGFONT, 13, 0)
- DllStructSetData($TLOGFONT, 14, StringLeft($SFACENAME, 31))
- Local $HCDC
- If Not $HDC Then
- $HCDC = _WinAPI_CreateCompatibleDC(0)
- Else
- $HCDC = $HDC
- EndIf
- Dim $__G_VENUM[101][8] = [[0]]
- Local $HENUMPROC = DllCallbackRegister("__EnumFontFamiliesProc", "int", "ptr;ptr;dword;PTR")
- Local $ARET = DllCall("gdi32.dll", "int", "EnumFontFamiliesExW", "handle", $HCDC, "struct*", $TLOGFONT, "ptr", DllCallbackGetPtr($HENUMPROC), "struct*", $TPATTERN, "dword", 0)
- If @error Or Not $ARET[0] Or Not $__G_VENUM[0][0] Then
- $__G_VENUM = @error + 10
- EndIf
- DllCallbackFree($HENUMPROC)
- If Not $HDC Then
- _WinAPI_DeleteDC($HCDC)
- EndIf
- If $__G_VENUM Then Return SetError($__G_VENUM, 0, 0)
- __INC($__G_VENUM, -1)
- Return $__G_VENUM
- EndFunc ;==>_WINAPI_ENUMFONTFAMILIES
- Func _WinAPI_EqualRect($TRECT1, $TRECT2)
- Local $ARET = DllCall("user32.dll", "bool", "EqualRect", "struct*", $TRECT1, "struct*", $TRECT2)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_EQUALRECT
- Func _WinAPI_EqualRgn($HRGN1, $HRGN2)
- Local $ARET = DllCall("gdi32.dll", "bool", "EqualRgn", "handle", $HRGN1, "handle", $HRGN2)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_EQUALRGN
- Func _WinAPI_ExcludeClipRect($HDC, $TRECT)
- Local $ARET = DllCall("gdi32.dll", "int", "ExcludeClipRect", "handle", $HDC, "int", DllStructGetData($TRECT, 1), "int", DllStructGetData($TRECT, 2), "int", DllStructGetData($TRECT, 3), "int", DllStructGetData($TRECT, 4))
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_EXCLUDECLIPRECT
- Func _WinAPI_ExtCreatePen($IPENSTYLE, $IWIDTH, $IBRUSHSTYLE, $IRGB, $IHATCH = 0, $AUSERSTYLE = 0, $ISTART = 0, $IEND = -1)
- Local $ICOUNT = 0, $TSTYLE = 0
- If BitAND($IPENSTYLE, 255) = 7 Then
- If __CHECKERRORARRAYBOUNDS($AUSERSTYLE, $ISTART, $IEND) Then Return SetError(@error + 10, @extended, 0)
- $TSTYLE = DllStructCreate("dword[" & ($IEND - $ISTART + 1) & "]")
- For $I = $ISTART To $IEND
- DllStructSetData($TSTYLE, 1, $AUSERSTYLE[$I], $ICOUNT + 1)
- $ICOUNT += 1
- Next
- EndIf
- Local $TLOGBRUSH = DllStructCreate($TAGLOGBRUSH)
- DllStructSetData($TLOGBRUSH, 1, $IBRUSHSTYLE)
- DllStructSetData($TLOGBRUSH, 2, __RGB($IRGB))
- DllStructSetData($TLOGBRUSH, 3, $IHATCH)
- Local $ARET = DllCall("gdi32.dll", "handle", "ExtCreatePen", "dword", $IPENSTYLE, "dword", $IWIDTH, "struct*", $TLOGBRUSH, "dword", $ICOUNT, "struct*", $TSTYLE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_EXTCREATEPEN
- Func _WinAPI_ExtCreateRegion($TRGNDATA, $TXFORM = 0)
- Local $ARET = DllCall("gdi32.dll", "handle", "ExtCreateRegion", "struct*", $TXFORM, "dword", DllStructGetSize($TRGNDATA), "struct*", $TRGNDATA)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_EXTCREATEREGION
- Func _WinAPI_ExtFloodFill($HDC, $IX, $IY, $IRGB, $ITYPE = 0)
- Local $ARET = DllCall("gdi32.dll", "bool", "ExtFloodFill", "handle", $HDC, "int", $IX, "int", $IY, "dword", __RGB($IRGB), "uint", $ITYPE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_EXTFLOODFILL
- Func _WinAPI_ExtSelectClipRgn($HDC, $HRGN, $IMODE = 5)
- Local $ARET = DllCall("gdi32.dll", "int", "ExtSelectClipRgn", "handle", $HDC, "handle", $HRGN, "int", $IMODE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_EXTSELECTCLIPRGN
- Func _WinAPI_FillPath($HDC)
- Local $ARET = DllCall("gdi32.dll", "bool", "FillPath", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_FILLPATH
- Func _WinAPI_FillRgn($HDC, $HRGN, $HBRUSH)
- Local $ARET = DllCall("gdi32.dll", "bool", "FillRgn", "handle", $HDC, "handle", $HRGN, "handle", $HBRUSH)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_FILLRGN
- Func _WinAPI_FlattenPath($HDC)
- Local $ARET = DllCall("gdi32.dll", "bool", "FlattenPath", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_FLATTENPATH
- Func _WinAPI_FrameRgn($HDC, $HRGN, $HBRUSH, $IWIDTH, $IHEIGHT)
- Local $ARET = DllCall("gdi32.dll", "bool", "FrameRgn", "handle", $HDC, "handle", $HRGN, "handle", $HBRUSH, "int", $IWIDTH, "int", $IHEIGHT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_FRAMERGN
- Func _WinAPI_GdiComment($HDC, $PBUFFER, $ISIZE)
- Local $ARET = DllCall("gdi32.dll", "bool", "GdiComment", "handle", $HDC, "uint", $ISIZE, "struct*", $PBUFFER)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GDICOMMENT
- Func _WinAPI_GetArcDirection($HDC)
- Local $ARET = DllCall("gdi32.dll", "int", "GetArcDirection", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- If ($ARET[0] < 1) Or ($ARET[0] > 2) Then Return SetError(10, $ARET[0], 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETARCDIRECTION
- Func _WinAPI_GetBitmapBits($HBITMAP, $ISIZE, $PBITS)
- Local $ARET = DllCall("gdi32.dll", "long", "GetBitmapBits", "handle", $HBITMAP, "long", $ISIZE, "struct*", $PBITS)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETBITMAPBITS
- Func _WinAPI_GetBitmapDimensionEx($HBITMAP)
- Local $TSIZE = DllStructCreate($TAGSIZE)
- Local $ARET = DllCall("gdi32.dll", "bool", "GetBitmapDimensionEx", "handle", $HBITMAP, "struct*", $TSIZE)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TSIZE
- EndFunc ;==>_WINAPI_GETBITMAPDIMENSIONEX
- Func _WinAPI_GetBkColor($HDC)
- Local $ARET = DllCall("gdi32.dll", "dword", "GetBkColor", "handle", $HDC)
- If @error Or ($ARET[0] = -1) Then Return SetError(@error, @extended, -1)
- Return __RGB($ARET[0])
- EndFunc ;==>_WINAPI_GETBKCOLOR
- Func _WinAPI_GetBoundsRect($HDC, $IFLAGS = 0)
- Local $TRECT = DllStructCreate($TAGRECT)
- Local $ARET = DllCall("gdi32.dll", "uint", "GetBoundsRect", "handle", $HDC, "struct*", $TRECT, "uint", $IFLAGS)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return SetExtended($ARET[0], $TRECT)
- EndFunc ;==>_WINAPI_GETBOUNDSRECT
- Func _WinAPI_GetBrushOrg($HDC)
- Local $TPOINT = DllStructCreate($TAGPOINT)
- Local $ARET = DllCall("gdi32.dll", "bool", "GetBrushOrgEx", "handle", $HDC, "struct*", $TPOINT)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TPOINT
- EndFunc ;==>_WINAPI_GETBRUSHORG
- Func _WinAPI_GetBValue($IRGB)
- Return BitShift(BitAND(__RGB($IRGB), 16711680), 16)
- EndFunc ;==>_WINAPI_GETBVALUE
- Func _WinAPI_GetClipBox($HDC, ByRef $TRECT)
- $TRECT = DllStructCreate($TAGRECT)
- Local $ARET = DllCall("gdi32.dll", "int", "GetClipBox", "handle", $HDC, "struct*", $TRECT)
- If @error Or Not $ARET[0] Then
- $TRECT = 0
- Return SetError(@error, @extended, 0)
- EndIf
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETCLIPBOX
- Func _WinAPI_GetClipRgn($HDC)
- Local $HRGN = _WinAPI_CreateRectRgn(0, 0, 0, 0)
- Local $IERROR = 0
- Local $ARET = DllCall("gdi32.dll", "int", "GetClipRgn", "handle", $HDC, "handle", $HRGN)
- If @error Or ($ARET[0] = -1) Then $IERROR = @error + 10
- If $IERROR Or Not $ARET[0] Then
- _WinAPI_DeleteObject($HRGN)
- $HRGN = 0
- EndIf
- Return SetError($IERROR, 0, $HRGN)
- EndFunc ;==>_WINAPI_GETCLIPRGN
- Func _WinAPI_GetColorAdjustment($HDC)
- Local $TADJUSTMENT = DllStructCreate($TAGCOLORADJUSTMENT)
- Local $ARET = DllCall("gdi32.dll", "bool", "GetColorAdjustment", "handle", $HDC, "struct*", $TADJUSTMENT)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TADJUSTMENT
- EndFunc ;==>_WINAPI_GETCOLORADJUSTMENT
- Func _WinAPI_GetCurrentPosition($HDC)
- Local $TPOINT = DllStructCreate($TAGPOINT)
- Local $ARET = DllCall("gdi32.dll", "int", "GetCurrentPositionEx", "handle", $HDC, "struct*", $TPOINT)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TPOINT
- EndFunc ;==>_WINAPI_GETCURRENTPOSITION
- Func _WinAPI_GetDeviceGammaRamp($HDC, ByRef $ARAMP)
- $ARAMP = 0
- Local $TDATA = DllStructCreate("word[256];word[256];word[256]")
- Local $ARET = DllCall("gdi32.dll", "bool", "GetDeviceGammaRamp", "handle", $HDC, "struct*", $TDATA)
- If @error Or Not $ARET[0] Then Return SetError(@error, @extended, 0)
- Dim $ARAMP[256][3]
- For $I = 0 To 2
- For $J = 0 To 255
- $ARAMP[$J][$I] = DllStructGetData($TDATA, $I + 1, $J + 1)
- Next
- Next
- Return 1
- EndFunc ;==>_WINAPI_GETDEVICEGAMMARAMP
- Func _WinAPI_GetDIBColorTable($HBITMAP)
- Local $HDC = _WinAPI_CreateCompatibleDC(0)
- Local $HSV = _WinAPI_SelectObject($HDC, $HBITMAP)
- Local $TPEAK = DllStructCreate("dword[256]")
- Local $IERROR = 0
- Local $ARET = DllCall("gdi32.dll", "uint", "GetDIBColorTable", "handle", $HDC, "uint", 0, "uint", 256, "struct*", $TPEAK)
- If @error Or Not $ARET[0] Then $IERROR = @error + 10
- _WinAPI_SelectObject($HDC, $HSV)
- _WinAPI_DeleteDC($HDC)
- If $IERROR Then Return SetError($IERROR, 0, 0)
- Local $TDATA = DllStructCreate("dword[" & $ARET[0] & "]")
- If @error Then Return SetError(@error + 20, @extended, 0)
- _WinAPI_MoveMemory($TDATA, $ARET[4], 4 * $ARET[0])
- Return SetExtended($ARET[0], $TDATA)
- EndFunc ;==>_WINAPI_GETDIBCOLORTABLE
- Func _WinAPI_GetDIBits($HDC, $HBITMAP, $ISTARTSCAN, $ISCANLINES, $PBITS, $TBI, $IUSAGE)
- Local $ARESULT = DllCall("gdi32.dll", "int", "GetDIBits", "handle", $HDC, "handle", $HBITMAP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "struct*", $PBITS, "struct*", $TBI, "uint", $IUSAGE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_GetDIBits
- Func _WinAPI_GetEnhMetaFile($SFILEPATH)
- Local $ARET = DllCall("gdi32.dll", "handle", "GetEnhMetaFileW", "wstr", $SFILEPATH)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETENHMETAFILE
- Func _WinAPI_GetEnhMetaFileBits($HEMF, ByRef $PBUFFER)
- Local $ARET = DllCall("gdi32.dll", "uint", "GetEnhMetaFileBits", "handle", $HEMF, "uint", 0, "ptr", 0)
- If @error Or Not $ARET[0] Then Return SetError(@error + 50, @extended, 0)
- $PBUFFER = __HEAPREALLOC($PBUFFER, $ARET[0], 1)
- If @error Then Return SetError(@error, @extended, 0)
- $ARET = DllCall("gdi32.dll", "uint", "GetEnhMetaFileBits", "handle", $HEMF, "uint", $ARET[0], "ptr", $PBUFFER)
- If Not $ARET[0] Then Return SetError(60, 0, 0)
- Return $ARET[2]
- EndFunc ;==>_WINAPI_GETENHMETAFILEBITS
- Func _WinAPI_GetEnhMetaFileDescription($HEMF)
- Local $TDATA = DllStructCreate("wchar[4096]")
- Local $ARET = DllCall("gdi32.dll", "uint", "GetEnhMetaFileDescriptionW", "handle", $HEMF, "uint", 4096, "struct*", $TDATA)
- If @error Or ($ARET[0] = 4294967295) Then Return SetError(@error + 20, $ARET[0], 0)
- If Not $ARET[0] Then Return 0
- Local $ADATA = _WinAPI_StructToArray($TDATA)
- If @error Then Return SetError(@error, @extended, 0)
- Local $ARESULT[2]
- For $I = 0 To 1
- If $ADATA[0] > $I Then
- $ARESULT[$I] = $ADATA[$I + 1]
- Else
- $ARESULT[$I] = ""
- EndIf
- Next
- Return $ARESULT
- EndFunc ;==>_WINAPI_GETENHMETAFILEDESCRIPTION
- Func _WinAPI_GetEnhMetaFileDimension($HEMF)
- Local $TENHMETAHEADER = _WinAPI_GetEnhMetaFileHeader($HEMF)
- If @error Then Return SetError(@error, @extended, 0)
- Local $TSIZE = DllStructCreate($TAGSIZE)
- DllStructSetData($TSIZE, 1, Round((DllStructGetData($TENHMETAHEADER, "rcFrame", 3) - DllStructGetData($TENHMETAHEADER, "rcFrame", 1)) * DllStructGetData($TENHMETAHEADER, "Device", 1) / DllStructGetData($TENHMETAHEADER, "Millimeters", 1) / 100))
- DllStructSetData($TSIZE, 2, Round((DllStructGetData($TENHMETAHEADER, "rcFrame", 4) - DllStructGetData($TENHMETAHEADER, "rcFrame", 2)) * DllStructGetData($TENHMETAHEADER, "Device", 2) / DllStructGetData($TENHMETAHEADER, "Millimeters", 2) / 100))
- Return $TSIZE
- EndFunc ;==>_WINAPI_GETENHMETAFILEDIMENSION
- Func _WinAPI_GetEnhMetaFileHeader($HEMF)
- Local $TENHMETAHEADER = DllStructCreate($TAGENHMETAHEADER)
- Local $ARET = DllCall("gdi32.dll", "uint", "GetEnhMetaFileHeader", "handle", $HEMF, "uint", DllStructGetSize($TENHMETAHEADER), "struct*", $TENHMETAHEADER)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return SetExtended($ARET[0], $TENHMETAHEADER)
- EndFunc ;==>_WINAPI_GETENHMETAFILEHEADER
- Func _WinAPI_GetFontName($SFACENAME, $ISTYLE = 0, $ICHARSET = 1)
- If Not $SFACENAME Then Return SetError(1, 0, "")
- Local $IFLAGS = 0
- If BitAND($ISTYLE, 1) Then
- $IFLAGS += 32
- EndIf
- If BitAND($ISTYLE, 2) Then
- $IFLAGS += 1
- EndIf
- If Not $IFLAGS Then
- $IFLAGS = 64
- EndIf
- Local $TLOGFONT = DllStructCreate($TAGLOGFONT)
- DllStructSetData($TLOGFONT, 9, $ICHARSET)
- DllStructSetData($TLOGFONT, 13, 0)
- DllStructSetData($TLOGFONT, 14, StringLeft($SFACENAME, 31))
- Local $TFN = DllStructCreate("dword;wchar[64]")
- DllStructSetData($TFN, 1, $IFLAGS)
- DllStructSetData($TFN, 2, "")
- Local $HDC = _WinAPI_CreateCompatibleDC(0)
- Local $HENUMPROC = DllCallbackRegister("__EnumFontStylesProc", "int", "ptr;ptr;dword;lparam")
- Local $SRET = ""
- Local $ARET = DllCall("gdi32.dll", "int", "EnumFontFamiliesExW", "handle", $HDC, "struct*", $TLOGFONT, "ptr", DllCallbackGetPtr($HENUMPROC), "struct*", $TFN, "dword", 0)
- If Not @error And Not $ARET[0] Then $SRET = DllStructGetData($TFN, 2)
- DllCallbackFree($HENUMPROC)
- _WinAPI_DeleteDC($HDC)
- If Not $SRET Then Return SetError(2, 0, "")
- Return $SRET
- EndFunc ;==>_WINAPI_GETFONTNAME
- Func _WinAPI_GetFontResourceInfo($SFONT, $BFORCE = False, $IFLAG = Default)
- If $IFLAG = Default Then
- If $BFORCE Then
- If Not _WinAPI_AddFontResourceEx($SFONT, $FR_NOT_ENUM) Then Return SetError(@error + 20, @extended, "")
- EndIf
- Local $IERROR = 0
- Local $ARET = DllCall("gdi32.dll", "bool", "GetFontResourceInfoW", "wstr", $SFONT, "dword*", 4096, "wstr", "", "dword", 1)
- If @error Or Not $ARET[0] Then $IERROR = @error + 10
- If $BFORCE Then
- _WinAPI_RemoveFontResourceEx($SFONT, $FR_NOT_ENUM)
- EndIf
- If $IERROR Then Return SetError($IERROR, 0, "")
- Return $ARET[3]
- Else
- If Not FileExists($SFONT) Then
- $SFONT = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Fonts") & "\" & $SFONT
- If Not FileExists($SFONT) Then Return SetError(31, 0, "")
- EndIf
- Local Const $HFILE = _WinAPI_CreateFile($SFONT, 2, 2, 2)
- If Not $HFILE Then Return SetError(32, _WinAPI_GetLastError(), "")
- Local Const $IFILE = FileGetSize($SFONT)
- Local Const $TBUFFER = DllStructCreate("byte[" & $IFILE + 1 & "]")
- Local Const $PFILE = DllStructGetPtr($TBUFFER)
- Local $IREAD
- _WinAPI_ReadFile($HFILE, $PFILE, $IFILE, $IREAD)
- _WinAPI_CloseHandle($HFILE)
- Local $STTFNAME = _WinAPI_GetFontMemoryResourceInfo($PFILE, $IFLAG)
- If @error Then
- If @error = 1 And $IFLAG = 4 Then
- $STTFNAME = _WinAPI_GetFontResourceInfo($SFONT, True)
- Return SetError(@error, @extended, $STTFNAME)
- EndIf
- Return SetError(33, @error, "")
- EndIf
- Return $STTFNAME
- EndIf
- EndFunc ;==>_WINAPI_GETFONTRESOURCEINFO
- Func _WinAPI_GetFontMemoryResourceInfo($PMEMORY, $IFLAG = 1)
- Local Const $TAGTT_OFFSET_TABLE = "USHORT uMajorVersion;USHORT uMinorVersion;USHORT uNumOfTables;USHORT uSearchRange;USHORT uEntrySelector;USHORT uRangeShift"
- Local Const $TAGTT_TABLE_DIRECTORY = "char szTag[4];ULONG uCheckSum;ULONG uOffset;ULONG uLength"
- Local Const $TAGTT_NAME_TABLE_HEADER = "USHORT uFSelector;USHORT uNRCount;USHORT uStorageOffset"
- Local Const $TAGTT_NAME_RECORD = "USHORT uPlatformID;USHORT uEncodingID;USHORT uLanguageID;USHORT uNameID;USHORT uStringLength;USHORT uStringOffset"
- Local $TTTOFFSETTABLE = DllStructCreate($TAGTT_OFFSET_TABLE, $PMEMORY)
- Local $INUMOFTABLES = _WinAPI_SwapWord(DllStructGetData($TTTOFFSETTABLE, "uNumOfTables"))
- If Not (_WinAPI_SwapWord(DllStructGetData($TTTOFFSETTABLE, "uMajorVersion")) = 1 And _WinAPI_SwapWord(DllStructGetData($TTTOFFSETTABLE, "uMinorVersion")) = 0) Then Return SetError(1, 0, "")
- Local $ITBLDIRSIZE = DllStructGetSize(DllStructCreate($TAGTT_TABLE_DIRECTORY))
- Local $BFOUND = False, $IOFFSET, $TTBLDIR
- For $I = 0 To $INUMOFTABLES - 1
- $TTBLDIR = DllStructCreate($TAGTT_TABLE_DIRECTORY, $PMEMORY + DllStructGetSize($TTTOFFSETTABLE) + $I * $ITBLDIRSIZE)
- If StringLeft(DllStructGetData($TTBLDIR, "szTag"), 4) = "name" Then
- $BFOUND = True
- $IOFFSET = _WinAPI_SwapDWord(DllStructGetData($TTBLDIR, "uOffset"))
- ExitLoop
- EndIf
- Next
- If Not $BFOUND Then Return SetError(2, 0, "")
- Local $TNTHEADER = DllStructCreate($TAGTT_NAME_TABLE_HEADER, $PMEMORY + $IOFFSET)
- Local $INTHEADERSIZE = DllStructGetSize($TNTHEADER)
- Local $INRCOUNT = _WinAPI_SwapWord(DllStructGetData($TNTHEADER, "uNRCount"))
- Local $ISTORAGEOFFSET = _WinAPI_SwapWord(DllStructGetData($TNTHEADER, "uStorageOffset"))
- Local $ITTRECORDSIZE = DllStructGetSize(DllStructCreate($TAGTT_NAME_RECORD))
- Local $TRESULT, $SRESULT, $ISTRINGLENGTH, $ISTRINGOFFSET, $IENCODINGID, $TTTRECORD
- For $I = 0 To $INRCOUNT - 1
- $TTTRECORD = DllStructCreate($TAGTT_NAME_RECORD, $PMEMORY + $IOFFSET + $INTHEADERSIZE + $I * $ITTRECORDSIZE)
- If _WinAPI_SwapWord($TTTRECORD.uNameID) = $IFLAG Then
- $ISTRINGLENGTH = _WinAPI_SwapWord(DllStructGetData($TTTRECORD, "uStringLength"))
- $ISTRINGOFFSET = _WinAPI_SwapWord(DllStructGetData($TTTRECORD, "uStringOffset"))
- $IENCODINGID = _WinAPI_SwapWord(DllStructGetData($TTTRECORD, "uEncodingID"))
- Local $SWCHAR = "char"
- If $IENCODINGID = 1 Then
- $SWCHAR = "word"
- $ISTRINGLENGTH = $ISTRINGLENGTH / 2
- EndIf
- $TRESULT = DllStructCreate($SWCHAR & " szTTFName[" & $ISTRINGLENGTH & "]", $PMEMORY + $IOFFSET + $ISTRINGOFFSET + $ISTORAGEOFFSET)
- If $IENCODINGID = 1 Then
- $SRESULT = ""
- For $J = 1 To $ISTRINGLENGTH
- $SRESULT &= ChrW(_WinAPI_SwapWord(DllStructGetData($TRESULT, 1, $J)))
- Next
- Else
- $SRESULT = $TRESULT.szTTFName
- EndIf
- If StringLen($SRESULT) > 0 Then ExitLoop
- EndIf
- Next
- Return $SRESULT
- EndFunc ;==>_WINAPI_GETFONTMEMORYRESOURCEINFO
- Func _WinAPI_GetGlyphOutline($HDC, $SCHAR, $IFORMAT, ByRef $PBUFFER, $TMAT2 = 0)
- Local $TGM = DllStructCreate($TAGGLYPHMETRICS)
- Local $ARET, $ILENGTH = 0
- If Not IsDllStruct($TMAT2) Then
- $TMAT2 = DllStructCreate("short[8]")
- DllStructSetData($TMAT2, 1, 1, 2)
- DllStructSetData($TMAT2, 1, 1, 8)
- EndIf
- If $IFORMAT Then
- $ARET = DllCall("gdi32.dll", "dword", "GetGlyphOutlineW", "handle", $HDC, "uint", AscW($SCHAR), "uint", $IFORMAT, "struct*", $TGM, "dword", 0, "ptr", 0, "struct*", $TMAT2)
- If @error Or ($ARET[0] = 4294967295) Then Return SetError(@error + 10, @extended, 0)
- $ILENGTH = $ARET[0]
- $PBUFFER = __HEAPREALLOC($PBUFFER, $ILENGTH, 1)
- If @error Then Return SetError(@error + 20, @extended, 0)
- EndIf
- $ARET = DllCall("gdi32.dll", "dword", "GetGlyphOutlineW", "handle", $HDC, "uint", AscW($SCHAR), "uint", $IFORMAT, "struct*", $TGM, "dword", $ILENGTH, "ptr", $PBUFFER, "struct*", $TMAT2)
- If @error Then Return SetError(@error, @extended, 0)
- If $ARET[0] = 4294967295 Then Return SetError(10, -1, 0)
- Return SetExtended($ILENGTH, $TGM)
- EndFunc ;==>_WINAPI_GETGLYPHOUTLINE
- Func _WinAPI_GetGraphicsMode($HDC)
- Local $ARET = DllCall("gdi32.dll", "int", "GetGraphicsMode", "handle", $HDC)
- If @error Or Not $ARET[0] Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETGRAPHICSMODE
- Func _WinAPI_GetGValue($IRGB)
- Return BitShift(BitAND(__RGB($IRGB), 65280), 8)
- EndFunc ;==>_WINAPI_GETGVALUE
- Func _WinAPI_GetMapMode($HDC)
- Local $ARET = DllCall("gdi32.dll", "int", "GetMapMode", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETMAPMODE
- Func _WinAPI_GetMonitorInfo($HMONITOR)
- Local $TMIEX = DllStructCreate("dword;long[4];long[4];dword;wchar[32]")
- DllStructSetData($TMIEX, 1, DllStructGetSize($TMIEX))
- Local $ARET = DllCall("user32.dll", "bool", "GetMonitorInfoW", "handle", $HMONITOR, "struct*", $TMIEX)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Local $ARESULT[4]
- For $I = 0 To 1
- $ARESULT[$I] = DllStructCreate($TAGRECT)
- _WinAPI_MoveMemory($ARESULT[$I], DllStructGetPtr($TMIEX, $I + 2), 16)
- Next
- $ARESULT[3] = DllStructGetData($TMIEX, 5)
- Switch DllStructGetData($TMIEX, 4)
- Case 1
- $ARESULT[2] = 1
- Case Else
- $ARESULT[2] = 0
- EndSwitch
- Return $ARESULT
- EndFunc ;==>_WINAPI_GETMONITORINFO
- Func _WinAPI_GetOutlineTextMetrics($HDC)
- Local $ARET = DllCall("gdi32.dll", "uint", "GetOutlineTextMetricsW", "handle", $HDC, "uint", 0, "ptr", 0)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Local $TDATA = DllStructCreate("byte[" & $ARET[0] & "]")
- Local $TOLTM = DllStructCreate($TAGOUTLINETEXTMETRIC, DllStructGetPtr($TDATA))
- $ARET = DllCall("gdi32.dll", "uint", "GetOutlineTextMetricsW", "handle", $HDC, "uint", $ARET[0], "struct*", $TDATA)
- If Not $ARET[0] Then Return SetError(20, 0, 0)
- Return $TOLTM
- EndFunc ;==>_WINAPI_GETOUTLINETEXTMETRICS
- Func _WinAPI_GetPixel($HDC, $IX, $IY)
- Local $ARET = DllCall("gdi32.dll", "dword", "GetPixel", "handle", $HDC, "int", $IX, "int", $IY)
- If @error Or ($ARET[0] = 4294967295) Then Return SetError(@error, @extended, -1)
- Return __RGB($ARET[0])
- EndFunc ;==>_WINAPI_GETPIXEL
- Func _WinAPI_GetPolyFillMode($HDC)
- Local $ARET = DllCall("gdi32.dll", "int", "GetPolyFillMode", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETPOLYFILLMODE
- Func _WinAPI_GetPosFromRect($TRECT)
- Local $ARESULT[4]
- For $I = 0 To 3
- $ARESULT[$I] = DllStructGetData($TRECT, $I + 1)
- If @error Then Return SetError(@error, @extended, 0)
- Next
- For $I = 2 To 3
- $ARESULT[$I] -= $ARESULT[$I - 2]
- Next
- Return $ARESULT
- EndFunc ;==>_WINAPI_GETPOSFROMRECT
- Func _WinAPI_GetRegionData($HRGN, ByRef $TRGNDATA)
- Local $ARET = DllCall("gdi32.dll", "dword", "GetRegionData", "handle", $HRGN, "dword", 0, "ptr", 0)
- If @error Or Not $ARET[0] Then
- $TRGNDATA = 0
- Return SetError(@error, @extended, False)
- EndIf
- $TRGNDATA = DllStructCreate($TAGRGNDATAHEADER)
- Local $IRECTSIZE = $ARET[0] - DllStructGetSize($TRGNDATA)
- If $IRECTSIZE > 0 Then $TRGNDATA = DllStructCreate($TAGRGNDATAHEADER & ";byte[" & $IRECTSIZE & "]")
- $ARET = DllCall("gdi32.dll", "dword", "GetRegionData", "handle", $HRGN, "dword", $ARET[0], "struct*", $TRGNDATA)
- If Not $ARET[0] Then $TRGNDATA = 0
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETREGIONDATA
- Func _WinAPI_GetRgnBox($HRGN, ByRef $TRECT)
- $TRECT = DllStructCreate($TAGRECT)
- Local $ARET = DllCall("gdi32.dll", "int", "GetRgnBox", "handle", $HRGN, "struct*", $TRECT)
- If @error Or Not $ARET[0] Then
- $TRECT = 0
- Return SetError(@error, @extended, 0)
- EndIf
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETRGNBOX
- Func _WinAPI_GetROP2($HDC)
- Local $ARET = DllCall("gdi32.dll", "int", "GetROP2", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETROP2
- Func _WinAPI_GetRValue($IRGB)
- Return BitAND(__RGB($IRGB), 255)
- EndFunc ;==>_WINAPI_GETRVALUE
- Func _WinAPI_GetStretchBltMode($HDC)
- Local $ARET = DllCall("gdi32.dll", "int", "GetStretchBltMode", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETSTRETCHBLTMODE
- Func _WinAPI_GetTabbedTextExtent($HDC, $STEXT, $ATAB = 0, $ISTART = 0, $IEND = -1)
- Local $ITAB, $ICOUNT
- If Not IsArray($ATAB) Then
- If $ATAB Then
- $ITAB = $ATAB
- Dim $ATAB[1] = [$ITAB]
- $ISTART = 0
- $IEND = 0
- $ICOUNT = 1
- Else
- $ICOUNT = 0
- EndIf
- Else
- $ICOUNT = 1
- EndIf
- Local $TTAB = 0
- If $ICOUNT Then
- If __CHECKERRORARRAYBOUNDS($ATAB, $ISTART, $IEND) Then Return SetError(@error + 10, @extended, 0)
- $ICOUNT = $IEND - $ISTART + 1
- $TTAB = DllStructCreate("uint[" & $ICOUNT & "]")
- $ITAB = 1
- For $I = $ISTART To $IEND
- DllStructSetData($TTAB, 1, $ATAB[$I], $ITAB)
- $ITAB += 1
- Next
- EndIf
- Local $ARET = DllCall("user32.dll", "dword", "GetTabbedTextExtentW", "handle", $HDC, "wstr", $STEXT, "int", StringLen($STEXT), "int", $ICOUNT, "struct*", $TTAB)
- If @error Or Not $ARET[0] Then Return SetError(@error + 20, @extended, 0)
- Return _WinAPI_CreateSize(_WinAPI_LoWord($ARET[0]), _WinAPI_HiWord($ARET[0]))
- EndFunc ;==>_WINAPI_GETTABBEDTEXTEXTENT
- Func _WinAPI_GetTextAlign($HDC)
- Local $ARET = DllCall("gdi32.dll", "uint", "GetTextAlign", "handle", $HDC)
- If @error Or ($ARET[0] = 4294967295) Then Return SetError(@error, @extended, -1)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETTEXTALIGN
- Func _WinAPI_GetTextCharacterExtra($HDC)
- Local $ARET = DllCall("gdi32.dll", "int", "GetTextCharacterExtra", "handle", $HDC)
- If @error Or ($ARET[0] = 134217728) Then Return SetError(@error, @extended, -1)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETTEXTCHARACTEREXTRA
- Func _WinAPI_GetTextFace($HDC)
- Local $ARET = DllCall("gdi32.dll", "int", "GetTextFaceW", "handle", $HDC, "int", 2048, "wstr", "")
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, "")
- Return $ARET[3]
- EndFunc ;==>_WINAPI_GETTEXTFACE
- Func _WinAPI_GetUDFColorMode()
- Return Number($__G_IRGBMODE)
- EndFunc ;==>_WINAPI_GETUDFCOLORMODE
- Func _WinAPI_GetUpdateRect($HWND, $BERASE = True)
- Local $TRECT = DllStructCreate($TAGRECT)
- Local $ARET = DllCall("user32.dll", "bool", "GetUpdateRect", "hwnd", $HWND, "struct*", $TRECT, "bool", $BERASE)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TRECT
- EndFunc ;==>_WINAPI_GETUPDATERECT
- Func _WinAPI_GetUpdateRgn($HWND, $HRGN, $BERASE = True)
- Local $ARET = DllCall("user32.dll", "int", "GetUpdateRgn", "hwnd", $HWND, "handle", $HRGN, "bool", $BERASE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETUPDATERGN
- Func _WinAPI_GetWindowExt($HDC)
- Local $TSIZE = DllStructCreate($TAGSIZE)
- Local $ARET = DllCall("gdi32.dll", "bool", "GetWindowExtEx", "handle", $HDC, "struct*", $TSIZE)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TSIZE
- EndFunc ;==>_WINAPI_GETWINDOWEXT
- Func _WinAPI_GetWindowOrg($HDC)
- Local $TPOINT = DllStructCreate($TAGPOINT)
- Local $ARET = DllCall("gdi32.dll", "bool", "GetWindowOrgEx", "handle", $HDC, "struct*", $TPOINT)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TPOINT
- EndFunc ;==>_WINAPI_GETWINDOWORG
- Func _WinAPI_GetWindowRgnBox($HWND, ByRef $TRECT)
- $TRECT = DllStructCreate($TAGRECT)
- Local $ARET = DllCall("gdi32.dll", "int", "GetWindowRgnBox", "hwnd", $HWND, "struct*", $TRECT)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GETWINDOWRGNBOX
- Func _WinAPI_GetWorldTransform($HDC)
- Local $TXFORM = DllStructCreate($TAGXFORM)
- Local $ARET = DllCall("gdi32.dll", "bool", "GetWorldTransform", "handle", $HDC, "struct*", $TXFORM)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TXFORM
- EndFunc ;==>_WINAPI_GETWORLDTRANSFORM
- Func _WinAPI_GradientFill($HDC, Const ByRef $AVERTEX, $ISTART = 0, $IEND = -1, $BROTATE = False)
- If __CHECKERRORARRAYBOUNDS($AVERTEX, $ISTART, $IEND, 2) Then Return SetError(@error + 10, @extended, 0)
- If UBound($AVERTEX, $UBOUND_COLUMNS) < 3 Then Return SetError(13, 0, 0)
- Local $IPOINT = $IEND - $ISTART + 1
- If $IPOINT > 3 Then
- $IEND = $ISTART + 2
- $IPOINT = 3
- EndIf
- Local $IMODE
- Switch $IPOINT
- Case 2
- $IMODE = Number(Not $BROTATE)
- Case 3
- $IMODE = 2
- Case Else
- Return SetError(15, 0, 0)
- EndSwitch
- Local $TAGSTRUCT = ""
- For $I = $ISTART To $IEND
- $TAGSTRUCT &= "ushort[8];"
- Next
- Local $TVERTEX = DllStructCreate($TAGSTRUCT)
- Local $ICOUNT = 1
- Local $TGRADIENT = DllStructCreate("ulong[" & $IPOINT & "]")
- For $I = $ISTART To $IEND
- DllStructSetData($TGRADIENT, 1, $ICOUNT - 1, $ICOUNT)
- DllStructSetData($TVERTEX, $ICOUNT, _WinAPI_LoWord($AVERTEX[$I][0]), 1)
- DllStructSetData($TVERTEX, $ICOUNT, _WinAPI_HiWord($AVERTEX[$I][0]), 2)
- DllStructSetData($TVERTEX, $ICOUNT, _WinAPI_LoWord($AVERTEX[$I][1]), 3)
- DllStructSetData($TVERTEX, $ICOUNT, _WinAPI_HiWord($AVERTEX[$I][1]), 4)
- DllStructSetData($TVERTEX, $ICOUNT, BitShift(_WinAPI_GetRValue($AVERTEX[$I][2]), -8), 5)
- DllStructSetData($TVERTEX, $ICOUNT, BitShift(_WinAPI_GetGValue($AVERTEX[$I][2]), -8), 6)
- DllStructSetData($TVERTEX, $ICOUNT, BitShift(_WinAPI_GetBValue($AVERTEX[$I][2]), -8), 7)
- DllStructSetData($TVERTEX, $ICOUNT, 0, 8)
- $ICOUNT += 1
- Next
- Local $ARET = DllCall("gdi32.dll", "bool", "GdiGradientFill", "handle", $HDC, "struct*", $TVERTEX, "ulong", $IPOINT, "struct*", $TGRADIENT, "ulong", 1, "ulong", $IMODE)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_GRADIENTFILL
- Func _WinAPI_InflateRect(ByRef $TRECT, $IDX, $IDY)
- Local $ARET = DllCall("user32.dll", "bool", "InflateRect", "struct*", $TRECT, "int", $IDX, "int", $IDY)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_INFLATERECT
- Func _WinAPI_IntersectClipRect($HDC, $TRECT)
- Local $ARET = DllCall("gdi32.dll", "int", "IntersectClipRect", "handle", $HDC, "int", DllStructGetData($TRECT, 1), "int", DllStructGetData($TRECT, 2), "int", DllStructGetData($TRECT, 3), "int", DllStructGetData($TRECT, 4))
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_INTERSECTCLIPRECT
- Func _WinAPI_IntersectRect($TRECT1, $TRECT2)
- Local $TRECT = DllStructCreate($TAGRECT)
- Local $ARET = DllCall("user32.dll", "bool", "IntersectRect", "struct*", $TRECT, "struct*", $TRECT1, "struct*", $TRECT2)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TRECT
- EndFunc ;==>_WINAPI_INTERSECTRECT
- Func _WinAPI_InvalidateRgn($HWND, $HRGN = 0, $BERASE = True)
- Local $ARET = DllCall("user32.dll", "bool", "InvalidateRgn", "hwnd", $HWND, "handle", $HRGN, "bool", $BERASE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_INVALIDATERGN
- Func _WinAPI_InvertANDBitmap($HBITMAP, $BDELETE = False)
- Local $TBITMAP = DllStructCreate($TAGBITMAP)
- If Not _WinAPI_GetObject($HBITMAP, DllStructGetSize($TBITMAP), $TBITMAP) Or (DllStructGetData($TBITMAP, "bmBitsPixel") <> 1) Then
- Return SetError(@error + 10, @extended, 0)
- EndIf
- Local $HRESULT = _WinAPI_CreateDIB(DllStructGetData($TBITMAP, "bmWidth"), DllStructGetData($TBITMAP, "bmHeight"), 1)
- If Not $HRESULT Then Return SetError(@error, @extended, 0)
- Local $HSRCDC = _WinAPI_CreateCompatibleDC(0)
- Local $HSRCSV = _WinAPI_SelectObject($HSRCDC, $HBITMAP)
- Local $HDSTDC = _WinAPI_CreateCompatibleDC(0)
- Local $HDSTSV = _WinAPI_SelectObject($HDSTDC, $HRESULT)
- _WinAPI_BitBlt($HDSTDC, 0, 0, DllStructGetData($TBITMAP, "bmWidth"), DllStructGetData($TBITMAP, "bmHeight"), $HSRCDC, 0, 0, 3342344)
- _WinAPI_SelectObject($HSRCDC, $HSRCSV)
- _WinAPI_DeleteDC($HSRCDC)
- _WinAPI_SelectObject($HDSTDC, $HDSTSV)
- _WinAPI_DeleteDC($HDSTDC)
- If $BDELETE Then
- _WinAPI_DeleteObject($HBITMAP)
- EndIf
- Return $HRESULT
- EndFunc ;==>_WINAPI_INVERTANDBITMAP
- Func _WinAPI_InvertColor($ICOLOR)
- If $ICOLOR = -1 Then Return 0
- Return 16777215 - BitAND($ICOLOR, 16777215)
- EndFunc ;==>_WINAPI_INVERTCOLOR
- Func _WinAPI_InvertRect($HDC, ByRef $TRECT)
- Local $ARET = DllCall("user32.dll", "bool", "InvertRect", "handle", $HDC, "struct*", $TRECT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_INVERTRECT
- Func _WinAPI_InvertRgn($HDC, $HRGN)
- Local $ARET = DllCall("gdi32.dll", "bool", "InvertRgn", "handle", $HDC, "handle", $HRGN)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_INVERTRGN
- Func _WinAPI_IsRectEmpty(ByRef $TRECT)
- Local $ARET = DllCall("user32.dll", "bool", "IsRectEmpty", "struct*", $TRECT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_ISRECTEMPTY
- Func _WinAPI_LineDDA($IX1, $IY1, $IX2, $IY2, $PLINEPROC, $PDATA = 0)
- Local $ARET = DllCall("gdi32.dll", "bool", "LineDDA", "int", $IX1, "int", $IY1, "int", $IX2, "int", $IY2, "ptr", $PLINEPROC, "lparam", $PDATA)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_LINEDDA
- Func _WinAPI_LineTo($HDC, $IX, $IY)
- Local $ARESULT = DllCall("gdi32.dll", "bool", "LineTo", "handle", $HDC, "int", $IX, "int", $IY)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_LineTo
- Func _WinAPI_LockWindowUpdate($HWND)
- Local $ARET = DllCall("user32.dll", "bool", "LockWindowUpdate", "hwnd", $HWND)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_LOCKWINDOWUPDATE
- Func _WinAPI_LPtoDP($HDC, ByRef $TPOINT, $ICOUNT = 1)
- Local $ARET = DllCall("gdi32.dll", "bool", "LPtoDP", "handle", $HDC, "struct*", $TPOINT, "int", $ICOUNT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_LPTODP
- Func _WinAPI_MaskBlt($HDESTDC, $IXDEST, $IYDEST, $IWIDTH, $IHEIGHT, $HSRCDC, $IXSRC, $IYSRC, $HMASK, $IXMASK, $IYMASK, $IROP)
- Local $ARET = DllCall("gdi32.dll", "bool", "MaskBlt", "handle", $HDESTDC, "int", $IXDEST, "int", $IYDEST, "int", $IWIDTH, "int", $IHEIGHT, "hwnd", $HSRCDC, "int", $IXSRC, "int", $IYSRC, "handle", $HMASK, "int", $IXMASK, "int", $IYMASK, "dword", $IROP)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_MASKBLT
- Func _WinAPI_ModifyWorldTransform($HDC, ByRef $TXFORM, $IMODE)
- Local $ARET = DllCall("gdi32.dll", "bool", "ModifyWorldTransform", "handle", $HDC, "struct*", $TXFORM, "dword", $IMODE)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_MODIFYWORLDTRANSFORM
- Func _WinAPI_MonitorFromPoint(ByRef $TPOINT, $IFLAG = 1)
- If DllStructGetSize($TPOINT) <> 8 Then Return SetError(@error + 10, @extended, 0)
- Local $ARET = DllCall("user32.dll", "handle", "MonitorFromPoint", "struct", $TPOINT, "dword", $IFLAG)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_MONITORFROMPOINT
- Func _WinAPI_MonitorFromRect(ByRef $TRECT, $IFLAG = 1)
- Local $ARET = DllCall("user32.dll", "ptr", "MonitorFromRect", "struct*", $TRECT, "dword", $IFLAG)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_MONITORFROMRECT
- Func _WinAPI_MonitorFromWindow($HWND, $IFLAG = 1)
- Local $ARET = DllCall("user32.dll", "handle", "MonitorFromWindow", "hwnd", $HWND, "dword", $IFLAG)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_MONITORFROMWINDOW
- Func _WinAPI_MoveTo($HDC, $IX, $IY)
- Local $ARESULT = DllCall("gdi32.dll", "bool", "MoveToEx", "handle", $HDC, "int", $IX, "int", $IY, "ptr", 0)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARESULT[0]
- EndFunc ;==>_WinAPI_MoveTo
- Func _WinAPI_MoveToEx($HDC, $IX, $IY)
- Local $TPOINT = DllStructCreate($TAGPOINT)
- Local $ARET = DllCall("gdi32.dll", "bool", "MoveToEx", "handle", $HDC, "int", $IX, "int", $IY, "struct*", $TPOINT)
- If @error Or Not $ARET[0] Then Return SetError(@error + 10, @extended, 0)
- Return $TPOINT
- EndFunc ;==>_WINAPI_MOVETOEX
- Func _WinAPI_OffsetClipRgn($HDC, $IXOFFSET, $IYOFFSET)
- Local $ARET = DllCall("gdi32.dll", "int", "OffsetClipRgn", "handle", $HDC, "int", $IXOFFSET, "int", $IYOFFSET)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_OFFSETCLIPRGN
- Func _WinAPI_OffsetPoints(ByRef $APOINT, $IXOFFSET, $IYOFFSET, $ISTART = 0, $IEND = -1)
- If __CHECKERRORARRAYBOUNDS($APOINT, $ISTART, $IEND, 2) Then Return SetError(@error + 10, @extended, 0)
- If UBound($APOINT, $UBOUND_COLUMNS) < 2 Then Return SetError(13, 0, 0)
- For $I = $ISTART To $IEND
- $APOINT[$I][0] += $IXOFFSET
- $APOINT[$I][1] += $IYOFFSET
- Next
- Return 1
- EndFunc ;==>_WINAPI_OFFSETPOINTS
- Func _WinAPI_OffsetRect(ByRef $TRECT, $IDX, $IDY)
- Local $ARET = DllCall("user32.dll", "bool", "OffsetRect", "struct*", $TRECT, "int", $IDX, "int", $IDY)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_OFFSETRECT
- Func _WinAPI_OffsetRgn($HRGN, $IXOFFSET, $IYOFFSET)
- Local $ARET = DllCall("gdi32.dll", "int", "OffsetRgn", "handle", $HRGN, "int", $IXOFFSET, "int", $IYOFFSET)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_OFFSETRGN
- Func _WinAPI_OffsetWindowOrg($HDC, $IXOFFSET, $IYOFFSET)
- $__G_VEXT = DllStructCreate($TAGPOINT)
- Local $ARET = DllCall("gdi32.dll", "bool", "OffsetWindowOrgEx", "handle", $HDC, "int", $IXOFFSET, "int", $IYOFFSET, "struct*", $__G_VEXT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_OFFSETWINDOWORG
- Func _WinAPI_PaintDesktop($HDC)
- Local $ARET = DllCall("user32.dll", "bool", "PaintDesktop", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PAINTDESKTOP
- Func _WinAPI_PaintRgn($HDC, $HRGN)
- Local $ARET = DllCall("gdi32.dll", "bool", "PaintRgn", "handle", $HDC, "handle", $HRGN)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PAINTRGN
- Func _WinAPI_PatBlt($HDC, $IX, $IY, $IWIDTH, $IHEIGHT, $IROP)
- Local $ARET = DllCall("gdi32.dll", "bool", "PatBlt", "handle", $HDC, "int", $IX, "int", $IY, "int", $IWIDTH, "int", $IHEIGHT, "dword", $IROP)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PATBLT
- Func _WinAPI_PathToRegion($HDC)
- Local $ARET = DllCall("gdi32.dll", "handle", "PathToRegion", "handle", $HDC)
- If @error Then Return SetError(@error, @extended, 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PATHTOREGION
- Func _WinAPI_PlayEnhMetaFile($HDC, $HEMF, ByRef $TRECT)
- Local $ARET = DllCall("gdi32.dll", "bool", "PlayEnhMetaFile", "handle", $HDC, "handle", $HEMF, "struct*", $TRECT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PLAYENHMETAFILE
- Func _WinAPI_PlgBlt($HDESTDC, Const ByRef $APOINT, $HSRCDC, $IXSRC, $IYSRC, $IWIDTH, $IHEIGHT, $HMASK = 0, $IXMASK = 0, $IYMASK = 0)
- If (UBound($APOINT) < 3) Or (UBound($APOINT, $UBOUND_COLUMNS) < 2) Then Return SetError(12, 0, False)
- Local $TPOINTS = DllStructCreate("long[2];long[2];long[2]")
- For $I = 0 To 2
- For $J = 0 To 1
- DllStructSetData($TPOINTS, $I + 1, $APOINT[$I][$J], $J + 1)
- Next
- Next
- Local $ARET = DllCall("gdi32.dll", "bool", "PlgBlt", "handle", $HDESTDC, "struct*", $TPOINTS, "handle", $HSRCDC, "int", $IXSRC, "int", $IYSRC, "int", $IWIDTH, "int", $IHEIGHT, "handle", $HMASK, "int", $IXMASK, "int", $IYMASK)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PLGBLT
- Func _WinAPI_PolyBezier($HDC, Const ByRef $APOINT, $ISTART = 0, $IEND = -1)
- If __CHECKERRORARRAYBOUNDS($APOINT, $ISTART, $IEND, 2, 2) Then Return SetError(@error + 10, @extended, False)
- Local $IPOINT = 1 + 3 * Floor(($IEND - $ISTART) / 3)
- If $IPOINT < 1 Then Return SetError(15, 0, False)
- $IEND = $ISTART + $IPOINT - 1
- Local $TAGSTRUCT = ""
- For $I = $ISTART To $IEND
- $TAGSTRUCT &= "long[2];"
- Next
- Local $TPOINT = DllStructCreate($TAGSTRUCT)
- Local $ICOUNT = 0
- For $I = $ISTART To $IEND
- $ICOUNT += 1
- For $J = 0 To 1
- DllStructSetData($TPOINT, $ICOUNT, $APOINT[$I][$J], $J + 1)
- Next
- Next
- Local $ARET = DllCall("gdi32.dll", "bool", "PolyBezier", "handle", $HDC, "struct*", $TPOINT, "dword", $IPOINT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_POLYBEZIER
- Func _WinAPI_PolyBezierTo($HDC, Const ByRef $APOINT, $ISTART = 0, $IEND = -1)
- If __CHECKERRORARRAYBOUNDS($APOINT, $ISTART, $IEND, 2, 2) Then Return SetError(@error + 10, @extended, False)
- Local $IPOINT = 3 * Floor(($IEND - $ISTART + 1) / 3)
- If $IPOINT < 3 Then Return SetError(15, 0, False)
- $IEND = $ISTART + $IPOINT - 1
- Local $TAGSTRUCT = ""
- For $I = $ISTART To $IEND
- $TAGSTRUCT &= "long[2];"
- Next
- Local $TPOINT = DllStructCreate($TAGSTRUCT)
- Local $ICOUNT = 0
- For $I = $ISTART To $IEND
- $ICOUNT += 1
- For $J = 0 To 1
- DllStructSetData($TPOINT, $ICOUNT, $APOINT[$I][$J], $J + 1)
- Next
- Next
- Local $ARET = DllCall("gdi32.dll", "bool", "PolyBezierTo", "handle", $HDC, "struct*", $TPOINT, "dword", $IPOINT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_POLYBEZIERTO
- Func _WinAPI_PolyDraw($HDC, Const ByRef $APOINT, $ISTART = 0, $IEND = -1)
- If __CHECKERRORARRAYBOUNDS($APOINT, $ISTART, $IEND, 2) Then Return SetError(@error + 10, @extended, 0)
- If UBound($APOINT, $UBOUND_COLUMNS) < 3 Then Return SetError(13, 0, False)
- Local $IPOINT = $IEND - $ISTART + 1
- Local $TAGSTRUCT = ""
- For $I = $ISTART To $IEND
- $TAGSTRUCT &= "long[2];"
- Next
- Local $TPOINT = DllStructCreate($TAGSTRUCT)
- Local $TTYPES = DllStructCreate("byte[" & $IPOINT & "]")
- Local $ICOUNT = 0
- For $I = $ISTART To $IEND
- $ICOUNT += 1
- For $J = 0 To 1
- DllStructSetData($TPOINT, $ICOUNT, $APOINT[$I][$J], $J + 1)
- Next
- DllStructSetData($TTYPES, 1, $APOINT[$I][2], $ICOUNT)
- Next
- Local $ARET = DllCall("gdi32.dll", "bool", "PolyDraw", "handle", $HDC, "struct*", $TPOINT, "struct*", $TTYPES, "dword", $IPOINT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_POLYDRAW
- Func _WinAPI_Polygon($HDC, Const ByRef $APOINT, $ISTART = 0, $IEND = -1)
- If __CHECKERRORARRAYBOUNDS($APOINT, $ISTART, $IEND, 2, 2) Then Return SetError(@error + 10, @extended, False)
- Local $TAGSTRUCT = ""
- For $I = $ISTART To $IEND
- $TAGSTRUCT &= "int[2];"
- Next
- Local $TDATA = DllStructCreate($TAGSTRUCT)
- Local $ICOUNT = 1
- For $I = $ISTART To $IEND
- For $J = 0 To 1
- DllStructSetData($TDATA, $ICOUNT, $APOINT[$I][$J], $J + 1)
- Next
- $ICOUNT += 1
- Next
- Local $ARET = DllCall("gdi32.dll", "bool", "Polygon", "handle", $HDC, "struct*", $TDATA, "int", $ICOUNT - 1)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_POLYGON
- Func _WinAPI_PtInRectEx($IX, $IY, $ILEFT, $ITOP, $IRIGHT, $IBOTTOM)
- Local $TRECT = _WinAPI_CreateRect($ILEFT, $ITOP, $IRIGHT, $IBOTTOM)
- Local $TPOINT = _WinAPI_CreatePoint($IX, $IY)
- Local $ARET = DllCall("user32.dll", "bool", "PtInRect", "struct*", $TRECT, "struct", $TPOINT)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PTINRECTEX
- Func _WinAPI_PtInRegion($HRGN, $IX, $IY)
- Local $ARET = DllCall("gdi32.dll", "bool", "PtInRegion", "handle", $HRGN, "int", $IX, "int", $IY)
- If @error Then Return SetError(@error, @extended, False)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PTINREGION
- Func _WinAPI_PtVisible($HDC, $IX, $IY)
- Local $ARET = DllCall("gdi32.dll", "bool", "PtVisible", "handle", $HDC, "int", $IX, "int", $IY)
- If @error Then Return SetError(@error + 10, @extended, 0)
- If $ARET[0] = -1 Then Return SetError(10, $ARET[0], 0)
- Return $ARET[0]
- EndFunc ;==>_WINAPI_PTVISIBLE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement