#include <File.au3>
#include <String.au3>
#include <Array.au3>
$Script = FileOpenDialog("", "", "AutoIt Script (*.au3)")
If @error Then Exit
$Code = FileRead($Script)
Dim $aAllow[62] = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", _
		"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", _
		"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
Global $aConstants
Dim $aUsedIncludes[1]

Global $sPasswort = "Nice try. Maybe next time...", $iEncrypt = 1


Global $iEncryptFuncs, $iEncryptIncludes, $iEncryptStrings, $iEncryptVars, $iEncrypt_StringEncrypt

$iEncryptIncludes = True
;~ $iEncryptStrings = True
;~ $iEncryptVars = True
;~ $iEncryptFuncs = True
;~ $iEncrypt_StringEncrypt = True


ConsoleWrite(@CRLF)
ConsoleWrite("+>"&@TAB&"====================================================" & @CRLF)
ConsoleWrite(@CRLF)
ConsoleWrite("->" & @TAB & $Script & @CRLF)
If StringRegExp($Code,"Opt\([""']GUIOnEventMode[""'] *, *1\)") Then
	ConsoleWrite("!>"&@TAB&"==========================================================================" & @CRLF)
	ConsoleWrite("!> "&@TAB&"OnEvent Mode is not fully supported yet. Your Script may not run properly" & @CRLF)
	ConsoleWrite("!>"&@TAB&"==========================================================================" & @CRLF)
EndIf

_ReadConstantsToArray($aConstants)
If $iEncryptIncludes Then
	ConsoleWrite("->" & @TAB & "Insert #includes" & @CRLF)
	_EncryptIncludes()
;~ 	MsgBox(0,"",ClipPut($Code))
EndIf

If $iEncryptStrings Then
	_EncryptStrings('(?<=[^"]")[^"\n]+(?="[^"])')
	_EncryptStrings("(?<=[^']')[^'\n]+(?='[^'])")
	_EncryptNumbers("\b0x([\dA-F]{6}|[\dA-F]{8})\b")
;~ 	_EncryptNumbers("\b\d+(?:\.d+)?\b")
;~ 	MsgBox(0,"",ClipPut($Code))
EndIf

if $iEncryptFuncs Then
	_EncryptFuncs()
;~ 	MsgBox(0,"",ClipPut($Code))
EndIf

If $iEncryptVars Then
	_EncryptVars()
;~ 	MsgBox(0,"",ClipPut($Code))
EndIf
If $iEncrypt_StringEncrypt Then
ConsoleWrite("->" & @TAB & "Encrypt more stuff O_o" & @CRLF)
_EncryptEvenMore("(?:Chr\(\d+\)&)+(?:Chr\(\d+\))")
_EncryptMore("(?:[\n\r][ 	]*|\$\w+\s*\=\s*)(\w+\(.*\))")
_EncryptMore("(?<=If )\w+\(.*\)(?= Then)")
;~ 	MsgBox(0,"",ClipPut($Code))
EndIf


ConsoleWrite("->" & @TAB & "Cleanup..." & @CRLF)
_CleanUp($Code)
_RemoveNotes($Code)
_FixLongStrings($Code,3000)
_MoveViaRegEx($Code, '\$\w+\s\=\s_StringEncrypt\(0,"\w+".".+",\d+\)') ; _stringEncrypts
_MoveViaRegEx($Code, '#include ?(?:<[\w\s\\\.]+>|"[\w\s\\\.]+")') ; Includes
_CleanUp($Code)
ConsoleWrite(@CRLF & @CRLF)
If $iEncrypt_StringEncrypt Then
	If Not StringRegExp($Code, "#include <String.au3>" & @CRLF) Then
		_StringInsertAtStart($Code, "#include <String.au3>" & @CRLF)
	EndIf
EndIf
_CleanUp($Code)
FileDelete(StringTrimRight($Script, 4) & "_obfuscated.au3")
FileWrite(StringTrimRight($Script, 4) & "_obfuscated.au3", $Code)



Func _FixLongStrings(ByRef $sText,$iLength)
	$aRegExp = StringRegExp($sText,'(?<=[^"]")[^"\n]+(?="[^"])|'&"(?<=[^']')[^'\n]+(?='[^'])",3)
;~ 	_ArrayDisplay($aRegExp)
	For $i = 0 to UBound($aRegExp)-1
;~ 		ConsoleWrite( StringLen($aRegExp[$i])& @CRLF)
		If StringLen($aRegExp[$i]) > $iLength Then
			ConsoleWrite( StringLen($aRegExp[$i])& @CRLF)
			$tmp = "$"
			Do
				$tmp &= $aAllow[Random(0, 62)]
			Until StringLen($tmp) = 12
			$sOldString = $aRegExp[$i]
			$sReplace = $tmp&'="'&StringLeft($aRegExp[$i],$iLength)&'"'
			Do
				$aRegExp[$i] = StringTrimLeft($aRegExp[$i],$iLength)
				$sReplace &= @CRLF & $tmp&'&="'&StringLeft($aRegExp[$i],$iLength)&'"'
			Until StringLen($aRegExp[$i]) < $iLength
			ClipPut($sOldString & @CRLF &@CRLF&$sReplace)
