Commits

Nathan Durnan committed 2ad31d3

Pick up latest changes to WinAPIEx (Version 3.7 for AutoIt 3.3.8.0)
See http://www.autoitscript.com/forum/topic/98712-winapiex-udf/ for source and history.

Comments (0)

Files changed (4)

-ProcessExitCode.au3,1325789908.23
-resources.au3,1308653282.0
-DriveTools.au3,1310081687.81
-GlobalFSO.au3,1325637915.29
-SMTP_Mailer.au3,1325726068.67
-APIConstants.au3,1325192176.91
-README.rst,1325790530.38
-WinAPIEx.au3,1325192176.91
-APIErrors.au3,1325192176.91
-GlobalWMI.au3,1310065421.17
-.hgignore,1325784547.36
-GlobalCOM_ErrHandler.au3,1325727958.85
-.hgtimestamp,1325793381.11
+{
+"Version": "0.2.2",
+"FileData":{
+".hgignore": {"timestamp": 1325784547.36},
+"APIConstants.au3": {"timestamp": 1332638286.8},
+"APIErrors.au3": {"timestamp": 1332638286.8},
+"DriveTools.au3": {"timestamp": 1310081687.81},
+"GlobalCOM_ErrHandler.au3": {"timestamp": 1325727958.85},
+"GlobalFSO.au3": {"timestamp": 1325637915.29},
+"GlobalWMI.au3": {"timestamp": 1310065421.17},
+"ProcessExitCode.au3": {"timestamp": 1325789908.23},
+"README.rst": {"timestamp": 1325790530.38},
+"resources.au3": {"timestamp": 1308653282.0},
+"SMTP_Mailer.au3": {"timestamp": 1325726068.67},
+"WinAPIEx.au3": {"timestamp": 1332638286.8},
+"TimestampMod_LastRecord": {"timestamp": 0}
+}
+}
     Filename:       APIConstants.au3
     Description:    Constants that can be used with WinAPIEx UDF library
     Author:         Yashied
-    Version:        3.6 / 3.3.8.0
+    Version:        3.7 / 3.3.8.0
     Requirements:   AutoIt v3.3 +, Developed/Tested on Windows XP Pro Service Pack 2 and Windows Vista/7
     Uses:           BorderConstants.au3, Constants.au3, FileConstants.au3, FontConstants.au3, FrameConstants.au3, MemoryConstants.au3, MenuConstants.au3, ProcessConstants.au3, SecurityConstants.au3, WindowsConstants.au3
     Note:           -
 
 ;Global Const $DELETE = 0x00010000
 ;Global Const $READ_CONTROL = 0x00020000
-;Global Const $SYNCHRONIZE = 0x00100000
 ;Global Const $WRITE_DAC = 0x00040000
 ;Global Const $WRITE_OWNER = 0x00080000
+;Global Const $SYNCHRONIZE = 0x00100000
+Global Const $ACCESS_SYSTEM_SECURITY = 0x01000000
 
 ;Global Const $STANDARD_RIGHTS_ALL = BitOR($DELETE, $READ_CONTROL, $SYNCHRONIZE, $WRITE_DAC, $WRITE_OWNER)
 ;Global Const $STANDARD_RIGHTS_EXECUTE = $READ_CONTROL
 Global Const $ASSOCF_INIT_IGNOREUNKNOWN = 0x00000400
 
 ; ===============================================================================================================================
+; _WinAPI_BackupRead(), _WinAPI_BackupWrite()
+; ===============================================================================================================================
+
+Global Const $BACKUP_ALTERNATE_DATA = 0x00000004
+Global Const $BACKUP_DATA = 0x00000001
+Global Const $BACKUP_EA_DATA = 0x00000002
+Global Const $BACKUP_LINK = 0x00000005
+Global Const $BACKUP_OBJECT_ID = 0x00000007
+Global Const $BACKUP_PROPERTY_DATA = 0x00000006
+Global Const $BACKUP_REPARSE_DATA = 0x00000008
+Global Const $BACKUP_SECURITY_DATA = 0x00000003
+Global Const $BACKUP_SPARSE_BLOCK = 0x00000009
+Global Const $BACKUP_TXFS_DATA = 0x0000000A
+
+; ===============================================================================================================================
 ; _WinAPI_BeginBufferedPaint()
 ; ===============================================================================================================================
 
 Global Const $FRERR_BUFFERLENGTHZERO = 0x4001
 
 ; ===============================================================================================================================
+; _WinAPI_CompareString()
+; ===============================================================================================================================
+
+Global Const $LINGUISTIC_IGNORECASE = 0x00000010
+Global Const $LINGUISTIC_IGNOREDIACRITIC = 0x00000020
+
+Global Const $NORM_IGNORECASE = 0x00000001
+Global Const $NORM_IGNOREKANATYPE = 0x00010000
+Global Const $NORM_IGNORENONSPACE = 0x00000002
+Global Const $NORM_IGNORESYMBOLS = 0x00000004
+Global Const $NORM_IGNOREWIDTH = 0x00020000
+Global Const $NORM_LINGUISTIC_CASING = 0x08000000
+
+Global Const $SORT_DIGITSASNUMBERS = 0x00000008
+Global Const $SORT_STRINGSORT = 0x00001000
+
+Global Const $CSTR_LESS_THAN = 1
+Global Const $CSTR_EQUAL = 2
+Global Const $CSTR_GREATER_THAN = 3
+
+; ===============================================================================================================================
 ; _WinAPI_CompressBitmapBits()
 ; ===============================================================================================================================
 
 Global Const $COMPRESSION_BITMAP_JPEG = 1
 
 ; ===============================================================================================================================
+; _WinAPI_CompressBuffer(), _WinAPI_DecompressBuffer(), _WinAPI_GetCompression(), _WinAPI_SetCompression()
+; ===============================================================================================================================
+
+Global Const $COMPRESSION_FORMAT_NONE = 0x0000
+Global Const $COMPRESSION_FORMAT_DEFAULT = 0x0001
+Global Const $COMPRESSION_FORMAT_LZNT1 = 0x0002
+Global Const $COMPRESSION_FORMAT_XPRESS = 0x0003
+Global Const $COMPRESSION_FORMAT_XPRESS_HUFF = 0x0004
+
+Global Const $COMPRESSION_ENGINE_STANDARD = 0x0000
+Global Const $COMPRESSION_ENGINE_MAXIMUM = 0x0100
+Global Const $COMPRESSION_ENGINE_HIBER = 0x0200
+
+; ===============================================================================================================================
 ; _WinAPI_CopyFileEx(), _WinAPI_MoveFileEx()
 ; ===============================================================================================================================
 
 Global Const $DIB_RGB_COLORS = 0
 
 ; ===============================================================================================================================
+; _WinAPI_CreateColorAdjustment()
+; ===============================================================================================================================
+
+Global Const $CA_NEGATIVE = 0x01
+Global Const $CA_LOG_FILTER = 0x02
+
+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
+
+; ===============================================================================================================================
 ; _WinAPI_CreateDesktop(), _WinAPI_OpenDesktop(), _WinAPI_OpenInputDesktop()
 ; ===============================================================================================================================
 
 Global Const $FILE_CREATE_PIPE_INSTANCE = $FILE_APPEND_DATA
 Global Const $FILE_LIST_DIRECTORY = $FILE_READ_DATA
 Global Const $FILE_TRAVERSE = $FILE_EXECUTE
-Global Const $FILE_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, $SYNCHRONIZE, $FILE_APPEND_DATA, $FILE_DELETE_CHILD, $FILE_EXECUTE, $FILE_READ_ATTRIBUTES, $FILE_READ_DATA, $FILE_READ_EA, $FILE_WRITE_ATTRIBUTES, $FILE_WRITE_DATA, $FILE_WRITE_EA)
+Global Const $FILE_ALL_ACCESS = BitOR($STANDARD_RIGHTS_ALL, $FILE_APPEND_DATA, $FILE_DELETE_CHILD, $FILE_EXECUTE, $FILE_READ_ATTRIBUTES, $FILE_READ_DATA, $FILE_READ_EA, $FILE_WRITE_ATTRIBUTES, $FILE_WRITE_DATA, $FILE_WRITE_EA)
 
 ;Global Const $FILE_SHARE_READ = 0x01
 ;Global Const $FILE_SHARE_WRITE = 0x02
 Global Const $WINDING = 2
 
 ; ===============================================================================================================================
-; _WinAPI_CreateProcess()
+; _WinAPI_CreateProcess(), _WinAPI_CreateProcessWithToken()
 ; ===============================================================================================================================
 
 Global Const $CREATE_BREAKAWAY_FROM_JOB = 0x01000000
 Global Const $CREATE_SUSPENDED = 0x00000004
 Global Const $CREATE_UNICODE_ENVIRONMENT = 0x00000400
 
+;Global Const $LOGON_WITH_PROFILE = 0x01
+;Global Const $LOGON_NETCREDENTIALS_ONLY = 0x02
+
 ; ===============================================================================================================================
 ; _WinAPI_CreateWindowStation(), _WinAPI_OpenWindowStation()
 ; ===============================================================================================================================
 ;~Global Const $DUPLICATE_SAME_ACCESS = 0x02
 
 ; ===============================================================================================================================
+; _WinAPI_DuplicateTokenEx()
+; ===============================================================================================================================
+
+;Global Const $SecurityAnonymous = 0
+;Global Const $SecurityIdentification = 1
+;Global Const $SecurityImpersonation = 2
+;Global Const $SecurityDelegation = 3
+
+;Global Const $TokenPrimary = 1
+;Global Const $TokenImpersonation = 2
+
+; ===============================================================================================================================
 ; _WinAPI_DwmGetWindowAttribute(), _WinAPI_DwmSetWindowAttribute()
 ; ===============================================================================================================================
 
 ;Global Const $RGN_COPY = 5
 
 ; ===============================================================================================================================
+; _WinAPI_FileEncryptionStatus()
+; ===============================================================================================================================
+
+Global Const $FILE_ENCRYPTABLE = 0
+Global Const $FILE_IS_ENCRYPTED = 1
+Global Const $FILE_READ_ONLY = 8
+Global Const $FILE_ROOT_DIR = 3
+Global Const $FILE_SYSTEM_ATTR = 2
+Global Const $FILE_SYSTEM_DIR = 4
+Global Const $FILE_SYSTEM_NOT_SUPPORT = 6
+Global Const $FILE_UNKNOWN = 5
+Global Const $FILE_USER_DISALLOWED = 7
+
+; ===============================================================================================================================
 ; _WinAPI_FindResource(), _WinAPI_FindResourceEx(), _WinAPI_UpdateResource()
 ; ===============================================================================================================================
 
 Global Const $GCL_WNDPROC = -24
 
 ; ===============================================================================================================================
-; _WinAPI_GetCompression(), _WinAPI_SetCompression()
-; ===============================================================================================================================
-
-Global Const $COMPRESSION_FORMAT_NONE = 0
-Global Const $COMPRESSION_FORMAT_DEFAULT = 1
-Global Const $COMPRESSION_FORMAT_LZNT1 = 2
-
-; ===============================================================================================================================
 ; _WinAPI_GetCurrentHwProfile()
 ; ===============================================================================================================================
 
 Global Const $FILE_TYPE_UNKNOWN = 0x0000
 
 ; ===============================================================================================================================
+; _WinAPI_GetFileVersionInfo()
+; ===============================================================================================================================
+
+Global Const $FILE_VER_GET_LOCALISED = 0x01
+Global Const $FILE_VER_GET_NEUTRAL = 0x02
+Global Const $FILE_VER_GET_PREFETCHED = 0x04
+
+; ===============================================================================================================================
 ; _WinAPI_GetFinalPathNameByHandle()
 ; ===============================================================================================================================
 
 Global Const $VOLUME_NAME_NT = 0x2
 
 ; ===============================================================================================================================
+; _WinAPI_GetGeoInfo()
+; ===============================================================================================================================
+
+Global Const $GEO_NATION = 1
+Global Const $GEO_LATITUDE = 2
+Global Const $GEO_LONGITUDE = 3
+Global Const $GEO_ISO2 = 4
+Global Const $GEO_ISO3 = 5
+Global Const $GEO_RFC1766 = 6
+Global Const $GEO_LCID = 7
+Global Const $GEO_FRIENDLYNAME = 8
+Global Const $GEO_OFFICIALNAME = 9
+Global Const $GEO_TIMEZONES = 10
+Global Const $GEO_OFFICIALLANGUAGES = 11
+Global Const $GEO_ISO_UN_NUMBER = 12
+Global Const $GEO_PARENT = 13
+
+; ===============================================================================================================================
+; _WinAPI_GetGlyphOutline()
+; ===============================================================================================================================
+
+Global Const $GGO_BEZIER = 3
+Global Const $GGO_BITMAP = 1
+Global Const $GGO_GLYPH_INDEX = 0x0080
+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 = 0x0100
+
+; ===============================================================================================================================
 ; _WinAPI_GetGraphicsMode(), _WinAPI_SetGraphicsMode()
 ; ===============================================================================================================================
 
 ; _WinAPI_GetModuleHandleEx()
 ; ===============================================================================================================================
 
-Global Const $GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 0x00000004
-Global Const $GET_MODULE_HANDLE_EX_FLAG_PIN = 0x00000001
-Global Const $GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 0x00000002
-Global Const $GET_MODULE_HANDLE_EX_FLAG_DEFAULT = 0x00000000
+Global Const $GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 0x0004
+Global Const $GET_MODULE_HANDLE_EX_FLAG_PIN = 0x0001
+Global Const $GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 0x0002
+Global Const $GET_MODULE_HANDLE_EX_FLAG_DEFAULT = 0x0000
 
 ; ===============================================================================================================================
 ; _WinAPI_GetPriorityClass(), _WinAPI_SetPriorityClass()
 ;Global Const $STARTF_USESTDHANDLES = 0x00000100
 
 ; ===============================================================================================================================
+; _WinAPI_GetStretchBltMode(), _WinAPI_SetStretchBltMode()
+; ===============================================================================================================================
+
+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
+
+; ===============================================================================================================================
 ; _WinAPI_GetSysColor(), _WinAPI_SetSysColor()
 ; ===============================================================================================================================
 
 Global Const $UDF_RGB = 0
 
 ; ===============================================================================================================================
-; _WinAPI_GetUpdateRgn(), _WinAPI_GetWindowRgn(), etc.
-; ===============================================================================================================================
-
-;Global Const $COMPLEXREGION = 3
-;Global Const $NULLREGION = 1
-;Global Const $SIMPLEREGION = 2
-
-; ===============================================================================================================================
 ; _WinAPI_GetUserObjectInformation(), _WinAPI_SetUserObjectInformation()
 ; ===============================================================================================================================
 
 Global Const $VER_NT_WORKSTATION = 0x0000001
 
 ; ===============================================================================================================================
+; _WinAPI_GetVolumeInformation(), _WinAPI_GetVolumeInformationByHandle()
+; ===============================================================================================================================
+
+Global Const $FILE_CASE_PRESERVED_NAMES = 0x00000002
+Global Const $FILE_CASE_SENSITIVE_SEARCH = 0x00000001
+Global Const $FILE_FILE_COMPRESSION = 0x00000010
+Global Const $FILE_NAMED_STREAMS = 0x00040000
+Global Const $FILE_PERSISTENT_ACLS = 0x00000008
+Global Const $FILE_READ_ONLY_VOLUME = 0x00080000
+Global Const $FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000
+Global Const $FILE_SUPPORTS_ENCRYPTION = 0x00020000
+Global Const $FILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000
+Global Const $FILE_SUPPORTS_HARD_LINKS = 0x00400000
+Global Const $FILE_SUPPORTS_OBJECT_IDS = 0x00010000
+Global Const $FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000
+Global Const $FILE_SUPPORTS_REPARSE_POINTS = 0x00000080
+Global Const $FILE_SUPPORTS_SPARSE_FILES = 0x00000040
+Global Const $FILE_SUPPORTS_TRANSACTIONS = 0x00200000
+Global Const $FILE_SUPPORTS_USN_JOURNAL = 0x02000000
+Global Const $FILE_UNICODE_ON_DISK = 0x00000004
+Global Const $FILE_VOLUME_IS_COMPRESSED = 0x00008000
+Global Const $FILE_VOLUME_QUOTAS = 0x00000020
+
+; ===============================================================================================================================
 ; _WinAPI_GetWindowDisplayAffinity(), _WinAPI_SetWindowDisplayAffinity()
 ; ===============================================================================================================================
 
 ;Global Const $IDYES = 6
 
 ; ===============================================================================================================================
+; _WinAPI_MonitorFrom*()
+; ===============================================================================================================================
+
+Global Const $MONITOR_DEFAULTTONEAREST = 0
+Global Const $MONITOR_DEFAULTTONULL = 1
+Global Const $MONITOR_DEFAULTTOPRIMARY = 2
+
+; ===============================================================================================================================
 ; _WinAPI_OpenMutex()
 ; ===============================================================================================================================
 
 Global Const $MUTEX_MODIFY_STATE = 0x0001
-Global Const $MUTEX_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, $SYNCHRONIZE, $MUTEX_MODIFY_STATE)
+Global Const $MUTEX_ALL_ACCESS = BitOR($STANDARD_RIGHTS_ALL, $MUTEX_MODIFY_STATE)
 
 ; ===============================================================================================================================
 ; _WinAPI_OpenJobObject(), _WinAPI_QueryInformationJobObject(), _WinAPI_SetInformationJobObject()
 Global Const $JOB_OBJECT_SET_ATTRIBUTES = 0x0002
 Global Const $JOB_OBJECT_SET_SECURITY_ATTRIBUTES = 0x0010
 Global Const $JOB_OBJECT_TERMINATE = 0x0008
-Global Const $JOB_OBJECT_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, $SYNCHRONIZE, $JOB_OBJECT_ASSIGN_PROCESS, $JOB_OBJECT_QUERY, $JOB_OBJECT_SET_ATTRIBUTES, $JOB_OBJECT_SET_SECURITY_ATTRIBUTES, $JOB_OBJECT_TERMINATE)
+Global Const $JOB_OBJECT_ALL_ACCESS = BitOR($STANDARD_RIGHTS_ALL, $JOB_OBJECT_ASSIGN_PROCESS, $JOB_OBJECT_QUERY, $JOB_OBJECT_SET_ATTRIBUTES, $JOB_OBJECT_SET_SECURITY_ATTRIBUTES, $JOB_OBJECT_TERMINATE)
 
 Global Const $JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008
 Global Const $JOB_OBJECT_LIMIT_AFFINITY = 0x00000010
 ;Global Const $PROCESS_VM_OPERATION = 0x0008
 ;Global Const $PROCESS_VM_READ = 0x0010
 ;Global Const $PROCESS_VM_WRITE = 0x0020
-;Global Const $PROCESS_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, $SYNCHRONIZE, $PROCESS_CREATE_PROCESS, $PROCESS_CREATE_THREAD, $PROCESS_DUP_HANDLE, $PROCESS_QUERY_INFORMATION, $PROCESS_SET_INFORMATION, $PROCESS_SET_QUOTA, $PROCESS_SET_SESSIONID, $PROCESS_SUSPEND_RESUME, $PROCESS_TERMINATE, $PROCESS_VM_OPERATION, $PROCESS_VM_READ, $PROCESS_VM_WRITE)
+;Global Const $PROCESS_ALL_ACCESS = BitOR($STANDARD_RIGHTS_ALL, $PROCESS_CREATE_PROCESS, $PROCESS_CREATE_THREAD, $PROCESS_DUP_HANDLE, $PROCESS_QUERY_INFORMATION, $PROCESS_SET_INFORMATION, $PROCESS_SET_QUOTA, $PROCESS_SET_SESSIONID, $PROCESS_SUSPEND_RESUME, $PROCESS_TERMINATE, $PROCESS_VM_OPERATION, $PROCESS_VM_READ, $PROCESS_VM_WRITE)
 
 ; ===============================================================================================================================
 ; _WinAPI_OpenProcessToken()
 
 Global Const $SEMAPHORE_MODIFY_STATE = 0x0002
 Global Const $SEMAPHORE_QUERY_STATE = 0x0001
-Global Const $SEMAPHORE_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, $SYNCHRONIZE, $SEMAPHORE_MODIFY_STATE, $SEMAPHORE_QUERY_STATE)
+Global Const $SEMAPHORE_ALL_ACCESS = BitOR($STANDARD_RIGHTS_ALL, $SEMAPHORE_MODIFY_STATE, $SEMAPHORE_QUERY_STATE)
 
 ; ===============================================================================================================================
 ; _WinAPI_PageSetupDlg()
 Global Const $WM_PSD_YAFULLPAGERECT = $WM_USER + 6
 
 ; ===============================================================================================================================
+; _WinAPI_ParseURL()
+; ===============================================================================================================================
+
+Global Const $URL_SCHEME_INVALID = -1
+Global Const $URL_SCHEME_UNKNOWN = 0
+Global Const $URL_SCHEME_FTP = 1
+Global Const $URL_SCHEME_HTTP = 2
+Global Const $URL_SCHEME_GOPHER = 3
+Global Const $URL_SCHEME_MAILTO = 4
+Global Const $URL_SCHEME_NEWS = 5
+Global Const $URL_SCHEME_NNTP = 6
+Global Const $URL_SCHEME_TELNET = 7
+Global Const $URL_SCHEME_WAIS = 8
+Global Const $URL_SCHEME_FILE = 9
+Global Const $URL_SCHEME_MK = 10
+Global Const $URL_SCHEME_HTTPS = 11
+Global Const $URL_SCHEME_SHELL = 12
+Global Const $URL_SCHEME_SNEWS = 13
+Global Const $URL_SCHEME_LOCAL = 14
+Global Const $URL_SCHEME_JAVASCRIPT = 15
+Global Const $URL_SCHEME_VBSCRIPT = 16
+Global Const $URL_SCHEME_ABOUT = 17
+Global Const $URL_SCHEME_RES = 18
+Global Const $URL_SCHEME_MSSHELLROOTED = 19
+Global Const $URL_SCHEME_MSSHELLIDLIST = 20
+Global Const $URL_SCHEME_MSHELP = 21
+Global Const $URL_SCHEME_MSSHELLDEVICE = 22
+Global Const $URL_SCHEME_WILDCARD = 23
+Global Const $URL_SCHEME_SEARCH_MS = 24
+Global Const $URL_SCHEME_SEARCH = 25
+Global Const $URL_SCHEME_KNOWNFOLDER = 26
+
+; ===============================================================================================================================
 ; _WinAPI_PatBlt(), _WinAPI_StretchBlt()
 ; ===============================================================================================================================
 
 Global Const $PD_RESULT_PRINT = 1
 
 ; ===============================================================================================================================
+; _WinAPI_ReadDirectoryChanges()
+; ===============================================================================================================================
+
+Global Const $FILE_NOTIFY_CHANGE_FILE_NAME = 0x0001
+Global Const $FILE_NOTIFY_CHANGE_DIR_NAME = 0x0002
+Global Const $FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x0004
+Global Const $FILE_NOTIFY_CHANGE_SIZE = 0x0008
+Global Const $FILE_NOTIFY_CHANGE_LAST_WRITE = 0x0010
+Global Const $FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x0020
+Global Const $FILE_NOTIFY_CHANGE_CREATION = 0x0040
+Global Const $FILE_NOTIFY_CHANGE_SECURITY = 0x0100
+
+Global Const $FILE_ACTION_ADDED = 0x0001
+Global Const $FILE_ACTION_REMOVED = 0x0002
+Global Const $FILE_ACTION_MODIFIED = 0x0003
+Global Const $FILE_ACTION_RENAMED_OLD_NAME = 0x0004
+Global Const $FILE_ACTION_RENAMED_NEW_NAME = 0x0005
+
+; ===============================================================================================================================
 ; _WinAPI_RegisterApplicationRestart()
 ; ===============================================================================================================================
 
 Global Const $REPLACEFILE_IGNORE_ACL_ERRORS = 0x04
 
 ; ===============================================================================================================================
-; _WinAPI_ResizeBitmap(), _WinAPI_SetStretchBltMode()
-; ===============================================================================================================================
-
-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
-
-; ===============================================================================================================================
 ; _WinAPI_RestartDlg()
 ; ===============================================================================================================================
 
 ;Global Const $RESOURCETYPE_PRINT = 0x02
 
 ; ===============================================================================================================================
+; _WinAPI_ShellUserAuthenticationDlg()
+; ===============================================================================================================================
+
+Global Const $CREDUI_FLAGS_ALWAYS_SHOW_UI = 0x00000080
+Global Const $CREDUI_FLAGS_COMPLETE_USERNAME = 0x00000800
+Global Const $CREDUI_FLAGS_DO_NOT_PERSIST = 0x00000002
+Global Const $CREDUI_FLAGS_EXCLUDE_CERTIFICATES = 0x00000008
+Global Const $CREDUI_FLAGS_EXPECT_CONFIRMATION = 0x00020000
+Global Const $CREDUI_FLAGS_GENERIC_CREDENTIALS = 0x00040000
+Global Const $CREDUI_FLAGS_INCORRECT_PASSWORD = 0x00000001
+Global Const $CREDUI_FLAGS_KEEP_USERNAME = 0x00100000
+Global Const $CREDUI_FLAGS_PASSWORD_ONLY_OK = 0x00000200
+Global Const $CREDUI_FLAGS_PERSIST = 0x00001000
+Global Const $CREDUI_FLAGS_REQUEST_ADMINISTRATOR = 0x00000004
+Global Const $CREDUI_FLAGS_REQUIRE_CERTIFICATE = 0x00000010
+Global Const $CREDUI_FLAGS_REQUIRE_SMARTCARD = 0x00000100
+Global Const $CREDUI_FLAGS_SERVER_CREDENTIAL = 0x00004000
+Global Const $CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX = 0x00000040
+Global Const $CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS = 0x00080000
+Global Const $CREDUI_FLAGS_VALIDATE_USERNAME = 0x00000400
+
+; ===============================================================================================================================
+; _WinAPI_ShellUserAuthenticationDlgEx()
+; ===============================================================================================================================
+
+Global Const $CREDUIWIN_AUTHPACKAGE_ONLY = 0x00000010
+Global Const $CREDUIWIN_CHECKBOX = 0x00000002
+Global Const $CREDUIWIN_ENUMERATE_ADMINS = 0x00000100
+Global Const $CREDUIWIN_ENUMERATE_CURRENT_USER = 0x00000200
+Global Const $CREDUIWIN_GENERIC = 0x00000001
+Global Const $CREDUIWIN_IN_CRED_ONLY = 0x00000020
+Global Const $CREDUIWIN_SECURE_PROMPT = 0x00001000
+Global Const $CREDUIWIN_PACK_32_WOW = 0x10000000
+Global Const $CREDUIWIN_PREPROMPTING = 0x00002000
+
+;Global Const $CRED_PACK_GENERIC_CREDENTIALS = 0x04
+;Global Const $CRED_PACK_PROTECTED_CREDENTIALS = 0x01
+;Global Const $CRED_PACK_WOW_BUFFER = 0x02
+
+; ===============================================================================================================================
 ; _WinAPI_SystemParametersInfo()
 ; ===============================================================================================================================
 
 Global Const $UHID_All = BitOR($UHID_MB, $UHID_BIOS, $UHID_CPU, $UHID_HDD)
 
 ; ===============================================================================================================================
-; _WinAPI_UrlEscape()
-; ===============================================================================================================================
-
-Global Const $URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000
+; _WinAPI_UrlApplyScheme()
+; ===============================================================================================================================
+
+Global Const $URL_APPLY_DEFAULT = 0x01
+Global Const $URL_APPLY_GUESSSCHEME = 0x02
+Global Const $URL_APPLY_GUESSFILE = 0x04
+Global Const $URL_APPLY_FORCEAPPLY = 0x08
+
+; ===============================================================================================================================
+; _WinAPI_UrlCanonicalize(), _WinAPI_UrlCombine()
+; ===============================================================================================================================
+
+Global Const $URL_DONT_SIMPLIFY = 0x08000000
 Global Const $URL_ESCAPE_AS_UTF8 = 0x00040000
 Global Const $URL_ESCAPE_PERCENT = 0x00001000