;~ 			MsgBox(0,"","")
;~ 			$sReplace &= @CRLF & $tmp&'&="'&StringLeft($aRegExp[$i],StringLen($aRegExp[$i]))&'"'
;~ 			$aRegExp[$i] = StringTrimLeft($aRegExp[$i],StringLen($aRegExp[$i]))
			_StringInsertAtStart($sText,$sReplace&@CRLF)
			$sText = StringRegExpReplace($sText,"['"&'"]'&$sOldString&"['"&'"]',"\"&$tmp)
		EndIf
	Next
EndFunc
Func _EncryptIncludes()
	Do
		_InsertIncludes()
	Until Not StringRegExp($Code, '#include (?:<[\w\s\.]+>|"[\w\.\s]+")')

	If _ArraySearch($aUsedIncludes, "IE.au3", 1) Then _au3fix_IEau3()

	_RemoveNotes($Code)
;~ 	ClipPut($Code)
;~ 	MsgBox(0,"","Momentchen")
	$Code = StringRegExpReplace($Code, " _[\r\n]+", " ")
	_MoveViaRegEx($Code, "^Global (?:Const )?.+") ; Constanten

;~ 	ClipPut($Code)
;~ 	MsgBox(0,"","Momentchen")
EndFunc   ;==>_EncryptIncludes

Func _InsertIncludes()
	Local $AutoItInc = StringTrimRight(@AutoItExe, 11) & "Include\"
	Local $aUserInc = StringSplit(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", "Include"), ";")
	$aIncludes = StringRegExp($Code, '#include\s*(?:<[\w\s\.]+>|"[\w\.\s]+")', 3)
	If Not @error Then
		$iFound = 0
		$iSize = UBound($aIncludes)
		For $i = 0 To $iSize - 1
;~ 			MsgBox(0,"",$aIncludes[$i])
			If StringInStr($aIncludes[$i], "<") Then
				$sTmp = StringRegExp($aIncludes[$i], "(?<=<)[\w\s\.]+", 3)
			ElseIf StringInStr($aIncludes[$i], '"') Then
				$sTmp = StringRegExp($aIncludes[$i], '(?<=")[\w\s\.]+', 3)
			EndIf

			$sTmp = $sTmp[0]
			If FileExists($AutoItInc & $sTmp) Then
				_IncludeInclude($AutoItInc & $sTmp)
			Else
				$sPath = StringRegExp($Script, "\w\:\\[\w\s]+\\", 3)
				$sPath = $sPath[0]
				If FileExists($sPath & $sTmp) Then
					_IncludeInclude($sPath & $sTmp)
				Else
					For $i = 1 To $aUserInc[0]
						If FileExists($aUserInc[$i] & "\" & $sTmp) Then
							_IncludeInclude($aUserInc[$i] & "\" & $sTmp)
							$iFound = 1
							ExitLoop
						EndIf
					Next
					If $iFound = 0 Then
						$incl = FileOpenDialog("Bitte " & $sTmp & " auswählen", "", "AutoIt Include (.au3)")
						If Not @error Then
							_IncludeInclude($incl)
						Else
							ConsoleWrite("!>" & @TAB & "CRITICAL ERROR: Missing Include " & $sTmp & @CRLF)
							Exit 1337
						EndIf
					EndIf
				EndIf
			EndIf
			$Code = StringReplace($Code, $aIncludes[$i], "")
;~ 				MsgBox(0,"",StringTrimRight(@AutoItExe,11))
		Next
	EndIf
;~ 	_ArrayDisplay($aIncludes)
EndFunc   ;==>_InsertIncludes

Func _IncludeInclude($sPath)
	ConsoleWrite("+>" & @TAB & $sPath & @CRLF)
	Local $aRead = FileRead($sPath)
	$sTmp = StringRegExp($sPath, "(?<=\\)[\w\s\.]+$", 3)
	If _ArrayIsUnique($aUsedIncludes, $sTmp[0], 2) Then
		_RemoveNotes($aRead)
		_CleanUp($aRead)
;~ 		MsgBox(0,"",StringRegExp($aRead,"\([\w\s]\s*[\+\-\*\/]\s*[\w\s]\)"))
		_StringInsertAtStart($Code, $aRead & @CRLF)
		_ArrayAdd($aUsedIncludes, $sTmp[0])
	Else
		ConsoleWrite("!>" & @TAB & "Include not unique (skipping):" & $sPath & @CRLF)
	EndIf
EndFunc   ;==>_IncludeInclude

Func _EncryptFuncs()
	ConsoleWrite("->" & @TAB & "Encrypting _funcs()" & @CRLF)
	$Func = StringRegExp($Code, "(?<=Func )\w+\s?(?=\()", 3)
;~ 	_ArrayDisplay($Func)
;~ 	ConsoleWrite($Code & @CRLF)
	Dim $Funcrepl[UBound($Func) + 1][2]
	For $i = 1 To UBound($Funcrepl) - 1
		$tmp = ""
		$Funcrepl[$i][0] = $Func[$i - 1]
		$tmp &= $aAllow[Random(0, 52)] ; Erstes Zeichen: Keine Zahl!
		Do
			$tmp &= $aAllow[Random(0, 62)]
		Until StringLen($tmp) > 5 And _ArrayIsUnique($Funcrepl, $tmp)
		$Funcrepl[$i][1] = $tmp
		$Code = StringRegExpReplace($Code, $Funcrepl[$i][0] & "(?=\()", $Funcrepl[$i][1])
	Next
;~ _ArrayDisplay($Funcrepl)
EndFunc   ;==>_EncryptFuncs

Func _EncryptVars()
	ConsoleWrite("->" & @TAB & "Encrypting $vars" & @CRLF)
	$Var = StringRegExp($Code, '(?<!&|")\$\w+', 3)
	If Not @error Then
		ConsoleWrite("+>" & @TAB & "Getting Array Size")
		$Var = _ArrayUnique($Var)
;~ 		_ArrayDisplay($Var)
		ConsoleWrite(" (done) -> " & $Var[0] & @CRLF)
		$iSize = UBound($Var)
		$iProzent = 0
		ConsoleWrite("+>" & @TAB)
		Dim $Varrepl[$Var[0] + 1][2]
		For $i = 1 To $iSize - 1
			$skip = False
			If Not $iEncryptIncludes Then
				If _ArrayBinarySearch($aConstants, $Var[$i]) > -1 Then
					$skip = True
				EndIf
			EndIf
			If Not $skip Then
				$tmp = "$"
				$Varrepl[$i][0] = $Var[$i]
				Do
					$tmp &= $aAllow[Random(0, 62)]
				Until StringLen($tmp) > 6 And _ArrayIsUnique($Varrepl, $tmp)
				If Round($i / $iSize * 100, 0) >= $iProzent + 10 Then
					$iProzent = Round($i / $iSize * 100, 0)
					ConsoleWrite($iProzent & "%, ")
				EndIf

				$Varrepl[$i][1] = $tmp
				$Code = StringReplace($Code, $Varrepl[$i][0], $Varrepl[$i][1])
			EndIf
		Next
	Else
		ConsoleWrite("+>" & @TAB & "No Variables found.")
	EndIf
	ConsoleWrite("(done)" & @CRLF)
EndFunc   ;==>_EncryptVars

Func _EncryptStrings($RegExp)
	ConsoleWrite("->" & @TAB & "Encrypting 'strings'" & @CRLF)

;~ 	$Strings = StringRegExp($Code,'"[\w\d\s\$\(\)\{\}\[\]\\\/\.\;]+"',3)
	$aVarStrings = StringRegExp($Code, $RegExp, 3)
	If Not @error Then
		ConsoleWrite("+>" & @TAB & "Getting Array Size")
		$aVarStrings = _ArrayUnique($aVarStrings)
;~ 		_ArrayDisplay($aVarStrings)
		ConsoleWrite(" (done) -> " & $aVarStrings[0] & @CRLF)
		ConsoleWrite("+>" & @TAB)
		$iSize = UBound($aVarStrings)
		$iProzent = 0
		For $i = 1 To $iSize - 1
;~ 			ConsoleWrite($i & @CRLF)
			If Not StringRegExp($Code, "Func .+" & $aVarStrings[$i]) Then
				$sTmp = ""
				$aSplit = StringSplit($aVarStrings[$i], "", 2)
				If Not @error Then
;~ 					ConsoleWrite($aVarStrings[$i] & @CRLF)
					For $x = 0 To UBound($aSplit) - 1
						$sTmp &= "Chr(" & Asc($aSplit[$x]) & ")&"
					Next

					If Round($i / $iSize * 100, 0) >= $iProzent + 10 Then
						$iProzent = Round($i / $iSize * 100, 0)
						ConsoleWrite($iProzent & "%, ")
					EndIf
;~ 					$aVarStrings[$i] = StringStripWS($aVarStrings[$i],3)
;~ 					MsgBox(0,"",$aVarStrings[$i])
					$Code = StringReplace($Code, '"' & $aVarStrings[$i] & '"', StringTrimRight($sTmp, 1))
				EndIf
			EndIf
		Next
		ConsoleWrite("(done)" & @CRLF)
	EndIf
EndFunc   ;==>_EncryptStrings

Func _EncryptNumbers($sRegexp)
	$aRegExp = StringRegExp($Code, $sRegexp, 3)
	If Not @error Then
		$aRegExp = _ArrayUnique($aRegExp)
		_ArrayDisplay($aRegExp)
		Dim $aTop[$aRegExp[0] + 1]
;~ 		For $i = 1 To $aRegExp[0]
;~ 				$Code = StringRegExpReplace($Code,$sRegExp,$tmp)
;~ 				ConsoleWrite($aRegExp[$i] & @CRLF)
;~ 		Next
		For $i = 1 To $aRegExp[0]
			If Not StringRegExp($Code, "_StringEncrypt.*" & $aRegExp[$i]) And Not StringRegExp($Code, "Func .+" & $aRegExp[$i]) Then

				$tmp = "$"
				Do
					$tmp &= $aAllow[Random(0, 62)]
				Until StringLen($tmp) > 3 And _ArrayIsUnique($aTop, $tmp, 0)
				$aCode = StringSplit($Code,@CRLF,1)
				For $x = 1 to $aCode[0]
					If StringRegExp($aCode[$x],"\b"&$aRegExp[$i]&"\b") Then
						If Not StringRegExp($aCode[$x], "_StringEncrypt.*" & $aRegExp[$i]) And Not StringRegExp($aCode[$x], "Func .+" & $aRegExp[$i]) Then
								$aCode[$x] = StringRegExpReplace($aCode[$x],"(?<=\b)"&$aRegExp[$i]&"(?=\b)",$tmp)
;~ 								ConsoleWrite($aCode[$x] & " -> " & $aRegExp[$i] & @CRLF)
						EndIf
					EndIf
				Next
				$aTop[$i] = $tmp & " = _StringReverse(BinaryToString(" & StringToBinary($aRegExp[$i]) & "))"
			EndIf
		Next
		_ArrayDisplay($aTop)
		For $i = 1 to UBound($aTop) -1
			_ArrayInsert($aCode, 0, $aTop[$i] & @CRLF)
		Next
		$Code = _ArrayToString($aCode,@CRLF,1)
	EndIf
EndFunc   ;==>_EncryptNumbers

Func _EncryptMore($RegExp)
	Local $iProzent = 0
	If @error Then Return
	ConsoleWrite("+>"&@TAB)
	$aRegExp = StringRegExp($Code, $RegExp, 3)
	$iSize = UBound($aRegExp)
	Dim $aTop[1]
;~ 	_ArrayDisplay($aRegExp)
	For $i = 1 To UBound($aRegExp) - 1
		If Round($i / $iSize * 100, 0) >= $iProzent + 10 Then
			$iProzent = Round($i / $iSize * 100, 0)
			ConsoleWrite($iProzent & "%, ")
		EndIf
;~ 		ConsoleWrite($aCode[$i] & @CRLF)
;~ ConsoleWrite( & @CRLF)
;~ MsgBox(0,"",$aCode[$i]&@CRLF&StringRegExp($aCode[$i],$RegExp)&@CR&StringInStr($aCode[$i],"_StringEncrypt("),1)
		If Not StringInStr($aRegExp[$i], "_StringEncrypt") And Not StringInStr($aRegExp[$i],"_StringReverse") Then
			$tmp = "$"
			Do
				$tmp &= $aAllow[Random(0, 62)]
			Until StringLen($tmp) > 10 And _ArrayIsUnique($aTop, $tmp, 0)

			$sEncrypted = _StringEncrypt(1, $aRegExp[$i], $sPasswort, $iEncrypt)
			_ArrayAdd($aTop, $tmp & ' = _StringEncrypt(0,"' & $sEncrypted & '","' & $sPasswort & '",' & $iEncrypt & ')')
			$Code = _StringReplaceex($Code, $aRegExp[$i], 'Execute(' & $tmp & ')')
			_StringInsertAtStart($Code,$tmp & ' = _StringEncrypt(0,"' & $sEncrypted & '","' & $sPasswort & '",' & $iEncrypt & ')' &@CRLF)
		Else
;~ 			ConsoleWrite("skip: " & $aRegExp[$i] & @CRLF)
		EndIf
	Next
;~ 	_StringInsertAtStart($Code,StringTrimRight($sTop,1)&@CRLF)
;~ 	_StringInsertAtStart($Code,@CRLF)
;~ 	_StringInsertAtStart($Code,"#include <String.au3>"&@CRLF)
;~ 	$Code = _ArrayToString($aCode,@CRLF,1)
	ConsoleWrite("(done)" & @CRLF)
EndFunc   ;==>_EncryptMore

Func _EncryptEvenMore($RegExp)
	$iProzent = 0
	$aRegExp = StringRegExp($Code, $RegExp, 3)
	If Not @error Then

		ConsoleWrite("+>" & @TAB & "Getting Array Size")
;~ 		$aRegExp = _ArrayUnique($aRegExp)
		ConsoleWrite(" (done) -> " & UBound($aRegExp) & @CRLF)
;~ 	 	_ArrayDisplay($aRegExp)
		ConsoleWrite("+>" & @TAB)
		$iSize = UBound($aRegExp)
		Dim $aTop[$iSize]
		For $i = 0 To $iSize - 1
			$tmp = "$"
			Do
				$tmp &= $aAllow[Random(0, 62)]
			Until StringLen($tmp) > 5 And _ArrayIsUnique($aTop, $tmp, 0)

			$sEncrypted = _StringEncrypt(1, $aRegExp[$i], $sPasswort, $iEncrypt)
			If StringLen($sEncrypted) < 4096 Then
				$aTop[$i] = $tmp & ' = _StringEncrypt(0,"' & $sEncrypted & '","' & $sPasswort & '",' & $iEncrypt & ')'
				$Code = _StringReplaceEx($Code, $aRegExp[$i], 'Execute(' & $tmp & ')', 1, 1)
				_StringInsertAtStart($Code, $aTop[$i] & @CRLF)
			Else
				If @AutoItVersion <= "3.3.2.0" Then
					$aTop[$i] = $tmp & ' = _StringEncrypt(0,"' & $sEncrypted & '","' & $sPasswort & '",' & $iEncrypt & ')'
					$Code = _StringReplaceEx($Code, $aRegExp[$i], 'Execute(' & $tmp & ')', 1, 1)
					_StringInsertAtStart($Code, $aTop[$i] & @CRLF)
				Else
					ConsoleWrite("!>" & @TAB & "WARNING: The encrypted expression exceeded the AutoIt String limit." & @CRLF & "Please Upgrade to v.3.3.3.3 (Beta) or higher." & @CRLF)
				EndIf
			EndIf

			If Round($i / $iSize * 100, 0) >= $iProzent + 10 Then
				$iProzent = Round($i / $iSize * 100, 0)
				ConsoleWrite($iProzent & "%, ")
			EndIf
		Next
;~ 	_StringInsertAtStart($Code,StringTrimRight($sTop,1)&@CRLF)
	Else
		ConsoleWrite("+>" & @TAB & "Error: No Match!")
	EndIf
	ConsoleWrite("(done)" & @CRLF)
EndFunc   ;==>_EncryptEvenMore

Func _CleanUp(ByRef $sText)
	$sText = StringReplace($sText, "#include-once", "")
;~ 	$aTmp = StringRegExp($sText,"\;[\s\w\d\{\]\{\}\}\[\=\<\>\_\,\.\$\&]+?$",3)
;~ 	$aTmp = StringRegExp($sText,";.+",3)
;~ 	_ArrayDisplay($aTmp)
;~ 	$sText = StringRegExpReplace($sText,"\s;[\s\w\d\{\]\{\}\}\[\=\<\>\_\$\&]+?$",@CRLF)

	$aSplit = StringSplit($sText, @CR)
	$CodeTmp = ""
	For $i = 1 To $aSplit[0]
		$aSplit[$i] = StringStripWS($aSplit[$i], 7)
		If StringLeft($aSplit[$i], 1) <> ";" And Not StringRegExp($aSplit[$i], "^\s*$") Then
			$CodeTmp &= $aSplit[$i] & @CRLF
		EndIf
	Next
	$sText = StringTrimRight($CodeTmp, 2)

	$aIncludes = StringRegExp($sText, '#include (?:<[\w\s\.]+>|"[\w\.\s]")', 3)
;~ 	_ArrayDisplay($aIncludes)
	$iSize = UBound($aIncludes)
	For $i = 0 To $iSize - 1
		$sText = StringReplace($sText, $aIncludes[$i], "")
		_StringInsertAtStart($sText, $aIncludes[$i] & @CRLF)
;~ 		ConsoleWrite($aIncludes[$i] & @CRLF)
	Next
EndFunc   ;==>_CleanUp

Func _RemoveNotes(ByRef $sText)
	$sText = StringRegExpReplace($sText, ';[^"\[\]]+?(?=[\n\r])', "")
	$sText = StringRegExpReplace($sText, '#cs[\w\W]+?#ce.+[\n\r]', @CRLF)
	$sText = StringRegExpReplace($sText, '#Region.+|#EndRegion.+|#endregion.+|#region.+|#Endregion.+', @CRLF)
EndFunc   ;==>_RemoveNotes
Func _MoveViaRegEx(ByRef $sText, $RegExp)
	;Per RegEx nach vorne holen
;~ 	\$\w+\s\=\s_StringEncrypt\(0,"\w+".".+",\d+\)
;~ "Global (?:Const )?.+"
	;Constanten nach vorn holen
	$sText2 = StringRegExpReplace($sText, $RegExp, "")
	$aGlobals = StringRegExp($sText, $RegExp, 3)
	If Not @error Then
;~ 		_ArrayDisplay($aGlobals)
;~ 		MsgBox(0,"",UBound($aGlobals)
		For $i = UBound($aGlobals) - 1 To 0 Step -1
			_StringInsertAtStart($sText2, $aGlobals[$i] & @CRLF)
		Next
	EndIf
	$sText = $sText2
EndFunc   ;==>_MoveViaRegEx
Func _ArrayIsUnique($aArray, $sString, $mode = 1)
	If $mode = 0 Then
		For $i = 0 To UBound($aArray) - 1
			If StringInStr($aArray[$i], $sString) Then
				Return 0
			EndIf
		Next
		Return 1
	ElseIf $mode = 2 Then
		For $i = 1 To UBound($aArray) - 1
			If StringInStr($aArray[$i], $sString) Then
				Return 0
			EndIf
		Next
		Return 1
	Else
		For $i = 1 To UBound($aArray) - 1
			If $aArray[$i][1] = $sString Then
				Return 0
			EndIf
		Next
		Return 1
	EndIf
EndFunc   ;==>_ArrayIsUnique

Func _StringInsertAtStart(ByRef $sString, $sInsertstring)
	$sString = $sInsertstring & $sString
EndFunc   ;==>_StringInsertAtStart
#Region au3fix
Func _au3fix_IEau3()
	$aTmp = StringRegExp($Code, "Global (?:Enum )?(?:Step ?\* ?\d* )?_(?:; [\w ]+[\n\r])?(?:\s*\$\w+(?: \= \d+)?, _)+(?:\s*\$\w+(?: \= \d+)?)", 3)
;~ 	_ArrayDisplay($aTmp)
	If Not @error Then
		For $i = 0 To UBound($aTmp) - 1
			$sTmp = StringRegExpReplace($aTmp[$i], ";.*(?=[\n\r])", "")
			$sTmp = StringRegExpReplace($sTmp, "_\s*?(?=\$)", "")
			StringReplace($Code, $aTmp[$i], $sTmp)
;~ 			ConsoleWrite($sTmp & @CRLF)
		Next
	Else
;~ 	MsgBox(0,"","@error: "&@error)
	EndIf
EndFunc   ;==>_au3fix_IEau3


Func _ReadConstantsToArray(ByRef $array)
	;Oscar
	Local $sConstants = ""
	$sConstants &= "$__COMBOBOXCONSTANT_WM_USER, $__COMBOBOXCONSTANT_WS_VSCROLL, $__EDITCONSTANT_WS_HSCROLL, $__EDITCONSTANT_WS_VSCROLL, $__IPADDRESSCONSTANT_WM_USER, $__LISTBOXCONSTANT_WS_BORDER, $__LISTBOXCONSTANT_WS_VSCROLL, $__PROGRESSBARCONSTANT_WM_USER, $__REBARCONSTANT_WM_USER, $__RICHEDITCONSTANT_WM_USER, $__SLIDERCONSTANT_WM_USER, $__STATUSBARCONSTANT_WM_USER, $__TOOLBARCONSTANTS_WM_USER, $__TOOLTIPCONSTANTS_WM_USER, $ACS_AUTOPLAY, $ACS_CENTER, $ACS_NONTRANSPARENT, $ACS_TIMER, $ACS_TRANSPARENT, $ANSI_CHARSET, $ANTIALIASED_QUALITY, $BALTIC_CHARSET, $BCM_FIRST, $BCM_GETIDEALSIZE, $BCM_GETIMAGELIST, $BCM_GETNOTE, $BCM_GETNOTELENGTH, $BCM_GETSPLITINFO, $BCM_GETTEXTMARGIN, $BCM_SETDROPDOWNSTATE, $BCM_SETIMAGELIST, $BCM_SETNOTE, $BCM_SETSHIELD, $BCM_SETSPLITINFO, $BCM_SETTEXTMARGIN, $BCN_DROPDOWN, $BCN_FIRST, $BCN_HOTITEMCHANGE, $BCSIF_GLYPH, $BCSIF_IMAGE, $BCSIF_SIZE, $BCSIF_STYLE, $BCSS_ALIGNLEFT, $BCSS_IMAGE, $BCSS_NOSPLIT, $BCSS_STRETCH, $BDR_RAISEDINNER, $BDR_RAISEDOUTER, $BDR_SUNKENINNER, $BDR_SUNKENOUTER, $BF_ADJUST, $BF_BOTTOM, $BF_BOTTOMLEFT, $BF_BOTTOMRIGHT, $BF_DIAGONAL, $BF_DIAGONAL_ENDBOTTOMLEFT, $BF_DIAGONAL_ENDBOTTOMRIGHT, $BF_DIAGONAL_ENDTOPLEFT, $BF_DIAGONAL_ENDTOPRIGHT, $BF_FLAT, $BF_LEFT, $BF_MIDDLE, $BF_MONO, $BF_RECT, $BF_RIGHT, $BF_SOFT, $BF_TOP, $BF_TOPLEFT, $BF_TOPRIGHT, $BLACKNESS, $BM_CLICK, $BM_GETCHECK, $BM_GETIMAGE, $BM_GETSTATE, $BM_SETCHECK, $BM_SETDONTCLICK, $BM_SETIMAGE, $BM_SETSTATE, $BM_SETSTYLE, $BN_CLICKED, $BN_DBLCLK, $BN_DISABLE, $BN_DOUBLECLICKED, $BN_HILITE, $BN_KILLFOCUS, $BN_PAINT, $BN_PUSHED, $BN_SETFOCUS, $BN_UNHILITE, $BN_UNPUSHED, $BOE_CONTEXTALIGNMENT, $BOE_CONTEXTREADING, $BOE_LEGACYBIDICLASS, $BOE_NEUTRALOVERRIDE, $BOE_PLAINTEXT, $BOE_RTLDIR, $BOM_CONTEXTALIGNMENT, $BOM_CONTEXTREADING, $BOM_DEFPARADIR, $BOM_LEGACYBIDICLASS, $BOM_NEUTRALOVERRIDE, $BOM_PLAINTEXT, $BS_3STATE, $BS_AUTO3STATE, $BS_AUTOCHECKBOX, $BS_AUTORADIOBUTTON, $BS_BITMAP, $BS_BOTTOM, $BS_CENTER, $BS_CHECKBOX, $BS_COMMANDLINK, $BS_DEFCOMMANDLINK, $BS_DEFPUSHBUTTON, $BS_DEFSPLITBUTTON, $BS_FLAT, $BS_GROUPBOX, $BS_ICON, $BS_LEFT, $BS_MULTILINE, $BS_NOTIFY, $BS_OWNERDRAW, $BS_PUSHBOX, $BS_PUSHLIKE, $BS_RADIOBUTTON, $BS_RIGHT, $BS_RIGHTBUTTON, $BS_SPLITBUTTON, $BS_TOP, $BS_VCENTER, $BST_CHECKED, $BST_DONTCLICK, $BST_FOCUS, $BST_INDETERMINATE, $BST_PUSHED, $BST_UNCHECKED, $BTNS_AUTOSIZE, $BTNS_BUTTON, $BTNS_CHECK, $BTNS_CHECKGROUP, $BTNS_DROPDOWN, $BTNS_GROUP, $BTNS_NOPREFIX, $BTNS_SEP, $BTNS_SHOWTEXT, $BTNS_WHOLEDROPDOWN, $BUTTON_IMAGELIST_ALIGN_BOTTOM, $BUTTON_IMAGELIST_ALIGN_CENTER, $BUTTON_IMAGELIST_ALIGN_LEFT, $BUTTON_IMAGELIST_ALIGN_RIGHT, $BUTTON_IMAGELIST_ALIGN_TOP, $CAPTUREBLT, $CB_ADDSTRING, $CB_DELETESTRING, $CB_DIR, $CB_ERR, $CB_ERRATTRIBUTE, $CB_ERRREQUIRED, $CB_ERRSPACE, $CB_FINDSTRING, $CB_FINDSTRINGEXACT, $CB_GETCOMBOBOXINFO, $CB_GETCOUNT, $CB_GETCUEBANNER, $CB_GETCURSEL, $CB_GETDROPPEDCONTROLRECT, $CB_GETDROPPEDSTATE, $CB_GETDROPPEDWIDTH, $CB_GETEDITSEL, $CB_GETEXTENDEDUI, $CB_GETHORIZONTALEXTENT, $CB_GETITEMDATA, $CB_GETITEMHEIGHT, $CB_GETLBTEXT, $CB_GETLBTEXTLEN, $CB_GETLOCALE, $CB_GETMINVISIBLE, $CB_GETTOPINDEX, $CB_INITSTORAGE, $CB_INSERTSTRING, $CB_LIMITTEXT, $CB_OKAY, $CB_RESETCONTENT, $CB_SELECTSTRING, $CB_SETCUEBANNER, $CB_SETCURSEL, $CB_SETDROPPEDWIDTH, $CB_SETEDITSEL, $CB_SETEXTENDEDUI, $CB_SETHORIZONTALEXTENT, $CB_SETITEMDATA, $CB_SETITEMHEIGHT, $CB_SETLOCALE, $CB_SETMINVISIBLE, $CB_SETTOPINDEX, $CB_SHOWDROPDOWN, $CBEIF_DI_SETITEM, $CBEIF_IMAGE, $CBEIF_INDENT, $CBEIF_LPARAM, $CBEIF_OVERLAY, $CBEIF_SELECTEDIMAGE, $CBEIF_TEXT, $CBEM_DELETEITEM, $CBEM_GETCOMBOCONTROL, $CBEM_GETEDITCONTROL, $CBEM_GETEXSTYLE, $CBEM_GETEXTENDEDSTYLE, $CBEM_GETIMAGELIST, $CBEM_GETITEMA, $CBEM_GETITEMW, $CBEM_GETUNICODEFORMAT, $CBEM_HASEDITCHANGED, $CBEM_INSERTITEMA, $CBEM_INSERTITEMW, $CBEM_SETEXSTYLE, $CBEM_SETEXTENDEDSTYLE, $CBEM_SETIMAGELIST, $CBEM_SETITEMA, $CBEM_SETITEMW, $CBEM_SETUNICODEFORMAT, $CBEM_SETWINDOWTHEME, $CBEN_BEGINEDIT, $CBEN_DELETEITEM, $CBEN_DRAGBEGINA, $CBEN_DRAGBEGINW, $CBEN_ENDEDITA, $CBEN_ENDEDITW"
	$sConstants &= "$CBEN_FIRST, $CBEN_GETDISPINFO, $CBEN_GETDISPINFOA, $CBEN_GETDISPINFOW, $CBEN_INSERTITEM, $CBEN_LAST, $CBES_EX_CASESENSITIVE, $CBES_EX_NOEDITIMAGE, $CBES_EX_NOEDITIMAGEINDENT, $CBES_EX_NOSIZELIMIT, $CBES_EX_PATHWORDBREAKPROC, $CBM_FIRST, $CBN_CLOSEUP, $CBN_DBLCLK, $CBN_DROPDOWN, $CBN_EDITCHANGE, $CBN_EDITUPDATE, $CBN_ERRSPACE, $CBN_KILLFOCUS, $CBN_SELCHANGE, $CBN_SELENDCANCEL, $CBN_SELENDOK, $CBN_SETFOCUS, $CBS_AUTOHSCROLL, $CBS_DISABLENOSCROLL, $CBS_DROPDOWN, $CBS_DROPDOWNLIST, $CBS_HASSTRINGS, $CBS_LOWERCASE, $CBS_NOINTEGRALHEIGHT, $CBS_OEMCONVERT, $CBS_OWNERDRAWFIXED, $CBS_OWNERDRAWVARIABLE, $CBS_SIMPLE, $CBS_SORT, $CBS_UPPERCASE, $CC_ANYCOLOR, $CC_FULLOPEN, $CC_RGBINIT, $CCM_FIRST, $CCM_GETCOLORSCHEME, $CCM_GETDROPTARGET, $CCM_GETUNICODEFORMAT, $CCM_SETBKCOLOR, $CCM_SETCOLORSCHEME, $CCM_SETUNICODEFORMAT, $CCM_SETWINDOWTHEME, $CCS_ADJUSTABLE, $CCS_BOTTOM, $CCS_LEFT, $CCS_NODIVIDER, $CCS_NOHILITE, $CCS_NOMOVEX, $CCS_NOMOVEY, $CCS_NOPARENTALIGN, $CCS_NORESIZE, $CCS_RIGHT, $CCS_TOP, $CCS_VERT, $CDDS_ITEM, $CDDS_ITEMPOSTERASE, $CDDS_ITEMPOSTPAINT, $CDDS_ITEMPREERASE, $CDDS_ITEMPREPAINT, $CDDS_POSTERASE, $CDDS_POSTPAINT, $CDDS_PREERASE, $CDDS_PREPAINT, $CDDS_SUBITEM, $CDIS_CHECKED, $CDIS_DEFAULT, $CDIS_DISABLED, $CDIS_DROPHILITED, $CDIS_FOCUS, $CDIS_GRAYED, $CDIS_HOT, $CDIS_INDETERMINATE, $CDIS_MARKED, $CDIS_NEARHOT, $CDIS_OTHERSIDEHOT, $CDIS_SELECTED, $CDIS_SHOWKEYBOARDCUES, $CDRF_DODEFAULT, $CDRF_DOERASE, $CDRF_NEWFONT, $CDRF_NOTIFYITEMDRAW, $CDRF_NOTIFYPOSTERASE, $CDRF_NOTIFYPOSTPAINT, $CDRF_NOTIFYSUBITEMDRAW, $CDRF_SKIPDEFAULT, $CDRF_SKIPPOSTPAINT, $CF_EFFECTS, $CF_INITTOLOGFONTSTRUCT, $CF_NOSCRIPTSEL, $CF_PRINTERFONTS, $CF_SCREENFONTS, $CFE_ALLCAPS, $CFE_AUTOBACKCOLOR, $CFE_AUTOCOLOR, $CFE_BOLD, $CFE_DISABLED, $CFE_EMBOSS, $CFE_HIDDEN, $CFE_IMPRINT, $CFE_ITALIC, $CFE_LINK, $CFE_OUTLINE, $CFE_PROTECTED, $CFE_REVISED, $CFE_SHADOW, $CFE_SMALLCAPS, $CFE_STRIKEOUT, $CFE_SUBSCRIPT, $CFE_SUPERSCRIPT, $CFE_UNDERLINE, $CFM_ALLCAPS, $CFM_ANIMATION, $CFM_BACKCOLOR, $CFM_BOLD, $CFM_CHARSET, $CFM_COLOR, $CFM_DISABLED, $CFM_EMBOSS, $CFM_FACE, $CFM_HIDDEN, $CFM_IMPRINT, $CFM_ITALIC, $CFM_KERNING, $CFM_LCID, $CFM_LINK, $CFM_OFFSET, $CFM_OUTLINE, $CFM_PROTECTED, $CFM_REVAUTHOR, $CFM_REVISED, $CFM_SHADOW, $CFM_SIZE, $CFM_SMALLCAPS, $CFM_SPACING, $CFM_STRIKEOUT, $CFM_STYLE, $CFM_SUBSCRIPT, $CFM_SUPERSCRIPT, $CFM_UNDERLINE, $CFM_UNDERLINETYPE, $CFM_WEIGHT, $CFU_UNDERLINE, $CFU_UNDERLINEDOTTED, $CFU_UNDERLINEDOUBLE, $CFU_UNDERLINENONE, $CFU_UNDERLINEWORD, $CHINESEBIG5_CHARSET, $CLIP_CHARACTER_PRECIS, $CLIP_DEFAULT_PRECIS, $CLIP_EMBEDDED, $CLIP_LH_ANGLES, $CLIP_MASK, $CLIP_STROKE_PRECIS, $CLIP_TT_ALWAYS, $CLR_AQUA, $CLR_BLACK, $CLR_BLUE, $CLR_CREAM, $CLR_DEFAULT, $CLR_FUCHSIA, $CLR_GRAY, $CLR_GREEN, $CLR_LIME, $CLR_MAROON, $CLR_MEDBLUE, $CLR_MEDGRAY, $CLR_MONEYGREEN, $CLR_NAVY, $CLR_NONE, $CLR_OLIVE, $CLR_PURPLE, $CLR_RED, $CLR_SILVER, $CLR_SKYBLUE, $CLR_TEAL, $CLR_WHITE, $CLR_YELLOW, $COLOR_3DDKSHADOW, $COLOR_3DFACE, $COLOR_3DHIGHLIGHT, $COLOR_3DHILIGHT, $COLOR_3DLIGHT, $COLOR_3DSHADOW, $COLOR_ACTIVEBORDER, $COLOR_ACTIVECAPTION, $COLOR_APPWORKSPACE, $COLOR_AQUA, $COLOR_BACKGROUND, $COLOR_BLACK, $COLOR_BLUE, $COLOR_BTNFACE, $COLOR_BTNHIGHLIGHT, $COLOR_BTNHILIGHT, $COLOR_BTNSHADOW, $COLOR_BTNTEXT, $COLOR_CAPTIONTEXT, $COLOR_CREAM, $COLOR_DESKTOP, $COLOR_FUCHSIA, $COLOR_GRADIENTACTIVECAPTION, $COLOR_GRADIENTINACTIVECAPTION, $COLOR_GRAY, $COLOR_GRAYTEXT, $COLOR_GREEN, $COLOR_HIGHLIGHT, $COLOR_HIGHLIGHTTEXT, $COLOR_HOTLIGHT, $COLOR_INACTIVEBORDER, $COLOR_INACTIVECAPTION, $COLOR_INACTIVECAPTIONTEXT, $COLOR_INFOBK, $COLOR_INFOTEXT, $COLOR_LIME, $COLOR_MAROON, $COLOR_MEDBLUE, $COLOR_MEDGRAY, $COLOR_MENU, $COLOR_MENUBAR, $COLOR_MENUHILIGHT, $COLOR_MENUTEXT, $COLOR_MONEYGREEN, $COLOR_NAVY, $COLOR_OLIVE, $COLOR_PURPLE, $COLOR_RED, $COLOR_SCROLLBAR, $COLOR_SILVER, $COLOR_SKYBLUE, $COLOR_TEAL, $COLOR_WHITE, $COLOR_WINDOW, $COLOR_WINDOWFRAME, $COLOR_WINDOWTEXT, $COLOR_YELLOW, $COMPLEXREGION, $CP_ACP, $CP_UNICODE, $CREATE_ALWAYS, $CREATE_NEW"
	$sConstants &= "$DDL_ARCHIVE, $DDL_DIRECTORY, $DDL_DRIVES, $DDL_EXCLUSIVE, $DDL_HIDDEN, $DDL_READONLY, $DDL_READWRITE, $DDL_SYSTEM, $DEFAULT_CHARSET, $DEFAULT_PITCH, $DEFAULT_QUALITY, $DFC_BUTTON, $DFC_CAPTION, $DFC_MENU, $DFC_POPUPMENU, $DFC_SCROLL, $DFCS_ADJUSTRECT, $DFCS_BUTTON3STATE, $DFCS_BUTTONCHECK, $DFCS_BUTTONPUSH, $DFCS_BUTTONRADIO, $DFCS_BUTTONRADIOIMAGE, $DFCS_BUTTONRADIOMASK, $DFCS_CAPTIONCLOSE, $DFCS_CAPTIONHELP, $DFCS_CAPTIONMAX, $DFCS_CAPTIONMIN, $DFCS_CAPTIONRESTORE, $DFCS_CHECKED, $DFCS_FLAT, $DFCS_HOT, $DFCS_INACTIVE, $DFCS_MENUARROW, $DFCS_MENUARROWRIGHT, $DFCS_MENUBULLET, $DFCS_MENUCHECK, $DFCS_PUSHED, $DFCS_SCROLLCOMBOBOX, $DFCS_SCROLLDOWN, $DFCS_SCROLLLEFT, $DFCS_SCROLLRIGHT, $DFCS_SCROLLSIZEGRIP, $DFCS_SCROLLSIZEGRIPRIGHT, $DFCS_SCROLLUP, $DFCS_TRANSPARENT, $DI_COMPAT, $DI_DEFAULTSIZE, $DI_IMAGE, $DI_MASK, $DI_NOMIRROR, $DI_NORMAL, $DISPLAY_DEVICE_ATTACHED_TO_DESKTOP, $DISPLAY_DEVICE_DISCONNECT, $DISPLAY_DEVICE_MIRRORING_DRIVER, $DISPLAY_DEVICE_MODESPRUNED, $DISPLAY_DEVICE_MULTI_DRIVER, $DISPLAY_DEVICE_PRIMARY_DEVICE, $DISPLAY_DEVICE_REMOTE, $DISPLAY_DEVICE_REMOVABLE, $DISPLAY_DEVICE_VGA_COMPATIBLE, $DLG_MOVEABLE, $DLG_NOTITLE, $DLG_NOTONTOP, $DLG_TEXTLEFT, $DLG_TEXTRIGHT, $DLG_TEXTVCENTER, $DONT_RESOLVE_DLL_REFERENCES, $DRAFT_QUALITY, $DS_CONTEXTHELP, $DS_MODALFRAME, $DS_SETFOREGROUND, $DSTINVERT, $DT_BOTTOM, $DT_CALCRECT, $DT_CENTER, $DT_EDITCONTROL, $DT_END_ELLIPSIS, $DT_EXPANDTABS, $DT_EXTERNALLEADING, $DT_HIDEPREFIX, $DT_INTERNAL, $DT_LEFT, $DT_MODIFYSTRING, $DT_NOCLIP, $DT_NOFULLWIDTHCHARBREAK, $DT_NOPREFIX, $DT_PATH_ELLIPSIS, $DT_PREFIXONLY, $DT_RIGHT, $DT_RTLREADING, $DT_SINGLELINE, $DT_TABSTOP, $DT_TOP, $DT_VCENTER, $DT_WORD_ELLIPSIS, $DT_WORDBREAK, $DTM_FIRST, $DTM_GETMCCOLOR, $DTM_GETMCFONT, $DTM_GETMONTHCAL, $DTM_GETRANGE, $DTM_GETSYSTEMTIME, $DTM_SETFORMAT, $DTM_SETFORMATW, $DTM_SETMCCOLOR, $DTM_SETMCFONT, $DTM_SETRANGE, $DTM_SETSYSTEMTIME, $DTN_CLOSEUP, $DTN_DATETIMECHANGE, $DTN_DROPDOWN, $DTN_FIRST, $DTN_FIRST2, $DTN_FORMAT, $DTN_FORMATQUERY, $DTN_FORMATQUERYW, $DTN_FORMATW, $DTN_USERSTRING, $DTN_USERSTRINGW, $DTN_WMKEYDOWN, $DTN_WMKEYDOWNW, $DTS_APPCANPARSE, $DTS_LONGDATEFORMAT, $DTS_RIGHTALIGN, $DTS_SHORTDATECENTURYFORMAT, $DTS_SHORTDATEFORMAT, $DTS_SHOWNONE, $DTS_TIMEFORMAT, $DTS_UPDOWN, $E_INVALIDARG, $EASTEUROPE_CHARSET, $EC_ERR, $EC_LEFTMARGIN, $EC_RIGHTMARGIN, $EC_USEFONTINFO, $ECM_FIRST, $EDGE_BUMP, $EDGE_ETCHED, $EDGE_RAISED, $EDGE_SUNKEN, $EIMES_CANCELCOMPSTRINFOCUS, $EIMES_COMPLETECOMPSTRKILLFOCUS, $EIMES_GETCOMPSTRATONCE, $EM_AUTOURLDETECT, $EM_CANPASTE, $EM_CANREDO, $EM_CANUNDO, $EM_CHARFROMPOS, $EM_DISPLAYBAND, $EM_EMPTYUNDOBUFFER, $EM_EXGETSEL, $EM_EXLIMITTEXT, $EM_EXLINEFROMCHAR, $EM_EXSETSEL, $EM_FINDTEXT, $EM_FINDTEXTEX, $EM_FINDTEXTEXW, $EM_FINDTEXTW, $EM_FINDWORDBREAK, $EM_FMTLINES, $EM_FORMATRANGE, $EM_GETAUTOURLDETECT, $EM_GETBIDIOPTIONS, $EM_GETCHARFORMAT, $EM_GETCUEBANNER, $EM_GETEDITSTYLE, $EM_GETEVENTMASK, $EM_GETFIRSTVISIBLELINE, $EM_GETHANDLE, $EM_GETIMECOLOR, $EM_GETIMECOMPMODE, $EM_GETIMEMODEBIAS, $EM_GETIMEOPTIONS, $EM_GETIMESTATUS, $EM_GETLANGOPTIONS, $EM_GETLIMITTEXT, $EM_GETLINE, $EM_GETLINECOUNT, $EM_GETMARGINS, $EM_GETMODIFY, $EM_GETOPTIONS, $EM_GETPARAFORMAT, $EM_GETPASSWORDCHAR, $EM_GETPUNCTUATION, $EM_GETRECT, $EM_GETREDONAME, $EM_GETSCROLLPOS, $EM_GETSEL, $EM_GETSELTEXT, $EM_GETTEXTEX, $EM_GETTEXTLENGTHEX, $EM_GETTEXTMODE, $EM_GETTEXTRANGE, $EM_GETTHUMB, $EM_GETTYPOGRAPHYOPTIONS, $EM_GETUNDONAME, $EM_GETWORDBREAKPROC, $EM_GETWORDBREAKPROCEX, $EM_GETWORDWRAPMODE, $EM_GETZOOM, $EM_HIDEBALLOONTIP, $EM_HIDESELECTION, $EM_LIMITTEXT, $EM_LINEFROMCHAR, $EM_LINEINDEX, $EM_LINELENGTH, $EM_LINESCROLL, $EM_PASTESPECIAL, $EM_POSFROMCHAR, $EM_RECONVERSION, $EM_REDO, $EM_REPLACESEL, $EM_REQUESTRESIZE, $EM_SCROLL, $EM_SCROLLCARET, $EM_SELECTIONTYPE, $EM_SETBIDIOPTIONS, $EM_SETBKGNDCOLOR, $EM_SETCHARFORMAT, $EM_SETCUEBANNER, $EM_SETEDITSTYLE, $EM_SETEVENTMASK, $EM_SETFONTSIZE, $EM_SETHANDLE, $EM_SETIMECOLOR, $EM_SETIMEMODEBIAS, $EM_SETIMEOPTIONS, $EM_SETIMESTATUS"
	$sConstants &= "$EM_SETLANGOPTIONS, $EM_SETLIMITTEXT, $EM_SETMARGINS, $EM_SETMODIFY, $EM_SETOLECALLBACK, $EM_SETOPTIONS, $EM_SETPALETTE, $EM_SETPARAFORMAT, $EM_SETPASSWORDCHAR, $EM_SETPUNCTUATION, $EM_SETREADONLY, $EM_SETRECT, $EM_SETRECTNP, $EM_SETSCROLLPOS, $EM_SETSEL, $EM_SETTABSTOPS, $EM_SETTARGETDEVICE, $EM_SETTEXTEX, $EM_SETTEXTMODE, $EM_SETTYPOGRAPHYOPTIONS, $EM_SETUNDOLIMIT, $EM_SETWORDBREAKPROC, $EM_SETWORDBREAKPROCEX, $EM_SETWORDWRAPMODE, $EM_SETZOOM, $EM_SHOWBALLOONTIP, $EM_SHOWSCROLLBAR, $EM_STOPGROUPTYPING, $EM_STREAMIN, $EM_STREAMOUT, $EM_UNDO, $EMSIS_COMPOSITIONSTRING, $EN_ALIGN_LTR_EC, $EN_ALIGN_RTL_EC, $EN_ALIGNLTR, $EN_ALIGNRTL, $EN_CHANGE, $EN_CORRECTTEXT, $EN_DRAGDROPDONE, $EN_DROPFILES, $EN_ERRSPACE, $EN_HSCROLL, $EN_IMECHANGE, $EN_KILLFOCUS, $EN_LINK, $EN_MAXTEXT, $EN_MSGFILTER, $EN_OBJECTPOSITIONS, $EN_OLEOPFAILED, $EN_PROTECTED, $EN_REQUESTRESIZE, $EN_SAVECLIPBOARD, $EN_SELCHANGE, $EN_SETFOCUS, $EN_STOPNOUNDO, $EN_UPDATE, $EN_VSCROLL, $ENM_CHANGE, $ENM_CORRECTTEXT, $ENM_DRAGDROPDONE, $ENM_DROPFILES, $ENM_IMECHANGE, $ENM_KEYEVENTS, $ENM_LINK, $ENM_MOUSEEVENTS, $ENM_OBJECTPOSITIONS, $ENM_PROTECTED, $ENM_REQUESTRESIZE, $ENM_SCROLL, $ENM_SCROLLEVENTS, $ENM_SELCHANGE, $ENM_UPDATE, $EOF, $ERROR_NO_TOKEN, $ERRORREGION, $ES_AUTOHSCROLL, $ES_AUTOVSCROLL, $ES_CENTER, $ES_DISABLENOSCROLL, $ES_LEFT, $ES_LOWERCASE, $ES_MULTILINE, $ES_NOHIDESEL, $ES_NUMBER, $ES_OEMCONVERT, $ES_PASSWORD, $ES_READONLY, $ES_RIGHT, $ES_SELECTIONBAR, $ES_SUNKEN, $ES_UPPERCASE, $ES_VERTICAL, $ES_WANTRETURN, $ESB_DISABLE_BOTH, $ESB_DISABLE_DOWN, $ESB_DISABLE_LEFT, $ESB_DISABLE_LTUP, $ESB_DISABLE_RIGHT, $ESB_DISABLE_RTDN, $ESB_DISABLE_UP, $ESB_ENABLE_BOTH, $FC_NOOVERWRITE, $FC_OVERWRITE, $FD_FILEMUSTEXIST, $FD_MULTISELECT, $FD_PATHMUSTEXIST, $FD_PROMPTCREATENEW, $FD_PROMPTOVERWRITE, $FF_DECORATIVE, $FF_DONTCARE, $FF_MODERN, $FF_ROMAN, $FF_SCRIPT, $FF_SWISS, $FILE_ATTRIBUTE_ARCHIVE, $FILE_ATTRIBUTE_COMPRESSED, $FILE_ATTRIBUTE_DEVICE, $FILE_ATTRIBUTE_DIRECTORY, $FILE_ATTRIBUTE_ENCRYPTED, $FILE_ATTRIBUTE_HIDDEN, $FILE_ATTRIBUTE_NORMAL, $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED, $FILE_ATTRIBUTE_OFFLINE, $FILE_ATTRIBUTE_READONLY, $FILE_ATTRIBUTE_REPARSE_POINT, $FILE_ATTRIBUTE_SPARSE_FILE, $FILE_ATTRIBUTE_SYSTEM, $FILE_ATTRIBUTE_TEMPORARY, $FILE_BEGIN, $FILE_CURRENT, $FILE_END, $FILE_SHARE_DELETE, $FILE_SHARE_READ, $FILE_SHARE_WRITE, $FIXED_PITCH, $FLASHW_CAPTION, $FLASHW_TIMER, $FLASHW_TIMERNOFG, $FLASHW_TRAY, $FO_APPEND, $FO_BINARY, $FO_OVERWRITE, $FO_READ, $FO_UNICODE, $FO_UTF16_BE, $FO_UTF16_LE, $FO_UTF8, $FORMAT_MESSAGE_ALLOCATE_BUFFER, $FORMAT_MESSAGE_ARGUMENT_ARRAY, $FORMAT_MESSAGE_FROM_HMODULE, $FORMAT_MESSAGE_FROM_STRING, $FORMAT_MESSAGE_FROM_SYSTEM, $FORMAT_MESSAGE_IGNORE_INSERTS, $FR_DOWN, $FR_MATCHALEFHAMZA, $FR_MATCHCASE, $FR_MATCHDIAC, $FR_MATCHKASHIDA, $FR_WHOLEWORD, $FT_ACCESSED, $FT_CREATED, $FT_MODIFIED, $FW_BLACK, $FW_BOLD, $FW_DEMIBOLD, $FW_DONTCARE, $FW_EXTRABOLD, $FW_EXTRALIGHT, $FW_HEAVY, $FW_LIGHT, $FW_MEDIUM, $FW_NORMAL, $FW_REGULAR, $FW_SEMIBOLD, $FW_THIN, $FW_ULTRABOLD, $FW_ULTRALIGHT, $GA_PARENT, $GA_ROOT, $GA_ROOTOWNER, $GB2312_CHARSET, $GDIP_DASHCAPFLAT, $GDIP_DASHCAPROUND, $GDIP_DASHCAPTRIANGLE, $GDIP_DASHSTYLECUSTOM, $GDIP_DASHSTYLEDASH, $GDIP_DASHSTYLEDASHDOT, $GDIP_DASHSTYLEDASHDOTDOT, $GDIP_DASHSTYLEDOT, $GDIP_DASHSTYLESOLID, $GDIP_EPGCHROMINANCETABLE, $GDIP_EPGCOLORDEPTH, $GDIP_EPGCOMPRESSION, $GDIP_EPGLUMINANCETABLE, $GDIP_EPGQUALITY, $GDIP_EPGRENDERMETHOD, $GDIP_EPGSAVEFLAG, $GDIP_EPGSCANMETHOD, $GDIP_EPGTRANSFORMATION, $GDIP_EPGVERSION, $GDIP_EPTASCII, $GDIP_EPTBYTE, $GDIP_EPTLONG, $GDIP_EPTLONGRANGE, $GDIP_EPTRATIONAL, $GDIP_EPTRATIONALRANGE, $GDIP_EPTSHORT, $GDIP_EPTUNDEFINED, $GDIP_ERRABORTED, $GDIP_ERRACCESSDENIED, $GDIP_ERRFILENOTFOUND, $GDIP_ERRFONTFAMILYNOTFOUND, $GDIP_ERRFONTSTYLENOTFOUND, $GDIP_ERRGDIPLUSNOTINITIALIZED, $GDIP_ERRGENERICERROR, $GDIP_ERRINSUFFICIENTBUFFER, $GDIP_ERRINVALIDPARAMETER, $GDIP_ERRNOTIMPLEMENTED, $GDIP_ERRNOTTRUETYPEFONT, $GDIP_ERROBJECTBUSY, $GDIP_ERROK, $GDIP_ERROUTOFMEMORY"
	$sConstants &= "$GDIP_ERRPROPERTYNOTFOUND, $GDIP_ERRPROPERTYNOTSUPPORTED, $GDIP_ERRUNKNOWNIMAGEFORMAT, $GDIP_ERRUNSUPPORTEDGDIVERSION, $GDIP_ERRVALUEOVERFLOW, $GDIP_ERRWIN32ERROR, $GDIP_ERRWRONGSTATE, $GDIP_EVTCOMPRESSIONCCITT3, $GDIP_EVTCOMPRESSIONCCITT4, $GDIP_EVTCOMPRESSIONLZW, $GDIP_EVTCOMPRESSIONNONE, $GDIP_EVTCOMPRESSIONRLE, $GDIP_EVTFLUSH, $GDIP_EVTFRAMEDIMENSIONPAGE, $GDIP_EVTLASTFRAME, $GDIP_EVTMULTIFRAME, $GDIP_EVTTRANSFORMFLIPHORIZONTAL, $GDIP_EVTTRANSFORMFLIPVERTICAL, $GDIP_EVTTRANSFORMROTATE180, $GDIP_EVTTRANSFORMROTATE270, $GDIP_EVTTRANSFORMROTATE90, $GDIP_ICFBLOCKINGDECODE, $GDIP_ICFBUILTIN, $GDIP_ICFDECODER, $GDIP_ICFENCODER, $GDIP_ICFSEEKABLEENCODE, $GDIP_ICFSUPPORTBITMAP, $GDIP_ICFSUPPORTVECTOR, $GDIP_ICFSYSTEM, $GDIP_ICFUSER, $GDIP_ILMREAD, $GDIP_ILMUSERINPUTBUF, $GDIP_ILMWRITE, $GDIP_IMAGEFLAGS_CACHING, $GDIP_IMAGEFLAGS_COLORSPACE_CMYK, $GDIP_IMAGEFLAGS_COLORSPACE_GRAY, $GDIP_IMAGEFLAGS_COLORSPACE_RGB, $GDIP_IMAGEFLAGS_COLORSPACE_YCBCR, $GDIP_IMAGEFLAGS_COLORSPACE_YCCK, $GDIP_IMAGEFLAGS_HASALPHA, $GDIP_IMAGEFLAGS_HASREALDPI, $GDIP_IMAGEFLAGS_HASREALPIXELSIZE, $GDIP_IMAGEFLAGS_HASTRANSLUCENT, $GDIP_IMAGEFLAGS_NONE, $GDIP_IMAGEFLAGS_PARTIALLYSCALABLE, $GDIP_IMAGEFLAGS_READONLY, $GDIP_IMAGEFLAGS_SCALABLE, $GDIP_IMAGEFORMAT_BMP, $GDIP_IMAGEFORMAT_EMF, $GDIP_IMAGEFORMAT_EXIF, $GDIP_IMAGEFORMAT_GIF, $GDIP_IMAGEFORMAT_ICON, $GDIP_IMAGEFORMAT_JPEG, $GDIP_IMAGEFORMAT_MEMORYBMP, $GDIP_IMAGEFORMAT_PNG, $GDIP_IMAGEFORMAT_TIFF, $GDIP_IMAGEFORMAT_UNDEFINED, $GDIP_IMAGEFORMAT_WMF, $GDIP_IMAGETYPE_BITMAP, $GDIP_IMAGETYPE_METAFILE, $GDIP_IMAGETYPE_UNKNOWN, $GDIP_LINECAPARROWANCHOR, $GDIP_LINECAPCUSTOM, $GDIP_LINECAPDIAMONDANCHOR, $GDIP_LINECAPFLAT, $GDIP_LINECAPNOANCHOR, $GDIP_LINECAPROUND, $GDIP_LINECAPROUNDANCHOR, $GDIP_LINECAPSQUARE, $GDIP_LINECAPSQUAREANCHOR, $GDIP_LINECAPTRIANGLE, $GDIP_PXF01INDEXED, $GDIP_PXF04INDEXED, $GDIP_PXF08INDEXED, $GDIP_PXF16ARGB1555, $GDIP_PXF16GRAYSCALE, $GDIP_PXF16RGB555, $GDIP_PXF16RGB565, $GDIP_PXF24RGB, $GDIP_PXF32ARGB, $GDIP_PXF32PARGB, $GDIP_PXF32RGB, $GDIP_PXF48RGB, $GDIP_PXF64ARGB, $GDIP_PXF64PARGB, $GDT_ERROR, $GDT_NONE, $GDT_VALID, $GDTR_MAX, $GDTR_MIN, $GENERIC_ALL, $GENERIC_EXECUTE, $GENERIC_READ, $GENERIC_WRITE, $GHND, $GMEM_DDESHARE, $GMEM_DISCARDABLE, $GMEM_FIXED, $GMEM_INVALID_HANDLE, $GMEM_LOWER, $GMEM_MODIFY, $GMEM_MOVEABLE, $GMEM_NOCOMPACT, $GMEM_NODISCARD, $GMEM_NOT_BANKED, $GMEM_NOTIFY, $GMEM_SHARE, $GMEM_VALID_FLAGS, $GMEM_ZEROINIT, $GPTR, $GREEK_CHARSET, $GT_DEFAULT, $GT_SELECTION, $GT_USECRLF, $GTL_CLOSE, $GTL_DEFAULT, $GTL_NUMBYTES, $GTL_NUMCHARS, $GTL_PRECISE, $GTL_USECRLF, $GUI_ACCEPTFILES, $GUI_AVICLOSE, $GUI_AVISTART, $GUI_AVISTOP, $GUI_BKCOLOR_DEFAULT, $GUI_BKCOLOR_LV_ALTERNATE, $GUI_BKCOLOR_TRANSPARENT, $GUI_CHECKED, $GUI_DEFBUTTON, $GUI_DISABLE, $GUI_DOCKALL, $GUI_DOCKAUTO, $GUI_DOCKBORDERS, $GUI_DOCKBOTTOM, $GUI_DOCKHCENTER, $GUI_DOCKHEIGHT, $GUI_DOCKLEFT, $GUI_DOCKMENUBAR, $GUI_DOCKRIGHT, $GUI_DOCKSIZE, $GUI_DOCKSTATEBAR, $GUI_DOCKTOP, $GUI_DOCKVCENTER, $GUI_DOCKWIDTH, $GUI_DROPACCEPTED, $GUI_ENABLE, $GUI_EVENT_CLOSE, $GUI_EVENT_DROPPED, $GUI_EVENT_MAXIMIZE, $GUI_EVENT_MINIMIZE, $GUI_EVENT_MOUSEMOVE, $GUI_EVENT_PRIMARYDOWN, $GUI_EVENT_PRIMARYUP, $GUI_EVENT_RESIZED, $GUI_EVENT_RESTORE, $GUI_EVENT_SECONDARYDOWN, $GUI_EVENT_SECONDARYUP, $GUI_EXPAND, $GUI_FOCUS, $GUI_FONTITALIC, $GUI_FONTSTRIKE, $GUI_FONTUNDER, $GUI_GR_BEZIER, $GUI_GR_CLOSE, $GUI_GR_COLOR, $GUI_GR_DOT, $GUI_GR_ELLIPSE, $GUI_GR_HINT, $GUI_GR_LINE, $GUI_GR_MOVE, $GUI_GR_NOBKCOLOR, $GUI_GR_PENSIZE, $GUI_GR_PIE, $GUI_GR_PIXEL, $GUI_GR_RECT, $GUI_GR_REFRESH, $GUI_HIDE, $GUI_INDETERMINATE, $GUI_NODROPACCEPTED, $GUI_NOFOCUS, $GUI_ONTOP, $GUI_RUNDEFMSG, $GUI_SHOW, $GUI_SS_DEFAULT_AVI, $GUI_SS_DEFAULT_BUTTON, $GUI_SS_DEFAULT_CHECKBOX, $GUI_SS_DEFAULT_COMBO, $GUI_SS_DEFAULT_DATE, $GUI_SS_DEFAULT_EDIT, $GUI_SS_DEFAULT_GRAPHIC, $GUI_SS_DEFAULT_GROUP, $GUI_SS_DEFAULT_GUI, $GUI_SS_DEFAULT_ICON, $GUI_SS_DEFAULT_INPUT, $GUI_SS_DEFAULT_LABEL, $GUI_SS_DEFAULT_LIST, $GUI_SS_DEFAULT_LISTVIEW, $GUI_SS_DEFAULT_MONTHCAL"
	$sConstants &= "$GUI_SS_DEFAULT_PIC, $GUI_SS_DEFAULT_PROGRESS, $GUI_SS_DEFAULT_RADIO, $GUI_SS_DEFAULT_SLIDER, $GUI_SS_DEFAULT_TAB, $GUI_SS_DEFAULT_TREEVIEW, $GUI_SS_DEFAULT_UPDOWN, $GUI_UNCHECKED, $GUI_WS_EX_PARENTDRAG, $GW_CHILD, $GW_HWNDFIRST, $GW_HWNDLAST, $GW_HWNDNEXT, $GW_HWNDPREV, $GW_OWNER, $GWL_EXSTYLE, $GWL_HINSTANCE, $GWL_HWNDPARENT, $GWL_ID, $GWL_STYLE, $GWL_USERDATA, $GWL_WNDPROC, $HANGEUL_CHARSET, $HDF_BITMAP, $HDF_BITMAP_ON_RIGHT, $HDF_CENTER, $HDF_DISPLAYMASK, $HDF_FLAGMASK, $HDF_IMAGE, $HDF_JUSTIFYMASK, $HDF_LEFT, $HDF_OWNERDRAW, $HDF_RIGHT, $HDF_RTLREADING, $HDF_SORTDOWN, $HDF_SORTUP, $HDF_STRING, $HDI_BITMAP, $HDI_DI_SETITEM, $HDI_FILTER, $HDI_FORMAT, $HDI_IMAGE, $HDI_ORDER, $HDI_PARAM, $HDI_TEXT, $HDI_WIDTH, $HDM_CLEARFILTER, $HDM_CREATEDRAGIMAGE, $HDM_DELETEITEM, $HDM_EDITFILTER, $HDM_FIRST, $HDM_GETBITMAPMARGIN, $HDM_GETFOCUSEDITEM, $HDM_GETIMAGELIST, $HDM_GETITEMA, $HDM_GETITEMCOUNT, $HDM_GETITEMDROPDOWNRECT, $HDM_GETITEMRECT, $HDM_GETITEMW, $HDM_GETORDERARRAY, $HDM_GETOVERFLOWRECT, $HDM_GETUNICODEFORMAT, $HDM_HITTEST, $HDM_INSERTITEMA, $HDM_INSERTITEMW, $HDM_LAYOUT, $HDM_ORDERTOINDEX, $HDM_SETBITMAPMARGIN, $HDM_SETFILTERCHANGETIMEOUT, $HDM_SETFOCUSEDITEM, $HDM_SETHOTDIVIDER, $HDM_SETIMAGELIST, $HDM_SETITEMA, $HDM_SETITEMW, $HDM_SETORDERARRAY, $HDM_SETUNICODEFORMAT, $HDN_BEGINDRAG, $HDN_BEGINTRACK, $HDN_BEGINTRACKW, $HDN_DIVIDERDBLCLICK, $HDN_DIVIDERDBLCLICKW, $HDN_ENDDRAG, $HDN_ENDTRACK, $HDN_ENDTRACKW, $HDN_FILTERBTNCLICK, $HDN_FILTERCHANGE, $HDN_FIRST, $HDN_GETDISPINFO, $HDN_GETDISPINFOW, $HDN_ITEMCHANGED, $HDN_ITEMCHANGEDW, $HDN_ITEMCHANGING, $HDN_ITEMCHANGINGW, $HDN_ITEMCLICK, $HDN_ITEMCLICKW, $HDN_ITEMDBLCLICK, $HDN_ITEMDBLCLICKW, $HDN_TRACK, $HDN_TRACKW, $HDS_BUTTONS, $HDS_CHECKBOXES, $HDS_DEFAULT, $HDS_DRAGDROP, $HDS_FILTERBAR, $HDS_FLAT, $HDS_FULLDRAG, $HDS_HIDDEN, $HDS_HORZ, $HDS_HOTTRACK, $HDS_NOSIZING, $HDS_OVERFLOW, $HHT_ABOVE, $HHT_BELOW, $HHT_NOWHERE, $HHT_ONDIVIDER, $HHT_ONDIVOPEN, $HHT_ONFILTER, $HHT_ONFILTERBUTTON, $HHT_ONHEADER, $HHT_TOLEFT, $HHT_TORIGHT, $HICF_ACCELERATOR, $HICF_ARROWKEYS, $HICF_DUPACCEL, $HICF_ENTERING, $HICF_LEAVING, $HICF_LMOUSE, $HICF_MOUSE, $HICF_OTHER, $HICF_RESELECT, $HICF_TOGGLEDROPDOWN, $HINST_COMMCTRL, $HTBORDER, $HTBOTTOM, $HTBOTTOMLEFT, $HTBOTTOMRIGHT, $HTCAPTION, $HTCLIENT, $HTCLOSE, $HTERROR, $HTGROWBOX, $HTHELP, $HTHSCROLL, $HTLEFT, $HTMAXBUTTON, $HTMENU, $HTMINBUTTON, $HTNOWHERE, $HTOBJECT, $HTREDUCE, $HTRIGHT, $HTSIZE, $HTSIZEFIRST, $HTSIZELAST, $HTSYSMENU, $HTTOP, $HTTOPLEFT, $HTTOPRIGHT, $HTTRANSPARENT, $HTVSCROLL, $HTZOOM, $HWND_BOTTOM, $HWND_NOTOPMOST, $HWND_TOP, $HWND_TOPMOST, $IDABORT, $IDB_HIST_LARGE_COLOR, $IDB_HIST_SMALL_COLOR, $IDB_STD_LARGE_COLOR, $IDB_STD_SMALL_COLOR, $IDB_VIEW_LARGE_COLOR, $IDB_VIEW_SMALL_COLOR, $IDC_APPSTARTING, $IDC_ARROW, $IDC_CROSS, $IDC_HAND, $IDC_HELP, $IDC_IBEAM, $IDC_ICON, $IDC_NO, $IDC_SIZE, $IDC_SIZEALL, $IDC_SIZENESW, $IDC_SIZENS, $IDC_SIZENWSE, $IDC_SIZEWE, $IDC_UNKNOWN, $IDC_UPARROW, $IDC_WAIT, $IDCANCEL, $IDCONTINUE, $IDI_APPLICATION, $IDI_ASTERISK, $IDI_EXCLAMATION, $IDI_HAND, $IDI_QUESTION, $IDI_WINLOGO, $IDIGNORE, $IDNO, $IDOK, $IDRETRY, $IDTIMEOUT, $IDTRYAGAIN, $IDYES, $ILC_COLOR, $ILC_COLOR16, $ILC_COLOR24, $ILC_COLOR32, $ILC_COLOR4, $ILC_COLOR8, $ILC_COLORDDB, $ILC_MASK, $ILC_MIRROR, $ILC_PALETTE, $ILC_PERITEMMIRROR, $ILCF_MOVE, $ILCF_SWAP, $ILD_BLEND25, $ILD_BLEND50, $ILD_IMAGE, $ILD_MASK, $ILD_NORMAL, $ILD_OVERLAYMASK, $ILD_ROP, $ILD_TRANSPARENT, $ILS_ALPHA, $ILS_GLOW, $ILS_NORMAL, $ILS_SATURATE, $ILS_SHADOW, $IMAGE_BITMAP, $IMAGE_CURSOR, $IMAGE_ICON, $INVALID_SET_FILE_POINTER, $IPM_CLEARADDRESS, $IPM_GETADDRESS, $IPM_ISBLANK, $IPM_SETADDRESS, $IPM_SETFOCUS, $IPM_SETRANGE, $IPN_FIELDCHANGED, $IPN_FIRST, $KB_CAPSOFF, $KB_CAPSON, $KB_SENDRAW, $KB_SENDSPECIAL, $LANG_AFRIKAANS, $LANG_ALBANIAN, $LANG_ARABIC, $LANG_ARMENIAN, $LANG_ASSAMESE, $LANG_AZERI, $LANG_BASQUE, $LANG_BELARUSIAN, $LANG_BENGALI, $LANG_BULGARIAN, $LANG_CATALAN, $LANG_CHINESE, $LANG_CROATIAN, $LANG_CZECH, $LANG_DANISH, $LANG_DUTCH, $LANG_ENGLISH"
	$sConstants &= "$LANG_ESTONIAN, $LANG_FAEROESE, $LANG_FARSI, $LANG_FINNISH, $LANG_FRENCH, $LANG_GEORGIAN, $LANG_GERMAN, $LANG_GREEK, $LANG_GUJARATI, $LANG_HEBREW, $LANG_HINDI, $LANG_HUNGARIAN, $LANG_ICELANDIC, $LANG_INDONESIAN, $LANG_ITALIAN, $LANG_JAPANESE, $LANG_KANNADA, $LANG_KASHMIRI, $LANG_KAZAK, $LANG_KONKANI, $LANG_KOREAN, $LANG_LATVIAN, $LANG_LITHUANIAN, $LANG_MACEDONIAN, $LANG_MALAY, $LANG_MALAYALAM, $LANG_MANIPURI, $LANG_MARATHI, $LANG_NEPALI, $LANG_NEUTRAL, $LANG_NORWEGIAN, $LANG_ORIYA, $LANG_POLISH, $LANG_PORTUGUESE, $LANG_PUNJABI, $LANG_ROMANIAN, $LANG_RUSSIAN, $LANG_SANSKRIT, $LANG_SERBIAN, $LANG_SINDHI, $LANG_SLOVAK, $LANG_SLOVENIAN, $LANG_SPANISH, $LANG_SWAHILI, $LANG_SWEDISH, $LANG_TAMIL, $LANG_TATAR, $LANG_TELUGU, $LANG_THAI, $LANG_TURKISH, $LANG_UKRAINIAN, $LANG_URDU, $LANG_UZBEK, $LANG_VIETNAMESE, $LB_ADDFILE, $LB_ADDSTRING, $LB_DELETESTRING, $LB_DIR, $LB_ERR, $LB_ERRATTRIBUTE, $LB_ERRREQUIRED, $LB_ERRSPACE, $LB_FINDSTRING, $LB_FINDSTRINGEXACT, $LB_GETANCHORINDEX, $LB_GETCARETINDEX, $LB_GETCOUNT, $LB_GETCURSEL, $LB_GETHORIZONTALEXTENT, $LB_GETITEMDATA, $LB_GETITEMHEIGHT, $LB_GETITEMRECT, $LB_GETLISTBOXINFO, $LB_GETLOCALE, $LB_GETSEL, $LB_GETSELCOUNT, $LB_GETSELITEMS, $LB_GETTEXT, $LB_GETTEXTLEN, $LB_GETTOPINDEX, $LB_INITSTORAGE, $LB_INSERTSTRING, $LB_ITEMFROMPOINT, $LB_MULTIPLEADDSTRING, $LB_RESETCONTENT, $LB_SELECTSTRING, $LB_SELITEMRANGE, $LB_SELITEMRANGEEX, $LB_SETANCHORINDEX, $LB_SETCARETINDEX, $LB_SETCOLUMNWIDTH, $LB_SETCOUNT, $LB_SETCURSEL, $LB_SETHORIZONTALEXTENT, $LB_SETITEMDATA, $LB_SETITEMHEIGHT, $LB_SETLOCALE, $LB_SETSEL, $LB_SETTABSTOPS, $LB_SETTOPINDEX, $LBN_DBLCLK, $LBN_ERRSPACE, $LBN_KILLFOCUS, $LBN_SELCANCEL, $LBN_SELCHANGE, $LBN_SETFOCUS, $LBS_COMBOBOX, $LBS_DISABLENOSCROLL, $LBS_EXTENDEDSEL, $LBS_HASSTRINGS, $LBS_MULTICOLUMN, $LBS_MULTIPLESEL, $LBS_NODATA, $LBS_NOINTEGRALHEIGHT, $LBS_NOREDRAW, $LBS_NOSEL, $LBS_NOTIFY, $LBS_OWNERDRAWFIXED, $LBS_OWNERDRAWVARIABLE, $LBS_SORT, $LBS_STANDARD, $LBS_USETABSTOPS, $LBS_WANTKEYBOARDINPUT, $LF_FACESIZE, $LOAD_LIBRARY_AS_DATAFILE, $LOAD_WITH_ALTERED_SEARCH_PATH, $LOGPIXELSX, $LOGPIXELSY, $LR_COLOR, $LR_COPYDELETEORG, $LR_COPYFROMRESOURCE, $LR_COPYRETURNORG, $LR_CREATEDIBSECTION, $LR_DEFAULTCOLOR, $LR_DEFAULTSIZE, $LR_LOADFROMFILE, $LR_LOADMAP3DCOLORS, $LR_LOADTRANSPARENT, $LR_MONOCHROME, $LR_SHARED, $LR_VGACOLOR, $LV_ERR, $LV_VIEW_DETAILS, $LV_VIEW_ICON, $LV_VIEW_LIST, $LV_VIEW_SMALLICON, $LV_VIEW_TILE, $LVA_ALIGNLEFT, $LVA_ALIGNTOP, $LVA_DEFAULT, $LVA_SNAPTOGRID, $LVBKIF_FLAG_TILEOFFSET, $LVBKIF_SOURCE_HBITMAP, $LVBKIF_SOURCE_MASK, $LVBKIF_SOURCE_NONE, $LVBKIF_SOURCE_URL, $LVBKIF_STYLE_MASK, $LVBKIF_STYLE_NORMAL, $LVBKIF_STYLE_TILE, $LVBKIF_TYPE_WATERMARK, $LVCDI_GROUP, $LVCDI_ITEM, $LVCF_ALLDATA, $LVCF_FMT, $LVCF_IMAGE, $LVCF_TEXT, $LVCF_WIDTH, $LVCFMT_BITMAP_ON_RIGHT, $LVCFMT_CENTER, $LVCFMT_COL_HAS_IMAGES, $LVCFMT_IMAGE, $LVCFMT_JUSTIFYMASK, $LVCFMT_LEFT, $LVCFMT_RIGHT, $LVFI_NEARESTXY, $LVFI_PARAM, $LVFI_PARTIAL, $LVFI_STRING, $LVFI_WRAP, $LVGA_FOOTER_CENTER, $LVGA_FOOTER_LEFT, $LVGA_FOOTER_RIGHT, $LVGA_HEADER_CENTER, $LVGA_HEADER_LEFT, $LVGA_HEADER_RIGHT, $LVGF_ALIGN, $LVGF_DESCRIPTIONBOTTOM, $LVGF_DESCRIPTIONTOP, $LVGF_EXTENDEDIMAGE, $LVGF_FOOTER, $LVGF_GROUPID, $LVGF_HEADER, $LVGF_ITEMS, $LVGF_NONE, $LVGF_STATE, $LVGF_SUBSET, $LVGF_SUBSETITEMS, $LVGF_SUBTITLE, $LVGF_TASK, $LVGF_TITLEIMAGE, $LVGGR_GROUP, $LVGGR_HEADER, $LVGGR_LABEL, $LVGGR_SUBSETLINK, $LVGS_COLLAPSED, $LVGS_COLLAPSIBLE, $LVGS_FOCUSED, $LVGS_HIDDEN, $LVGS_NOHEADER, $LVGS_NORMAL, $LVGS_SELECTED, $LVGS_SUBSETED, $LVGS_SUBSETLINKFOCUSED, $LVHT_ABOVE, $LVHT_BELOW, $LVHT_NOWHERE, $LVHT_ONITEM, $LVHT_ONITEMICON, $LVHT_ONITEMLABEL, $LVHT_ONITEMSTATEICON, $LVHT_TOLEFT, $LVHT_TORIGHT, $LVIF_COLFMT, $LVIF_COLUMNS, $LVIF_GROUPID, $LVIF_IMAGE, $LVIF_INDENT, $LVIF_NORECOMPUTE, $LVIF_PARAM, $LVIF_STATE, $LVIF_TEXT, $LVIM_AFTER, $LVIR_BOUNDS, $LVIR_ICON, $LVIR_LABEL, $LVIR_SELECTBOUNDS, $LVIS_CUT, $LVIS_DROPHILITED, $LVIS_FOCUSED, $LVIS_OVERLAYMASK, $LVIS_SELECTED, $LVIS_STATEIMAGEMASK, $LVM_APPROXIMATEVIEWRECT"
	$sConstants &= "$LVM_ARRANGE, $LVM_CANCELEDITLABEL, $LVM_CREATEDRAGIMAGE, $LVM_DELETEALLITEMS, $LVM_DELETECOLUMN, $LVM_DELETEITEM, $LVM_EDITLABEL, $LVM_EDITLABELA, $LVM_EDITLABELW, $LVM_ENABLEGROUPVIEW, $LVM_ENSUREVISIBLE, $LVM_FINDITEM, $LVM_FIRST, $LVM_GETBKCOLOR, $LVM_GETBKIMAGEA, $LVM_GETBKIMAGEW, $LVM_GETCALLBACKMASK, $LVM_GETCOLUMNA, $LVM_GETCOLUMNORDERARRAY, $LVM_GETCOLUMNW, $LVM_GETCOLUMNWIDTH, $LVM_GETCOUNTPERPAGE, $LVM_GETEDITCONTROL, $LVM_GETEMPTYTEXT, $LVM_GETEXTENDEDLISTVIEWSTYLE, $LVM_GETFOCUSEDGROUP, $LVM_GETFOOTERINFO, $LVM_GETFOOTERITEM, $LVM_GETFOOTERITEMRECT, $LVM_GETFOOTERRECT, $LVM_GETGROUPCOUNT, $LVM_GETGROUPINFO, $LVM_GETGROUPINFOBYINDEX, $LVM_GETGROUPMETRICS, $LVM_GETGROUPRECT, $LVM_GETGROUPSTATE, $LVM_GETHEADER, $LVM_GETHOTCURSOR, $LVM_GETHOTITEM, $LVM_GETHOVERTIME, $LVM_GETIMAGELIST, $LVM_GETINSERTMARK, $LVM_GETINSERTMARKCOLOR, $LVM_GETINSERTMARKRECT, $LVM_GETISEARCHSTRINGA, $LVM_GETISEARCHSTRINGW, $LVM_GETITEMA, $LVM_GETITEMCOUNT, $LVM_GETITEMINDEXRECT, $LVM_GETITEMPOSITION, $LVM_GETITEMRECT, $LVM_GETITEMSPACING, $LVM_GETITEMSTATE, $LVM_GETITEMTEXTA, $LVM_GETITEMTEXTW, $LVM_GETITEMW, $LVM_GETNEXTITEM, $LVM_GETNEXTITEMINDEX, $LVM_GETNUMBEROFWORKAREAS, $LVM_GETORIGIN, $LVM_GETOUTLINECOLOR, $LVM_GETSELECTEDCOLUMN, $LVM_GETSELECTEDCOUNT, $LVM_GETSELECTIONMARK, $LVM_GETSTRINGWIDTHA, $LVM_GETSTRINGWIDTHW, $LVM_GETSUBITEMRECT, $LVM_GETTEXTBKCOLOR, $LVM_GETTEXTCOLOR, $LVM_GETTILEINFO, $LVM_GETTILEVIEWINFO, $LVM_GETTOOLTIPS, $LVM_GETTOPINDEX, $LVM_GETUNICODEFORMAT, $LVM_GETVIEW, $LVM_GETVIEWRECT, $LVM_GETWORKAREAS, $LVM_HASGROUP, $LVM_HITTEST, $LVM_INSERTCOLUMNA, $LVM_INSERTCOLUMNW, $LVM_INSERTGROUP, $LVM_INSERTGROUPSORTED, $LVM_INSERTITEMA, $LVM_INSERTITEMW, $LVM_INSERTMARKHITTEST, $LVM_ISGROUPVIEWENABLED, $LVM_ISITEMVISIBLE, $LVM_MAPIDTOINDEX, $LVM_MAPINDEXTOID, $LVM_MOVEGROUP, $LVM_REDRAWITEMS, $LVM_REMOVEALLGROUPS, $LVM_REMOVEGROUP, $LVM_SCROLL, $LVM_SETBKCOLOR, $LVM_SETBKIMAGEA, $LVM_SETBKIMAGEW, $LVM_SETCALLBACKMASK, $LVM_SETCOLUMNA, $LVM_SETCOLUMNORDERARRAY, $LVM_SETCOLUMNW, $LVM_SETCOLUMNWIDTH, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVM_SETGROUPINFO, $LVM_SETGROUPMETRICS, $LVM_SETHOTCURSOR, $LVM_SETHOTITEM, $LVM_SETHOVERTIME, $LVM_SETICONSPACING, $LVM_SETIMAGELIST, $LVM_SETINFOTIP, $LVM_SETINSERTMARK, $LVM_SETINSERTMARKCOLOR, $LVM_SETITEMA, $LVM_SETITEMCOUNT, $LVM_SETITEMINDEXSTATE, $LVM_SETITEMPOSITION, $LVM_SETITEMPOSITION32, $LVM_SETITEMSTATE, $LVM_SETITEMTEXTA, $LVM_SETITEMTEXTW, $LVM_SETITEMW, $LVM_SETOUTLINECOLOR, $LVM_SETSELECTEDCOLUMN, $LVM_SETSELECTIONMARK, $LVM_SETTEXTBKCOLOR, $LVM_SETTEXTCOLOR, $LVM_SETTILEINFO, $LVM_SETTILEVIEWINFO, $LVM_SETTILEWIDTH, $LVM_SETTOOLTIPS, $LVM_SETUNICODEFORMAT, $LVM_SETVIEW, $LVM_SETWORKAREAS, $LVM_SORTGROUPS, $LVM_SORTITEMS, $LVM_SORTITEMSEX, $LVM_SUBITEMHITTEST, $LVM_UPDATE, $LVN_BEGINDRAG, $LVN_BEGINLABELEDITA, $LVN_BEGINLABELEDITW, $LVN_BEGINRDRAG, $LVN_BEGINSCROLL, $LVN_COLUMNCLICK, $LVN_COLUMNDROPDOWN, $LVN_COLUMNOVERFLOWCLICK, $LVN_DELETEALLITEMS, $LVN_DELETEITEM, $LVN_ENDLABELEDITA, $LVN_ENDLABELEDITW, $LVN_ENDSCROLL, $LVN_FIRST, $LVN_GETDISPINFO, $LVN_GETDISPINFOA, $LVN_GETDISPINFOW, $LVN_GETEMPTYMARKUP, $LVN_GETINFOTIPA, $LVN_GETINFOTIPW, $LVN_HOTTRACK, $LVN_INCREMENTALSEARCHA, $LVN_INCREMENTALSEARCHW, $LVN_INSERTITEM, $LVN_ITEMACTIVATE, $LVN_ITEMCHANGED, $LVN_ITEMCHANGING, $LVN_KEYDOWN, $LVN_LAST, $LVN_LINKCLICK, $LVN_MARQUEEBEGIN, $LVN_ODCACHEHINT, $LVN_ODFINDITEM, $LVN_ODFINDITEMA, $LVN_ODFINDITEMW, $LVN_ODSTATECHANGED, $LVN_SETDISPINFOA, $LVN_SETDISPINFOW, $LVNI_ABOVE, $LVNI_ALL, $LVNI_BELOW, $LVNI_CUT, $LVNI_DROPHILITED, $LVNI_FOCUSED, $LVNI_SELECTED, $LVNI_TOLEFT, $LVNI_TORIGHT, $LVS_ALIGNLEFT, $LVS_ALIGNMASK, $LVS_ALIGNTOP, $LVS_AUTOARRANGE, $LVS_DEFAULT, $LVS_EDITLABELS, $LVS_EX_AUTOAUTOARRANGE, $LVS_EX_AUTOCHECKSELECT, $LVS_EX_AUTOSIZECOLUMNS, $LVS_EX_BORDERSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_COLUMNOVERFLOW, $LVS_EX_COLUMNSNAPPOINTS, $LVS_EX_DOUBLEBUFFER, $LVS_EX_FLATSB, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_HEADERDRAGDROP, $LVS_EX_HEADERINALLVIEWS"
	$sConstants &= "$LVS_EX_HIDELABELS, $LVS_EX_INFOTIP, $LVS_EX_JUSTIFYCOLUMNS, $LVS_EX_LABELTIP, $LVS_EX_MULTIWORKAREAS, $LVS_EX_ONECLICKACTIVATE, $LVS_EX_REGIONAL, $LVS_EX_SIMPLESELECT, $LVS_EX_SNAPTOGRID, $LVS_EX_SUBITEMIMAGES, $LVS_EX_TRACKSELECT, $LVS_EX_TRANSPARENTBKGND, $LVS_EX_TRANSPARENTSHADOWTEXT, $LVS_EX_TWOCLICKACTIVATE, $LVS_EX_UNDERLINECOLD, $LVS_EX_UNDERLINEHOT, $LVS_ICON, $LVS_LIST, $LVS_NOCOLUMNHEADER, $LVS_NOLABELWRAP, $LVS_NOSCROLL, $LVS_NOSORTHEADER, $LVS_OWNERDATA, $LVS_OWNERDRAWFIXED, $LVS_REPORT, $LVS_SHAREIMAGELISTS, $LVS_SHOWSELALWAYS, $LVS_SINGLESEL, $LVS_SMALLICON, $LVS_SORTASCENDING, $LVS_SORTDESCENDING, $LVS_TYPEMASK, $LVS_TYPESTYLEMASK, $LVSCW_AUTOSIZE, $LVSCW_AUTOSIZE_USEHEADER, $LVSICF_NOINVALIDATEALL, $LVSICF_NOSCROLL, $LVSIL_NORMAL, $LVSIL_SMALL, $LVSIL_STATE, $LWA_ALPHA, $LWA_COLORKEY, $MAC_CHARSET, $MAX_TAB_STOPS, $MB_ABORTRETRYIGNORE, $MB_APPLMODAL, $MB_DEFBUTTON1, $MB_DEFBUTTON2, $MB_DEFBUTTON3, $MB_ICONASTERISK, $MB_ICONEXCLAMATION, $MB_ICONHAND, $MB_ICONQUESTION, $MB_OK, $MB_OKCANCEL, $MB_RETRYCANCEL, $MB_RIGHTJUSTIFIED, $MB_SYSTEMMODAL, $MB_TASKMODAL, $MB_TOPMOST, $MB_YESNO, $MB_YESNOCANCEL, $MCHT_CALENDAR, $MCHT_CALENDARBK, $MCHT_CALENDARDATE, $MCHT_CALENDARDATENEXT, $MCHT_CALENDARDATEPREV, $MCHT_CALENDARDAY, $MCHT_CALENDARWEEKNUM, $MCHT_NEXT, $MCHT_NOWHERE, $MCHT_PREV, $MCHT_TITLE, $MCHT_TITLEBK, $MCHT_TITLEBTNNEXT, $MCHT_TITLEBTNPREV, $MCHT_TITLEMONTH, $MCHT_TITLEYEAR, $MCHT_TODAYLINK, $MCM_FIRST, $MCM_GETCALENDARBORDER, $MCM_GETCALENDARCOUNT, $MCM_GETCALENDARGRIDINFO, $MCM_GETCALID, $MCM_GETCOLOR, $MCM_GETCURRENTVIEW, $MCM_GETCURSEL, $MCM_GETFIRSTDAYOFWEEK, $MCM_GETMAXSELCOUNT, $MCM_GETMAXTODAYWIDTH, $MCM_GETMINREQRECT, $MCM_GETMONTHDELTA, $MCM_GETMONTHRANGE, $MCM_GETRANGE, $MCM_GETSELRANGE, $MCM_GETTODAY, $MCM_GETUNICODEFORMAT, $MCM_HITTEST, $MCM_SETCALENDARBORDER, $MCM_SETCALID, $MCM_SETCOLOR, $MCM_SETCURRENTVIEW, $MCM_SETCURSEL, $MCM_SETDAYSTATE, $MCM_SETFIRSTDAYOFWEEK, $MCM_SETMAXSELCOUNT, $MCM_SETMONTHDELTA, $MCM_SETRANGE, $MCM_SETSELRANGE, $MCM_SETTODAY, $MCM_SETUNICODEFORMAT, $MCM_SIZERECTTOMIN, $MCN_FIRST, $MCN_GETDAYSTATE, $MCN_SELCHANGE, $MCN_SELECT, $MCN_VIEWCHANGE, $MCS_DAYSTATE, $MCS_MULTISELECT, $MCS_NOSELCHANGEONNAV, $MCS_NOTODAY, $MCS_NOTODAYCIRCLE, $MCS_NOTRAILINGDATES, $MCS_SHORTDAYSOFWEEK, $MCS_WEEKNUMBERS, $MCSC_BACKGROUND, $MCSC_MONTHBK, $MCSC_TEXT, $MCSC_TITLEBK, $MCSC_TITLETEXT, $MCSC_TRAILINGTEXT, $MEM_COMMIT, $MEM_DECOMMIT, $MEM_RELEASE, $MEM_RESERVE, $MEM_SHARED, $MEM_TOP_DOWN, $MERGECOPY, $MERGEPAINT, $MF_BITMAP, $MF_BYPOSITION, $MF_CHECKED, $MF_DEFAULT, $MF_DISABLED, $MF_GRAYED, $MF_HELP, $MF_HILITE, $MF_MENUBARBREAK, $MF_MENUBREAK, $MF_MOUSESELECT, $MF_OWNERDRAW, $MF_POPUP, $MF_RIGHTJUSTIFY, $MF_SEPARATOR, $MF_STRING, $MF_SYSMENU, $MF_UNCHECKED, $MF_USECHECKBITMAPS, $MFS_CHECKED, $MFS_DEFAULT, $MFS_DISABLED, $MFS_GRAYED, $MFS_HILITE, $MFT_BITMAP, $MFT_MENUBARBREAK, $MFT_MENUBREAK, $MFT_OWNERDRAW, $MFT_RADIOCHECK, $MFT_RIGHTJUSTIFY, $MFT_RIGHTORDER, $MFT_SEPARATOR, $MIIM_BITMAP, $MIIM_CHECKMARKS, $MIIM_DATA, $MIIM_DATAMASK, $MIIM_FTYPE, $MIIM_ID, $MIIM_STATE, $MIIM_STRING, $MIIM_SUBMENU, $MIIM_TYPE, $MIM_APPLYTOSUBMENUS, $MIM_BACKGROUND, $MIM_HELPID, $MIM_MAXHEIGHT, $MIM_MENUDATA, $MIM_STYLE, $MN_GETHMENU, $MNS_AUTODISMISS, $MNS_CHECKORBMP, $MNS_DRAGDROP, $MNS_MODELESS, $MNS_NOCHECK, $MNS_NOTIFYBYPOS, $MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_LEFTDOWN, $MOUSEEVENTF_LEFTUP, $MOUSEEVENTF_MIDDLEDOWN, $MOUSEEVENTF_MIDDLEUP, $MOUSEEVENTF_MOVE, $MOUSEEVENTF_RIGHTDOWN, $MOUSEEVENTF_RIGHTUP, $MOUSEEVENTF_WHEEL, $MOUSEEVENTF_XDOWN, $MOUSEEVENTF_XUP, $NM_CHAR, $NM_CLICK, $NM_CUSTOMDRAW, $NM_DBLCLK, $NM_FIRST, $NM_HOVER, $NM_KEYDOWN, $NM_KILLFOCUS, $NM_LDOWN, $NM_NCHITTEST, $NM_OUTOFMEMORY, $NM_RCLICK, $NM_RDBLCLK, $NM_RDOWN, $NM_RELEASEDCAPTURE, $NM_RETURN, $NM_SETCURSOR, $NM_SETFOCUS, $NM_THEMECHANGED, $NM_TOOLTIPSCREATED, $NOMIRRORBITMAP, $NONANTIALIASED_QUALITY, $NOTSRCCOPY, $NOTSRCERASE, $NULLREGION, $OBJID_ALERT, $OBJID_CARET, $OBJID_CLIENT, $OBJID_CURSOR, $OBJID_HSCROLL"
	$sConstants &= "$OBJID_MENU, $OBJID_SIZEGRIP, $OBJID_SOUND, $OBJID_SYSMENU, $OBJID_TITLEBAR, $OBJID_VSCROLL, $OBJID_WINDOW, $OEM_CHARSET, $OPAQUE, $OPEN_ALWAYS, $OPEN_EXISTING, $OPT_CAPSNOSTORE, $OPT_CAPSSTORE, $OPT_COORDSABSOLUTE, $OPT_COORDSCLIENT, $OPT_COORDSRELATIVE, $OPT_ERRORFATAL, $OPT_ERRORSILENT, $OPT_MATCHADVANCED, $OPT_MATCHANY, $OPT_MATCHEXACT, $OPT_MATCHSTART, $OUT_CHARACTER_PRECIS, $OUT_DEFAULT_PRECIS, $OUT_DEVICE_PRECIS, $OUT_OUTLINE_PRECIS, $OUT_PS_ONLY_PRECIS, $OUT_RASTER_PRECIS, $OUT_STRING_PRECIS, $OUT_STROKE_PRECIS, $OUT_TT_ONLY_PRECIS, $OUT_TT_PRECIS, $PAGE_EXECUTE, $PAGE_EXECUTE_READ, $PAGE_EXECUTE_READWRITE, $PAGE_GUARD, $PAGE_NOACCESS, $PAGE_NOCACHE, $PAGE_READONLY, $PAGE_READWRITE, $PATCOPY, $PATINVERT, $PATPAINT, $PBM_DELTAPOS, $PBM_GETBARCOLOR, $PBM_GETBKCOLOR, $PBM_GETPOS, $PBM_GETRANGE, $PBM_GETSTATE, $PBM_GETSTEP, $PBM_SETBARCOLOR, $PBM_SETBKCOLOR, $PBM_SETMARQUEE, $PBM_SETPOS, $PBM_SETRANGE, $PBM_SETRANGE32, $PBM_SETSTATE, $PBM_SETSTEP, $PBM_STEPIT, $PBS_MARQUEE, $PBS_SMOOTH, $PBS_SMOOTHREVERSE, $PBS_VERTICAL, $PFA_CENTER, $PFA_FULL_INTERWORD, $PFA_JUSTIFY, $PFA_LEFT, $PFA_RIGHT, $PFE_DONOTHYPHEN, $PFE_KEEP, $PFE_KEEPNEXT, $PFE_NOLINENUMBER, $PFE_NOWIDOWCONTROL, $PFE_PAGEBREAKBEFORE, $PFE_RTLPARA, $PFE_SIDEBYSIDE, $PFE_TABLE, $PFM_ALIGNMENT, $PFM_BORDER, $PFM_DONOTHYPHEN, $PFM_KEEP, $PFM_KEEPNEXT, $PFM_LINESPACING, $PFM_NOLINENUMBER, $PFM_NOWIDOWCONTROL, $PFM_NUMBERING, $PFM_NUMBERINGSTART, $PFM_NUMBERINGSTYLE, $PFM_NUMBERINGTAB, $PFM_OFFSET, $PFM_OFFSETINDENT, $PFM_PAGEBREAKBEFORE, $PFM_RIGHTINDENT, $PFM_RTLPARA, $PFM_SHADING, $PFM_SIDEBYSIDE, $PFM_SPACEAFTER, $PFM_SPACEBEFORE, $PFM_STARTINDENT, $PFM_TABLE, $PFM_TABSTOPS, $PFN_BULLET, $PROCESS_ALL_ACCESS, $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, $PROOF_QUALITY, $PS_DASH, $PS_DASHDOT, $PS_DASHDOTDOT, $PS_DOT, $PS_INSIDEFRAME, $PS_NULL, $PS_SOLID, $RB_BEGINDRAG, $RB_DELETEBAND, $RB_DRAGMOVE, $RB_ENDDRAG, $RB_GETBANDBORDERS, $RB_GETBANDCOUNT, $RB_GETBANDINFO, $RB_GETBANDINFOA, $RB_GETBANDINFOW, $RB_GETBANDMARGINS, $RB_GETBARHEIGHT, $RB_GETBARINFO, $RB_GETBKCOLOR, $RB_GETCOLORSCHEME, $RB_GETDROPTARGET, $RB_GETPALETTE, $RB_GETRECT, $RB_GETROWCOUNT, $RB_GETROWHEIGHT, $RB_GETTEXTCOLOR, $RB_GETTOOLTIPS, $RB_GETUNICODEFORMAT, $RB_HITTEST, $RB_IDTOINDEX, $RB_INSERTBANDA, $RB_INSERTBANDW, $RB_MAXIMIZEBAND, $RB_MINIMIZEBAND, $RB_MOVEBAND, $RB_PUSHCHEVRON, $RB_SETBANDINFOA, $RB_SETBANDINFOW, $RB_SETBARINFO, $RB_SETBKCOLOR, $RB_SETCOLORSCHEME, $RB_SETPALETTE, $RB_SETPARENT, $RB_SETTEXTCOLOR, $RB_SETTOOLTIPS, $RB_SETUNICODEFORMAT, $RB_SETWINDOWTHEME, $RB_SHOWBAND, $RB_SIZETORECT, $RBBIM_BACKGROUND, $RBBIM_CHILD, $RBBIM_CHILDSIZE, $RBBIM_COLORS, $RBBIM_HEADERSIZE, $RBBIM_ID, $RBBIM_IDEALSIZE, $RBBIM_IMAGE, $RBBIM_LPARAM, $RBBIM_SIZE, $RBBIM_STYLE, $RBBIM_TEXT, $RBBS_BREAK, $RBBS_CHILDEDGE, $RBBS_FIXEDBMP, $RBBS_FIXEDSIZE, $RBBS_GRIPPERALWAYS, $RBBS_HIDDEN, $RBBS_HIDETITLE, $RBBS_NOGRIPPER, $RBBS_NOVERT, $RBBS_TOPALIGN, $RBBS_USECHEVRON, $RBBS_VARIABLEHEIGHT, $RBHT_CAPTION, $RBHT_CHEVRON, $RBHT_CLIENT, $RBHT_GRABBER, $RBHT_NOWHERE, $RBIM_IMAGELIST, $RBN_AUTOBREAK, $RBN_AUTOSIZE, $RBN_BEGINDRAG, $RBN_CHEVRONPUSHED, $RBN_CHILDSIZE, $RBN_DELETEDBAND, $RBN_DELETINGBAND, $RBN_ENDDRAG, $RBN_FIRST, $RBN_GETOBJECT, $RBN_HEIGHTCHANGE, $RBN_LAYOUTCHANGED, $RBN_MINMAX, $RBNM_ID, $RBNM_LPARAM, $RBNM_STYLE, $RBS_AUTOSIZE, $RBS_BANDBORDERS, $RBS_DBLCLKTOGGLE, $RBS_FIXEDORDER, $RBS_REGISTERDROP, $RBS_TOOLTIPS, $RBS_VARHEIGHT, $RBS_VERTICALGRIPPER, $RDW_ALLCHILDREN, $RDW_ERASE, $RDW_ERASENOW, $RDW_FRAME, $RDW_INTERNALPAINT, $RDW_INVALIDATE, $RDW_NOCHILDREN, $RDW_NOERASE, $RDW_NOFRAME, $RDW_NOINTERNALPAINT, $RDW_UPDATENOW, $RDW_VALIDATE, $REG_BINARY, $REG_DWORD, $REG_DWORD_BIG_ENDIAN, $REG_EXPAND_SZ, $REG_FULL_RESOURCE_DESCRIPTOR, $REG_LINK, $REG_MULTI_SZ"
	$sConstants &= "$REG_NONE, $REG_RESOURCE_LIST, $REG_RESOURCE_REQUIREMENTS_LIST, $REG_SZ, $RGN_AND, $RGN_COPY, $RGN_DIFF, $RGN_OR, $RGN_XOR, $RUN_CREATE_NEW_CONSOLE, $RUSSIAN_CHARSET, $SB_BOTH, $SB_BOTTOM, $SB_CTL, $SB_GETBORDERS, $SB_GETICON, $SB_GETPARTS, $SB_GETRECT, $SB_GETTEXT, $SB_GETTEXTA, $SB_GETTEXTLENGTH, $SB_GETTEXTLENGTHA, $SB_GETTEXTLENGTHW, $SB_GETTEXTW, $SB_GETTIPTEXTA, $SB_GETTIPTEXTW, $SB_GETUNICODEFORMAT, $SB_HORZ, $SB_ISSIMPLE, $SB_LINEDOWN, $SB_LINELEFT, $SB_LINERIGHT, $SB_LINEUP, $SB_PAGEDOWN, $SB_PAGELEFT, $SB_PAGERIGHT, $SB_PAGEUP, $SB_SCROLLCARET, $SB_SETBKCOLOR, $SB_SETICON, $SB_SETMINHEIGHT, $SB_SETPARTS, $SB_SETTEXT, $SB_SETTEXTA, $SB_SETTEXTW, $SB_SETTIPTEXTA, $SB_SETTIPTEXTW, $SB_SETUNICODEFORMAT, $SB_SIMPLE, $SB_SIMPLEID, $SB_THUMBPOSITION, $SB_THUMBTRACK, $SB_TOP, $SB_VERT, $SBARS_SIZEGRIP, $SBARS_TOOLTIPS, $SBN_FIRST, $SBN_SIMPLEMODECHANGE, $SBT_NOBORDERS, $SBT_NOTABPARSING, $SBT_OWNERDRAW, $SBT_POPOUT, $SBT_RTLREADING, $SBT_SUNKEN, $SBT_TOOLTIPS, $SC_ARRANGE, $SC_CLOSE, $SC_CONTEXTHELP, $SC_DEFAULT, $SC_HOTKEY, $SC_HSCROLL, $SC_KEYMENU, $SC_MAXIMIZE, $SC_MINIMIZE, $SC_MONITORPOWER, $SC_MOUSEMENU, $SC_MOVE, $SC_NEXTWINDOW, $SC_PREVWINDOW, $SC_RESTORE, $SC_SCREENSAVE, $SC_SEPARATOR, $SC_SIZE, $SC_TASKLIST, $SC_VSCROLL, $SCF_ALL, $SCF_ASSOCIATEFONT, $SCF_DEFAULT, $SCF_NOKBUPDATE, $SCF_SELECTION, $SCF_USEUIRULES, $SCF_WORD, $SD_FORCE, $SD_LOGOFF, $SD_POWERDOWN, $SD_REBOOT, $SD_SHUTDOWN, $SE_ASSIGNPRIMARYTOKEN_NAME, $SE_AUDIT_NAME, $SE_BACKUP_NAME, $SE_CHANGE_NOTIFY_NAME, $SE_CREATE_GLOBAL_NAME, $SE_CREATE_PAGEFILE_NAME, $SE_CREATE_PERMANENT_NAME, $SE_CREATE_TOKEN_NAME, $SE_DEBUG_NAME, $SE_ENABLE_DELEGATION_NAME, $SE_IMPERSONATE_NAME, $SE_INC_BASE_PRIORITY_NAME, $SE_INCREASE_QUOTA_NAME, $SE_LOAD_DRIVER_NAME, $SE_LOCK_MEMORY_NAME, $SE_MACHINE_ACCOUNT_NAME, $SE_MANAGE_VOLUME_NAME, $SE_PRIVILEGE_ENABLED, $SE_PRIVILEGE_ENABLED_BY_DEFAULT, $SE_PRIVILEGE_REMOVED, $SE_PRIVILEGE_USED_FOR_ACCESS, $SE_PROF_SINGLE_PROCESS_NAME, $SE_REMOTE_SHUTDOWN_NAME, $SE_RESTORE_NAME, $SE_SECURITY_NAME, $SE_SHUTDOWN_NAME, $SE_SYNC_AGENT_NAME, $SE_SYSTEM_ENVIRONMENT_NAME, $SE_SYSTEM_PROFILE_NAME, $SE_SYSTEMTIME_NAME, $SE_TAKE_OWNERSHIP_NAME, $SE_TCB_NAME, $SE_UNDOCK_NAME, $SE_UNSOLICITED_INPUT_NAME, $SF_RTF, $SF_RTFNOOBJS, $SF_TEXT, $SF_TEXTIZED, $SF_UNICODE, $SF_USECODEPAGE, $SFF_PLAINRTF, $SFF_SELECTION, $SHIFTJIS_CHARSET, $SIF_ALL, $SIF_PAGE, $SIF_POS, $SIF_RANGE, $SIF_TRACKPOS, $SIMPLEREGION, $SM_ARRANGE, $SM_CARETBLINKINGENABLED, $SM_CLEANBOOT, $SM_CMETRICS, $SM_CMONITORS, $SM_CMOUSEBUTTONS, $SM_CXBORDER, $SM_CXCURSOR, $SM_CXDLGFRAME, $SM_CXDOUBLECLK, $SM_CXDRAG, $SM_CXEDGE, $SM_CXFOCUSBORDER, $SM_CXFRAME, $SM_CXFULLSCREEN, $SM_CXHSCROLL, $SM_CXHTHUMB, $SM_CXICON, $SM_CXICONSPACING, $SM_CXMAXIMIZED, $SM_CXMAXTRACK, $SM_CXMENUCHECK, $SM_CXMENUSIZE, $SM_CXMIN, $SM_CXMINIMIZED, $SM_CXMINSPACING, $SM_CXMINTRACK, $SM_CXSCREEN, $SM_CXSIZE, $SM_CXSMICON, $SM_CXSMSIZE, $SM_CXVIRTUALSCREEN, $SM_CXVSCROLL, $SM_CYBORDER, $SM_CYCAPTION, $SM_CYCURSOR, $SM_CYDLGFRAME, $SM_CYDOUBLECLK, $SM_CYDRAG, $SM_CYEDGE, $SM_CYFOCUSBORDER, $SM_CYFRAME, $SM_CYFULLSCREEN, $SM_CYHSCROLL, $SM_CYICON, $SM_CYICONSPACING, $SM_CYKANJIWINDOW, $SM_CYMAXIMIZED, $SM_CYMAXTRACK, $SM_CYMENU, $SM_CYMENUCHECK, $SM_CYMENUSIZE, $SM_CYMIN, $SM_CYMINIMIZED, $SM_CYMINSPACING, $SM_CYMINTRACK, $SM_CYSCREEN, $SM_CYSIZE, $SM_CYSMCAPTION, $SM_CYSMICON, $SM_CYSMSIZE, $SM_CYVIRTUALSCREEN, $SM_CYVSCROLL, $SM_CYVTHUMB, $SM_DBCSENABLED, $SM_DEBUG, $SM_IMMENABLED, $SM_MEDIACENTER, $SM_MENUDROPALIGNMENT, $SM_MIDEASTENABLED, $SM_MOUSEPRESENT, $SM_MOUSEWHEELPRESENT, $SM_NETWORK, $SM_PENWINDOWS, $SM_REMOTECONTROL, $SM_REMOTESESSION, $SM_RESERVED1, $SM_RESERVED2, $SM_RESERVED3, $SM_RESERVED4, $SM_SAMEDISPLAYFORMAT, $SM_SECURE, $SM_SERVERR2, $SM_SHOWSOUNDS, $SM_SHUTTINGDOWN, $SM_SLOWMACHINE, $SM_STARTER, $SM_SWAPBUTTON, $SM_TABLETPC, $SM_XVIRTUALSCREEN, $SM_YVIRTUALSCREEN, $SORT_CHINESE_BIG5, $SORT_CHINESE_PRC, $SORT_CHINESE_PRCP, $SORT_CHINESE_UNICODE, $SORT_DEFAULT, $SORT_GEORGIAN_MODERN"
	$sConstants &= "$SORT_GEORGIAN_TRADITIONAL, $SORT_GERMAN_PHONE_BOOK, $SORT_HUNGARIAN_DEFAULT, $SORT_HUNGARIAN_TECHNICAL, $SORT_JAPANESE_UNICODE, $SORT_JAPANESE_XJIS, $SORT_KOREAN_KSC, $SORT_KOREAN_UNICODE, $SRCAND, $SRCCOPY, $SRCERASE, $SRCINVERT, $SRCPAINT, $SS_BITMAP, $SS_BLACKFRAME, $SS_BLACKRECT, $SS_CENTER, $SS_CENTERIMAGE, $SS_ETCHEDFRAME, $SS_ETCHEDHORZ, $SS_ETCHEDVERT, $SS_GRAYFRAME, $SS_GRAYRECT, $SS_ICON, $SS_LEFT, $SS_LEFTNOWORDWRAP, $SS_NOPREFIX, $SS_NOTIFY, $SS_RIGHT, $SS_RIGHTJUST, $SS_SIMPLE, $SS_SUNKEN, $SS_WHITEFRAME, $SS_WHITERECT, $ST_DEFAULT, $ST_KEEPUNDO, $ST_SELECTION, $STARTF_FORCEOFFFEEDBACK, $STARTF_FORCEONFEEDBACK, $STARTF_RUNFULLSCREEN, $STARTF_USECOUNTCHARS, $STARTF_USEFILLATTRIBUTE, $STARTF_USEHOTKEY, $STARTF_USEPOSITION, $STARTF_USESHOWWINDOW, $STARTF_USESIZE, $STARTF_USESTDHANDLES, $STATE_SYSTEM_INVISIBLE, $STATE_SYSTEM_PRESSED, $STD_COPY, $STD_CUT, $STD_DELETE, $STD_FILENEW, $STD_FILEOPEN, $STD_FILESAVE, $STD_FIND, $STD_HELP, $STD_PASTE, $STD_PRINT, $STD_PRINTPRE, $STD_PROPERTIES, $STD_REDOW, $STD_REPLACE, $STD_UNDO, $STDERR_CHILD, $STDERR_MERGED, $STDIN_CHILD, $STDIO_INHERIT_PARENT, $STDOUT_CHILD, $STR_CASESENSE, $STR_NOCASESENSE, $STR_STRIPALL, $STR_STRIPLEADING, $STR_STRIPSPACES, $STR_STRIPTRAILING, $SUBLANG_ARABIC_ALGERIA, $SUBLANG_ARABIC_BAHRAIN, $SUBLANG_ARABIC_EGYPT, $SUBLANG_ARABIC_IRAQ, $SUBLANG_ARABIC_JORDAN, $SUBLANG_ARABIC_KUWAIT, $SUBLANG_ARABIC_LEBANON, $SUBLANG_ARABIC_LIBYA, $SUBLANG_ARABIC_MOROCCO, $SUBLANG_ARABIC_OMAN, $SUBLANG_ARABIC_QATAR, $SUBLANG_ARABIC_SAUDI_ARABIA, $SUBLANG_ARABIC_SYRIA, $SUBLANG_ARABIC_TUNISIA, $SUBLANG_ARABIC_UAE, $SUBLANG_ARABIC_YEMEN, $SUBLANG_AZERI_CYRILLIC, $SUBLANG_AZERI_LATIN, $SUBLANG_CHINESE_HONGKONG, $SUBLANG_CHINESE_MACAU, $SUBLANG_CHINESE_SIMPLIFIED, $SUBLANG_CHINESE_SINGAPORE, $SUBLANG_CHINESE_TRADITIONAL, $SUBLANG_DEFAULT, $SUBLANG_DUTCH, $SUBLANG_DUTCH_BELGIAN, $SUBLANG_ENGLISH_AUS, $SUBLANG_ENGLISH_BELIZE, $SUBLANG_ENGLISH_CAN, $SUBLANG_ENGLISH_CARIBBEAN, $SUBLANG_ENGLISH_EIRE, $SUBLANG_ENGLISH_JAMAICA, $SUBLANG_ENGLISH_NZ, $SUBLANG_ENGLISH_PHILIPPINES, $SUBLANG_ENGLISH_SOUTH_AFRICA, $SUBLANG_ENGLISH_TRINIDAD, $SUBLANG_ENGLISH_UK, $SUBLANG_ENGLISH_US, $SUBLANG_ENGLISH_ZIMBABWE, $SUBLANG_FRENCH, $SUBLANG_FRENCH_BELGIAN, $SUBLANG_FRENCH_CANADIAN, $SUBLANG_FRENCH_LUXEMBOURG, $SUBLANG_FRENCH_MONACO, $SUBLANG_FRENCH_SWISS, $SUBLANG_GERMAN, $SUBLANG_GERMAN_AUSTRIAN, $SUBLANG_GERMAN_LIECHTENSTEIN, $SUBLANG_GERMAN_LUXEMBOURG, $SUBLANG_GERMAN_SWISS, $SUBLANG_ITALIAN, $SUBLANG_ITALIAN_SWISS, $SUBLANG_KASHMIRI_INDIA, $SUBLANG_KOREAN, $SUBLANG_LITHUANIAN, $SUBLANG_MALAY_BRUNEI_DARUSSALAM, $SUBLANG_MALAY_MALAYSIA, $SUBLANG_NEPALI_INDIA, $SUBLANG_NEUTRAL, $SUBLANG_NORWEGIAN_BOKMAL, $SUBLANG_NORWEGIAN_NYNORSK, $SUBLANG_PORTUGUESE, $SUBLANG_PORTUGUESE_BRAZILIAN, $SUBLANG_SERBIAN_CYRILLIC, $SUBLANG_SERBIAN_LATIN, $SUBLANG_SPANISH, $SUBLANG_SPANISH_ARGENTINA, $SUBLANG_SPANISH_BOLIVIA, $SUBLANG_SPANISH_CHILE, $SUBLANG_SPANISH_COLOMBIA, $SUBLANG_SPANISH_COSTA_RICA, $SUBLANG_SPANISH_DOMINICAN_REPUBLIC, $SUBLANG_SPANISH_ECUADOR, $SUBLANG_SPANISH_EL_SALVADOR, $SUBLANG_SPANISH_GUATEMALA, $SUBLANG_SPANISH_HONDURAS, $SUBLANG_SPANISH_MEXICAN, $SUBLANG_SPANISH_MODERN, $SUBLANG_SPANISH_NICARAGUA, $SUBLANG_SPANISH_PANAMA, $SUBLANG_SPANISH_PARAGUAY, $SUBLANG_SPANISH_PERU, $SUBLANG_SPANISH_PUERTO_RICO, $SUBLANG_SPANISH_URUGUAY, $SUBLANG_SPANISH_VENEZUELA, $SUBLANG_SWEDISH, $SUBLANG_SWEDISH_FINLAND, $SUBLANG_SYS_DEFAULT, $SUBLANG_URDU_INDIA, $SUBLANG_URDU_PAKISTAN, $SUBLANG_UZBEK_CYRILLIC, $SWP_ASYNCWINDOWPOS, $SWP_DEFERERASE, $SWP_DRAWFRAME, $SWP_FRAMECHANGED, $SWP_HIDEWINDOW, $SWP_NOACTIVATE, $SWP_NOCOPYBITS, $SWP_NOMOVE, $SWP_NOOWNERZORDER, $SWP_NOREDRAW, $SWP_NOREPOSITION, $SWP_NOSENDCHANGING, $SWP_NOSIZE, $SWP_NOZORDER, $SWP_SHOWWINDOW, $SYMBOL_CHARSET, $tagBITMAPINFO, $tagBLENDFUNCTION, $tagCOLORSCHEME, $tagCOMBOBOXEXITEM, $tagDTPRANGE, $tagEVENTLOGRECORD, $tagFILETIME, $tagGDIPBITMAPDATA, $tagGDIPENCODERPARAM, $tagGDIPENCODERPARAMS, $tagGDIPIMAGECODECINFO, $tagGDIPPENCODERPARAMS"
	$sConstants &= "$tagGDIPRECTF, $tagGDIPSTARTUPINPUT, $tagGDIPSTARTUPOUTPUT, $tagGETIPAddress, $tagGUID, $tagHDITEM, $tagIMAGEINFO, $tagKBDLLHOOKSTRUCT, $tagLOGFONT, $tagLVFINDINFO, $tagLVHITTESTINFO, $tagLVITEM, $tagMARGINS, $tagMCHITTESTINFO, $tagMCMONTHRANGE, $tagMCRANGE, $tagMCSELRANGE, $tagMENUINFO, $tagMENUITEMINFO, $tagNETRESOURCE, $tagNMCBEDRAGBEGIN, $tagNMCBEENDEDIT, $tagNMCOMBOBOXEX, $tagNMDATETIMECHANGE, $tagNMDATETIMEFORMAT, $tagNMDATETIMEFORMATQUERY, $tagNMDATETIMEKEYDOWN, $tagNMDATETIMESTRING, $tagNMDAYSTATE, $tagNMHDDISPINFO, $tagNMHDFILTERBTNCLICK, $tagNMHDR, $tagNMHEADER, $tagNMIPADDRESS, $tagNMITEMACTIVATE, $tagNMLISTVIEW, $tagNMLVCUSTOMDRAW, $tagNMLVDISPINFO, $tagNMLVFINDITEM, $tagNMLVGETINFOTIP, $tagNMLVKEYDOWN, $tagNMLVSCROLL, $tagNMMOUSE, $tagNMOBJECTNOTIFY, $tagNMRBAUTOSIZE, $tagNMREBAR, $tagNMREBARAUTOBREAK, $tagNMREBARCHEVRON, $tagNMREBARCHILDSIZE, $tagNMSELCHANGE, $tagNMTBHOTITEM, $tagNMTCKEYDOWN, $tagNMTOOLBAR, $tagNMTREEVIEW, $tagNMTVCUSTOMDRAW, $tagNMTVDISPINFO, $tagNMTVGETINFOTIP, $tagNMTVKEYDOWN, $tagOPENFILENAME, $tagOVERLAPPED, $tagPOINT, $tagPROCESS_INFORMATION, $tagREBARBANDINFO, $tagRECT, $tagSCROLLBARINFO, $tagSCROLLINFO, $tagSECURITY_ATTRIBUTES, $tagSIZE, $tagSTARTUPINFO, $tagSYSTEMTIME, $tagTBBUTTON, $tagTBBUTTONINFO, $tagTIME_ZONE_INFORMATION, $tagTOKEN_PRIVILEGES, $tagTVHITTESTINFO, $tagTVITEM, $tagTVITEMEX, $tagWIN32_FIND_DATA, $tagWINDOWPLACEMENT, $tagWINDOWPOS, $TB_ADDBITMAP, $TB_ADDBUTTONSA, $TB_ADDBUTTONSW, $TB_ADDSTRINGA, $TB_ADDSTRINGW, $TB_AUTOSIZE, $TB_BUTTONCOUNT, $TB_BUTTONSTRUCTSIZE, $TB_CHANGEBITMAP, $TB_CHECKBUTTON, $TB_COMMANDTOINDEX, $TB_CUSTOMIZE, $TB_DELETEBUTTON, $TB_ENABLEBUTTON, $TB_GETANCHORHIGHLIGHT, $TB_GETBITMAP, $TB_GETBITMAPFLAGS, $TB_GETBUTTON, $TB_GETBUTTONINFOA, $TB_GETBUTTONINFOW, $TB_GETBUTTONSIZE, $TB_GETBUTTONTEXTA, $TB_GETBUTTONTEXTW, $TB_GETCOLORSCHEME, $TB_GETDISABLEDIMAGELIST, $TB_GETEXTENDEDSTYLE, $TB_GETHOTIMAGELIST, $TB_GETHOTITEM, $TB_GETIMAGELIST, $TB_GETINSERTMARK, $TB_GETINSERTMARKCOLOR, $TB_GETITEMRECT, $TB_GETMAXSIZE, $TB_GETMETRICS, $TB_GETOBJECT, $TB_GETPADDING, $TB_GETRECT, $TB_GETROWS, $TB_GETSTATE, $TB_GETSTRINGA, $TB_GETSTRINGW, $TB_GETSTYLE, $TB_GETTEXTROWS, $TB_GETTOOLTIPS, $TB_GETUNICODEFORMAT, $TB_HIDEBUTTON, $TB_HITTEST, $TB_INDETERMINATE, $TB_INSERTBUTTONA, $TB_INSERTBUTTONW, $TB_INSERTMARKHITTEST, $TB_ISBUTTONCHECKED, $TB_ISBUTTONENABLED, $TB_ISBUTTONHIDDEN, $TB_ISBUTTONHIGHLIGHTED, $TB_ISBUTTONINDETERMINATE, $TB_ISBUTTONPRESSED, $TB_LOADIMAGES, $TB_MAPACCELERATOR, $TB_MAPACCELERATORW, $TB_MARKBUTTON, $TB_MOVEBUTTON, $TB_PRESSBUTTON, $TB_REPLACEBITMAP, $TB_SAVERESTOREA, $TB_SAVERESTOREW, $TB_SETANCHORHIGHLIGHT, $TB_SETBITMAPSIZE, $TB_SETBUTTONINFOA, $TB_SETBUTTONINFOW, $TB_SETBUTTONSIZE, $TB_SETBUTTONWIDTH, $TB_SETCMDID, $TB_SETCOLORSCHEME, $TB_SETDISABLEDIMAGELIST, $TB_SETDRAWTEXTFLAGS, $TB_SETEXTENDEDSTYLE, $TB_SETHOTIMAGELIST, $TB_SETHOTITEM, $TB_SETIMAGELIST, $TB_SETINDENT, $TB_SETINSERTMARK, $TB_SETINSERTMARKCOLOR, $TB_SETMAXTEXTROWS, $TB_SETMETRICS, $TB_SETPADDING, $TB_SETPARENT, $TB_SETROWS, $TB_SETSTATE, $TB_SETSTYLE, $TB_SETTOOLTIPS, $TB_SETUNICODEFORMAT, $TB_SETWINDOWTHEME, $TBCD_CHANNEL, $TBCD_THUMB, $TBCD_TICS, $TBIF_BYINDEX, $TBIF_COMMAND, $TBIF_IMAGE, $TBIF_LPARAM, $TBIF_SIZE, $TBIF_STATE, $TBIF_STYLE, $TBIF_TEXT, $TBM_CLEARSEL, $TBM_CLEARTICS, $TBM_GETBUDDY, $TBM_GETCHANNELRECT, $TBM_GETLINESIZE, $TBM_GETNUMTICS, $TBM_GETPAGESIZE, $TBM_GETPOS, $TBM_GETPTICS, $TBM_GETRANGEMAX, $TBM_GETRANGEMIN, $TBM_GETSELEND, $TBM_GETSELSTART, $TBM_GETTHUMBLENGTH, $TBM_GETTHUMBRECT, $TBM_GETTIC, $TBM_GETTICPOS, $TBM_GETTOOLTIPS, $TBM_GETUNICODEFORMAT, $TBM_SETBUDDY, $TBM_SETLINESIZE, $TBM_SETPAGESIZE, $TBM_SETPOS, $TBM_SETRANGE, $TBM_SETRANGEMAX, $TBM_SETRANGEMIN, $TBM_SETSEL, $TBM_SETSELEND, $TBM_SETSELSTART, $TBM_SETTHUMBLENGTH, $TBM_SETTIC, $TBM_SETTICFREQ, $TBM_SETTIPSIDE, $TBM_SETTOOLTIPS, $TBM_SETUNICODEFORMAT, $TBMF_BARPAD, $TBMF_BUTTONSPACING, $TBMF_PAD, $TBN_BEGINADJUST, $TBN_BEGINDRAG, $TBN_CUSTHELP, $TBN_DELETINGBUTTON"
	$sConstants &= "$TBN_DRAGOUT, $TBN_DROPDOWN, $TBN_ENDADJUST, $TBN_ENDDRAG, $TBN_FIRST, $TBN_GETBUTTONINFOA, $TBN_GETBUTTONINFOW, $TBN_GETDISPINFOA, $TBN_GETDISPINFOW, $TBN_GETINFOTIPA, $TBN_GETINFOTIPW, $TBN_GETOBJECT, $TBN_HOTITEMCHANGE, $TBN_INITCUSTOMIZE, $TBN_QUERYDELETE, $TBN_QUERYINSERT, $TBN_RESET, $TBN_RESTORE, $TBN_SAVE, $TBN_TOOLBARCHANGE, $TBS_AUTOTICKS, $TBS_BOTH, $TBS_BOTTOM, $TBS_DOWNISLEFT, $TBS_ENABLESELRANGE, $TBS_FIXEDLENGTH, $TBS_HORZ, $TBS_LEFT, $TBS_NOTHUMB, $TBS_NOTICKS, $TBS_REVERSED, $TBS_RIGHT, $TBS_TOOLTIPS, $TBS_TOP, $TBS_VERT, $TBSTATE_CHECKED, $TBSTATE_ELLIPSES, $TBSTATE_ENABLED, $TBSTATE_HIDDEN, $TBSTATE_INDETERMINATE, $TBSTATE_MARKED, $TBSTATE_PRESSED, $TBSTATE_WRAP, $TBSTYLE_ALTDRAG, $TBSTYLE_CUSTOMERASE, $TBSTYLE_EX_DOUBLEBUFFER, $TBSTYLE_EX_DRAWDDARROWS, $TBSTYLE_EX_HIDECLIPPEDBUTTONS, $TBSTYLE_EX_MIXEDBUTTONS, $TBSTYLE_FLAT, $TBSTYLE_LIST, $TBSTYLE_REGISTERDROP, $TBSTYLE_TOOLTIPS, $TBSTYLE_TRANSPARENT, $TBSTYLE_WRAPABLE, $TBTS_BOTTOM, $TBTS_LEFT, $TBTS_RIGHT, $TBTS_TOP, $TC_ERR, $TCCM_FIRST, $TCCM_GETUNICODEFORMAT, $TCCM_SETUNICODEFORMAT, $TCHT_NOWHERE, $TCHT_ONITEM, $TCHT_ONITEMICON, $TCHT_ONITEMLABEL, $TCIF_ALLDATA, $TCIF_IMAGE, $TCIF_PARAM, $TCIF_RTLREADING, $TCIF_STATE, $TCIF_TEXT, $TCIS_BUTTONPRESSED, $TCIS_HIGHLIGHTED, $TCM_ADJUSTRECT, $TCM_DELETEALLITEMS, $TCM_DELETEITEM, $TCM_DESELECTALL, $TCM_FIRST, $TCM_GETCURFOCUS, $TCM_GETCURSEL, $TCM_GETEXTENDEDSTYLE, $TCM_GETIMAGELIST, $TCM_GETITEMA, $TCM_GETITEMCOUNT, $TCM_GETITEMRECT, $TCM_GETITEMW, $TCM_GETROWCOUNT, $TCM_GETTOOLTIPS, $TCM_GETUNICODEFORMAT, $TCM_HIGHLIGHTITEM, $TCM_HITTEST, $TCM_INSERTITEMA, $TCM_INSERTITEMW, $TCM_REMOVEIMAGE, $TCM_SETCURFOCUS, $TCM_SETCURSEL, $TCM_SETEXTENDEDSTYLE, $TCM_SETIMAGELIST, $TCM_SETITEMA, $TCM_SETITEMEXTRA, $TCM_SETITEMSIZE, $TCM_SETITEMW, $TCM_SETMINTABWIDTH, $TCM_SETPADDING, $TCM_SETTOOLTIPS, $TCM_SETUNICODEFORMAT, $TCN_FIRST, $TCN_FOCUSCHANGE, $TCN_GETOBJECT, $TCN_KEYDOWN, $TCN_SELCHANGE, $TCN_SELCHANGING, $TCS_BOTTOM, $TCS_BUTTONS, $TCS_EX_FLATSEPARATORS, $TCS_EX_REGISTERDROP, $TCS_FIXEDWIDTH, $TCS_FLATBUTTONS, $TCS_FOCUSNEVER, $TCS_FOCUSONBUTTONDOWN, $TCS_FORCEICONLEFT, $TCS_FORCELABELLEFT, $TCS_HOTTRACK, $TCS_MULTILINE, $TCS_MULTISELECT, $TCS_OWNERDRAWFIXED, $TCS_RAGGEDRIGHT, $TCS_RIGHT, $TCS_RIGHTJUSTIFY, $TCS_SCROLLOPPOSITE, $TCS_SINGLELINE, $TCS_TABS, $TCS_TOOLTIPS, $TCS_VERTICAL, $TIP_ICONASTERISK, $TIP_ICONEXCLAMATION, $TIP_ICONHAND, $TIP_ICONNONE, $TIP_NOSOUND, $TOKEN_ADJUST_DEFAULT, $TOKEN_ADJUST_GROUPS, $TOKEN_ADJUST_PRIVILEGES, $TOKEN_ADJUST_SESSIONID, $TOKEN_ASSIGN_PRIMARY, $TOKEN_DUPLICATE, $TOKEN_IMPERSONATE, $TOKEN_QUERY, $TOKEN_QUERY_SOURCE, $TOKENACCESSINFORMATION, $TOKENAUDITPOLICY, $TOKENDEFAULTDACL, $TOKENELEVATION, $TOKENELEVATIONTYPE, $TOKENGROUPS, $TOKENGROUPSANDPRIVILEGES, $TOKENHASRESTRICTIONS, $TOKENIMPERSONATIONLEVEL, $TOKENINTEGRITYLEVEL, $TOKENLINKEDTOKEN, $TOKENLOGONSID, $TOKENMANDATORYPOLICY, $TOKENORIGIN, $TOKENOWNER, $TOKENPRIMARYGROUP, $TOKENPRIVILEGES, $TOKENRESTRICTEDSIDS, $TOKENSANDBOXINERT, $TOKENSESSIONID, $TOKENSESSIONREFERENCE, $TOKENSOURCE, $TOKENSTATISTICS, $TOKENTYPE, $TOKENUIACCESS, $TOKENUSER, $TOKENVIRTUALIZATIONALLOWED, $TOKENVIRTUALIZATIONENABLED, $TPM_BOTTOMALIGN, $TPM_CENTERALIGN, $TPM_HORIZONTAL, $TPM_HORNEGANIMATION, $TPM_HORPOSANIMATION, $TPM_LAYOUTRTL, $TPM_LEFTALIGN, $TPM_LEFTBUTTON, $TPM_NOANIMATION, $TPM_NONOTIFY, $TPM_RECURSE, $TPM_RETURNCMD, $TPM_RIGHTALIGN, $TPM_RIGHTBUTTON, $TPM_TOPALIGN, $TPM_VCENTERALIGN, $TPM_VERNEGANIMATION, $TPM_VERPOSANIMATION, $TPM_VERTICAL, $TRANSPARENT, $TRAY_CHECKED, $TRAY_DEFAULT, $TRAY_DISABLE, $TRAY_ENABLE, $TRAY_EVENT_FLASHICON, $TRAY_EVENT_HIDEICON, $TRAY_EVENT_MOUSEOUT, $TRAY_EVENT_MOUSEOVER, $TRAY_EVENT_NOFLASHICON, $TRAY_EVENT_PRIMARYDOUBLE, $TRAY_EVENT_PRIMARYDOWN, $TRAY_EVENT_PRIMARYUP, $TRAY_EVENT_SECONDARYDOUBLE, $TRAY_EVENT_SECONDARYDOWN, $TRAY_EVENT_SECONDARYUP, $TRAY_EVENT_SHOWICON, $TRAY_FOCUS, $TRAY_ITEM_EXIT, $TRAY_ITEM_FIRST, $TRAY_ITEM_PAUSE, $TRAY_UNCHECKED, $TRUNCATE_EXISTING, $TTF_ABSOLUTE"
	$sConstants &= "$TTF_CENTERTIP, $TTF_DI_SETITEM, $TTF_IDISHWND, $TTF_PARSELINKS, $TTF_RTLREADING, $TTF_SUBCLASS, $TTF_TRACK, $TTF_TRANSPARENT, $TTI_ERROR, $TTI_ERROR_LARGE, $TTI_INFO, $TTI_INFO_LARGE, $TTI_NONE, $TTI_WARNING, $TTI_WARNING_LARGE, $TTM_ACTIVATE, $TTM_ADDTOOL, $TTM_ADDTOOLW, $TTM_ADJUSTRECT, $TTM_DELTOOL, $TTM_DELTOOLW, $TTM_ENUMTOOLS, $TTM_ENUMTOOLSW, $TTM_GETBUBBLESIZE, $TTM_GETCURRENTTOOL, $TTM_GETCURRENTTOOLW, $TTM_GETDELAYTIME, $TTM_GETMARGIN, $TTM_GETMAXTIPWIDTH, $TTM_GETTEXT, $TTM_GETTEXTW, $TTM_GETTIPBKCOLOR, $TTM_GETTIPTEXTCOLOR, $TTM_GETTITLE, $TTM_GETTOOLCOUNT, $TTM_GETTOOLINFO, $TTM_GETTOOLINFOW, $TTM_HITTEST, $TTM_HITTESTW, $TTM_NEWTOOLRECT, $TTM_NEWTOOLRECTW, $TTM_POP, $TTM_POPUP, $TTM_SETDELAYTIME, $TTM_SETMARGIN, $TTM_SETMAXTIPWIDTH, $TTM_SETTIPBKCOLOR, $TTM_SETTIPTEXTCOLOR, $TTM_SETTITLE, $TTM_SETTITLEW, $TTM_SETTOOLINFO, $TTM_SETTOOLINFOW, $TTM_SETWINDOWTHEME, $TTM_TRACKACTIVATE, $TTM_TRACKPOSITION, $TTM_UPDATE, $TTM_UPDATETIPTEXT, $TTM_UPDATETIPTEXTW, $TTM_WINDOWFROMPOINT, $TTN_FIRST, $TTN_GETDISPINFO, $TTN_GETDISPINFOW, $TTN_LINKCLICK, $TTN_POP, $TTN_SHOW, $TTS_ALWAYSTIP, $TTS_BALLOON, $TTS_CLOSE, $TTS_NOANIMATE, $TTS_NOFADE, $TTS_NOPREFIX, $TURKISH_CHARSET, $TV_FIRST, $TVC_BYKEYBOARD, $TVC_BYMOUSE, $TVC_UNKNOWN, $TVE_COLLAPSE, $TVE_COLLAPSERESET, $TVE_EXPAND, $TVE_EXPANDPARTIAL, $TVE_TOGGLE, $TVGN_CARET, $TVGN_CHILD, $TVGN_DROPHILITE, $TVGN_FIRSTVISIBLE, $TVGN_LASTVISIBLE, $TVGN_NEXT, $TVGN_NEXTVISIBLE, $TVGN_PARENT, $TVGN_PREVIOUS, $TVGN_PREVIOUSVISIBLE, $TVGN_ROOT, $TVHT_ABOVE, $TVHT_BELOW, $TVHT_NOWHERE, $TVHT_ONITEM, $TVHT_ONITEMBUTTON, $TVHT_ONITEMICON, $TVHT_ONITEMINDENT, $TVHT_ONITEMLABEL, $TVHT_ONITEMRIGHT, $TVHT_ONITEMSTATEICON, $TVHT_TOLEFT, $TVHT_TORIGHT, $TVI_FIRST, $TVI_LAST, $TVI_ROOT, $TVI_SORT, $TVIF_CHILDREN, $TVIF_DI_SETITEM, $TVIF_HANDLE, $TVIF_IMAGE, $TVIF_INTEGRAL, $TVIF_PARAM, $TVIF_SELECTEDIMAGE, $TVIF_STATE, $TVIF_TEXT, $TVIS_BOLD, $TVIS_CHECKED, $TVIS_CUT, $TVIS_DROPHILITED, $TVIS_EXPANDED, $TVIS_EXPANDEDONCE, $TVIS_EXPANDPARTIAL, $TVIS_FOCUSED, $TVIS_OVERLAYMASK, $TVIS_SELECTED, $TVIS_STATEIMAGEMASK, $TVIS_UNCHECKED, $TVIS_USERMASK, $TVM_CREATEDRAGIMAGE, $TVM_DELETEITEM, $TVM_EDITLABELA, $TVM_EDITLABELW, $TVM_ENDEDITLABELNOW, $TVM_ENSUREVISIBLE, $TVM_EXPAND, $TVM_GETBKCOLOR, $TVM_GETCOUNT, $TVM_GETEDITCONTROL, $TVM_GETIMAGELIST, $TVM_GETINDENT, $TVM_GETINSERTMARKCOLOR, $TVM_GETISEARCHSTRINGA, $TVM_GETISEARCHSTRINGW, $TVM_GETITEMA, $TVM_GETITEMHEIGHT, $TVM_GETITEMRECT, $TVM_GETITEMSTATE, $TVM_GETITEMW, $TVM_GETLINECOLOR, $TVM_GETNEXTITEM, $TVM_GETSCROLLTIME, $TVM_GETTEXTCOLOR, $TVM_GETTOOLTIPS, $TVM_GETUNICODEFORMAT, $TVM_GETVISIBLECOUNT, $TVM_HITTEST, $TVM_INSERTITEMA, $TVM_INSERTITEMW, $TVM_MAPACCIDTOHTREEITEM, $TVM_MAPHTREEITEMTOACCID, $TVM_SELECTITEM, $TVM_SETBKCOLOR, $TVM_SETIMAGELIST, $TVM_SETINDENT, $TVM_SETINSERTMARK, $TVM_SETINSERTMARKCOLOR, $TVM_SETITEMA, $TVM_SETITEMHEIGHT, $TVM_SETITEMW, $TVM_SETLINECOLOR, $TVM_SETSCROLLTIME, $TVM_SETTEXTCOLOR, $TVM_SETTOOLTIPS, $TVM_SETUNICODEFORMAT, $TVM_SORTCHILDREN, $TVM_SORTCHILDRENCB, $TVN_BEGINDRAGA, $TVN_BEGINDRAGW, $TVN_BEGINLABELEDITA, $TVN_BEGINLABELEDITW, $TVN_BEGINRDRAGA, $TVN_BEGINRDRAGW, $TVN_DELETEITEMA, $TVN_DELETEITEMW, $TVN_ENDLABELEDITA, $TVN_ENDLABELEDITW, $TVN_FIRST, $TVN_GETDISPINFOA, $TVN_GETDISPINFOW, $TVN_GETINFOTIPA, $TVN_GETINFOTIPW, $TVN_ITEMEXPANDEDA, $TVN_ITEMEXPANDEDW, $TVN_ITEMEXPANDINGA, $TVN_ITEMEXPANDINGW, $TVN_KEYDOWN, $TVN_SELCHANGEDA, $TVN_SELCHANGEDW, $TVN_SELCHANGINGA, $TVN_SELCHANGINGW, $TVN_SETDISPINFOA, $TVN_SETDISPINFOW, $TVN_SINGLEEXPAND, $TVNA_ADD, $TVNA_ADDCHILD, $TVNA_ADDCHILDFIRST, $TVNA_ADDFIRST, $TVNA_INSERT, $TVS_CHECKBOXES, $TVS_DEFAULT, $TVS_DISABLEDRAGDROP, $TVS_EDITLABELS, $TVS_FULLROWSELECT, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_INFOTIP, $TVS_LINESATROOT, $TVS_NOHSCROLL, $TVS_NONEVENHEIGHT, $TVS_NOSCROLL, $TVS_NOTOOLTIPS, $TVS_RTLREADING, $TVS_SHOWSELALWAYS, $TVS_SINGLEEXPAND, $TVS_TRACKSELECT, $TVSIL_NORMAL, $TVSIL_STATE, $TVTA_ADD, $TVTA_ADDFIRST, $TVTA_INSERT"
	$sConstants &= "$UDS_ALIGNLEFT, $UDS_ALIGNRIGHT, $UDS_ARROWKEYS, $UDS_HORZ, $UDS_NOTHOUSANDS, $UDS_SETBUDDYINT, $UDS_WRAP, $VARIABLE_PITCH, $VIETNAMESE_CHARSET, $VK_DOWN, $VK_END, $VK_HOME, $VK_LEFT, $VK_NEXT, $VK_PRIOR, $VK_RIGHT, $VK_UP, $WB_CLASSIFY, $WB_ISDELIMITER, $WB_LEFT, $WB_LEFTBREAK, $WB_MOVEWORDLEFT, $WB_MOVEWORDNEXT, $WB_MOVEWORDPREV, $WB_MOVEWORDRIGHT, $WB_NEXTBREAK, $WB_PREVBREAK, $WB_RIGHT, $WB_RIGHTBREAK, $WBF_BREAKAFTER, $WBF_BREAKLINE, $WBF_ISWHITE, $WHITENESS, $WM_ACTIVATE, $WM_ACTIVATEAPP, $WM_ASKCBFORMATNAME, $WM_CANCELJOURNAL, $WM_CANCELMODE, $WM_CHANGECBCHAIN, $WM_CHANGEUISTATE, $WM_CHAR, $WM_CHARTOITEM, $WM_CHILDACTIVATE, $WM_CLEAR, $WM_CLOSE, $WM_COMMAND, $WM_COMMNOTIFY, $WM_COMPACTING, $WM_COMPAREITEM, $WM_CONTEXTMENU, $WM_COPY, $WM_COPYDATA, $WM_CREATE, $WM_CTLCOLOR, $WM_CTLCOLORBTN, $WM_CTLCOLORDLG, $WM_CTLCOLOREDIT, $WM_CTLCOLORLISTBOX, $WM_CTLCOLORMSGBOX, $WM_CTLCOLORSCROLLBAR, $WM_CTLCOLORSTATIC, $WM_CUT, $WM_DEADCHAR, $WM_DELETEITEM, $WM_DESTROY, $WM_DESTROYCLIPBOARD, $WM_DEVMODECHANGE, $WM_DISPLAYCHANGE, $WM_DRAWCLIPBOARD, $WM_DRAWITEM, $WM_ENABLE, $WM_ENTERIDLE, $WM_ERASEBKGND, $WM_FONTCHANGE, $WM_GETDLGCODE, $WM_GETFONT, $WM_GETHOTKEY, $WM_GETICON, $WM_GETMINMAXINFO, $WM_GETOBJECT, $WM_GETTEXT, $WM_GETTEXTLENGTH, $WM_HELP, $WM_HSCROLL, $WM_HSCROLLCLIPBOARD, $WM_ICONERASEBKGND, $WM_INITDIALOG, $WM_INITMENU, $WM_INITMENUPOPUP, $WM_INPUTLANGCHANGE, $WM_INPUTLANGCHANGEREQUEST, $WM_KEYDOWN, $WM_KEYUP, $WM_KILLFOCUS, $WM_LBUTTONDBLCLK, $WM_LBUTTONDOWN, $WM_LBUTTONUP, $WM_MBUTTONDBLCK, $WM_MBUTTONDOWN, $WM_MBUTTONUP, $WM_MEASUREITEM, $WM_MENUCHAR, $WM_MENUCOMMAND, $WM_MENUDRAG, $WM_MENUGETOBJECT, $WM_MENURBUTTONUP, $WM_MENUSELECT, $WM_MOUSEACTIVATE, $WM_MOUSEHWHEEL, $WM_MOUSEMOVE, $WM_MOUSEWHEEL, $WM_MOVE, $WM_NCACTIVATE, $WM_NCCALCSIZE, $WM_NCCREATE, $WM_NCDESTROY, $WM_NCHITTEST, $WM_NCLBUTTONDBLCLK, $WM_NCLBUTTONDOWN, $WM_NCLBUTTONUP, $WM_NCMBUTTONDBLCLK, $WM_NCMBUTTONDOWN, $WM_NCMBUTTONUP, $WM_NCMOUSEMOVE, $WM_NCPAINT, $WM_NCRBUTTONDBLCLK, $WM_NCRBUTTONDOWN, $WM_NCRBUTTONUP, $WM_NEXTDLGCTL, $WM_NOTIFY, $WM_NOTIFYFORMAT, $WM_PAINT, $WM_PAINTCLIPBOARD, $WM_PAINTICON, $WM_PASTE, $WM_POWER, $WM_QUERYDRAGICON, $WM_QUERYUISTATE, $WM_QUEUESYNC, $WM_QUIT, $WM_RBUTTONDBLCK, $WM_RBUTTONDOWN, $WM_RBUTTONUP, $WM_RENDERALLFORMATS, $WM_RENDERFORMAT, $WM_SETCURSOR, $WM_SETFOCUS, $WM_SETFONT, $WM_SETHOTKEY, $WM_SETICON, $WM_SETREDRAW, $WM_SETTEXT, $WM_SHOWWINDOW, $WM_SIZE, $WM_SIZECLIPBOARD, $WM_SIZING, $WM_SPOOLERSTATUS, $WM_STYLECHANGED, $WM_STYLECHANGING, $WM_SYNCPAINT, $WM_SYSCHAR, $WM_SYSCOLORCHANGE, $WM_SYSCOMMAND, $WM_SYSDEADCHAR, $WM_SYSKEYDOWN, $WM_SYSKEYUP, $WM_TCARD, $WM_TIMECHANGE, $WM_TIMER, $WM_UNDO, $WM_UNINITMENUPOPUP, $WM_UPDATEUISTATE, $WM_USER, $WM_USERCHANGED, $WM_VKEYTOITEM, $WM_VSCROLL, $WM_VSCROLLCLIPBOARD, $WM_WINDOWPOSCHANGED, $WM_WINDOWPOSCHANGING, $WM_WININICHANGE, $WM_XBUTTONDBLCLK, $WM_XBUTTONDOWN, $WM_XBUTTONUP, $WS_BORDER, $WS_CAPTION, $WS_CHILD, $WS_CLIPCHILDREN, $WS_CLIPSIBLINGS, $WS_DISABLED, $WS_DLGFRAME, $WS_EX_ACCEPTFILES, $WS_EX_APPWINDOW, $WS_EX_CLIENTEDGE, $WS_EX_COMPOSITED, $WS_EX_CONTEXTHELP, $WS_EX_CONTROLPARENT, $WS_EX_DLGMODALFRAME, $WS_EX_LAYERED, $WS_EX_LAYOUTRTL, $WS_EX_LEFTSCROLLBAR, $WS_EX_MDICHILD, $WS_EX_OVERLAPPEDWINDOW, $WS_EX_RIGHT, $WS_EX_RTLREADING, $WS_EX_STATICEDGE, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_TRANSPARENT, $WS_EX_WINDOWEDGE, $WS_GROUP, $WS_HSCROLL, $WS_MAXIMIZE, $WS_MAXIMIZEBOX, $WS_MINIMIZE, $WS_MINIMIZEBOX, $WS_OVERLAPPED, $WS_OVERLAPPEDWINDOW, $WS_POPUP, $WS_POPUPWINDOW, $WS_SIZEBOX, $WS_SYSMENU, $WS_TABSTOP, $WS_THICKFRAME, $WS_TILED, $WS_TILEDWINDOW, $WS_VISIBLE, $WS_VSCROLL"
	$array = StringSplit($sConstants, ', ', 3)
EndFunc   ;==>_ReadConstantsToArray

Func _StringReplaceEx($sString, $sSearchString, $sReplaceString, $iOccurence = 1, $iHowOften = 1, $iCaseSense = 0)
	If $sSearchString = "" Or $sString = "" Or $iOccurence < 1 Or $iCaseSense < 0 Or $iCaseSense > 2 Then Return SetError(1, 0, 0)
	Local $i = 1
	If $iHowOften = 0 Then $i = -1
	If $iHowOften >= 0 Then
		If Not StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) Then Return SetError(2, 0, 0)
		Do
			$sString = StringLeft($sString, StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) - 1) & StringReplace(StringTrimLeft(StringTrimRight($sString, StringLen($sString) - StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) - StringLen($sSearchString)), StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) - 1), $sSearchString, $sReplaceString) & StringRight($sString, StringLen($sString) - StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) - StringLen($sSearchString))
			If $iHowOften <> 0 Then $i += 1
		Until $i > $iHowOften Or Not StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence)

	Else
		Local $i = -1
		$sString = _StringReplaceEx_Reverse($sString)
		$sSearchString = _StringReplaceEx_Reverse($sSearchString)
		$sReplaceString = _StringReplaceEx_Reverse($sReplaceString)
		If Not StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) Then Return SetError(2, 0, 0)
		Do
			$sString = StringLeft($sString, StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) - 1) & StringReplace(StringTrimLeft(StringTrimRight($sString, StringLen($sString) - StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) - StringLen($sSearchString)), StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) - 1), $sSearchString, $sReplaceString) & StringRight($sString, StringLen($sString) - StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence) - StringLen($sSearchString))
			$i -= 1
		Until $i < $iHowOften Or Not StringInStr($sString, $sSearchString, $iCaseSense, $iOccurence)
		$sString = _StringReplaceEx_Reverse($sString)
	EndIf
	Return SetError(0, $i, $sString)
EndFunc   ;==>_StringReplaceEx

;=================================================================================================
;#####INTERNAL USE#####
;_StringReplaceEx_Reverse : Reverses the contents of the specified string. (without a dll-call)
;SEuBo (www.autoit.de)
;=================================================================================================
Func _StringReplaceEx_Reverse($sString)
	Local $sReverse = ""
	For $x = 1 To StringLen($sString)
		$sReverse &= StringRight($sString, 1)
		$sString = StringTrimRight($sString, 1)
	Next
	Return $sReverse
EndFunc   ;==>_StringReplaceEx_Reverse
;=================================================================================================