-Global Const $URL_ESCAPE_SEGMENT_ONLY = 0x00002000
 Global Const $URL_ESCAPE_SPACES_ONLY = 0x04000000
+Global Const $URL_ESCAPE_UNSAFE = 0x20000000
+Global Const $URL_NO_META = 0x08000000
+Global Const $URL_PLUGGABLE_PROTOCOL = 0x40000000
+Global Const $URL_UNESCAPE = 0x10000000
 
 ; ===============================================================================================================================
 ; _WinAPI_UrlGetPart()
 Global Const $URLIS_URL = 0
 
 ; ===============================================================================================================================
-; _WinAPI_UrlUnescape()
-; ===============================================================================================================================
-
-Global Const $URL_DONT_UNESCAPE_EXTRA_INFO = 0x02000000
-
-; ===============================================================================================================================
 ; _WinAPI_VerQueryRoot()
 ; ===============================================================================================================================
 
 ;Global Const $VFT2_UNKNOWN = 0x00000000
 
 ; ===============================================================================================================================
+; _WinAPI_*Rgn*()
+; ===============================================================================================================================
+
+;Global Const $COMPLEXREGION = 3
+;Global Const $NULLREGION = 1
+;Global Const $SIMPLEREGION = 2
+
+; ===============================================================================================================================
+; _WinAPI_*RowInput*()
+; ===============================================================================================================================
+
+Global Const $RIDEV_APPKEYS = 0x00000400
+Global Const $RIDEV_CAPTUREMOUSE = 0x00000200
+Global Const $RIDEV_DEVNOTIFY = 0x00002000
+Global Const $RIDEV_EXCLUDE = 0x00000010
+Global Const $RIDEV_EXINPUTSINK = 0x00001000
+Global Const $RIDEV_INPUTSINK = 0x00000100
+Global Const $RIDEV_NOHOTKEYS = 0x00000200
+Global Const $RIDEV_NOLEGACY = 0x00000030
+Global Const $RIDEV_PAGEONLY = 0x00000020
+Global Const $RIDEV_REMOVE = 0x00000001
+
+Global Const $RID_HEADER = 0x10000005
+Global Const $RID_INPUT = 0x10000003
+
+Global Const $RIM_TYPEHID = 2
+Global Const $RIM_TYPEKEYBOARD = 1
+Global Const $RIM_TYPEMOUSE = 0
+
+Global Const $RIDI_DEVICENAME = 0x20000007
+Global Const $RIDI_DEVICEINFO = 0x2000000B
+Global Const $RIDI_PREPARSEDDATA = 0x20000005
+
+Global Const $MOUSE_ATTRIBUTES_CHANGED = 0x04
+Global Const $MOUSE_MOVE_ABSOLUTE = 0x01
+Global Const $MOUSE_MOVE_RELATIVE = 0x00
+Global Const $MOUSE_VIRTUAL_DESKTOP = 0x02
+
+Global Const $RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001
+Global Const $RI_MOUSE_LEFT_BUTTON_UP = 0x0002
+Global Const $RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010
+Global Const $RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020
+Global Const $RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004
+Global Const $RI_MOUSE_RIGHT_BUTTON_UP = 0x0008
+Global Const $RI_MOUSE_BUTTON_1_DOWN = $RI_MOUSE_LEFT_BUTTON_DOWN
+Global Const $RI_MOUSE_BUTTON_1_UP = $RI_MOUSE_LEFT_BUTTON_UP
+Global Const $RI_MOUSE_BUTTON_2_DOWN = $RI_MOUSE_RIGHT_BUTTON_DOWN
+Global Const $RI_MOUSE_BUTTON_2_UP = $RI_MOUSE_RIGHT_BUTTON_UP
+Global Const $RI_MOUSE_BUTTON_3_DOWN = $RI_MOUSE_MIDDLE_BUTTON_DOWN
+Global Const $RI_MOUSE_BUTTON_3_UP = $RI_MOUSE_MIDDLE_BUTTON_UP
+Global Const $RI_MOUSE_BUTTON_4_DOWN = 0x0040
+Global Const $RI_MOUSE_BUTTON_4_UP = 0x0080
+Global Const $RI_MOUSE_BUTTON_5_DOWN = 0x0100
+Global Const $RI_MOUSE_BUTTON_5_UP = 0x0200
+Global Const $RI_MOUSE_WHEEL = 0x0400
+
+Global Const $RI_KEY_BREAK = 1
+Global Const $RI_KEY_E0 = 2
+Global Const $RI_KEY_E1 = 4
+Global Const $RI_KEY_MAKE = 0
+
+; ===============================================================================================================================
 ; _WinAPI_*Theme*()
 ; ===============================================================================================================================
 
     Filename:       APIErrors.au3
     Description:    System error codes to be used with WinAPIEx UDF library
     Author:         Yashied
-    Version:        3.6 / 3.3.8.0
+    Version:        3.7 / 3.3.8.0
     Requirements:   AutoIt v3.3 +, Developed/Tested on Windows XP Pro Service Pack 2 and Windows Vista/7
     Uses:           None
     Note:           -
     Filename:       WinAPIEx.au3
     Description:    Additional variables, constants and functions for the WinAPI.au3
     Author:         Yashied
-    Version:        3.6 / 3.3.8.0
+    Version:        3.7 / 3.3.6.1
     Requirements:   AutoIt v3.3 +, Developed/Tested on Windows XP Pro Service Pack 2 and Windows Vista/7
     Uses:           StructureConstants.au3, WinAPI.au3
     Note:           The library uses the following system DLLs:
                     Comctl32.dll
                     Comdlg32.dll
                     Connect.dll
+                    Credui.dll
                     Dbghelp.dll
                     Dwmapi.dll
                     Gdi32.dll
     _WinAPI_AddIconOverlay
     _WinAPI_AddIconTransparency
     _WinAPI_AddMRUString
+    _WinAPI_AdjustBitmap
     _WinAPI_AdjustTokenPrivileges
     _WinAPI_AdjustWindowRectEx
     _WinAPI_AlphaBlend
     _WinAPI_AssignProcessToJobObject
     _WinAPI_AssocGetPerceivedType
     _WinAPI_AssocQueryString
+    _WinAPI_BackupRead
+    _WinAPI_BackupReadAbort
+    _WinAPI_BackupSeek
+    _WinAPI_BackupWrite
+    _WinAPI_BackupWriteAbort
     _WinAPI_BeginBufferedPaint
     _WinAPI_BeginDeferWindowPos
     _WinAPI_BeginPaint
     _WinAPI_CombineTransform
     _WinAPI_CommandLineToArgv
     _WinAPI_CommDlgExtendedErrorEx
+    _WinAPI_CompareString
     _WinAPI_CompressBitmapBits
+    _WinAPI_CompressBuffer
     _WinAPI_ComputeCrc32
+    _WinAPI_ConfirmCredentials
     _WinAPI_CopyBitmap
     _WinAPI_CopyCursor
     _WinAPI_CopyEnhMetaFile
     _WinAPI_CreateBrushIndirect
     _WinAPI_CreateBuffer
     _WinAPI_CreateCaret
+    _WinAPI_CreateColorAdjustment
     _WinAPI_CreateCompatibleBitmapEx
     _WinAPI_CreateDesktop
     _WinAPI_CreateDIB
     _WinAPI_CreateDIBColorTable
     _WinAPI_CreateDIBitmap
     _WinAPI_CreateDIBSection
+    _WinAPI_CreateDirectory
     _WinAPI_CreateDirectoryEx
     _WinAPI_CreateEllipticRgn
     _WinAPI_CreateEmptyIcon
     _WinAPI_CreateFileEx
     _WinAPI_CreateFileMapping
     _WinAPI_CreateGUID
+    _WinAPI_CreateHardLink
     _WinAPI_CreateIcon
     _WinAPI_CreateIconFromResourceEx
     _WinAPI_CreateIconIndirect
     _WinAPI_CreateObjectID
     _WinAPI_CreatePoint
     _WinAPI_CreatePolygonRgn
+    _WinAPI_CreateProcessWithToken
     _WinAPI_CreateRect
     _WinAPI_CreateRectEx
     _WinAPI_CreateRectRgnIndirect
     _WinAPI_CreateSize
     _WinAPI_CreateStreamOnHGlobal
     _WinAPI_CreateString
+    _WinAPI_CreateSymbolicLink
     _WinAPI_CreateTransform
     _WinAPI_CreateWindowStation
+    _WinAPI_DecompressBuffer
+    _WinAPI_DecryptFile
     _WinAPI_DeferWindowPos
     _WinAPI_DefineDosDevice
+    _WinAPI_DefRawInputProc
     _WinAPI_DefSubclassProc
     _WinAPI_DefWindowProcW
     _WinAPI_DeleteEnhMetaFile
     _WinAPI_DragQueryPoint
     _WinAPI_DrawAnimatedRects
     _WinAPI_DrawBitmap
+    _WinAPI_DrawFocusRect
     _WinAPI_DrawShadowText
     _WinAPI_DrawThemeBackground
     _WinAPI_DrawThemeEdge
     _WinAPI_DrawThemeParentBackground
     _WinAPI_DrawThemeText
     _WinAPI_DrawThemeTextEx
+    _WinAPI_DuplicateEncryptionInfoFile
    *_WinAPI_DuplicateHandle
+    _WinAPI_DuplicateTokenEx
     _WinAPI_DwmEnableBlurBehindWindow
     _WinAPI_DwmEnableComposition
     _WinAPI_DwmGetColorizationColor
     _WinAPI_EjectMedia
     _WinAPI_Ellipse
     _WinAPI_EmptyWorkingSet
+    _WinAPI_EncryptFile
+    _WinAPI_EncryptionDisable
     _WinAPI_EndBufferedPaint
     _WinAPI_EndDeferWindowPos
     _WinAPI_EndPaint
     _WinAPI_EnumDesktops
     _WinAPI_EnumDesktopWindows
     _WinAPI_EnumDeviceDrivers
+    _WinAPI_EnumDisplayMonitors
     _WinAPI_EnumDisplaySettings
     _WinAPI_EnumDllProc
+    _WinAPI_EnumFiles
+    _WinAPI_EnumFileStreams
+    _WinAPI_EnumHardLinks
     _WinAPI_EnumMRUList
     _WinAPI_EnumPageFiles
     _WinAPI_EnumProcessHandles
     _WinAPI_EnumProcessModules
     _WinAPI_EnumProcessThreads
     _WinAPI_EnumProcessWindows
+    _WinAPI_EnumRawInputDevices
     _WinAPI_EnumResourceLanguages
     _WinAPI_EnumResourceNames
     _WinAPI_EnumResourceTypes
+    _WinAPI_EnumSystemGeoID
     _WinAPI_EnumSystemLocales
     _WinAPI_EnumUILanguages
     _WinAPI_EnumWindowStations
     _WinAPI_ExtractIcon
     _WinAPI_ExtSelectClipRgn
     _WinAPI_FatalExit
+    _WinAPI_FileEncryptionStatus
     _WinAPI_FileExists
     _WinAPI_FileInUse
     _WinAPI_FillMemory
    *_WinAPI_FillRect
     _WinAPI_FillRgn
     _WinAPI_FindClose
+    _WinAPI_FindCloseChangeNotification
+    _WinAPI_FindFirstChangeNotification
     _WinAPI_FindFirstFile
+    _WinAPI_FindFirstFileName
+    _WinAPI_FindFirstStream
+    _WinAPI_FindNextChangeNotification
     _WinAPI_FindNextFile
+    _WinAPI_FindNextFileName
+    _WinAPI_FindNextStream
     _WinAPI_FindResource
     _WinAPI_FindResourceEx
     _WinAPI_FindTextDlg
     _WinAPI_GetClipBox
     _WinAPI_GetClipCursor
     _WinAPI_GetClipRgn
+    _WinAPI_GetColorAdjustment
     _WinAPI_GetCompressedFileSize
     _WinAPI_GetCompression
     _WinAPI_GetConnectedDlg
     _WinAPI_GetExitCodeProcess
     _WinAPI_GetExtended
     _WinAPI_GetFileAttributes
+    _WinAPI_GetFileID
     _WinAPI_GetFileInformationByHandle
-    _WinAPI_GetFileSize
+    _WinAPI_GetFileInformationByHandleEx
+    _WinAPI_GetFilePointerEx
     _WinAPI_GetFileSizeOnDisk
     _WinAPI_GetFileTitle
     _WinAPI_GetFileType
    *_WinAPI_GetForegroundWindow
     _WinAPI_GetFRBuffer
     _WinAPI_GetFullPathName
+    _WinAPI_GetGeoInfo
+    _WinAPI_GetGlyphOutline
     _WinAPI_GetGraphicsMode
     _WinAPI_GetGUIThreadInfo
     _WinAPI_GetGValue
     _WinAPI_GetModuleFileNameEx
     _WinAPI_GetModuleHandleEx
     _WinAPI_GetModuleInformation
+    _WinAPI_GetMonitorInfo
     _WinAPI_GetNumberFormat
     _WinAPI_GetObjectID
+    _WinAPI_GetObjectInfoByHandle
     _WinAPI_GetObjectNameByHandle
     _WinAPI_GetObjectType
     _WinAPI_GetOutlineTextMetrics
     _WinAPI_GetProcessWorkingDirectory
     _WinAPI_GetProfilesDirectory
     _WinAPI_GetPwrCapabilities
+    _WinAPI_GetRawInputBuffer
+    _WinAPI_GetRawInputBufferLength
+    _WinAPI_GetRawInputData
+    _WinAPI_GetRawInputDeviceInfo
     _WinAPI_GetRegionData
+    _WinAPI_GetRegisteredRawInputDevices
     _WinAPI_GetRegKeyNameByHandle
     _WinAPI_GetRgnBox
     _WinAPI_GetROP2
     _WinAPI_GetRValue
     _WinAPI_GetShellWindow
     _WinAPI_GetStartupInfo
+    _WinAPI_GetStretchBltMode
     _WinAPI_GetString
+    _WinAPI_GetSystemDefaultLangID
     _WinAPI_GetSystemDefaultLCID
     _WinAPI_GetSystemDefaultUILanguage
     _WinAPI_GetSystemDEPPolicy
     _WinAPI_GetThemeTransitionDuration
     _WinAPI_GetThreadDesktop
     _WinAPI_GetThreadErrorMode
+    _WinAPI_GetThreadLocale
+    _WinAPI_GetThreadUILanguage
     _WinAPI_GetTickCount
     _WinAPI_GetTickCount64
     _WinAPI_GetTimeFormat
     _WinAPI_GetUDFVersion
     _WinAPI_GetUpdateRect
     _WinAPI_GetUpdateRgn
+    _WinAPI_GetUserDefaultLangID
     _WinAPI_GetUserDefaultLCID
     _WinAPI_GetUserDefaultUILanguage
+    _WinAPI_GetUserGeoID
     _WinAPI_GetUserObjectInformation
     _WinAPI_GetVersion
     _WinAPI_GetVersionEx
+    _WinAPI_GetVolumeInformation
+    _WinAPI_GetVolumeInformationByHandle
     _WinAPI_GetVolumeNameForVolumeMountPoint
     _WinAPI_GetWindowDisplayAffinity
     _WinAPI_GetWindowExt
     _WinAPI_GetWindowInfo
     _WinAPI_GetWindowLongEx
     _WinAPI_GetWindowOrg
+    _WinAPI_GetWindowRgnBox
     _WinAPI_GetWindowSubclass
     _WinAPI_GetWindowTheme
     _WinAPI_GetWorkArea
     _WinAPI_GetWorldTransform
     _WinAPI_GradientFill
+    _WinAPI_HashData
+    _WinAPI_HashString
     _WinAPI_Hex64
     _WinAPI_HiByte
     _WinAPI_HideCaret
     _WinAPI_IsBadWritePtr
     _WinAPI_IsChild
     _WinAPI_IsDoorOpen
+    _WinAPI_IsElevated
     _WinAPI_IsHungAppWindow
     _WinAPI_IsIconic
     _WinAPI_IsInternetConnected
     _WinAPI_LoadKeyboardLayout
     _WinAPI_LoadMedia
     _WinAPI_LoadResource
+    _WinAPI_LoadStringEx
     _WinAPI_LoByte
     _WinAPI_LockDevice
     _WinAPI_LockFile
     _WinAPI_LongMid
     _WinAPI_LookupIconIdFromDirectoryEx
     _WinAPI_LPtoDP
-    _WinAPI_LZNTCompress
-    _WinAPI_LZNTDecompress
     _WinAPI_MakeWord
     _WinAPI_MapViewOfFile
     _WinAPI_MapVirtualKey
     _WinAPI_MessageBoxCheck
     _WinAPI_MessageBoxIndirect
     _WinAPI_ModifyWorldTransform
+    _WinAPI_MonitorFromPoint
+    _WinAPI_MonitorFromRect
+    _WinAPI_MonitorFromWindow
     _WinAPI_MoveFileEx
     _WinAPI_MoveMemory
     _WinAPI_MoveToEx
     _WinAPI_NtStatusToDosError
     _WinAPI_OemToChar
+    _WinAPI_OffsetClipRgn
     _WinAPI_OffsetPoints
-    _WinAPI_OffsetClipRgn
     _WinAPI_OffsetRect
     _WinAPI_OffsetRgn
     _WinAPI_OffsetWindowOrg
     _WinAPI_PageSetupDlg
     _WinAPI_PaintDesktop
     _WinAPI_PaintRgn
+    _WinAPI_ParseURL
+    _WinAPI_ParseUserName
     _WinAPI_PatBlt
     _WinAPI_PathAddBackslash
     _WinAPI_PathAddExtension
     _WinAPI_QueryPerformanceCounter
     _WinAPI_QueryPerformanceFrequency
     _WinAPI_RadialGradientFill
+    _WinAPI_ReadDirectoryChanges
     _WinAPI_Rectangle
     _WinAPI_RectInRegion
     _WinAPI_RectVisible
     _WinAPI_RegisterClassEx
     _WinAPI_RegisterHotKey
     _WinAPI_RegisterPowerSettingNotification
+    _WinAPI_RegisterRawInputDevices
     _WinAPI_RegisterShellHookWindow
     _WinAPI_RegLoadMUIString
     _WinAPI_RegNotifyChangeKeyValue
     _WinAPI_ReplaceFile
     _WinAPI_ReplaceTextDlg
     _WinAPI_ResetEvent
-    _WinAPI_ResizeBitmap
     _WinAPI_RestartDlg
     _WinAPI_RestoreDC
     _WinAPI_RGB
     _WinAPI_SetBitmapDimensionEx
     _WinAPI_SetBoundsRect
     _WinAPI_SetClassLongEx
+    _WinAPI_SetColorAdjustment
     _WinAPI_SetCompression
     _WinAPI_SetCaretBlinkTime
     _WinAPI_SetCaretPos
     _WinAPI_SetEnhMetaFileBits
     _WinAPI_SetErrorMode
     _WinAPI_SetFileAttributes
+    _WinAPI_SetFileInformationByHandleEx
     _WinAPI_SetFilePointerEx
+    _WinAPI_SetFileShortName
     _WinAPI_SetForegroundWindow
     _WinAPI_SetFRBuffer
     _WinAPI_SetGraphicsMode
     _WinAPI_SetThreadDesktop
     _WinAPI_SetThreadErrorMode
     _WinAPI_SetThreadExecutionState
+    _WinAPI_SetThreadLocale
+    _WinAPI_SetThreadUILanguage
     _WinAPI_SetTimer
     _WinAPI_SetUDFColorMode
+    _WinAPI_SetUserGeoID
     _WinAPI_SetUserObjectInformation
     _WinAPI_SetVolumeMountPoint
     _WinAPI_SetWindowDisplayAffinity
     _WinAPI_ShellSetLocalizedName
     _WinAPI_ShellSetSettings
     _WinAPI_ShellStartNetConnectionDlg
+    _WinAPI_ShellUserAuthenticationDlg
+    _WinAPI_ShellUserAuthenticationDlgEx
+    _WinAPI_ShortToWord
     _WinAPI_ShowCaret
     _WinAPI_ShowLastError
     _WinAPI_ShowOwnedPopups
     _WinAPI_ShutdownBlockReasonCreate
     _WinAPI_ShutdownBlockReasonDestroy
     _WinAPI_ShutdownBlockReasonQuery
-    _WinAPI_ShutdownDlg
     _WinAPI_SizeOfResource
     _WinAPI_StretchBlt
     _WinAPI_StretchDIBits
     _WinAPI_UnregisterPowerSettingNotification
     _WinAPI_UpdateLayeredWindowEx
     _WinAPI_UpdateResource
+    _WinAPI_UrlApplyScheme
+    _WinAPI_UrlCanonicalize
+    _WinAPI_UrlCombine
+    _WinAPI_UrlCompare
     _WinAPI_UrlCreateFromPath
-    _WinAPI_UrlEscape
     _WinAPI_UrlFixup
     _WinAPI_UrlGetPart
+    _WinAPI_UrlHash
     _WinAPI_UrlIs
-    _WinAPI_UrlUnescape
     _WinAPI_ValidateRect
     _WinAPI_ValidateRgn
     _WinAPI_VerQueryRoot
     _WinAPI_VerQueryValue
+    _WinAPI_VerQueryValueEx
     _WinAPI_WidenPath
     _WinAPI_WindowFromDC
+    _WinAPI_WordToShort
     _WinAPI_Wow64EnableWow64FsRedirection
     _WinAPI_ZeroMemory
 
 #Region Initialization
 
 Global Const $__WINVER = __Ver()
-Global Const $__UDFVER = '3.6'
+Global Const $__UDFVER = '3.7'
 
 #EndRegion Initialization
 
 Global Const $tagBITMAPV4HEADER = '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[3];dword bV4GammaRed;dword bV4GammaGreen;dword bV4GammaBlue;'
 Global Const $tagBITMAPV5HEADER = '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[3];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved;'
 ;Global Const $tagBITMAPINFO = $tagBITMAPINFOHEADER & 'dword bmiColors[n];'
-Global Const $tagDEVMODE_DISPLAY = 'wchar DeviceName[32];ushort SpecVersion;ushort DriverVersion;ushort Size;ushort DriverExtra;dword Fields;' & $tagPOINT & ';dword DisplayOrientation;dword DisplayFixedOutput;short[5];wchar[32];ushort LogPixels;dword BitsPerPel;dword PelsWidth;dword PelsHeight;dword DisplayFlags;dword DisplayFrequency;'
-Global Const $tagDEVMODE_PRINTER = '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;dword[3];dword Nup;dword;dword ICMMethod;dword ICMIntent;dword MediaType;dword DitherType;dword Reserved1;dword Reserved2;dword PanningWidth;dword PanningHeight;'
+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_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 $tagDEVMODE_PRINTER = '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 $tagDEVNAMES = 'ushort DriverOffset;ushort DeviceOffset;ushort OutputOffset;ushort Default;'
 Global Const $tagDIBSECTION = $tagBITMAP & $tagBITMAPINFOHEADER & 'dword dsBitfields[3];ptr dshSection;dword dsOffset;'
 Global Const $tagDTTOPTS = 'dword Size;dword Flags;dword clrText;dword clrBorder;dword clrShadow;int TextShadowType;' & $tagPOINT & ';int BorderSize;int FontPropId;int ColorPropId;int StateId;int ApplyOverlay;int GlowSize;ptr DrawTextCallback;lparam lParam;'
 Global Const $tagENHMETAHEADER = '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];'
 Global Const $tagEXTLOGPEN = 'dword PenStyle;dword Width;uint BrushStyle;dword Color;ulong_ptr Hatch;dword NumEntries;' ; & 'dword StyleEntry[n];'
+Global Const $tagFILE_ID_DESCRIPTOR = 'dword Size;uint Type;' & $tagGUID & ';'
+Global Const $tagFILEINFO = 'uint64 CreationTime;uint64 LastAccessTime;uint64 LastWriteTime;uint64 ChangeTime;dword Attributes;'
 Global Const $tagFINDREPLACE = 'dword Size;hwnd hOwner;ptr hInstance;dword Flags;ptr FindWhat;ptr ReplaceWith;ushort FindWhatLen;ushort ReplaceWithLen;lparam lParam;ptr Hook;ptr TemplateName;'
+Global Const $tagGLYPHMETRICS = 'uint BlackBoxX;uint BlackBoxY;' & $tagPOINT & ';short CellIncX;short CellIncY;'
 ;Global Const $tagGUITHREADINFO = 'dword Size;dword Flags;hwnd hWndActive;hwnd hWndFocus;hwnd hWndCapture;hwnd hWndMenuOwner;hwnd hWndMoveSize;hwnd hWndCaret;long rcCaret[4];'
 ;Global Const $tagICONINFO = 'int Icon;dword xHotspot;dword yHotspot;ptr hMask;ptr hColor;'
 Global Const $tagIO_COUNTERS = 'uint64 ReadOperationCount;uint64 WriteOperationCount;uint64 OtherOperationCount;uint64 ReadTransferCount;uint64 WriteTransferCount;uint64 OtherTransferCount;'
 Global Const $tagJOBOBJECT_SECURITY_LIMIT_INFORMATION = 'dword SecurityLimitFlags;ptr JobToken;ptr SidsToDisable;ptr PrivilegesToDelete;ptr RestrictedSids;'
 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 $tagMODULEINFO = 'ptr BaseOfDll;dword SizeOfImage;ptr EntryPoint;'
 Global Const $tagMSGBOXPARAMS = 'uint Size;hwnd hOwner;ptr hInstance;int_ptr Text;int_ptr Caption;dword Style;int_ptr Icon;dword_ptr ContextHelpId;ptr MsgBoxCallback;dword LanguageId;'
 Global Const $tagNOTIFYICONDATA = 'dword Size;hwnd hWnd;uint ID;uint Flags;uint CallbackMessage;ptr hIcon;wchar Tip[128];dword State;dword StateMask;wchar Info[256];uint Version;wchar InfoTitle[64];dword InfoFlags;'
 Global Const $tagPRINTDLG = 'align 2;dword_ptr Size;hwnd hOwner;ptr hDevMode;ptr hDevNames;hwnd hDC;dword Flags;ushort FromPage;ushort ToPage;ushort MinPage;ushort MaxPage;' & __Iif(@AutoItX64, 'uint', 'ushort') & ' Copies;ptr hInstance;lparam lParam;ptr PrintHook;ptr SetupHook;ptr PrintTemplateName;ptr SetupTemplateName;ptr hPrintTemplate;ptr hSetupTemplate;'
 Global Const $tagPRINTDLGEX = 'dword Size;hwnd hOwner;ptr hDevMode;ptr hDevNames;hwnd hDC;dword Flags;dword Flags2;dword ExclusionFlags;dword NumPageRanges;dword MaxPageRanges;ptr PageRanges;dword MinPage;dword MaxPage;dword Copies;ptr hInstance;ptr PrintTemplateName;lparam lParam;dword NumPropertyPages;ptr hPropertyPages;dword StartPage;dword ResultAction;'
 Global Const $tagPRINTPAGERANGE = 'dword FromPage;dword ToPage;'
+Global Const $tagRAWINPUTDEVICE = 'ushort UsagePage;ushort Usage;dword Flags;hwnd hTarget;'
+Global Const $tagRAWINPUTHEADER = 'dword Type;dword Size;ptr hDevice;wparam wParam;'
+Global Const $tagRAWMOUSE = 'ushort Flags;ushort Alignment;ushort ButtonFlags;ushort ButtonData;ulong RawButtons;long LastX;long LastY;ulong ExtraInformation;'
+Global Const $tagRAWKEYBOARD = 'ushort MakeCode;ushort Flags;ushort Reserved;ushort VKey;ushort;uint Message;ulong ExtraInformation;'
+Global Const $tagRAWHID = 'dword SizeHid;dword Count;' ; & 'byte RawData[n];'
+Global Const $tagRAWINPUTMOUSE = $tagRAWINPUTHEADER & $tagRAWMOUSE
+Global Const $tagRAWINPUTKEYBOARD = $tagRAWINPUTHEADER & $tagRAWKEYBOARD
+Global Const $tagRAWINPUTHID = $tagRAWINPUTHEADER & $tagRAWHID
 Global Const $tagRGNDATAHEADER = 'dword Size;dword Type;dword Count;dword RgnSize;' & $tagRECT & ';'
 ;Global Const $tagRGNDATA = $tagRGNDATAHEADER ; & $tagRECT[n] & ';'
+Global Const $tagRID_DEVICE_INFO_MOUSE = 'dword Id;dword NumberOfButtons;dword SampleRate;int HasHorizontalWheel;'
+Global Const $tagRID_DEVICE_INFO_KEYBOARD = 'dword KbType;dword KbSubType;dword KeyboardMode;dword NumberOfFunctionKeys;dword NumberOfIndicators;dword NumberOfKeysTotal;'
+Global Const $tagRID_DEVICE_INFO_HID = 'dword VendorId;dword ProductId;dword VersionNumber;ushort UsagePage;ushort Usage;'
+Global Const $tagRID_INFO_MOUSE = 'dword Size;dword Type;' & $tagRID_DEVICE_INFO_MOUSE & 'dword Unused[2];'
+Global Const $tagRID_INFO_KEYBOARD = 'dword Size;dword Type;' & $tagRID_DEVICE_INFO_KEYBOARD
+Global Const $tagRID_INFO_HID = 'dword Size;dword Type;' & $tagRID_DEVICE_INFO_HID & 'dword Unused[2];'
 Global Const $tagSHELLHOOKINFO = 'hwnd hWnd;' & $tagRECT & ';'
 Global Const $tagSHFILEINFO = 'ptr hIcon;int iIcon;dword Attributes;wchar DisplayName[260];wchar TypeName[80];'
 Global Const $tagSHFILEOPSTRUCT = 'hwnd hWnd;uint Func;ptr From;ptr To;dword Flags;int fAnyOperationsAborted;ptr hNameMappings;ptr ProgressTitle;'
 Global Const $tagVS_FIXEDFILEINFO = 'dword Signature;dword StrucVersion;dword FileVersionMS;dword FileVersionLS;dword ProductVersionMS;dword ProductVersionLS;dword FileFlagsMask;dword FileFlags;dword FileOS;dword FileType;dword FileSubtype;dword FileDateMS;dword FileDateLS;'
 ;Global Const $tagVS_VERSIONINFO = 'ushort Length;ushort ValueLength;ushort Type;wchar Key;ushort Padding1;' & $tagVS_FIXEDFILEINFO & 'ushort Padding2;ushort Children;'
 ;Global Const $tagWIN32_FIND_DATA = 'align 4;dword FileAttributes;uint64 CreationTime;uint64 LastAccessTime;uint64 LastWriteTime;dword FileSizeHigh;dword FileSizeLow;dword Reserved0;dword Reserved1;wchar FileName[260];wchar AlternateFileName[14];'
+Global Const $tagWIN32_FIND_STREAM_DATA = 'int64 StreamSize;wchar StreamName[296];'
+;Global Const $tagWIN32_STREAM_ID = 'dword StreamId;dword StreamAttributes;int64 Size;dword StreamNameSize;' ; & 'wchar StreamName[n];'
 Global Const $tagWINDOWINFO = 'dword Size;dword rWindow[4];dword rClient[4];dword Style;dword ExStyle;dword WindowStatus;uint cxWindowBorders;uint cyWindowBorders;ushort atomWindowType;ushort CreatorVersion;'
 Global Const $tagWNDCLASSEX = 'uint Size;uint Style;ptr hWndProc;int ClsExtra;int WndExtra;ptr hInstance;ptr hIcon;ptr hCursor;ptr hBackground;ptr MenuName;ptr ClassName;ptr hIconSm;'
 Global Const $tagXFORM = 'float eM11;float eM12;float eM21;float eM22;float eDx;float eDy;'
 
 #Region Local Variables and Constants
 
-Global $__Data, $__Dlg, $__Dll = 0, $__Ext = 0, $__Heap = 0, $__Text = 0, $__FR, $__Buff = 16385, $__RGB = True
+Global $__Data, $__Dlg, $__Dll = 0, $__Ext = 0, $__Val, $__Heap = 0, $__Text = 0, $__FR, $__Buff = 16385, $__Enum = 8388608, $__RGB = 1
 
 #EndRegion Local Variables and Constants
 
 ;                              specified icon. If this parameter is 0, the function returns a fully transparent icon.
 ;                  $fDelete  - Specifies whether to delete the icon after the function is successful, valid values:
 ;                  |TRUE     - Icon will be deleted if the function succeeds.
-;                  |FALSE    - Don't delete, you must release the icon when you are finished using it. (Default)
+;                  |FALSE    - Do not delete, you must release the icon when you are finished using it. (Default)
 ; Return values..: Success   - Handle to the newly created icon.
 ;                  Failure   - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 EndFunc   ;==>_WinAPI_AddMRUString
 
 ; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_AdjustBitmap
+; Description....: Creates a new device-depended bitmap (DDB) from the source bitmap with new dimensions and color adjustment.
+; Syntax.........: _WinAPI_AdjustBitmap ( $hBitmap, $iWidth, $iHeight [, $iMode [, $tAdjustment]] )
+; Parameters.....: $hBitmap     - A handle to the source bitmap.
+;                  $iWidth      - The width of the new bitmap, in pixels. If this parameter is (-1), the width will be the same
+;                                 as in the source bitmap.
+;                  $iHeight     - The height of the new bitmap, in pixels. If this parameter is (-1), the height will be the same
+;                                 as in the source bitmap.
+;                  $iMode       - The stretching mode. This parameter can be one of the following values.
+;
+;                                 $BLACKONWHITE
+;                                 $COLORONCOLOR
+;                                 $HALFTONE
+;                                 $WHITEONBLACK
+;                                 $STRETCH_ANDSCANS
+;                                 $STRETCH_DELETESCANS
+;                                 $STRETCH_HALFTONE
+;                                 $STRETCH_ORSCANS
+;
+;                  $tAdjustment - $tagCOLORADJUSTMENT structure containing the color adjustment values. This color adjustment is
+;                                 used only if $HALFTONE ($STRETCH_HALFTONE) stretching mode are set.
+; Return values..: Success      - A handle to the newly created bitmap (DDB).
+;                  Failure      - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: The _WinAPI_AdjustBitmap() creates a device-depended bitmaps compatible with the application's current screen.
+;
+;                  This function does not support bitmaps with alpha channel, you can use the _WinAPI_AlphaBlend() function to work
+;                  with these bitmaps.
+;
+;                  When you are finished using the bitmap, destroy it using the _WinAPI_DeleteObject() function. The function
+;                  does not destroy the original bitmap, you must to destroy it yourself.
+; Related........:
+; Link...........: None
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_AdjustBitmap($hBitmap, $iWidth, $iHeight, $iMode = 3, $tAdjustment = 0)
+
+	Local $Ret, $tObj, $hBmp, $hDC, $hDestDC, $hDestSv, $hSrcDC, $hSrcSv
+
+    $tObj = DllStructCreate($tagBITMAP)
+	$Ret = DllCall('gdi32.dll', 'int', 'GetObject', 'int', $hBitmap, 'int', DllStructGetSize($tObj), 'ptr', DllStructGetPtr($tObj))
+	If (@error) Or (Not $Ret[0]) Then
+		Return SetError(1, 0, 0)
+	EndIf
+	If $iWidth = -1 Then
+		$iWidth = DllStructGetData($tObj, 'bmWidth')
+	EndIf
+	If $iHeight = -1 Then
+		$iHeight = DllStructGetData($tObj, 'bmHeight')
+	EndIf
+	$Ret = DllCall('user32.dll', 'hwnd', 'GetDC', 'hwnd', 0)
+	$hDC = $Ret[0]
+	$Ret = DllCall('gdi32.dll', 'hwnd', 'CreateCompatibleDC', 'hwnd', $hDC)
+	$hDestDC = $Ret[0]
+	$Ret = DllCall('gdi32.dll', 'hwnd', 'CreateCompatibleBitmap', 'hwnd', $hDC, 'int', $iWidth, 'int', $iHeight)
+	$hBmp = $Ret[0]
+	$Ret = DllCall('gdi32.dll', 'hwnd', 'SelectObject', 'hwnd', $hDestDC, 'ptr', $hBmp)
+	$hDestSv = $Ret[0]
+	$Ret = DllCall('gdi32.dll', 'hwnd', 'CreateCompatibleDC', 'hwnd', $hDC)
+	$hSrcDC = $Ret[0]
+	$Ret = DllCall('gdi32.dll', 'hwnd', 'SelectObject', 'hwnd', $hSrcDC, 'ptr', $hBitmap)
+	$hSrcSv = $Ret[0]
+	If _WinAPI_SetStretchBltMode($hDestDC, $iMode) Then
+		Switch $iMode
+			Case 4 ; HALFTONE
+				If IsDllStruct($tAdjustment) Then
+					If Not _WinAPI_SetColorAdjustment($hDestDC, $tAdjustment) Then
+						; Nothing
+					EndIf
+				EndIf
+			Case Else
+
+		EndSwitch
+	EndIf
+	$Ret = _WinAPI_StretchBlt($hDestDC, 0, 0, $iWidth, $iHeight, $hSrcDC, 0, 0, DllStructGetData($tObj, 'bmWidth'), DllStructGetData($tObj, 'bmHeight'), 0x00CC0020)
+	DllCall('user32.dll', 'int', 'ReleaseDC', 'hwnd', 0, 'hwnd', $hDC)
+	DllCall('gdi32.dll', 'ptr', 'SelectObject', 'hwnd', $hDestDC, 'ptr', $hDestSv)
+	DllCall('gdi32.dll', 'ptr', 'SelectObject', 'hwnd', $hSrcDC, 'ptr', $hSrcSv)
+	DllCall('gdi32.dll', 'int', 'DeleteDC', 'hwnd', $hDestDC)
+	DllCall('gdi32.dll', 'int', 'DeleteDC', 'hwnd', $hSrcDC)
+	If Not $Ret Then
+		Return SetError(1, 0, 0)
+	EndIf
+	Return $hBmp
+EndFunc   ;==>_WinAPI_AdjustBitmap
+
+; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_AdjustTokenPrivileges
 ; Description....: Enables or disables privileges in the specified access token.
 ; Syntax.........: _WinAPI_AdjustTokenPrivileges ( $hToken, $aPrivileges, $iAttributes, ByRef $aAdjust )
 ;                              specify the $WS_OVERLAPPED style.
 ;                  $iExStyle - The extended window style of the window whose required size is to be calculated.
 ;                  $fMenu    - Specifies whether the window has a menu, valid values:
-;                  |TRUE     - The window has a menu, valid values:
+;                  |TRUE     - The window has a menu.
 ;                  |FALSE    - The window does not has a menu. (Default)
 ; Return values..: Success   - 1.
 ;                  Failure   - 0 and sets the @error flag to non-zero.
 ;                                 any per-pixel alpha values in the source bitmap. If you set $iAlpha to 0, it is assumed that
 ;                                 your image is transparent. Set $iAlpha value to 255 (opaque) when you only want to use per-pixel
 ;                                 alpha values.
-;                  $fAlpha      - Specifies whether uses an Alpha channel from the source bitmap, valid values:
-;                  |TRUE        - Use the Alpha channel (that is, per-pixel alpha). Note that the APIs use premultiplied alpha,
+;                  $fAlpha      - Specifies whether uses an alpha channel from the source bitmap, valid values:
+;                  |TRUE        - Use the alpha channel (that is, per-pixel alpha). Note that the APIs use premultiplied alpha,
 ;                                 which means that the red, green and blue channel values in the bitmap must be premultiplied with the
 ;                                 alpha channel value. For example, if the alpha channel value is x, the red, green and blue channels
 ;                                 must be multiplied by x and divided by 255 prior to the call.
-;                  |FALSE       - Do not use the Alpha channel. (Default)
+;                  |FALSE       - Do not use the alpha channel. (Default)
 ; Return values..: Success      - 1.
 ;                  Failure      - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 ; Description....: Retrieves a file's perceived type based on its extension.
 ; Syntax.........: _WinAPI_AssocGetPerceivedType ( $sExt )
 ; Parameters.....: $sExt   - The file's extension. This should include the leading period, for example ".txt".
-; Return values..: Success - The array containing the following parameters:
+; Return values..: Success - The array containing the following information:
 ;
 ;                            [0] - The perceived type ($PERCEIVED_TYPE_*).
 ;                            [1] - The source of the perceived type information ($PERCEIVEDFLAG_*).
 EndFunc   ;==>_WinAPI_AssocQueryString
 
 ; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_BackupRead
+; Description....: Backs up a file or directory, including the security information.
+; Syntax.........: _WinAPI_BackupRead ( $hFile, $pBuffer, $iLength, ByRef $iBytes, ByRef $pContext [, $fSecurity] )
+; Parameters.....: $hFile     - Handle to the file or directory to be backed up. To obtain the handle, call the _WinAPI_CreateFileEx()
+;                               function. The SACLs are not read unless the file handle was created with the $ACCESS_SYSTEM_SECURITY
+;                               access right.
+;                  $pBuffer   - A pointer to a buffer that receives the data.
+;                  $iLength   - The size of the buffer, in bytes. The buffer size must be greater than the size of the
+;                               $tagWIN32_STREAM_ID structure (see MSDN for more information).
+;                  $iBytes    - The number of bytes read.
+;                  $pContext  - A pointer to an internal data structure used by this function to maintain context information during
+;                               a backup operation. You must set this variable to 0 before the first call to _WinAPI_BackupRead()
+;                               for the specified file or directory. The function allocates memory for the data structure, and then
+;                               sets the variable to point to that structure. You must not change this variable or the variable
+;                               that it points to between calls to _WinAPI_BackupRead().
+;                  $fSecurity - Specifies whether the function will backup the access-control list (ACL) data, valid values:
+;                  |TRUE      - The ACL data will be backed up.
+;                  |FALSE     - The ACL data will be omitted. (Default)
+; Return values..: Success    - 1.
+;                  Failure    - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: The _WinAPI_BackupRead() is not intended for use in backing up files encrypted under the Encrypted File System (EFS).
+;
+;                  If an error occurs during the data reading, the calling process can skip the bad data by calling the
+;                  _WinAPI_BackupSeek() function.
+;
+;                  When you are done using _WinAPI_BackupRead(), you must call _WinAPI_BackupReadAbort() function with the appropriate
+;                  parameter to release the memory used by the internal data structure.
+;
+;                  The file or directory should be restored using the _WinAPI_BackupWrite() function.
+; Related........:
+; Link...........: @@MsdnLink@@ BackupRead
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_BackupRead($hFile, $pBuffer, $iLength, ByRef $iBytes, ByRef $pContext, $fSecurity = 0)
+
+	$iBytes = 0
+
+	Local $Ret = DllCall('kernel32.dll', 'int', 'BackupRead', 'ptr', $hFile, 'ptr', $pBuffer, 'dword', $iLength, 'dword*', 0, 'int', 0, 'int', $fSecurity, 'ptr*', $pContext)
+
+	If (@error) Or (Not $Ret[0]) Then
+		Return SetError(1, 0, 0)
+	EndIf
+	$iBytes = $Ret[4]
+	$pContext = $Ret[7]
+	Return 1
+EndFunc   ;==>_WinAPI_BackupRead
+
+; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_BackupReadAbort
+; Description....: Finishes the use of _WinAPI_BackupRead() on the handle.
+; Syntax.........: _WinAPI_BackupRead ( ByRef $pContext )
+; Parameters.....: $pContext - A pointer to an internal data structure used by _WinAPI_BackupRead() function to maintain context
+;                              information during a backup operation.
+; Return values..: Success   - 1.
+;                  Failure   - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: None
+; Related........:
+; Link...........: @@MsdnLink@@ BackupRead
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_BackupReadAbort(ByRef $pContext)
+
+	Local $Ret = DllCall('kernel32.dll', 'int', 'BackupRead', 'ptr', 0, 'ptr', 0, 'dword', 0, 'ptr', 0, 'int', 1, 'int', 0, 'ptr*', $pContext)
+
+	If (@error) Or (Not $Ret[0]) Then
+		Return SetError(1, 0, 0)
+	EndIf
+	$pContext = $Ret[7]
+	Return 1
+EndFunc   ;==>_WinAPI_BackupReadAbort
+
+; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_BackupSeek
+; Description....: Seeks forward in a data stream initially accessed by using the _WinAPI_BackupRead() or _WinAPI_BackupWrite() function.
+; Syntax.........: _WinAPI_BackupSeek ( $hFile, $iSeek, ByRef $iBytes, ByRef $pContext )
+; Parameters.....: $hFile    - Handle to the file or directory.
+;                  $iSeek    - The number of bytes to seek.
+;                  $iBytes   - The number of bytes the function actually seeks.
+;                  $pContext - A pointer to an internal data structure. This structure must be the same structure that was initialized
+;                              by the _WinAPI_BackupRead(). An application must not touch the contents of this structure.
+; Return values..: Success   - 1.
+;                  Failure   - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: Applications use the _WinAPI_BackupSeek() to skip portions of a data stream that cause errors. This function does
+;                  not seek across stream headers.
+; Related........:
+; Link...........: @@MsdnLink@@ BackupSeek
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_BackupSeek($hFile, $iSeek, ByRef $iBytes, ByRef $pContext)
+
+	$iBytes = 0
+
+	Local $Ret = DllCall('kernel32.dll', 'int', 'BackupSeek', 'ptr', $hFile, 'dword', _WinAPI_LoDWord($iSeek), 'dword', _WinAPI_HiDWord($iSeek), 'dword*', 0, 'dword*', 0, 'ptr*', $pContext)
+
+	If (@error) Or (Not $Ret[0]) Then
+		Return SetError(1, 0, 0)
+	EndIf
+	$iBytes = _WinAPI_MakeQWord($Ret[4], $Ret[5])
+	$pContext = $Ret[6]
+	Return 1
+EndFunc   ;==>_WinAPI_BackupSeek
+
+; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_BackupWrite
+; Description....: Restore a file or directory that was backed up using _WinAPI_BackupRead().
+; Syntax.........: _WinAPI_BackupWrite ( $hFile, $pBuffer, $iLength, ByRef $iBytes, ByRef $pContext [, $fSecurity] )
+; Parameters.....: $hFile     - Handle to the file or directory to be restored. To obtain the handle, call the _WinAPI_CreateFileEx()
+;                               function. The SACLs are not restored unless the file handle was created with the $ACCESS_SYSTEM_SECURITY
+;                               access right. To ensure that the integrity ACEs are restored correctly, the file handle must also
+;                               have been created with the $WRITE_OWNER access right.
+;                  $pBuffer   - A pointer to a buffer that the function writes data from.
+;                  $iLength   - The size of the buffer, in bytes. The buffer size must be greater than the size of the
+;                               $tagWIN32_STREAM_ID structure (see MSDN for more information).
+;                  $iBytes    - The number of bytes written.
+;                  $pContext  - A pointer to an internal data structure used by this function to maintain context information during
+;                               a restore operation. You must set this variable to 0 before the first call to _WinAPI_BackupWrite()
+;                               for the specified file or directory. The function allocates memory for the data structure, and then
+;                               sets the variable to point to that structure. You must not change this variable or the variable
+;                               that it points to between calls to _WinAPI_BackupWrite().
+;                  $fSecurity - Specifies whether the function will restore the access-control list (ACL) data, valid values:
+;                  |TRUE      - The ACL data will be restored. Furthermore, you need to specify $WRITE_OWNER and $WRITE_DAC access when
+;                               opening the file or directory handle. If the handle does not have those access rights, the operating
+;                               system denies access to the ACL data, and ACL data restoration will not occur.
+;                  |FALSE     - The ACL data will be omitted. (Default)
+; Return values..: Success    - 1.
+;                  Failure    - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: The _WinAPI_BackupWrite() is not intended for use in restoring files encrypted under the Encrypted File System (EFS).
+;
+;                  When you are done using _WinAPI_BackupWrite(), you must call _WinAPI_BackupWriteAbort() function with the
+;                  appropriate parameter to release the memory used by the internal data structure.
+;
+; Related........:
+; Link...........: @@MsdnLink@@ BackupRead
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_BackupWrite($hFile, $pBuffer, $iLength, ByRef $iBytes, ByRef $pContext, $fSecurity = 0)
+
+	$iBytes = 0
+
+	Local $Ret = DllCall('kernel32.dll', 'int', 'BackupWrite', 'ptr', $hFile, 'ptr', $pBuffer, 'dword', $iLength, 'dword*', 0, 'int', 0, 'int', $fSecurity, 'ptr*', $pContext)
+
+	If (@error) Or (Not $Ret[0]) Then
+		Return SetError(1, 0, 0)
+	EndIf
+	$iBytes = $Ret[4]
+	$pContext = $Ret[7]
+	Return 1
+EndFunc   ;==>_WinAPI_BackupWrite
+
+; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_BackupWriteAbort
+; Description....: Finishes the use of _WinAPI_BackupWrite() on the handle.
+; Syntax.........: _WinAPI_BackupWriteAbort ( ByRef $pContext )
+; Parameters.....: $pContext - A pointer to an internal data structure used by _WinAPI_BackupWrite() function to maintain context
+;                              information during a restore operation.
+; Return values..: Success   - 1.
+;                  Failure   - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: None
+; Related........:
+; Link...........: @@MsdnLink@@ BackupWrite
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_BackupWriteAbort(ByRef $pContext)
+
+	Local $Ret = DllCall('kernel32.dll', 'int', 'BackupWrite', 'ptr', 0, 'ptr', 0, 'dword', 0, 'ptr', 0, 'int', 1, 'int', 0, 'ptr*', $pContext)
+
+	If (@error) Or (Not $Ret[0]) Then
+		Return SetError(1, 0, 0)
+	EndIf
+	$pContext = $Ret[7]
+	Return 1
+EndFunc   ;==>_WinAPI_BackupWriteAbort
+
+; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_BeginBufferedPaint
 ; Description....: Begins a buffered paint operation.
 ; Syntax.........: _WinAPI_BeginBufferedPaint ( $hDC, $tTarget, ByRef $hNewDC [, $iFormat [, $iFlags [, $tExclude [, $iAlpha]]]] )
 EndFunc   ;==>_WinAPI_CommDlgExtendedErrorEx
 
 ; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_CompareString
+; Description....: Compares two character strings for a specified locale.
+; Syntax.........: _WinAPI_CompareString ( $LCID, $sString1, $sString2 [, $iFlags] )
+; Parameters.....: $LCID     - The locale identifier (LCID) that specifies the locale or one of the following predefined values.
+;
+;                              $LOCALE_INVARIANT
+;                              $LOCALE_SYSTEM_DEFAULT
+;                              $LOCALE_USER_DEFAULT
+;
+;                              Windows Vista or later
+;
+;                              $LOCALE_CUSTOM_DEFAULT
+;                              $LOCALE_CUSTOM_UI_DEFAULT
+;                              $LOCALE_CUSTOM_UNSPECIFIED
+;
+;                  $sString1 - The first string to compare.
+;                  $sString2 - The second string to compare.
+;                  $iFlags   - The flags that indicate how the function compares the two strings. This parameter can be 0 or
+;                              combination of the following values.
+;
+;                              $LINGUISTIC_IGNORECASE
+;                              $LINGUISTIC_IGNOREDIACRITIC
+;
+;                              $NORM_IGNORECASE
+;                              $NORM_IGNOREKANATYPE
+;                              $NORM_IGNORENONSPACE
+;                              $NORM_IGNORESYMBOLS
+;                              $NORM_IGNOREWIDTH
+;                              $NORM_LINGUISTIC_CASING
+;
+;                              $SORT_STRINGSORT
+;
+;                              Windows 7 or later
+;
+;                              $SORT_DIGITSASNUMBERS
+;
+; Return values..: Success   - The one of the following values that indicates a result of the comparison strings.
+;
+;                              $CSTR_LESS_THAN
+;                              $CSTR_EQUAL
+;                              $CSTR_GREATER_THAN
+;
+;                  Failure   - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: Normally, for case-insensitive comparisons, _WinAPI_CompareString() maps the lowercase "i" to the uppercase "I",
+;                  even when the locale is Turkish or Azeri. The $NORM_LINGUISTIC_CASING flag overrides this behavior for Turkish
+;                  or Azeri. If this flag is specified in conjunction with Turkish or Azeri, LATIN SMALL LETTER DOTLESS I (U+0131)
+;                  is the lowercase form of LATIN CAPITAL LETTER I (U+0049) and LATIN SMALL LETTER I (U+0069) is the lowercase
+;                  form of LATIN CAPITAL LETTER I WITH DOT ABOVE (U+0130).
+; Related........:
+; Link...........: @@MsdnLink@@ CompareString
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_CompareString($LCID, $sString1, $sString2, $iFlags = 0)
+
+	Local $Ret = DllCall('kernel32.dll', 'int', 'CompareStringW', 'ulong', $LCID, 'dword', $iFlags, 'wstr', $sString1, 'int', -1, 'wstr', $sString2, 'int', -1)
+
+	If (@error) Or (Not $Ret[0]) Then
+		Return SetError(1, 0, 0)
+	EndIf
+	Return $Ret[0]
+EndFunc   ;==>_WinAPI_CompareString
+
+; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CompressBitmapBits
 ; Description....: Creates a compressed data block from the specified bitmap.
-; Syntax.........: _WinAPI_CompressBitmapBits ( $hBitmap, ByRef $tBuffer [, $iCompression [, $iQuality]] )
-; Parameters.....: $hBitmap      - Handle to the bitmap to be compressed.
-;                  $tBuffer      - The any valid variable that receives the compressed data. If the function succeeds, this
-;                                  variable will contain "byte[n]" structure with compressed data, or 0 otherwise.
+; Syntax.........: _WinAPI_CompressBitmapBits ( $hBitmap, ByRef $pBuffer [, $iCompression [, $iQuality]] )
+; Parameters.....: $hBitmap      - A handle to the bitmap to be compressed.
+;                  $pBuffer      - A pointer to a memory block (buffer) that receives the compressed data. Optionaly, you can set this
+;                                  parameter to 0 before function call, then the function will allocate the required memory block itself.
+;                                  Otherwise, it must be a valid memory pointer returned by the _WinAPI_CreateBuffer() function, or
+;                                  by previously calling this function.
 ;                  $iCompression - The compression method. This parameter can be one of the following values.
 ;
 ;                                  $COMPRESSION_BITMAP_PNG
 ;                                  $COMPRESSION_BITMAP_JPEG
 ;
 ;                  $iQuality     - The quality of JPEG image, in percent. This value is ignored for non JPEG compression.
-; Return values..: Success       - The length of the compressed data that was stored in $tBuffer parameter, in bytes.
+; Return values..: Success       - The number of bytes copied to the buffer.
 ;                  Failure       - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 ; Modified.......:
 ;                  The returned data always represent a 24-bit color depth .jpeg image, or 32-bit color depth (with or without
 ;                  alpha chanel) .png image independent on the color depth of the source bitmap.
 ;
+;                  When you no longer need the buffer allocated by this function, you must call the _WinAPI_FreeMemory() function
+;                  (do not use any other memory routines) to release occupied memory.
+;
 ;                  This function internally uses the GDI+ DLL library.
 ; Related........:
 ; Link...........: None
 ; Example........: Yes
 ; ===============================================================================================================================
 
-Func _WinAPI_CompressBitmapBits($hBitmap, ByRef $tBuffer, $iCompression = 0, $iQuality = 100)
-
-	Local $Size[2], $Count, $Format, $Lenght, $Mime, $Ret, $hDll, $hDC, $hSv, $hMem, $tBits, $tInfo, $tData, $pData
+Func _WinAPI_CompressBitmapBits($hBitmap, ByRef $pBuffer, $iCompression = 0, $iQuality = 100)
+
+	Local $Size[2], $Count, $Format, $Length, $Mime, $Ret, $hDC, $hSv, $hMem, $tBits, $tInfo, $tData, $pData, $Error = 1
 	Local $hSource = 0, $hImage = 0, $hToken = 0, $pEncoder = 0, $pStream = 0, $tParam = 0
 	Local $tDIB = DllStructCreate($tagDIBSECTION)
 
-	$tBuffer = 0
-
-	$hDll = DllOpen('gdiplus.dll')
-	If $hDll = -1 Then
-		Return SetError(4, 0, 0)
-	EndIf
+	If Not __DLL('gdiplus.dll') Then
+		Return SetError(3, 0, 0)
+	EndIf
+
 	Do
 		Switch $iCompression
 			Case 0
 		EndIf
 		$tData = DllStructCreate('uint;ptr;int;int')
 		DllStructSetData($tData, 1, 1)
-		$Ret = DllCall($hDll, 'uint', 'GdiplusStartup', 'ptr*', 0, 'ptr', DllStructGetPtr($tData), 'ptr', 0)
+		$Ret = DllCall('gdiplus.dll', 'uint', 'GdiplusStartup', 'ptr*', 0, 'ptr', DllStructGetPtr($tData), 'ptr', 0)
 		If (@error) Or ($Ret[0]) Then
 			ExitLoop
 		EndIf
 			$Format = 0x00022009
 		EndIf
 		$hToken = $Ret[1]
-		$Ret = DllCall($hDll, 'uint', 'GdipCreateBitmapFromScan0', 'int', $Size[0], 'int', $Size[1], 'uint', $Size[0] * 4, 'uint', $Format, 'ptr', DllStructGetPtr($tBits), 'ptr*', 0)
+		$Ret = DllCall('gdiplus.dll', 'uint', 'GdipCreateBitmapFromScan0', 'int', $Size[0], 'int', $Size[1], 'uint', $Size[0] * 4, 'uint', $Format, 'ptr', DllStructGetPtr($tBits), 'ptr*', 0)
 		If (@error) Or ($Ret[0]) Then
 			ExitLoop
 		EndIf
 		$hImage = $Ret[6]
-		$Ret = DllCall($hDll, 'uint', 'GdipGetImageEncodersSize', 'uint*', 0, 'uint*', 0)
+		$Ret = DllCall('gdiplus.dll', 'uint', 'GdipGetImageEncodersSize', 'uint*', 0, 'uint*', 0)
 		If (@error) Or ($Ret[0]) Then
 			ExitLoop
 		EndIf
 			ExitLoop
 		EndIf
 		$pData = DllStructGetPtr($tData)
-		$Ret = DllCall($hDll, 'uint', 'GdipGetImageEncoders', 'uint', $Count, 'uint', $Ret[2], 'ptr', $pData)
+		$Ret = DllCall('gdiplus.dll', 'uint', 'GdipGetImageEncoders', 'uint', $Count, 'uint', $Ret[2], 'ptr', $pData)
 		If (@error) Or ($Ret[0]) Then
 			ExitLoop
 		EndIf
 				EndIf
 		EndSwitch
 		$pStream = _WinAPI_CreateStreamOnHGlobal()
-		$Ret = DllCall($hDll, 'uint', 'GdipSaveImageToStream', 'ptr', $hImage, 'ptr', $pStream, 'ptr', $pEncoder, 'ptr', DllStructGetPtr($tParam))
+		$Ret = DllCall('gdiplus.dll', 'uint', 'GdipSaveImageToStream', 'ptr', $hImage, 'ptr', $pStream, 'ptr', $pEncoder, 'ptr', DllStructGetPtr($tParam))
 		If (@error) Or ($Ret[0]) Then
 			ExitLoop
 		EndIf
 		If (@error) Or (Not $Ret[0]) Then
 			ExitLoop
 		EndIf
-		$Lenght = $Ret[0]
+		$Length = $Ret[0]
 		$Ret = DllCall('kernel32.dll', 'ptr', 'GlobalLock', 'ptr', $hMem)
 		If (@error) Or (Not $Ret[0]) Then
 			ExitLoop
 		EndIf
-		$tBuffer = DllStructCreate('byte[' & $Lenght & ']')
+		$pBuffer = __HeapReAlloc($pBuffer, $Length, 1)
 		If Not @error Then
-			_WinAPI_MoveMemory(DllStructGetPtr($tBuffer), $Ret[0], $Lenght)
+			If _WinAPI_MoveMemory($pBuffer, $Ret[0], $Length) Then
+				$Error = 0
+			EndIf
 		EndIf
 	Until 1
 	If $pStream Then
 		_WinAPI_ReleaseStream($pStream)
 	EndIf
 	If $hImage Then
-		DllCall($hDll, 'uint', 'GdipDisposeImage', 'ptr', $hImage)
+		DllCall('gdiplus.dll', 'uint', 'GdipDisposeImage', 'ptr', $hImage)
 	EndIf
 	If $hToken Then
-		DllCall($hDll, 'none', 'GdiplusShutdown', 'ptr', $hToken)
-	EndIf
-	DllClose($hDll)
+		DllCall('gdiplus.dll', 'none', 'GdiplusShutdown', 'ptr', $hToken)
+	EndIf
 	If $hSource Then
 		_WinAPI_DeleteObject($hSource)
 	EndIf
-	If Not IsDllStruct($tBuffer) Then
-		Return SetError(1, 0, 0)
-	EndIf
-	Return $Lenght
+	If $Error Then
+		Return SetError(1, 0, 0)
+	EndIf
+	Return $Length
 EndFunc   ;==>_WinAPI_CompressBitmapBits
 
 ; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_CompressBuffer
+; Description....: Compresses a buffer with specified compression format and engine type.
+; Syntax.........: _WinAPI_CompressBuffer ( $pUncompressedBuffer, $iUncompressedSize, $pCompressedBuffer, $iCompressedSize [, $iFormatAndEngine] )
+; Parameters.....: $pUncompressedBuffer - A pointer to a caller-allocated buffer that contains the data to be compressed.
+;                  $iUncompressedSize   - The size of the uncompressed buffer, in bytes.
+;                  $pCompressedBuffer   - A pointer to a caller-allocated buffer that receives the compressed data.
+;                  $iCompressedSize     - The size of the compressed buffer, in bytes.
+;                  $iFormatAndEngine    - A bitmask that specifies the compression format and engine type. This parameter must be
+;                                         set to a valid bitwise OR combination of one format type and one engine type.
+;
+;                                         $COMPRESSION_FORMAT_LZNT1
+;                                         $COMPRESSION_FORMAT_XPRESS
+;                                         $COMPRESSION_FORMAT_XPRESS_HUFF
+;
+;                                         $COMPRESSION_ENGINE_STANDARD
+;                                         $COMPRESSION_ENGINE_MAXIMUM
+;
+; Return values..: Success              - The size of the compressed data stored in compressed buffer, in bytes.
+;                  Failure              - 0 and sets the @error flag to non-zero, @extended flag may contain the NTSTATUS code.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: The _WinAPI_CompressBuffer() function takes as input an uncompressed buffer and produces its compressed equivalent
+;                  provided that the compressed data fits within the specified destination buffer.
+;
+;                  To decompress a compressed buffer, use the _WinAPI_DecompressBuffer() function.
+; Related........:
+; Link...........: @@MsdnLink@@ RtlCompressBuffer
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_CompressBuffer($pUncompressedBuffer, $iUncompressedSize, $pCompressedBuffer, $iCompressedSize, $iFormatAndEngine = 0x0002)
+
+	Local $Ret, $pWorkSpace = 0, $Error = 1
+
+	Do
+		$Ret = DllCall('ntdll.dll', 'uint', 'RtlGetCompressionWorkSpaceSize', 'ushort', $iFormatAndEngine, 'ulong*', 0, 'ulong*', 0)
+		If (@error) Or ($Ret[0]) Then
+			ExitLoop
+		EndIf
+		$pWorkSpace = __HeapAlloc($Ret[2])
+		If @error Then
+			ExitLoop
+		EndIf
+		$Ret = DllCall('ntdll.dll', 'uint', 'RtlCompressBuffer', 'ushort', $iFormatAndEngine, 'ptr', $pUncompressedBuffer, 'ulong', $iUncompressedSize, 'ptr', $pCompressedBuffer, 'ulong', $iCompressedSize, 'ulong', 4096, 'ulong*', 0, 'ptr', $pWorkSpace)
+		If (@error) Or ($Ret[0]) Or (Not $Ret[7]) Then
+			ExitLoop
+		EndIf
+		$Error = 0
+	Until 1
+	__HeapFree($pWorkSpace)
+	If $Error Then
+		If IsArray($Ret) Then
+			Return SetError(1, $Ret[0], 0)
+		Else
+			Return SetError(9, 0, 0)
+		EndIf
+	EndIf
+	Return $Ret[7]
+EndFunc   ;==>_WinAPI_CompressBuffer
+
+; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_ComputeCrc32
 ; Description....: Calculates the CRC32 checksum of a block of memory.
-; Syntax.........: _WinAPI_ComputeCrc32 ( $pMemory, $iLenght )
-; Parameters.....: $pMemory - A pointer to the memory to calculate the checksum.
-;                  $iLenght - The number of bytes to be calculated.
+; Syntax.........: _WinAPI_ComputeCrc32 ( $pMemory, $iLength )
+; Parameters.....: $pMemory - A pointer to the memory block to calculate the checksum.
+;                  $iLength - The number of bytes to be calculated.
 ; Return values..: Success  - The CRC32 checksum (DWORD).
 ;                  Failure  - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 ; Example........: Yes
 ; ===============================================================================================================================
 
-Func _WinAPI_ComputeCrc32($pMemory, $iLenght)
-
-	Local $Ret = DllCall('ntdll.dll', 'dword', 'RtlComputeCrc32', 'dword', 0, 'ptr', $pMemory, 'int', $iLenght)
+Func _WinAPI_ComputeCrc32($pMemory, $iLength)
+
+	Local $Ret = DllCall('ntdll.dll', 'dword', 'RtlComputeCrc32', 'dword', 0, 'ptr', $pMemory, 'int', $iLength)
 
 	If (@error) Or (Not $Ret[0]) Then
 		Return SetError(1, 0, 0)
 EndFunc   ;==>_WinAPI_ComputeCrc32
 
 ; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_ConfirmCredentials
+; Description....: Confirms the validity of the credential harvested.
+; Syntax.........: _WinAPI_ConfirmCredentials ( $sTarget, $fConfirm )
+; Parameters.....: $sTarget  - The string that contains the name of the target for the credentials, typically a domain or server name.
+;                              This must be the same value passed to _WinAPI_ShellUserAuthenticationDlg() function.
+;                  $fConfirm - Specifies whether the credentials returned from the prompt function are valid, valid values:
+;                  |TRUE     - The credentials are stored in the credential manager.
+;                  |FALSE    - The credentials are not stored and various pieces of memory are cleaned up.
+; Return values..: Success   - 1.
+;                  Failure   - 0 and sets the @error flag to non-zero, @extended flag may contain the system error code.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: This function function must be called after each successful call to _WinAPI_ShellUserAuthenticationDlg()
+;                  with the $CREDUI_FLAGS_EXPECT_CONFIRMATION flag set.
+; Related........:
+; Link...........: @@MsdnLink@@ CredUIConfirmCredentials
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_ConfirmCredentials($sTarget, $fConfirm)
+
+	If Not __DLL('credui.dll') Then
+		Return SetError(3, 0, 0)
+	EndIf
+
+	Local $Ret = DllCall('credui.dll', 'dword', 'CredUIConfirmCredentialsW', 'wstr', $sTarget, 'int', $fConfirm)
+
+	If @error Then
+		Return SetError(1, 0, 0)
+	Else
+		If $Ret[0] Then
+			Return SetError(1, $Ret[0], 0)
+		EndIf
+	EndIf
+	Return 1
+EndFunc   ;==>_WinAPI_ConfirmCredentials
+
+; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CopyBitmap
 ; Description....: Creates a duplicate of a specified bitmap with a device-independent bitmap (DIB) section.
 ; Syntax.........: _WinAPI_CopyBitmap ( $hBitmap )
 ; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CopyStruct
 ; Description....: Creates a duplicate of a specified structure.
-; Syntax.........: _WinAPI_CopyStruct ($tStruct [, $sStruct] )
+; Syntax.........: _WinAPI_CopyStruct ( $tStruct [, $sStruct] )
 ; Parameters.....: $tStruct - The structure to be duplicated.
-;                  $sStruct - The string representing the structure (same as for the DllStructCreate()).
+;                  $sStruct - The string representing the structure (same as for the DllStructCreate() function).
 ; Return values..: Success  - "byte[n]" or $sStruct structure that was created.
 ;                  Failure  - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 ; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CoTaskMemFree
 ; Description....: Frees a block of task memory.
-; Syntax.........: _WinAPI_CoTaskMemFree ( $hMemory )
-; Parameters.....: $hMemory - The pointer to the memory block to be freed.
+; Syntax.........: _WinAPI_CoTaskMemFree ( $pMemory )
+; Parameters.....: $pMemory - The pointer to the memory block to be freed.
 ; Return values..: Success  - 1.
 ;                  Failure  - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 ; Example........: Yes
 ; ===============================================================================================================================
 
-Func _WinAPI_CoTaskMemFree($hMemory)
-	DllCall('ole32.dll', 'int', 'CoTaskMemFree', 'ptr', $hMemory)
+Func _WinAPI_CoTaskMemFree($pMemory)
+	DllCall('ole32.dll', 'none', 'CoTaskMemFree', 'ptr', $pMemory)
 	If @error Then
 		Return SetError(1, 0, 0)
 	EndIf
 ; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CoTaskMemRealloc
 ; Description....: Changes the size of a previously allocated block of task memory.
-; Syntax.........: _WinAPI_CoTaskMemRealloc ( $hMemory, $iSize )
-; Parameters.....: $hMemory - The pointer to the memory block to be reallocated.
+; Syntax.........: _WinAPI_CoTaskMemRealloc ( $pMemory, $iSize )
+; Parameters.....: $pMemory - The pointer to the memory block to be reallocated.
 ;                  $iSize   - The size of the memory block to be reallocated, in bytes.
 ; Return values..: Success  - The reallocated memory block.
 ;                  Failure  - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 ; Modified.......:
-; Remarks........: If $hMemory is 0, function allocates a new memory block in the same way as the _WinAPI_CoTaskMemAlloc() function.
-;                  If $hMemory is not 0, it should be a pointer returned by a prior call to _WinAPI_CoTaskMemAlloc().
+; Remarks........: If $pMemory is 0, function allocates a new memory block in the same way as the _WinAPI_CoTaskMemAlloc() function.
+;                  If $pMemory is not 0, it should be a pointer returned by a prior call to _WinAPI_CoTaskMemAlloc().
 ;
 ;                  The contents of the block are unchanged up to the shorter of the new and old sizes, although the new block
-;                  can be in a different location. If $hMemory is not 0 and $iSize is 0, then the memory pointed to by
-;                  $hMemory is freed.
+;                  can be in a different location. If $pMemory is not 0 and $iSize is 0, then the memory pointed to by
+;                  $pMemory is freed.
 ; Related........:
 ; Link...........: @@MsdnLink@@ CoTaskMemRealloc
 ; Example........: Yes
 ; ===============================================================================================================================
 
-Func _WinAPI_CoTaskMemRealloc($hMemory, $iSize)
-
-	Local $Ret = DllCall('ole32.dll', 'ptr', 'CoTaskMemRealloc', 'ptr', $hMemory, 'uint_ptr', $iSize)
+Func _WinAPI_CoTaskMemRealloc($pMemory, $iSize)
+
+	Local $Ret = DllCall('ole32.dll', 'ptr', 'CoTaskMemRealloc', 'ptr', $pMemory, 'uint_ptr', $iSize)
 
 	If (@error) Or (Not $Ret[0]) Then
 		Return SetError(1, 0, 0)
 ;                  |FALSE   - Creates DDB. (Default)
 ;                  $fDelete - Specifies whether to delete the icon after the function is successful, valid values:
 ;                  |TRUE    - Icon will be deleted if the function succeeds.
-;                  |FALSE   - Don't delete, you must release the icon when you are finished using it. (Default)
+;                  |FALSE   - Do not delete, you must release the icon when you are finished using it. (Default)
 ; Return values..: Success  - Handle to the created bitmap.
 ;                  Failure  - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 ; Parameters.....: $hIcon   - Handle to the icon to be converted.
 ;                  $fDelete - Specifies whether to delete the icon after the function is successful, valid values:
 ;                  |TRUE    - Icon will be deleted if the function succeeds.
-;                  |FALSE   - Don't delete, you must release the icon themselves when you are finished using it. (Default)
+;                  |FALSE   - Do not delete, you must release the icon themselves when you are finished using it. (Default)
 ; Return values..: Success  - Handle to the newly created icon.
 ;                  Failure  - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 ; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CreateBuffer
 ; Description....: Allocates a block of memory from the internal library heap.
-; Syntax.........: _WinAPI_CreateBuffer ( $iLenght [, $pBuffer [, $fAbort]] )
-; Parameters.....: $iLenght  - The required buffer length, in bytes.
+; Syntax.........: _WinAPI_CreateBuffer ( $iLength [, $pBuffer [, $fAbort]] )
+; Parameters.....: $iLength  - The required buffer length, in bytes.
 ;                  $pBuffer  - A pointer to a buffer that to be replaced by a new buffer. If this parameter is a valid buffer pointer,
 ;                              the memory will be reallocated for a new buffer. However, a new memory is allocated at a different
 ;                              location. Therefore, you should always use a pointer that returns this function. If this parameter is
 ; Example........: Yes
 ; ===============================================================================================================================
 
-Func _WinAPI_CreateBuffer($iLenght, $pBuffer = 0, $fAbort = 1)
-	$pBuffer = __HeapReAlloc($pBuffer, $iLenght, $fAbort)
+Func _WinAPI_CreateBuffer($iLength, $pBuffer = 0, $fAbort = 1)
+	$pBuffer = __HeapReAlloc($pBuffer, $iLength, 0, $fAbort)
 	If @error Then
 		Return SetError(@error, 0, 0)
 	EndIf
 EndFunc   ;==>_WinAPI_CreateCaret
 
 ; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_CreateColorAdjustment
+; Description....: Ceates $tagCOLORADJUSTMENT structure specifies the color adjustment.
+; Syntax.........: _WinAPI_CreateColorAdjustment ( [$iFlags [, $iIlluminant [, $iGammaR [, $iGammaG [, $iGammaB [, $iBlack [, $iWhite [, $iContrast [, $iBrightness [, $iColorfulness [, $iTint]]]]]]]]]]] )
+; Parameters.....: $iFlags        - The flags that specify how the output image should be prepared. This parameter can be 0 or any
+;                                   combination of the following values.
+;
+;                                   $CA_NEGATIVE
+;                                   $CA_LOG_FILTER
+;
+;                  $iIlluminant   - The type of standard light source under which the image is viewed. This parameter can be only
+;                                   one of the following values.
+;
+;                                   $ILLUMINANT_DEVICE_DEFAULT
+;                                   $ILLUMINANT_A
+;                                   $ILLUMINANT_B
+;                                   $ILLUMINANT_C
+;                                   $ILLUMINANT_D50
+;                                   $ILLUMINANT_D55
+;                                   $ILLUMINANT_D65
+;                                   $ILLUMINANT_D75
+;                                   $ILLUMINANT_F2
+;                                   $ILLUMINANT_TUNGSTEN
+;                                   $ILLUMINANT_DAYLIGHT
+;                                   $ILLUMINANT_FLUORESCENT
+;                                   $ILLUMINANT_NTSC
+;
+;                  $iGammaR       - The n(th) power gamma-correction value for the red primary of the source colors. The value
+;                                   must be in the range from 2500 to 65,000. A value of 10,000 means no gamma correction.
+;                  $iGammaG       - The n(th) power gamma-correction value for the green primary of the source colors. The value
+;                                   must be in the range from 2500 to 65,000. A value of 10,000 means no gamma correction.
+;                  $iGammaB       - The n(th) power gamma-correction value for the blue primary of the source colors. The value
+;                                   must be in the range from 2500 to 65,000. A value of 10,000 means no gamma correction.
+;                  $iBlack        - The black reference for the source colors. Any colors that are darker than this are treated
+;                                   as black. The value must be in the range from 0 to 4000.
+;                  $iWhite        - The white reference for the source colors. Any colors that are lighter than this are treated
+;                                   as white. The value must be in the range from 6000 to 10,000.
+;                  $iContrast     - The amount of contrast to be applied to the source object. The value must be in the range
+;                                   from -100 to 100. A value of 0 means no contrast adjustment.
+;                  $iBrightness   - The amount of brightness to be applied to the source object. The value must be in the range
+;                                   from -100 to 100. A value of 0 means no brightness adjustment.
+;                  $iColorfulness - The amount of colorfulness to be applied to the source object. The value must be in the range
+;                                   from -100 to 100. A value of 0 means no colorfulness adjustment.
+;                  $iTint         - The amount of red or green tint adjustment to be applied to the source object. The value must
+;                                   be in the range from -100 to 100. Positive numbers adjust toward red and negative numbers
+;                                   adjust toward green. A value of 0 means no tint adjustment.
+; Return values..: Success - $tagCOLORADJUSTMENT structure containing the color adjustment values.
+;                  Failure - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: None
+; Related........:
+; Link...........: None
+; Example........: Yes
+; ===============================================================================================================================
+
+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_GetColorAdjustment
+
+; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CreateCompatibleBitmapEx
 ; Description....: Creates a bitmap compatible with the device and fills it the specified color.
 ; Syntax.........: _WinAPI_CreateSolidBitmapEx ( $hDC, $iWidth, $iHeight, $iRGB )
 EndFunc   ;==>_WinAPI_CreateDIBSection
 
 ; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_CreateDirectory
+; Description....: Creates a new directory.
+; Syntax.........: _WinAPI_CreateDirectory ( $sDir [, $tSecurity] )
+; Parameters.....: $sDir      - The path of the directory to be created.
+;                  $tSecurity - $tagSECURITY_ATTRIBUTES structure that specifies a security descriptor for the new directory.
+;                               If this parameter is 0, the directory gets a default security descriptor. The ACL in the default
+;                               security descriptor for a directory are inherited from its parent directory.
+; Return values..: Success    - 1.
+;                  Failure    - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: None
+; Related........:
+; Link...........: @@MsdnLink@@ CreateDirectory
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_CreateDirectory($sDir, $tSecurity = 0)
+
+	Local $Ret = DllCall('kernel32.dll', 'int', 'CreateDirectoryW', 'wstr', $sDir, 'ptr', DllStructGetPtr($tSecurity))
+
+	If (@error) Or (Not $Ret[0]) Then
+		Return SetError(1, 0, 0)
+	EndIf
+	Return 1
+EndFunc   ;==>_WinAPI_CreateDirectory
+
+; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CreateDirectoryEx
 ; Description....: Creates a new directory with the attributes of a specified template directory.
 ; Syntax.........: _WinAPI_CreateDirectoryEx ( $sNewDir, $sTemplateDir [, $tSecurity] )
 ; Parameters.....: $sNewDir      - The path of the directory to be created.
 ;                  $sTemplateDir - The path of the directory to use as a template when creating the new directory.
 ;                  $tSecurity    - $tagSECURITY_ATTRIBUTES structure that specifies a security descriptor for the new directory.
-;                                  If this parameter is 0, the directory gets a default security descriptor. The access control lists
-;                                  (ACL) in the default security descriptor for a directory are inherited from its parent directory.
+;                                  If this parameter is 0, the directory gets a default security descriptor. The ACL in the default
+;                                  security descriptor for a directory are inherited from its parent directory.
 ; Return values..: Success       - 1.
 ;                  Failure       - 0 and sets the @error flag to non-zero.
 ; Author.........: Yashied
 ; Modified.......:
 ; Remarks........: The _WinAPI_CreateDirectoryEx() function allows you to create directories that inherit stream information
-;                  from other directories. This function is useful, for example, when you are using Macintosh directories, which have
-;                  a resource stream that is needed to properly identify directory contents as an attribute.
+;                  from other directories. This function is useful, for example, when you are using Macintosh directories, which
+;                  have a resource stream that is needed to properly identify directory contents as an attribute.
 ; Related........:
 ; Link...........: @@MsdnLink@@ CreateDirectoryEx
 ; Example........: Yes
 EndFunc   ;==>_WinAPI_CreateGUID
 
 ; #FUNCTION# ====================================================================================================================
+; Name...........: _WinAPI_CreateHardLink
+; Description....: Establishes a hard link between an existing file and a new file.
+; Syntax.........: _WinAPI_CreateHardLink ( $sNewFile, $sExistingFile )
+; Parameters.....: $sNewFile      - The name of the new file.
+;                  $sExistingFile - The name of the existing file.
+; Return values..: Success        - 1.
+;                  Failure        - 0 and sets the @error flag to non-zero.
+; Author.........: Yashied
+; Modified.......:
+; Remarks........: The _WinAPI_CreateHardLink() is only supported on the NTFS file system, and only for files, not directories.
+;
+;                  The security descriptor belongs to the file to which a hard link points. The link itself is only a directory entry,
+;                  and does not have a security descriptor. Therefore, when you change the security descriptor of a hard link, you
+;                  a change the security descriptor of the underlying file, and all hard links that point to the file allow the newly
+;                  specified access. You cannot give a file different security descriptors on a per-hard-link basis.
+;
+;                  Use _WinAPI_DeleteFile() function to delete hard links. You can delete them in any order regardless of the
+;                  order in which they are created.
+; Related........:
+; Link...........: @@MsdnLink@@ CreateHardLink
+; Example........: Yes
+; ===============================================================================================================================
+
+Func _WinAPI_CreateHardLink($sNewFile, $sExistingFile)
+
+	Local $Ret = DllCall('kernel32.dll', 'int', 'CreateHardLinkW', 'wstr', $sNewFile, 'wstr', $sExistingFile, 'ptr', 0)
+
+	If (@error) Or (Not $Ret[0]) Then
+		Return SetError(1, 0, 0)
+	EndIf
+	Return 1
+EndFunc   ;==>_WinAPI_CreateHardLink
+
+; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CreateIcon
 ; Description....: Creates an icon that has the specified size, colors, and bit patterns.
 ; Syntax.........: _WinAPI_CreateIcon ( $hInstance, $iWidth, $iHeight, $iPlanes, $iBitsPixel, $pANDBits, $pXORBits )
 ; Parameters.....: $hBitmap  - Handle to the icon color bitmap.
 ;                  $hMask    - Handle to the icon bitmask bitmap.
 ;                  $XHotspot - Specifies the x-coordinate of a cursor's hot spot. If creates an icon, the hot spot is always in the
-;                              center of the icon, and this member is ignored.
+;                              center of the icon, and this parameter is ignored.
 ;                  $YHotspot - Specifies the y-coordinate of a cursor's hot spot. If creates an icon, the hot spot is always in the
-;                              center of the icon, and this member is ignored.
+;                              center of the icon, and this parameter is ignored.
 ;                  $fIcon    - Specifies whether creates an icon or a cursor, valid values:
 ;                  |TRUE     - Creates an icon. (Default)
 ;                  |FALSE    - Creates a cursor.
 ; #FUNCTION# ====================================================================================================================
 ; Name...........: _WinAPI_CreateMutex
 ; Description....: Creates or opens a named or unnamed mutex object.
-; Syntax.........: _WinAPI_CreateMutex ($sMutex [, $fInitial [, $tSecurity]] )
+; Syntax.........: _WinAPI_CreateMutex ( $sMutex [, $fInitial [, $tSecurity]] )
 ; Parameters.....: $sMutex    - The name of the mutex object. Name comparisons are case sensitive.
 ;                  $fInitial  - Specifies whether the calling process obtains the initial ownership of the mutex object, valid values:
 ;                  |TRUE      - The calling thread obtains initial ownership of the mutex object. (Default)
 
 Func _WinAPI_CreateObjectID($sPath)
 
-	Local $hFile, $Flags
-
-	If _WinAPI_PathIsDirectory($sPath) Then
-		$Flags = 0x02000000
-	Else
-		$Flags = 0
-	EndIf
-	$hFile = _WinAPI_CreateFileEx($sPath, 3, 0, 0x06, $Flags)
-	If Not $hFile Then
+	Local $hFile = _WinAPI_CreateFileEx($sPath, 3, 0, 0x03, 0x02000000)
+
+	If @error Then