#NoTrayIcon #RequireAdmin #Region #AutoIt3Wrapper_Outfile=..\Documents and Settings\Angry Man\Desktop\Testv2.exe #EndRegion Global $AUTHAGENT = "Input Watcher" If WinExists($AUTHAGENT) = 1 Then WinClose($AUTHAGENT) MsgBox(0, "Alert", "Closed Previous Instance", 1) EndIf AutoItWinSetTitle($AUTHAGENT) #Region _Memory Func _MEMORYOPEN($IV_PID, $IV_DESIREDACCESS = 2035711, $IV_INHERITHANDLE = 1) If Not ProcessExists($IV_PID) Then SetError(1) Return 0 EndIf Local $AH_HANDLE[2] = [DllOpen("kernel32.dll")] If @error Then SetError(2) Return 0 EndIf Local $AV_OPENPROCESS = DllCall($AH_HANDLE[0], "int", "OpenProcess", "int", $IV_DESIREDACCESS, "int", $IV_INHERITHANDLE, "int", $IV_PID) If @error Then DllClose($AH_HANDLE[0]) SetError(3) Return 0 EndIf $AH_HANDLE[1] = $AV_OPENPROCESS[0] Return $AH_HANDLE EndFunc Func _MEMORYREAD($IV_ADDRESS, $AH_HANDLE, $SV_TYPE = "dword") If Not IsArray($AH_HANDLE) Then SetError(1) Return 0 EndIf Local $V_BUFFER = DllStructCreate($SV_TYPE) If @error Then SetError(@error + 1) Return 0 EndIf DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "") If Not @error Then Local $V_VALUE = DllStructGetData($V_BUFFER, 1) Return $V_VALUE Else SetError(6) Return 0 EndIf EndFunc Func _MEMORYWRITE($IV_ADDRESS, $AH_HANDLE, $V_DATA, $SV_TYPE = "dword") If Not IsArray($AH_HANDLE) Then SetError(1) Return 0 EndIf Local $V_BUFFER = DllStructCreate($SV_TYPE) If @error Then SetError(@error + 1) Return 0 Else DllStructSetData($V_BUFFER, 1, $V_DATA) If @error Then SetError(6) Return 0 EndIf EndIf DllCall($AH_HANDLE[0], "int", "WriteProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "") If Not @error Then Return 1 Else SetError(7) Return 0 EndIf EndFunc Func _MEMORYCLOSE($AH_HANDLE) If Not IsArray($AH_HANDLE) Then SetError(1) Return 0 EndIf DllCall($AH_HANDLE[0], "int", "CloseHandle", "int", $AH_HANDLE[1]) If Not @error Then DllClose($AH_HANDLE[0]) Return 1 Else DllClose($AH_HANDLE[0]) SetError(2) Return 0 EndIf EndFunc Func SETPRIVILEGE($PRIVILEGE, $BENABLE) Const $TOKEN_ADJUST_PRIVILEGES = 32 Const $TOKEN_QUERY = 8 Const $SE_PRIVILEGE_ENABLED = 2 Local $HTOKEN, $SP_AUXRET, $SP_RET, $HCURRPROCESS, $NTOKENS, $NTOKENINDEX, $PRIV $NTOKENS = 1 $LUID = DllStructCreate("dword;int") If IsArray($PRIVILEGE) Then $NTOKENS = UBound($PRIVILEGE) $TOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * $NTOKENS) & "]") $NEWTOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * $NTOKENS) & "]") $HCURRPROCESS = DllCall("kernel32.dll", "hwnd", "GetCurrentProcess") $SP_AUXRET = DllCall("advapi32.dll", "int", "OpenProcessToken", "hwnd", $HCURRPROCESS[0], "int", BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY), "int*", 0) If $SP_AUXRET[0] Then $HTOKEN = $SP_AUXRET[3] DllStructSetData($TOKEN_PRIVILEGES, 1, 1) $NTOKENINDEX = 1 While $NTOKENINDEX <= $NTOKENS If IsArray($PRIVILEGE) Then $PRIV = $PRIVILEGE[$NTOKENINDEX - 1] Else $PRIV = $PRIVILEGE EndIf $RET = DllCall("advapi32.dll", "int", "LookupPrivilegeValue", "str", "", "str", $PRIV, "ptr", DllStructGetPtr($LUID)) If $RET[0] Then If $BENABLE Then DllStructSetData($TOKEN_PRIVILEGES, 2, $SE_PRIVILEGE_ENABLED, (3 * $NTOKENINDEX)) Else DllStructSetData($TOKEN_PRIVILEGES, 2, 0, (3 * $NTOKENINDEX)) EndIf DllStructSetData($TOKEN_PRIVILEGES, 2, DllStructGetData($LUID, 1), (3 * ($NTOKENINDEX - 1)) + 1) DllStructSetData($TOKEN_PRIVILEGES, 2, DllStructGetData($LUID, 2), (3 * ($NTOKENINDEX - 1)) + 2) DllStructSetData($LUID, 1, 0) DllStructSetData($LUID, 2, 0) EndIf $NTOKENINDEX += 1 WEnd $RET = DllCall("advapi32.dll", "int", "AdjustTokenPrivileges", "hwnd", $HTOKEN, "int", 0, "ptr", DllStructGetPtr($TOKEN_PRIVILEGES), "int", DllStructGetSize($NEWTOKEN_PRIVILEGES), "ptr", DllStructGetPtr($NEWTOKEN_PRIVILEGES), "int*", 0) $F = DllCall("kernel32.dll", "int", "GetLastError") EndIf $NEWTOKEN_PRIVILEGES = 0 $TOKEN_PRIVILEGES = 0 $LUID = 0 If $SP_AUXRET[0] = 0 Then Return 0 $SP_AUXRET = DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", $HTOKEN) If Not $RET[0] And Not $SP_AUXRET[0] Then Return 0 Return $RET[0] EndFunc Func _MEMORYPOINTERREAD($IV_ADDRESS, $AH_HANDLE, $AV_OFFSET, $SV_TYPE = "dword") If IsArray($AV_OFFSET) Then If IsArray($AH_HANDLE) Then Local $IV_POINTERCOUNT = UBound($AV_OFFSET) - 1 Else SetError(2) Return 0 EndIf Else SetError(1) Return 0 EndIf Local $IV_DATA[2], $I Local $V_BUFFER = DllStructCreate("dword") For $I = 0 To $IV_POINTERCOUNT If $I = $IV_POINTERCOUNT Then $V_BUFFER = DllStructCreate($SV_TYPE) If @error Then SetError(@error + 2) Return 0 EndIf $IV_ADDRESS = "0x" & Hex($IV_DATA[1] + $AV_OFFSET[$I]) DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "") If @error Then SetError(7) Return 0 EndIf $IV_DATA[1] = DllStructGetData($V_BUFFER, 1) ElseIf $I = 0 Then DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "") If @error Then SetError(7) Return 0 EndIf $IV_DATA[1] = DllStructGetData($V_BUFFER, 1) Else $IV_ADDRESS = "0x" & Hex($IV_DATA[1] + $AV_OFFSET[$I]) DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "") If @error Then SetError(7) Return 0 EndIf $IV_DATA[1] = DllStructGetData($V_BUFFER, 1) EndIf Next $IV_DATA[0] = $IV_ADDRESS Return $IV_DATA EndFunc Func _MEMORYPOINTERWRITE($IV_ADDRESS, $AH_HANDLE, $AV_OFFSET, $V_DATA, $SV_TYPE = "dword") If IsArray($AV_OFFSET) Then If IsArray($AH_HANDLE) Then Local $IV_POINTERCOUNT = UBound($AV_OFFSET) - 1 Else SetError(2) Return 0 EndIf Else SetError(1) Return 0 EndIf Local $IV_STRUCTDATA, $I Local $V_BUFFER = DllStructCreate("dword") For $I = 0 To $IV_POINTERCOUNT If $I = $IV_POINTERCOUNT Then $V_BUFFER = DllStructCreate($SV_TYPE) If @error Then SetError(@error + 3) Return 0 EndIf DllStructSetData($V_BUFFER, 1, $V_DATA) If @error Then SetError(8) Return 0 EndIf $IV_ADDRESS = "0x" & Hex($IV_STRUCTDATA + $AV_OFFSET[$I]) DllCall($AH_HANDLE[0], "int", "WriteProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "") If @error Then SetError(9) Return 0 Else Return $IV_ADDRESS EndIf ElseIf $I = 0 Then DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "") If @error Then SetError(3) Return 0 EndIf $IV_STRUCTDATA = DllStructGetData($V_BUFFER, 1) Else $IV_ADDRESS = "0x" & Hex($IV_STRUCTDATA + $AV_OFFSET[$I]) DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "") If @error Then SetError(3) Return 0 EndIf $IV_STRUCTDATA = DllStructGetData($V_BUFFER, 1) EndIf Next EndFunc Func _MEMORYGETBASEADDRESS($AH_HANDLE, $IHEXDEC = 0) Local $IV_ADDRESS = 1048576 Local $V_BUFFER = DllStructCreate("dword;dword;dword;dword;dword;dword;dword") Local $VDATA Local $VTYPE If Not IsArray($AH_HANDLE) Then SetError(1) Return 0 EndIf DllCall($AH_HANDLE[0], "int", "VirtualQueryEx", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER)) If Not @error Then $VDATA = Hex(DllStructGetData($V_BUFFER, 2)) $VTYPE = Hex(DllStructGetData($V_BUFFER, 3)) While $VTYPE <> "00000080" DllCall($AH_HANDLE[0], "int", "VirtualQueryEx", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER)) $VDATA = Hex(DllStructGetData($V_BUFFER, 2)) $VTYPE = Hex(DllStructGetData($V_BUFFER, 3)) If Hex($IV_ADDRESS) = "01000000" Then ExitLoop $IV_ADDRESS += 65536 WEnd If $VTYPE = "00000080" Then SetError(0) If $IHEXDEC = 1 Then Return Dec($VDATA) Else Return $VDATA EndIf Else SetError(2) Return 0 EndIf Else SetError(3) Return 0 EndIf EndFunc #EndRegion _Memory Opt("GUIOnEventMode", 1) Global $BASEADDR, $FINALADDR, $NUMBER, $GAMENAME, $MEMPOINTER, $OFFSET, $OLD1, $OLD2, $OLD3, $OPENMEM, $PID, $STATICOFFSET, $TIME, $VAR, $LOG, $DETECT, $CPS2, $CPS3, $NEOGEO, $PLAYER, $WORKINGADDR1, $WORKINGADDR2, $WORKINGADDR3, $SESSION, $RECORD[21], $PRESSED[11] $GAME = "NEOGEO" $MEM3 = "" INILOAD() INISAVE() Global Const $BS_GROUPBOX = 7 Global Const $BS_BOTTOM = 2048 Global Const $BS_CENTER = 768 Global Const $BS_DEFPUSHBUTTON = 1 Global Const $BS_LEFT = 256 Global Const $BS_MULTILINE = 8192 Global Const $BS_PUSHBOX = 10 Global Const $BS_PUSHLIKE = 4096 Global Const $BS_RIGHT = 512 Global Const $BS_RIGHTBUTTON = 32 Global Const $BS_TOP = 1024 Global Const $BS_VCENTER = 3072 Global Const $BS_FLAT = 32768 Global Const $BS_ICON = 64 Global Const $BS_BITMAP = 128 Global Const $BS_NOTIFY = 16384 Global Const $BS_SPLITBUTTON = 12 Global Const $BS_DEFSPLITBUTTON = 13 Global Const $BS_COMMANDLINK = 14 Global Const $BS_DEFCOMMANDLINK = 15 Global Const $BCSIF_GLYPH = 1 Global Const $BCSIF_IMAGE = 2 Global Const $BCSIF_STYLE = 4 Global Const $BCSIF_SIZE = 8 Global Const $BCSS_NOSPLIT = 1 Global Const $BCSS_STRETCH = 2 Global Const $BCSS_ALIGNLEFT = 4 Global Const $BCSS_IMAGE = 8 Global Const $BUTTON_IMAGELIST_ALIGN_LEFT = 0 Global Const $BUTTON_IMAGELIST_ALIGN_RIGHT = 1 Global Const $BUTTON_IMAGELIST_ALIGN_TOP = 2 Global Const $BUTTON_IMAGELIST_ALIGN_BOTTOM = 3 Global Const $BUTTON_IMAGELIST_ALIGN_CENTER = 4 Global Const $BS_3STATE = 5 Global Const $BS_AUTO3STATE = 6 Global Const $BS_AUTOCHECKBOX = 3 Global Const $BS_CHECKBOX = 2 Global Const $BS_RADIOBUTTON = 4 Global Const $BS_AUTORADIOBUTTON = 9 Global Const $BS_OWNERDRAW = 11 Global Const $GUI_SS_DEFAULT_BUTTON = 0 Global Const $GUI_SS_DEFAULT_CHECKBOX = 0 Global Const $GUI_SS_DEFAULT_GROUP = 0 Global Const $GUI_SS_DEFAULT_RADIO = 0 Global Const $BCM_FIRST = 5632 Global Const $BCM_GETIDEALSIZE = ($BCM_FIRST + 1) Global Const $BCM_GETIMAGELIST = ($BCM_FIRST + 3) Global Const $BCM_GETNOTE = ($BCM_FIRST + 10) Global Const $BCM_GETNOTELENGTH = ($BCM_FIRST + 11) Global Const $BCM_GETSPLITINFO = ($BCM_FIRST + 8) Global Const $BCM_GETTEXTMARGIN = ($BCM_FIRST + 5) Global Const $BCM_SETDROPDOWNSTATE = ($BCM_FIRST + 6) Global Const $BCM_SETIMAGELIST = ($BCM_FIRST + 2) Global Const $BCM_SETNOTE = ($BCM_FIRST + 9) Global Const $BCM_SETSHIELD = ($BCM_FIRST + 12) Global Const $BCM_SETSPLITINFO = ($BCM_FIRST + 7) Global Const $BCM_SETTEXTMARGIN = ($BCM_FIRST + 4) Global Const $BM_CLICK = 245 Global Const $BM_GETCHECK = 240 Global Const $BM_GETIMAGE = 246 Global Const $BM_GETSTATE = 242 Global Const $BM_SETCHECK = 241 Global Const $BM_SETDONTCLICK = 248 Global Const $BM_SETIMAGE = 247 Global Const $BM_SETSTATE = 243 Global Const $BM_SETSTYLE = 244 Global Const $BCN_FIRST = -1250 Global Const $BCN_DROPDOWN = ($BCN_FIRST + 2) Global Const $BCN_HOTITEMCHANGE = ($BCN_FIRST + 1) Global Const $BN_CLICKED = 0 Global Const $BN_PAINT = 1 Global Const $BN_HILITE = 2 Global Const $BN_UNHILITE = 3 Global Const $BN_DISABLE = 4 Global Const $BN_DOUBLECLICKED = 5 Global Const $BN_SETFOCUS = 6 Global Const $BN_KILLFOCUS = 7 Global Const $BN_PUSHED = $BN_HILITE Global Const $BN_UNPUSHED = $BN_UNHILITE Global Const $BN_DBLCLK = $BN_DOUBLECLICKED Global Const $BST_CHECKED = 1 Global Const $BST_INDETERMINATE = 2 Global Const $BST_UNCHECKED = 0 Global Const $BST_FOCUS = 8 Global Const $BST_PUSHED = 4 Global Const $BST_DONTCLICK = 128 Global Const $CB_ERR = -1 Global Const $CB_ERRATTRIBUTE = -3 Global Const $CB_ERRREQUIRED = -4 Global Const $CB_ERRSPACE = -2 Global Const $CB_OKAY = 0 Global Const $STATE_SYSTEM_INVISIBLE = 32768 Global Const $STATE_SYSTEM_PRESSED = 8 Global Const $CBS_AUTOHSCROLL = 64 Global Const $CBS_DISABLENOSCROLL = 2048 Global Const $CBS_DROPDOWN = 2 Global Const $CBS_DROPDOWNLIST = 3 Global Const $CBS_HASSTRINGS = 512 Global Const $CBS_LOWERCASE = 16384 Global Const $CBS_NOINTEGRALHEIGHT = 1024 Global Const $CBS_OEMCONVERT = 128 Global Const $CBS_OWNERDRAWFIXED = 16 Global Const $CBS_OWNERDRAWVARIABLE = 32 Global Const $CBS_SIMPLE = 1 Global Const $CBS_SORT = 256 Global Const $CBS_UPPERCASE = 8192 Global Const $CBM_FIRST = 5888 Global Const $CB_ADDSTRING = 323 Global Const $CB_DELETESTRING = 324 Global Const $CB_DIR = 325 Global Const $CB_FINDSTRING = 332 Global Const $CB_FINDSTRINGEXACT = 344 Global Const $CB_GETCOMBOBOXINFO = 356 Global Const $CB_GETCOUNT = 326 Global Const $CB_GETCUEBANNER = ($CBM_FIRST + 4) Global Const $CB_GETCURSEL = 327 Global Const $CB_GETDROPPEDCONTROLRECT = 338 Global Const $CB_GETDROPPEDSTATE = 343 Global Const $CB_GETDROPPEDWIDTH = 351 Global Const $CB_GETEDITSEL = 320 Global Const $CB_GETEXTENDEDUI = 342 Global Const $CB_GETHORIZONTALEXTENT = 349 Global Const $CB_GETITEMDATA = 336 Global Const $CB_GETITEMHEIGHT = 340 Global Const $CB_GETLBTEXT = 328 Global Const $CB_GETLBTEXTLEN = 329 Global Const $CB_GETLOCALE = 346 Global Const $CB_GETMINVISIBLE = 5890 Global Const $CB_GETTOPINDEX = 347 Global Const $CB_INITSTORAGE = 353 Global Const $CB_LIMITTEXT = 321 Global Const $CB_RESETCONTENT = 331 Global Const $CB_INSERTSTRING = 330 Global Const $CB_SELECTSTRING = 333 Global Const $CB_SETCUEBANNER = ($CBM_FIRST + 3) Global Const $CB_SETCURSEL = 334 Global Const $CB_SETDROPPEDWIDTH = 352 Global Const $CB_SETEDITSEL = 322 Global Const $CB_SETEXTENDEDUI = 341 Global Const $CB_SETHORIZONTALEXTENT = 350 Global Const $CB_SETITEMDATA = 337 Global Const $CB_SETITEMHEIGHT = 339 Global Const $CB_SETLOCALE = 345 Global Const $CB_SETMINVISIBLE = 5889 Global Const $CB_SETTOPINDEX = 348 Global Const $CB_SHOWDROPDOWN = 335 Global Const $CBN_CLOSEUP = 8 Global Const $CBN_DBLCLK = 2 Global Const $CBN_DROPDOWN = 7 Global Const $CBN_EDITCHANGE = 5 Global Const $CBN_EDITUPDATE = 6 Global Const $CBN_ERRSPACE = (-1) Global Const $CBN_KILLFOCUS = 4 Global Const $CBN_SELCHANGE = 1 Global Const $CBN_SELENDCANCEL = 10 Global Const $CBN_SELENDOK = 9 Global Const $CBN_SETFOCUS = 3 Global Const $CBES_EX_CASESENSITIVE = 16 Global Const $CBES_EX_NOEDITIMAGE = 1 Global Const $CBES_EX_NOEDITIMAGEINDENT = 2 Global Const $CBES_EX_NOSIZELIMIT = 8 Global Const $CBES_EX_PATHWORDBREAKPROC = 4 Global Const $__COMBOBOXCONSTANT_WM_USER = 1024 Global Const $CBEM_DELETEITEM = $CB_DELETESTRING Global Const $CBEM_GETCOMBOCONTROL = ($__COMBOBOXCONSTANT_WM_USER + 6) Global Const $CBEM_GETEDITCONTROL = ($__COMBOBOXCONSTANT_WM_USER + 7) Global Const $CBEM_GETEXSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 9) Global Const $CBEM_GETEXTENDEDSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 9) Global Const $CBEM_GETIMAGELIST = ($__COMBOBOXCONSTANT_WM_USER + 3) Global Const $CBEM_GETITEMA = ($__COMBOBOXCONSTANT_WM_USER + 4) Global Const $CBEM_GETITEMW = ($__COMBOBOXCONSTANT_WM_USER + 13) Global Const $CBEM_GETUNICODEFORMAT = 8192 + 6 Global Const $CBEM_HASEDITCHANGED = ($__COMBOBOXCONSTANT_WM_USER + 10) Global Const $CBEM_INSERTITEMA = ($__COMBOBOXCONSTANT_WM_USER + 1) Global Const $CBEM_INSERTITEMW = ($__COMBOBOXCONSTANT_WM_USER + 11) Global Const $CBEM_SETEXSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 8) Global Const $CBEM_SETEXTENDEDSTYLE = ($__COMBOBOXCONSTANT_WM_USER + 14) Global Const $CBEM_SETIMAGELIST = ($__COMBOBOXCONSTANT_WM_USER + 2) Global Const $CBEM_SETITEMA = ($__COMBOBOXCONSTANT_WM_USER + 5) Global Const $CBEM_SETITEMW = ($__COMBOBOXCONSTANT_WM_USER + 12) Global Const $CBEM_SETUNICODEFORMAT = 8192 + 5 Global Const $CBEM_SETWINDOWTHEME = 8192 + 11 Global Const $CBEN_FIRST = (-800) Global Const $CBEN_LAST = (-830) Global Const $CBEN_BEGINEDIT = ($CBEN_FIRST - 4) Global Const $CBEN_DELETEITEM = ($CBEN_FIRST - 2) Global Const $CBEN_DRAGBEGINA = ($CBEN_FIRST - 8) Global Const $CBEN_DRAGBEGINW = ($CBEN_FIRST - 9) Global Const $CBEN_ENDEDITA = ($CBEN_FIRST - 5) Global Const $CBEN_ENDEDITW = ($CBEN_FIRST - 6) Global Const $CBEN_GETDISPINFO = ($CBEN_FIRST - 0) Global Const $CBEN_GETDISPINFOA = ($CBEN_FIRST - 0) Global Const $CBEN_GETDISPINFOW = ($CBEN_FIRST - 7) Global Const $CBEN_INSERTITEM = ($CBEN_FIRST - 1) Global Const $CBEIF_DI_SETITEM = 268435456 Global Const $CBEIF_IMAGE = 2 Global Const $CBEIF_INDENT = 16 Global Const $CBEIF_LPARAM = 32 Global Const $CBEIF_OVERLAY = 8 Global Const $CBEIF_SELECTEDIMAGE = 4 Global Const $CBEIF_TEXT = 1 Global Const $__COMBOBOXCONSTANT_WS_VSCROLL = 2097152 Global Const $GUI_SS_DEFAULT_COMBO = BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $__COMBOBOXCONSTANT_WS_VSCROLL) Global Const $GUI_EVENT_CLOSE = -3 Global Const $GUI_EVENT_MINIMIZE = -4 Global Const $GUI_EVENT_RESTORE = -5 Global Const $GUI_EVENT_MAXIMIZE = -6 Global Const $GUI_EVENT_PRIMARYDOWN = -7 Global Const $GUI_EVENT_PRIMARYUP = -8 Global Const $GUI_EVENT_SECONDARYDOWN = -9 Global Const $GUI_EVENT_SECONDARYUP = -10 Global Const $GUI_EVENT_MOUSEMOVE = -11 Global Const $GUI_EVENT_RESIZED = -12 Global Const $GUI_EVENT_DROPPED = -13 Global Const $GUI_RUNDEFMSG = "GUI_RUNDEFMSG" Global Const $GUI_AVISTOP = 0 Global Const $GUI_AVISTART = 1 Global Const $GUI_AVICLOSE = 2 Global Const $GUI_CHECKED = 1 Global Const $GUI_INDETERMINATE = 2 Global Const $GUI_UNCHECKED = 4 Global Const $GUI_DROPACCEPTED = 8 Global Const $GUI_NODROPACCEPTED = 4096 Global Const $GUI_ACCEPTFILES = $GUI_DROPACCEPTED Global Const $GUI_SHOW = 16 Global Const $GUI_HIDE = 32 Global Const $GUI_ENABLE = 64 Global Const $GUI_DISABLE = 128 Global Const $GUI_FOCUS = 256 Global Const $GUI_NOFOCUS = 8192 Global Const $GUI_DEFBUTTON = 512 Global Const $GUI_EXPAND = 1024 Global Const $GUI_ONTOP = 2048 Global Const $GUI_FONTITALIC = 2 Global Const $GUI_FONTUNDER = 4 Global Const $GUI_FONTSTRIKE = 8 Global Const $GUI_DOCKAUTO = 1 Global Const $GUI_DOCKLEFT = 2 Global Const $GUI_DOCKRIGHT = 4 Global Const $GUI_DOCKHCENTER = 8 Global Const $GUI_DOCKTOP = 32 Global Const $GUI_DOCKBOTTOM = 64 Global Const $GUI_DOCKVCENTER = 128 Global Const $GUI_DOCKWIDTH = 256 Global Const $GUI_DOCKHEIGHT = 512 Global Const $GUI_DOCKSIZE = 768 Global Const $GUI_DOCKMENUBAR = 544 Global Const $GUI_DOCKSTATEBAR = 576 Global Const $GUI_DOCKALL = 802 Global Const $GUI_DOCKBORDERS = 102 Global Const $GUI_GR_CLOSE = 1 Global Const $GUI_GR_LINE = 2 Global Const $GUI_GR_BEZIER = 4 Global Const $GUI_GR_MOVE = 6 Global Const $GUI_GR_COLOR = 8 Global Const $GUI_GR_RECT = 10 Global Const $GUI_GR_ELLIPSE = 12 Global Const $GUI_GR_PIE = 14 Global Const $GUI_GR_DOT = 16 Global Const $GUI_GR_PIXEL = 18 Global Const $GUI_GR_HINT = 20 Global Const $GUI_GR_REFRESH = 22 Global Const $GUI_GR_PENSIZE = 24 Global Const $GUI_GR_NOBKCOLOR = -2 Global Const $GUI_BKCOLOR_DEFAULT = -1 Global Const $GUI_BKCOLOR_TRANSPARENT = -2 Global Const $GUI_BKCOLOR_LV_ALTERNATE = -33554432 Global Const $GUI_WS_EX_PARENTDRAG = 1048576 Global Const $SBARS_SIZEGRIP = 256 Global Const $SBT_TOOLTIPS = 2048 Global Const $SBARS_TOOLTIPS = 2048 Global Const $SBT_SUNKEN = 0 Global Const $SBT_NOBORDERS = 256 Global Const $SBT_POPOUT = 512 Global Const $SBT_RTLREADING = 1024 Global Const $SBT_NOTABPARSING = 2048 Global Const $SBT_OWNERDRAW = 4096 Global Const $__STATUSBARCONSTANT_WM_USER = 1024 Global Const $SB_GETBORDERS = ($__STATUSBARCONSTANT_WM_USER + 7) Global Const $SB_GETICON = ($__STATUSBARCONSTANT_WM_USER + 20) Global Const $SB_GETPARTS = ($__STATUSBARCONSTANT_WM_USER + 6) Global Const $SB_GETRECT = ($__STATUSBARCONSTANT_WM_USER + 10) Global Const $SB_GETTEXTA = ($__STATUSBARCONSTANT_WM_USER + 2) Global Const $SB_GETTEXTW = ($__STATUSBARCONSTANT_WM_USER + 13) Global Const $SB_GETTEXT = $SB_GETTEXTA Global Const $SB_GETTEXTLENGTHA = ($__STATUSBARCONSTANT_WM_USER + 3) Global Const $SB_GETTEXTLENGTHW = ($__STATUSBARCONSTANT_WM_USER + 12) Global Const $SB_GETTEXTLENGTH = $SB_GETTEXTLENGTHA Global Const $SB_GETTIPTEXTA = ($__STATUSBARCONSTANT_WM_USER + 18) Global Const $SB_GETTIPTEXTW = ($__STATUSBARCONSTANT_WM_USER + 19) Global Const $SB_GETUNICODEFORMAT = 8192 + 6 Global Const $SB_ISSIMPLE = ($__STATUSBARCONSTANT_WM_USER + 14) Global Const $SB_SETBKCOLOR = 8192 + 1 Global Const $SB_SETICON = ($__STATUSBARCONSTANT_WM_USER + 15) Global Const $SB_SETMINHEIGHT = ($__STATUSBARCONSTANT_WM_USER + 8) Global Const $SB_SETPARTS = ($__STATUSBARCONSTANT_WM_USER + 4) Global Const $SB_SETTEXTA = ($__STATUSBARCONSTANT_WM_USER + 1) Global Const $SB_SETTEXTW = ($__STATUSBARCONSTANT_WM_USER + 11) Global Const $SB_SETTEXT = $SB_SETTEXTA Global Const $SB_SETTIPTEXTA = ($__STATUSBARCONSTANT_WM_USER + 16) Global Const $SB_SETTIPTEXTW = ($__STATUSBARCONSTANT_WM_USER + 17) Global Const $SB_SETUNICODEFORMAT = 8192 + 5 Global Const $SB_SIMPLE = ($__STATUSBARCONSTANT_WM_USER + 9) Global Const $SB_SIMPLEID = 255 Global Const $SBN_FIRST = -880 Global Const $SBN_SIMPLEMODECHANGE = $SBN_FIRST - 0 Global Const $GMEM_FIXED = 0 Global Const $GMEM_MOVEABLE = 2 Global Const $GMEM_NOCOMPACT = 16 Global Const $GMEM_NODISCARD = 32 Global Const $GMEM_ZEROINIT = 64 Global Const $GMEM_MODIFY = 128 Global Const $GMEM_DISCARDABLE = 256 Global Const $GMEM_NOT_BANKED = 4096 Global Const $GMEM_SHARE = 8192 Global Const $GMEM_DDESHARE = 8192 Global Const $GMEM_NOTIFY = 16384 Global Const $GMEM_LOWER = 4096 Global Const $GMEM_VALID_FLAGS = 32626 Global Const $GMEM_INVALID_HANDLE = 32768 Global Const $GPTR = $GMEM_FIXED + $GMEM_ZEROINIT Global Const $GHND = $GMEM_MOVEABLE + $GMEM_ZEROINIT Global Const $MEM_COMMIT = 4096 Global Const $MEM_RESERVE = 8192 Global Const $MEM_TOP_DOWN = 1048576 Global Const $MEM_SHARED = 134217728 Global Const $PAGE_NOACCESS = 1 Global Const $PAGE_READONLY = 2 Global Const $PAGE_READWRITE = 4 Global Const $PAGE_EXECUTE = 16 Global Const $PAGE_EXECUTE_READ = 32 Global Const $PAGE_EXECUTE_READWRITE = 64 Global Const $PAGE_GUARD = 256 Global Const $PAGE_NOCACHE = 512 Global Const $MEM_DECOMMIT = 16384 Global Const $MEM_RELEASE = 32768 Global Const $TAGPOINT = "long X;long Y" Global Const $TAGRECT = "long Left;long Top;long Right;long Bottom" Global Const $TAGSIZE = "long X;long Y" Global Const $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight" Global Const $TAGFILETIME = "dword Lo;dword Hi" Global Const $TAGSYSTEMTIME = "word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds" Global Const $TAGTIME_ZONE_INFORMATION = "long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias" Global Const $TAGNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;INT Code" Global Const $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param" Global Const $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;ptr szText" Global Const $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;ptr szText;int Why" Global Const $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param" Global Const $TAGDTPRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;" & "word MinSecond;word MinMSecond;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;" & "word MaxMinute;word MaxSecond;word MaxMSecond;bool MinValid;bool MaxValid" Global Const $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TAGSYSTEMTIME Global Const $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TAGSYSTEMTIME & ";ptr pDisplay;wchar Display[64]" Global Const $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;long SizeX;long SizeY" Global Const $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TAGSYSTEMTIME Global Const $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TAGSYSTEMTIME & ";dword Flags" Global Const $TAGEVENTLOGRECORD = "dword Length;dword Reserved;dword RecordNumber;dword TimeGenerated;dword TimeWritten;dword EventID;" & "word EventType;word NumStrings;word EventCategory;word ReservedFlags;dword ClosingRecordNumber;dword StringOffset;" & "dword UserSidLength;dword UserSidOffset;dword DataLength;dword DataOffset" Global Const $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved" Global Const $TAGGDIPENCODERPARAM = "byte GUID[16];dword Count;dword Type;ptr Values" Global Const $TAGGDIPENCODERPARAMS = "dword Count;byte Params[0]" Global Const $TAGGDIPRECTF = "float X;float Y;float Width;float Height" Global Const $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs" Global Const $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc" Global Const $TAGGDIPIMAGECODECINFO = "byte CLSID[16];byte FormatID[16];ptr CodecName;ptr DllName;ptr FormatDesc;ptr FileExt;" & "ptr MimeType;dword Flags;dword Version;dword SigCount;dword SigSize;ptr SigPattern;ptr SigMask" Global Const $TAGGDIPPENCODERPARAMS = "dword Count;byte Params[0]" Global Const $TAGHDITEM = "uint Mask;int XY;ptr Text;handle hBMP;int TextMax;int Fmt;lparam Param;int Image;int Order;uint Type;ptr pFilter;uint State" Global Const $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam" Global Const $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT Global Const $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem" Global Const $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1" Global Const $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value" Global Const $TAGLVFINDINFO = "uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction" Global Const $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem" Global Const $TAGLVITEM = "uint Mask;int Item;int SubItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;lparam Param;" & "int Indent;int GroupID;uint Columns;ptr pColumns" Global Const $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "long ActionX;long ActionY;lparam Param" Global Const $TAGNMLVCUSTOMDRAW = $TAGNMHDR & ";dword dwDrawStage;handle hdc;long Left;long Top;long Right;long Bottom;" & "dword_ptr dwItemSpec;uint uItemState;lparam lItemlParam" & ";dword clrText;dword clrTextBk;int iSubItem;dword dwItemType;dword clrFace;int iIconEffect;" & "int iIconPhase;int iPartId;int iStateId;long TextLeft;long TextTop;long TextRight;long TextBottom;uint uAlign" Global Const $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM Global Const $TAGNMLVFINDITEM = $TAGNMHDR & ";" & $TAGLVFINDINFO Global Const $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam" Global Const $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags" Global Const $TAGNMLVKEYDOWN = $TAGNMHDR & ";align 1;word VKey;uint Flags" Global Const $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY" Global Const $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TAGSYSTEMTIME Global Const $TAGMCMONTHRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short Span" Global Const $TAGMCRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short MinSet;short MaxSet" Global Const $TAGMCSELRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds" Global Const $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TAGSYSTEMTIME & ";int DayState;ptr pDayState" Global Const $TAGNMSELCHANGE = $TAGNMHDR & ";word BegYear;word BegMonth;word BegDOW;word BegDay;" & "word BegHour;word BegMinute;word BegSecond;word BegMSeconds;word EndYear;word EndMonth;word EndDOW;" & "word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds" Global Const $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result" Global Const $TAGNMTCKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags" Global Const $TAGTVITEM = "uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param" Global Const $TAGTVITEMEX = $TAGTVITEM & ";int Integral" Global Const $TAGNMTREEVIEW = $TAGNMHDR & ";uint Action;uint OldMask;handle OldhItem;uint OldState;uint OldStateMask;" & "ptr OldText;int OldTextMax;int OldImage;int OldSelectedImage;int OldChildren;lparam OldParam;uint NewMask;handle NewhItem;" & "uint NewState;uint NewStateMask;ptr NewText;int NewTextMax;int NewImage;int NewSelectedImage;int NewChildren;" & "lparam NewParam;long PointX;long PointY" Global Const $TAGNMTVCUSTOMDRAW = $TAGNMHDR & ";dword DrawStage;handle HDC;long Left;long Top;long Right;long Bottom;" & "dword_ptr ItemSpec;uint ItemState;lparam ItemParam;dword ClrText;dword ClrTextBk;int Level" Global Const $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM Global Const $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam" Global Const $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item" Global Const $TAGNMTVKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags" Global Const $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo" Global Const $TAGTOKEN_PRIVILEGES = "dword Count;int64 LUID;dword Attributes" Global Const $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT Global Const $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData" Global Const $TAGMENUITEMINFO = "uint Size;uint Mask;uint Type;uint State;uint ID;handle SubMenu;handle BmpChecked;handle BmpUnchecked;" & "ulong_ptr ItemData;ptr TypeData;uint CCH;handle BmpItem" Global Const $TAGREBARBANDINFO = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader" Global Const $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak" Global Const $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;" & "long ActualLeft;long ActualTop;long ActualRight;long ActualBottom" Global Const $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;laram lParam" Global Const $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM" Global Const $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;long CLeft;long CTop;long CRight;long CBottom;" & "long BLeft;long BTop;long BRight;long BBottom" Global Const $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow" Global Const $TAGNMTOOLBAR = $TAGNMHDR & ";int iItem;" & "int iBitmap;int idCommand;byte fsState;byte fsStyle;align;dword_ptr dwData;int_ptr iString" & ";int cchText;ptr pszText;" & $TAGRECT Global Const $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags" Global Const $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;align;dword_ptr Param;int_ptr String" Global Const $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax" Global Const $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider" Global Const $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;dword Offset;dword OffsetHigh;handle hEvent" Global Const $TAGOPENFILENAME = "dword StructSize;hwnd hwndOwner;handle hInstance;ptr lpstrFilter;ptr lpstrCustomFilter;" & "dword nMaxCustFilter;dword nFilterIndex;ptr lpstrFile;dword nMaxFile;ptr lpstrFileTitle;dword nMaxFileTitle;" & "ptr lpstrInitialDir;ptr lpstrTitle;dword Flags;word nFileOffset;word nFileExtension;ptr lpstrDefExt;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName;ptr pvReserved;dword dwReserved;dword FlagsEx" Global Const $TAGBITMAPINFO = "dword Size;long Width;long Height;word Planes;word BitCount;dword Compression;dword SizeImage;" & "long XPelsPerMeter;long YPelsPerMeter;dword ClrUsed;dword ClrImportant;dword RGBQuad" Global Const $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format" Global Const $TAGGUID = "dword Data1;word Data2;word Data3;byte Data4[8]" Global Const $TAGWINDOWPLACEMENT = "uint length; uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]" Global Const $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags" Global Const $TAGSCROLLINFO = "uint cbSize;uint fMask;int nMin;int nMax;uint nPage;int nPos;int nTrackPos" Global Const $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]" Global Const $TAGLOGFONT = "long Height;long Width;long Escapement;long Orientation;long Weight;byte Italic;byte Underline;" & "byte Strikeout;byte CharSet;byte OutPrecision;byte ClipPrecision;byte Quality;byte PitchAndFamily;wchar FaceName[32]" Global Const $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo" Global Const $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID" Global Const $TAGSTARTUPINFO = "dword Size;ptr Reserved1;ptr Desktop;ptr Title;dword X;dword Y;dword XSize;dword YSize;dword XCountChars;" & "dword YCountChars;dword FillAttribute;dword Flags;word ShowWindow;word Reserved2;ptr Reserved3;handle StdInput;" & "handle StdOutput;handle StdError" Global Const $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle" Global Const $TAGWIN32_FIND_DATA = "dword dwFileAttributes; dword ftCreationTime[2]; dword ftLastAccessTime[2]; dword ftLastWriteTime[2]; dword nFileSizeHigh; dword nFileSizeLow; dword dwReserved0; dword dwReserved1; wchar cFileName[260]; wchar cAlternateFileName[14]" Global Const $PROCESS_TERMINATE = 1 Global Const $PROCESS_CREATE_THREAD = 2 Global Const $PROCESS_SET_SESSIONID = 4 Global Const $PROCESS_VM_OPERATION = 8 Global Const $PROCESS_VM_READ = 16 Global Const $PROCESS_VM_WRITE = 32 Global Const $PROCESS_DUP_HANDLE = 64 Global Const $PROCESS_CREATE_PROCESS = 128 Global Const $PROCESS_SET_QUOTA = 256 Global Const $PROCESS_SET_INFORMATION = 512 Global Const $PROCESS_QUERY_INFORMATION = 1024 Global Const $PROCESS_SUSPEND_RESUME = 2048 Global Const $PROCESS_ALL_ACCESS = 2035711 Global Const $ERROR_NO_TOKEN = 1008 Global Const $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege" Global Const $SE_AUDIT_NAME = "SeAuditPrivilege" Global Const $SE_BACKUP_NAME = "SeBackupPrivilege" Global Const $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege" Global Const $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege" Global Const $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege" Global Const $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege" Global Const $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege" Global Const $SE_DEBUG_NAME = "SeDebugPrivilege" Global Const $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege" Global Const $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege" Global Const $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege" Global Const $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege" Global Const $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege" Global Const $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege" Global Const $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege" Global Const $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege" Global Const $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege" Global Const $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege" Global Const $SE_RESTORE_NAME = "SeRestorePrivilege" Global Const $SE_SECURITY_NAME = "SeSecurityPrivilege" Global Const $SE_SHUTDOWN_NAME = "SeShutdownPrivilege" Global Const $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege" Global Const $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege" Global Const $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege" Global Const $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege" Global Const $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege" Global Const $SE_TCB_NAME = "SeTcbPrivilege" Global Const $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege" Global Const $SE_UNDOCK_NAME = "SeUndockPrivilege" Global Const $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1 Global Const $SE_PRIVILEGE_ENABLED = 2 Global Const $SE_PRIVILEGE_REMOVED = 4 Global Const $SE_PRIVILEGE_USED_FOR_ACCESS = -2147483648 Global Const $TOKENUSER = 1 Global Const $TOKENGROUPS = 2 Global Const $TOKENPRIVILEGES = 3 Global Const $TOKENOWNER = 4 Global Const $TOKENPRIMARYGROUP = 5 Global Const $TOKENDEFAULTDACL = 6 Global Const $TOKENSOURCE = 7 Global Const $TOKENTYPE = 8 Global Const $TOKENIMPERSONATIONLEVEL = 9 Global Const $TOKENSTATISTICS = 10 Global Const $TOKENRESTRICTEDSIDS = 11 Global Const $TOKENSESSIONID = 12 Global Const $TOKENGROUPSANDPRIVILEGES = 13 Global Const $TOKENSESSIONREFERENCE = 14 Global Const $TOKENSANDBOXINERT = 15 Global Const $TOKENAUDITPOLICY = 16 Global Const $TOKENORIGIN = 17 Global Const $TOKENELEVATIONTYPE = 18 Global Const $TOKENLINKEDTOKEN = 19 Global Const $TOKENELEVATION = 20 Global Const $TOKENHASRESTRICTIONS = 21 Global Const $TOKENACCESSINFORMATION = 22 Global Const $TOKENVIRTUALIZATIONALLOWED = 23 Global Const $TOKENVIRTUALIZATIONENABLED = 24 Global Const $TOKENINTEGRITYLEVEL = 25 Global Const $TOKENUIACCESS = 26 Global Const $TOKENMANDATORYPOLICY = 27 Global Const $TOKENLOGONSID = 28 Global Const $TOKEN_ASSIGN_PRIMARY = 1 Global Const $TOKEN_DUPLICATE = 2 Global Const $TOKEN_IMPERSONATE = 4 Global Const $TOKEN_QUERY = 8 Global Const $TOKEN_QUERY_SOURCE = 16 Global Const $TOKEN_ADJUST_PRIVILEGES = 32 Global Const $TOKEN_ADJUST_GROUPS = 64 Global Const $TOKEN_ADJUST_DEFAULT = 128 Global Const $TOKEN_ADJUST_SESSIONID = 256 Func _WinAPI_GetLastError($CURERR = @error, $CUREXT = @extended) Local $ARESULT = DllCall("kernel32.dll", "dword", "GetLastError") Return SetError($CURERR, $CUREXT, $ARESULT[0]) EndFunc Func _WinAPI_SetLastError($IERRCODE, $CURERR = @error, $CUREXT = @extended) DllCall("kernel32.dll", "none", "SetLastError", "dword", $IERRCODE) Return SetError($CURERR, $CUREXT) EndFunc Func _Security__AdjustTokenPrivileges($HTOKEN, $FDISABLEALL, $PNEWSTATE, $IBUFFERLEN, $PPREVSTATE = 0, $PREQUIRED = 0) Local $ARESULT = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $HTOKEN, "bool", $FDISABLEALL, "ptr", $PNEWSTATE, "dword", $IBUFFERLEN, "ptr", $PPREVSTATE, "ptr", $PREQUIRED) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _Security__GetAccountSid($SACCOUNT, $SSYSTEM = "") Local $AACCT = _Security__LookupAccountName($SACCOUNT, $SSYSTEM) If @error Then Return SetError(@error, 0, 0) Return _Security__StringSidToSid($AACCT[0]) EndFunc Func _Security__GetLengthSid($PSID) If Not _Security__IsValidSid($PSID) Then Return SetError(-1, 0, 0) Local $ARESULT = DllCall("advapi32.dll", "dword", "GetLengthSid", "ptr", $PSID) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _Security__GetTokenInformation($HTOKEN, $ICLASS) Local $ARESULT = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "ptr", 0, "dword", 0, "dword*", 0) If @error Then Return SetError(@error, @extended, 0) If Not $ARESULT[0] Then Return 0 Local $TBUFFER = DllStructCreate("byte[" & $ARESULT[5] & "]") Local $PBUFFER = DllStructGetPtr($TBUFFER) $ARESULT = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "ptr", $PBUFFER, "dword", $ARESULT[5], "dword*", 0) If @error Then Return SetError(@error, @extended, 0) If Not $ARESULT[0] Then Return 0 Return $TBUFFER EndFunc Func _Security__ImpersonateSelf($ILEVEL = 2) Local $ARESULT = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $ILEVEL) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _Security__IsValidSid($PSID) Local $ARESULT = DllCall("advapi32.dll", "bool", "IsValidSid", "ptr", $PSID) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _Security__LookupAccountName($SACCOUNT, $SSYSTEM = "") Local $TDATA = DllStructCreate("byte SID[256]") Local $PSID = DllStructGetPtr($TDATA, "SID") Local $ARESULT = DllCall("advapi32.dll", "bool", "LookupAccountNameW", "wstr", $SSYSTEM, "wstr", $SACCOUNT, "ptr", $PSID, "dword*", 256, "wstr", "", "dword*", 256, "int*", 0) If @error Then Return SetError(@error, @extended, 0) If Not $ARESULT[0] Then Return 0 Local $AACCT[3] $AACCT[0] = _Security__SidToStringSid($PSID) $AACCT[1] = $ARESULT[5] $AACCT[2] = $ARESULT[7] Return $AACCT EndFunc Func _Security__LookupAccountSid($VSID) Local $PSID, $AACCT[3] If IsString($VSID) Then Local $TSID = _Security__StringSidToSid($VSID) $PSID = DllStructGetPtr($TSID) Else $PSID = $VSID EndIf If Not _Security__IsValidSid($PSID) Then Return SetError(-1, 0, 0) Local $ARESULT = DllCall("advapi32.dll", "bool", "LookupAccountSidW", "ptr", 0, "ptr", $PSID, "wstr", "", "dword*", 256, "wstr", "", "dword*", 256, "int*", 0) If @error Then Return SetError(@error, @extended, 0) If Not $ARESULT[0] Then Return 0 Local $AACCT[3] $AACCT[0] = $ARESULT[3] $AACCT[1] = $ARESULT[5] $AACCT[2] = $ARESULT[7] Return $AACCT EndFunc Func _Security__LookupPrivilegeValue($SSYSTEM, $SNAME) Local $ARESULT = DllCall("advapi32.dll", "int", "LookupPrivilegeValueW", "wstr", $SSYSTEM, "wstr", $SNAME, "int64*", 0) If @error Then Return SetError(@error, @extended, 0) Return SetError(0, $ARESULT[0], $ARESULT[3]) EndFunc Func _Security__OpenProcessToken($HPROCESS, $IACCESS) Local $ARESULT = DllCall("advapi32.dll", "int", "OpenProcessToken", "handle", $HPROCESS, "dword", $IACCESS, "ptr", 0) If @error Then Return SetError(@error, @extended, 0) Return SetError(0, $ARESULT[0], $ARESULT[3]) EndFunc Func _Security__OpenThreadToken($IACCESS, $HTHREAD = 0, $FOPENASSELF = False) If $HTHREAD = 0 Then $HTHREAD = DllCall("kernel32.dll", "handle", "GetCurrentThread") If @error Then Return SetError(@error, @extended, 0) Local $ARESULT = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $HTHREAD[0], "dword", $IACCESS, "int", $FOPENASSELF, "ptr*", 0) If @error Then Return SetError(@error, @extended, 0) Return SetError(0, $ARESULT[0], $ARESULT[4]) EndFunc Func _Security__OpenThreadTokenEx($IACCESS, $HTHREAD = 0, $FOPENASSELF = False) Local $HTOKEN = _Security__OpenThreadToken($IACCESS, $HTHREAD, $FOPENASSELF) If $HTOKEN = 0 Then If _WinAPI_GetLastError() <> $ERROR_NO_TOKEN Then Return SetError(-3, _WinAPI_GetLastError(), 0) If Not _Security__ImpersonateSelf() Then Return SetError(-1, _WinAPI_GetLastError(), 0) $HTOKEN = _Security__OpenThreadToken($IACCESS, $HTHREAD, $FOPENASSELF) If $HTOKEN = 0 Then Return SetError(-2, _WinAPI_GetLastError(), 0) EndIf Return $HTOKEN EndFunc Func _Security__SetPrivilege($HTOKEN, $SPRIVILEGE, $FENABLE) Local $ILUID = _Security__LookupPrivilegeValue("", $SPRIVILEGE) If $ILUID = 0 Then Return SetError(-1, 0, False) Local $TCURRSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES) Local $PCURRSTATE = DllStructGetPtr($TCURRSTATE) Local $ICURRSTATE = DllStructGetSize($TCURRSTATE) Local $TPREVSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES) Local $PPREVSTATE = DllStructGetPtr($TPREVSTATE) Local $IPREVSTATE = DllStructGetSize($TPREVSTATE) Local $TREQUIRED = DllStructCreate("int Data") Local $PREQUIRED = DllStructGetPtr($TREQUIRED) DllStructSetData($TCURRSTATE, "Count", 1) DllStructSetData($TCURRSTATE, "LUID", $ILUID) If Not _Security__AdjustTokenPrivileges($HTOKEN, False, $PCURRSTATE, $ICURRSTATE, $PPREVSTATE, $PREQUIRED) Then Return SetError(-2, @error, False) DllStructSetData($TPREVSTATE, "Count", 1) DllStructSetData($TPREVSTATE, "LUID", $ILUID) Local $IATTRIBUTES = DllStructGetData($TPREVSTATE, "Attributes") If $FENABLE Then $IATTRIBUTES = BitOR($IATTRIBUTES, $SE_PRIVILEGE_ENABLED) Else $IATTRIBUTES = BitAND($IATTRIBUTES, BitNOT($SE_PRIVILEGE_ENABLED)) EndIf DllStructSetData($TPREVSTATE, "Attributes", $IATTRIBUTES) If Not _Security__AdjustTokenPrivileges($HTOKEN, False, $PPREVSTATE, $IPREVSTATE, $PCURRSTATE, $PREQUIRED) Then Return SetError(-3, @error, False) Return True EndFunc Func _Security__SidToStringSid($PSID) If Not _Security__IsValidSid($PSID) Then Return SetError(-1, 0, "") Local $ARESULT = DllCall("advapi32.dll", "int", "ConvertSidToStringSidW", "ptr", $PSID, "ptr*", 0) If @error Then Return SetError(@error, @extended, "") If Not $ARESULT[0] Then Return "" Local $TBUFFER = DllStructCreate("wchar Text[256]", $ARESULT[2]) Local $SSID = DllStructGetData($TBUFFER, "Text") DllCall("Kernel32.dll", "ptr", "LocalFree", "ptr", $ARESULT[2]) Return $SSID EndFunc Func _Security__SidTypeStr($ITYPE) Switch $ITYPE Case 1 Return "User" Case 2 Return "Group" Case 3 Return "Domain" Case 4 Return "Alias" Case 5 Return "Well Known Group" Case 6 Return "Deleted Account" Case 7 Return "Invalid" Case 8 Return "Invalid" Case 9 Return "Computer" Case Else Return "Unknown SID Type" EndSwitch EndFunc Func _Security__StringSidToSid($SSID) Local $ARESULT = DllCall("advapi32.dll", "bool", "ConvertStringSidToSidW", "wstr", $SSID, "ptr*", 0) If @error Then Return SetError(@error, @extended, 0) If Not $ARESULT[0] Then Return 0 Local $ISIZE = _Security__GetLengthSid($ARESULT[2]) Local $TBUFFER = DllStructCreate("byte Data[" & $ISIZE & "]", $ARESULT[2]) Local $TSID = DllStructCreate("byte Data[" & $ISIZE & "]") DllStructSetData($TSID, "Data", DllStructGetData($TBUFFER, "Data")) DllCall("kernel32.dll", "ptr", "LocalFree", "ptr", $ARESULT[2]) Return $TSID EndFunc Global Const $TAGMEMMAP = "handle hProc;ulong_ptr Size;ptr Mem" Func _MEMFREE(ByRef $TMEMMAP) Local $PMEMORY = DllStructGetData($TMEMMAP, "Mem") Local $HPROCESS = DllStructGetData($TMEMMAP, "hProc") Local $BRESULT = _MemVirtualFreeEx($HPROCESS, $PMEMORY, 0, $MEM_RELEASE) DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HPROCESS) If @error Then Return SetError(@error, @extended, False) Return $BRESULT EndFunc Func _MemGlobalAlloc($IBYTES, $IFLAGS = 0) Local $ARESULT = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", $IFLAGS, "ulong_ptr", $IBYTES) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _MemGlobalFree($HMEM) Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $HMEM) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _MemGlobalLock($HMEM) Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $HMEM) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _MemGlobalSize($HMEM) Local $ARESULT = DllCall("kernel32.dll", "ulong_ptr", "GlobalSize", "handle", $HMEM) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _MemGlobalUnlock($HMEM) Local $ARESULT = DllCall("kernel32.dll", "bool", "GlobalUnlock", "handle", $HMEM) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _MEMINIT($HWND, $ISIZE, ByRef $TMEMMAP) Local $ARESULT = DllCall("User32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0) If @error Then Return SetError(@error, @extended, 0) Local $IPROCESSID = $ARESULT[2] If $IPROCESSID = 0 Then Return SetError(1, 0, 0) Local $IACCESS = BitOR($PROCESS_VM_OPERATION, $PROCESS_VM_READ, $PROCESS_VM_WRITE) Local $HPROCESS = __MEM_OPENPROCESS($IACCESS, False, $IPROCESSID, True) Local $IALLOC = BitOR($MEM_RESERVE, $MEM_COMMIT) Local $PMEMORY = _MemVirtualAllocEx($HPROCESS, 0, $ISIZE, $IALLOC, $PAGE_READWRITE) If $PMEMORY = 0 Then Return SetError(2, 0, 0) $TMEMMAP = DllStructCreate($TAGMEMMAP) DllStructSetData($TMEMMAP, "hProc", $HPROCESS) DllStructSetData($TMEMMAP, "Size", $ISIZE) DllStructSetData($TMEMMAP, "Mem", $PMEMORY) Return $PMEMORY EndFunc Func _MemMoveMemory($PSOURCE, $PDEST, $ILENGTH) DllCall("kernel32.dll", "none", "RtlMoveMemory", "ptr", $PDEST, "ptr", $PSOURCE, "ulong_ptr", $ILENGTH) If @error Then Return SetError(@error, @extended) EndFunc Func _MEMREAD(ByRef $TMEMMAP, $PSRCE, $PDEST, $ISIZE) Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PSRCE, "ptr", $PDEST, "ulong_ptr", $ISIZE, "ulong_ptr*", 0) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _MEMWRITE(ByRef $TMEMMAP, $PSRCE, $PDEST = 0, $ISIZE = 0, $SSRCE = "ptr") If $PDEST = 0 Then $PDEST = DllStructGetData($TMEMMAP, "Mem") If $ISIZE = 0 Then $ISIZE = DllStructGetData($TMEMMAP, "Size") Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PDEST, $SSRCE, $PSRCE, "ulong_ptr", $ISIZE, "ulong_ptr*", 0) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _MemVirtualAlloc($PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT) Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _MemVirtualAllocEx($HPROCESS, $PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT) Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAllocEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _MemVirtualFree($PADDRESS, $ISIZE, $IFREETYPE) Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _MemVirtualFreeEx($HPROCESS, $PADDRESS, $ISIZE, $IFREETYPE) Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFreeEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func __MEM_OPENPROCESS($IACCESS, $FINHERIT, $IPROCESSID, $FDEBUGPRIV = False) Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID) If @error Then Return SetError(@error, @extended, 0) If $ARESULT[0] Then Return $ARESULT[0] If Not $FDEBUGPRIV Then Return 0 Local $HTOKEN = _Security__OpenThreadTokenEx(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY)) If @error Then Return SetError(@error, @extended, 0) _Security__SetPrivilege($HTOKEN, "SeDebugPrivilege", True) Local $IERROR = @error Local $ILASTERROR = @extended Local $IRET = 0 If Not @error Then $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID) $IERROR = @error $ILASTERROR = @extended If $ARESULT[0] Then $IRET = $ARESULT[0] _Security__SetPrivilege($HTOKEN, "SeDebugPrivilege", False) If @error Then $IERROR = @error $ILASTERROR = @extended EndIf EndIf DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HTOKEN) Return SetError($IERROR, $ILASTERROR, $IRET) EndFunc Global Const $FC_NOOVERWRITE = 0 Global Const $FC_OVERWRITE = 1 Global Const $FT_MODIFIED = 0 Global Const $FT_CREATED = 1 Global Const $FT_ACCESSED = 2 Global Const $FO_READ = 0 Global Const $FO_APPEND = 1 Global Const $FO_OVERWRITE = 2 Global Const $FO_BINARY = 16 Global Const $FO_UNICODE = 32 Global Const $FO_UTF16_LE = 32 Global Const $FO_UTF16_BE = 64 Global Const $FO_UTF8 = 128 Global Const $FO_UTF8_NOBOM = 256 Global Const $EOF = -1 Global Const $FD_FILEMUSTEXIST = 1 Global Const $FD_PATHMUSTEXIST = 2 Global Const $FD_MULTISELECT = 4 Global Const $FD_PROMPTCREATENEW = 8 Global Const $FD_PROMPTOVERWRITE = 16 Global Const $CREATE_NEW = 1 Global Const $CREATE_ALWAYS = 2 Global Const $OPEN_EXISTING = 3 Global Const $OPEN_ALWAYS = 4 Global Const $TRUNCATE_EXISTING = 5 Global Const $INVALID_SET_FILE_POINTER = -1 Global Const $FILE_BEGIN = 0 Global Const $FILE_CURRENT = 1 Global Const $FILE_END = 2 Global Const $FILE_ATTRIBUTE_READONLY = 1 Global Const $FILE_ATTRIBUTE_HIDDEN = 2 Global Const $FILE_ATTRIBUTE_SYSTEM = 4 Global Const $FILE_ATTRIBUTE_DIRECTORY = 16 Global Const $FILE_ATTRIBUTE_ARCHIVE = 32 Global Const $FILE_ATTRIBUTE_DEVICE = 64 Global Const $FILE_ATTRIBUTE_NORMAL = 128 Global Const $FILE_ATTRIBUTE_TEMPORARY = 256 Global Const $FILE_ATTRIBUTE_SPARSE_FILE = 512 Global Const $FILE_ATTRIBUTE_REPARSE_POINT = 1024 Global Const $FILE_ATTRIBUTE_COMPRESSED = 2048 Global Const $FILE_ATTRIBUTE_OFFLINE = 4096 Global Const $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192 Global Const $FILE_ATTRIBUTE_ENCRYPTED = 16384 Global Const $FILE_SHARE_READ = 1 Global Const $FILE_SHARE_WRITE = 2 Global Const $FILE_SHARE_DELETE = 4 Global Const $GENERIC_ALL = 268435456 Global Const $GENERIC_EXECUTE = 536870912 Global Const $GENERIC_WRITE = 1073741824 Global Const $GENERIC_READ = -2147483648 Func _SendMessage($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult") Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageW", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM) If @error Then Return SetError(@error, @extended, "") If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN] Return $ARESULT EndFunc Func _SendMessageA($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult") Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageA", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM) If @error Then Return SetError(@error, @extended, "") If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN] Return $ARESULT EndFunc Global $__GAINPROCESS_WINAPI[64][2] = [[0, 0]] Global $__GAWINLIST_WINAPI[64][2] = [[0, 0]] Global Const $__WINAPICONSTANT_WM_SETFONT = 48 Global Const $__WINAPICONSTANT_FW_NORMAL = 400 Global Const $__WINAPICONSTANT_DEFAULT_CHARSET = 1 Global Const $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0 Global Const $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0 Global Const $__WINAPICONSTANT_DEFAULT_QUALITY = 0 Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM = 4096 Global Const $__WINAPICONSTANT_LOGPIXELSX = 88 Global Const $__WINAPICONSTANT_LOGPIXELSY = 90 Global Const $HGDI_ERROR = Ptr(-1) Global Const $INVALID_HANDLE_VALUE = Ptr(-1) Global Const $CLR_INVALID = -1 Global Const $__WINAPICONSTANT_FLASHW_CAPTION = 1 Global Const $__WINAPICONSTANT_FLASHW_TRAY = 2 Global Const $__WINAPICONSTANT_FLASHW_TIMER = 4 Global Const $__WINAPICONSTANT_FLASHW_TIMERNOFG = 12 Global Const $__WINAPICONSTANT_GW_HWNDNEXT = 2 Global Const $__WINAPICONSTANT_GW_CHILD = 5 Global Const $__WINAPICONSTANT_DI_MASK = 1 Global Const $__WINAPICONSTANT_DI_IMAGE = 2 Global Const $__WINAPICONSTANT_DI_NORMAL = 3 Global Const $__WINAPICONSTANT_DI_COMPAT = 4 Global Const $__WINAPICONSTANT_DI_DEFAULTSIZE = 8 Global Const $__WINAPICONSTANT_DI_NOMIRROR = 16 Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1 Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE = 4 Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER = 8 Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE = 16 Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE = 32 Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED = 134217728 Global Const $NULL_BRUSH = 5 Global Const $NULL_PEN = 8 Global Const $BLACK_BRUSH = 4 Global Const $DKGRAY_BRUSH = 3 Global Const $DC_BRUSH = 18 Global Const $GRAY_BRUSH = 2 Global Const $HOLLOW_BRUSH = $NULL_BRUSH Global Const $LTGRAY_BRUSH = 1 Global Const $WHITE_BRUSH = 0 Global Const $BLACK_PEN = 7 Global Const $DC_PEN = 19 Global Const $WHITE_PEN = 6 Global Const $ANSI_FIXED_FONT = 11 Global Const $ANSI_VAR_FONT = 12 Global Const $DEVICE_DEFAULT_FONT = 14 Global Const $DEFAULT_GUI_FONT = 17 Global Const $OEM_FIXED_FONT = 10 Global Const $SYSTEM_FONT = 13 Global Const $SYSTEM_FIXED_FONT = 16 Global Const $DEFAULT_PALETTE = 15 Global Const $MB_PRECOMPOSED = 1 Global Const $MB_COMPOSITE = 2 Global Const $MB_USEGLYPHCHARS = 4 Global Const $ULW_ALPHA = 2 Global Const $ULW_COLORKEY = 1 Global Const $ULW_OPAQUE = 4 Global Const $WH_CALLWNDPROC = 4 Global Const $WH_CALLWNDPROCRET = 12 Global Const $WH_CBT = 5 Global Const $WH_DEBUG = 9 Global Const $WH_FOREGROUNDIDLE = 11 Global Const $WH_GETMESSAGE = 3 Global Const $WH_JOURNALPLAYBACK = 1 Global Const $WH_JOURNALRECORD = 0 Global Const $WH_KEYBOARD = 2 Global Const $WH_KEYBOARD_LL = 13 Global Const $WH_MOUSE = 7 Global Const $WH_MOUSE_LL = 14 Global Const $WH_MSGFILTER = -1 Global Const $WH_SHELL = 10 Global Const $WH_SYSMSGFILTER = 6 Global Const $WPF_ASYNCWINDOWPLACEMENT = 4 Global Const $WPF_RESTORETOMAXIMIZED = 2 Global Const $WPF_SETMINPOSITION = 1 Global Const $KF_EXTENDED = 256 Global Const $KF_ALTDOWN = 8192 Global Const $KF_UP = 32768 Global Const $LLKHF_EXTENDED = BitShift($KF_EXTENDED, 8) Global Const $LLKHF_INJECTED = 16 Global Const $LLKHF_ALTDOWN = BitShift($KF_ALTDOWN, 8) Global Const $LLKHF_UP = BitShift($KF_UP, 8) Global Const $OFN_ALLOWMULTISELECT = 512 Global Const $OFN_CREATEPROMPT = 8192 Global Const $OFN_DONTADDTORECENT = 33554432 Global Const $OFN_ENABLEHOOK = 32 Global Const $OFN_ENABLEINCLUDENOTIFY = 4194304 Global Const $OFN_ENABLESIZING = 8388608 Global Const $OFN_ENABLETEMPLATE = 64 Global Const $OFN_ENABLETEMPLATEHANDLE = 128 Global Const $OFN_EXPLORER = 524288 Global Const $OFN_EXTENSIONDIFFERENT = 1024 Global Const $OFN_FILEMUSTEXIST = 4096 Global Const $OFN_FORCESHOWHIDDEN = 268435456 Global Const $OFN_HIDEREADONLY = 4 Global Const $OFN_LONGNAMES = 2097152 Global Const $OFN_NOCHANGEDIR = 8 Global Const $OFN_NODEREFERENCELINKS = 1048576 Global Const $OFN_NOLONGNAMES = 262144 Global Const $OFN_NONETWORKBUTTON = 131072 Global Const $OFN_NOREADONLYRETURN = 32768 Global Const $OFN_NOTESTFILECREATE = 65536 Global Const $OFN_NOVALIDATE = 256 Global Const $OFN_OVERWRITEPROMPT = 2 Global Const $OFN_PATHMUSTEXIST = 2048 Global Const $OFN_READONLY = 1 Global Const $OFN_SHAREAWARE = 16384 Global Const $OFN_SHOWHELP = 16 Global Const $OFN_EX_NOPLACESBAR = 1 Global Const $TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & $TAGPOINT Global Const $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]" Global Const $TAGFLASHWINFO = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut" Global Const $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor" Global Const $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual" Func _WinAPI_AttachConsole($IPROCESSID = -1) Local $ARESULT = DllCall("kernel32.dll", "bool", "AttachConsole", "dword", $IPROCESSID) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_AttachThreadInput($IATTACH, $IATTACHTO, $FATTACH) Local $ARESULT = DllCall("user32.dll", "bool", "AttachThreadInput", "dword", $IATTACH, "dword", $IATTACHTO, "bool", $FATTACH) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_Beep($IFREQ = 500, $IDURATION = 1000) Local $ARESULT = DllCall("kernel32.dll", "bool", "Beep", "dword", $IFREQ, "dword", $IDURATION) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_BitBlt($HDESTDC, $IXDEST, $IYDEST, $IWIDTH, $IHEIGHT, $HSRCDC, $IXSRC, $IYSRC, $IROP) Local $ARESULT = DllCall("gdi32.dll", "bool", "BitBlt", "handle", $HDESTDC, "int", $IXDEST, "int", $IYDEST, "int", $IWIDTH, "int", $IHEIGHT, "handle", $HSRCDC, "int", $IXSRC, "int", $IYSRC, "dword", $IROP) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_CallNextHookEx($HHK, $ICODE, $WPARAM, $LPARAM) Local $ARESULT = DllCall("user32.dll", "lresult", "CallNextHookEx", "handle", $HHK, "int", $ICODE, "wparam", $WPARAM, "lparam", $LPARAM) If @error Then Return SetError(@error, @extended, -1) Return $ARESULT[0] EndFunc Func _WinAPI_CallWindowProc($LPPREVWNDFUNC, $HWND, $MSG, $WPARAM, $LPARAM) Local $ARESULT = DllCall("user32.dll", "lresult", "CallWindowProc", "ptr", $LPPREVWNDFUNC, "hwnd", $HWND, "uint", $MSG, "wparam", $WPARAM, "lparam", $LPARAM) If @error Then Return SetError(@error, @extended, -1) Return $ARESULT[0] EndFunc Func _WinAPI_ClientToScreen($HWND, ByRef $TPOINT) Local $PPOINT = DllStructGetPtr($TPOINT) DllCall("user32.dll", "bool", "ClientToScreen", "hwnd", $HWND, "ptr", $PPOINT) Return SetError(@error, @extended, $TPOINT) EndFunc Func _WinAPI_CloseHandle($HOBJECT) Local $ARESULT = DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HOBJECT) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WINAPI_COMBINERGN($HRGNDEST, $HRGNSRC1, $HRGNSRC2, $ICOMBINEMODE) Local $ARESULT = DllCall("gdi32.dll", "int", "CombineRgn", "handle", $HRGNDEST, "handle", $HRGNSRC1, "handle", $HRGNSRC2, "int", $ICOMBINEMODE) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CommDlgExtendedError() Local Const $CDERR_DIALOGFAILURE = 65535 Local Const $CDERR_FINDRESFAILURE = 6 Local Const $CDERR_INITIALIZATION = 2 Local Const $CDERR_LOADRESFAILURE = 7 Local Const $CDERR_LOADSTRFAILURE = 5 Local Const $CDERR_LOCKRESFAILURE = 8 Local Const $CDERR_MEMALLOCFAILURE = 9 Local Const $CDERR_MEMLOCKFAILURE = 10 Local Const $CDERR_NOHINSTANCE = 4 Local Const $CDERR_NOHOOK = 11 Local Const $CDERR_NOTEMPLATE = 3 Local Const $CDERR_REGISTERMSGFAIL = 12 Local Const $CDERR_STRUCTSIZE = 1 Local Const $FNERR_BUFFERTOOSMALL = 12291 Local Const $FNERR_INVALIDFILENAME = 12290 Local Const $FNERR_SUBCLASSFAILURE = 12289 Local $ARESULT = DllCall("comdlg32.dll", "dword", "CommDlgExtendedError") If @error Then Return SetError(@error, @extended, 0) Switch $ARESULT[0] Case $CDERR_DIALOGFAILURE Return SetError($ARESULT[0], 0, "The dialog box could not be created." & @LF & "The common dialog box function's call to the DialogBox function failed." & @LF & "For example, this error occurs if the common dialog box call specifies an invalid window handle.") Case $CDERR_FINDRESFAILURE Return SetError($ARESULT[0], 0, "The common dialog box function failed to find a specified resource.") Case $CDERR_INITIALIZATION Return SetError($ARESULT[0], 0, "The common dialog box function failed during initialization." & @LF & "This error often occurs when sufficient memory is not available.") Case $CDERR_LOADRESFAILURE Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified resource.") Case $CDERR_LOADSTRFAILURE Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified string.") Case $CDERR_LOCKRESFAILURE Return SetError($ARESULT[0], 0, "The common dialog box function failed to lock a specified resource.") Case $CDERR_MEMALLOCFAILURE Return SetError($ARESULT[0], 0, "The common dialog box function was unable to allocate memory for internal structures.") Case $CDERR_MEMLOCKFAILURE Return SetError($ARESULT[0], 0, "The common dialog box function was unable to lock the memory associated with a handle.") Case $CDERR_NOHINSTANCE Return SetError($ARESULT[0], 0, "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding instance handle.") Case $CDERR_NOHOOK Return SetError($ARESULT[0], 0, "The ENABLEHOOK flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a pointer to a corresponding hook procedure.") Case $CDERR_NOTEMPLATE Return SetError($ARESULT[0], 0, "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding template.") Case $CDERR_REGISTERMSGFAIL Return SetError($ARESULT[0], 0, "The RegisterWindowMessage function returned an error code when it was called by the common dialog box function.") Case $CDERR_STRUCTSIZE Return SetError($ARESULT[0], 0, "The lStructSize member of the initialization structure for the corresponding common dialog box is invalid") Case $FNERR_BUFFERTOOSMALL Return SetError($ARESULT[0], 0, "The buffer pointed to by the lpstrFile member of the OPENFILENAME structure is too small for the file name specified by the user." & @LF & "The first two bytes of the lpstrFile buffer contain an integer value specifying the size, in TCHARs, required to receive the full name.") Case $FNERR_INVALIDFILENAME Return SetError($ARESULT[0], 0, "A file name is invalid.") Case $FNERR_SUBCLASSFAILURE Return SetError($ARESULT[0], 0, "An attempt to subclass a list box failed because sufficient memory was not available.") EndSwitch Return Hex($ARESULT[0]) EndFunc Func _WinAPI_CopyIcon($HICON) Local $ARESULT = DllCall("user32.dll", "handle", "CopyIcon", "handle", $HICON) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateBitmap($IWIDTH, $IHEIGHT, $IPLANES = 1, $IBITSPERPEL = 1, $PBITS = 0) Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateBitmap", "int", $IWIDTH, "int", $IHEIGHT, "uint", $IPLANES, "uint", $IBITSPERPEL, "ptr", $PBITS) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateCompatibleBitmap($HDC, $IWIDTH, $IHEIGHT) Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleBitmap", "handle", $HDC, "int", $IWIDTH, "int", $IHEIGHT) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateCompatibleDC($HDC) Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $HDC) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateEvent($PATTRIBUTES = 0, $FMANUALRESET = True, $FINITIALSTATE = True, $SNAME = "") Local $SNAMETYPE = "wstr" If $SNAME = "" Then $SNAME = 0 $SNAMETYPE = "ptr" EndIf Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateEventW", "ptr", $PATTRIBUTES, "bool", $FMANUALRESET, "bool", $FINITIALSTATE, $SNAMETYPE, $SNAME) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateFile($SFILENAME, $ICREATION, $IACCESS = 4, $ISHARE = 0, $IATTRIBUTES = 0, $PSECURITY = 0) Local $IDA = 0, $ISM = 0, $ICD = 0, $IFA = 0 If BitAND($IACCESS, 1) <> 0 Then $IDA = BitOR($IDA, $GENERIC_EXECUTE) If BitAND($IACCESS, 2) <> 0 Then $IDA = BitOR($IDA, $GENERIC_READ) If BitAND($IACCESS, 4) <> 0 Then $IDA = BitOR($IDA, $GENERIC_WRITE) If BitAND($ISHARE, 1) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_DELETE) If BitAND($ISHARE, 2) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_READ) If BitAND($ISHARE, 4) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_WRITE) Switch $ICREATION Case 0 $ICD = $CREATE_NEW Case 1 $ICD = $CREATE_ALWAYS Case 2 $ICD = $OPEN_EXISTING Case 3 $ICD = $OPEN_ALWAYS Case 4 $ICD = $TRUNCATE_EXISTING EndSwitch If BitAND($IATTRIBUTES, 1) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_ARCHIVE) If BitAND($IATTRIBUTES, 2) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_HIDDEN) If BitAND($IATTRIBUTES, 4) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_READONLY) If BitAND($IATTRIBUTES, 8) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_SYSTEM) Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateFileW", "wstr", $SFILENAME, "dword", $IDA, "dword", $ISM, "ptr", $PSECURITY, "dword", $ICD, "dword", $IFA, "ptr", 0) If @error Or $ARESULT[0] = Ptr(-1) Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateFont($NHEIGHT, $NWIDTH, $NESCAPE = 0, $NORIENTN = 0, $FNWEIGHT = $__WINAPICONSTANT_FW_NORMAL, $BITALIC = False, $BUNDERLINE = False, $BSTRIKEOUT = False, $NCHARSET = $__WINAPICONSTANT_DEFAULT_CHARSET, $NOUTPUTPREC = $__WINAPICONSTANT_OUT_DEFAULT_PRECIS, $NCLIPPREC = $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS, $NQUALITY = $__WINAPICONSTANT_DEFAULT_QUALITY, $NPITCH = 0, $SZFACE = "Arial") Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateFontW", "int", $NHEIGHT, "int", $NWIDTH, "int", $NESCAPE, "int", $NORIENTN, "int", $FNWEIGHT, "dword", $BITALIC, "dword", $BUNDERLINE, "dword", $BSTRIKEOUT, "dword", $NCHARSET, "dword", $NOUTPUTPREC, "dword", $NCLIPPREC, "dword", $NQUALITY, "dword", $NPITCH, "wstr", $SZFACE) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateFontIndirect($TLOGFONT) Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateFontIndirectW", "ptr", DllStructGetPtr($TLOGFONT)) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WINAPI_CREATEPEN($IPENSTYLE, $IWIDTH, $NCOLOR) Local $ARESULT = DllCall("gdi32.dll", "handle", "CreatePen", "int", $IPENSTYLE, "int", $IWIDTH, "dword", $NCOLOR) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateProcess($SAPPNAME, $SCOMMAND, $PSECURITY, $PTHREAD, $FINHERIT, $IFLAGS, $PENVIRON, $SDIR, $PSTARTUPINFO, $PPROCESS) Local $PCOMMAND = 0 Local $SAPPNAMETYPE = "wstr", $SDIRTYPE = "wstr" If $SAPPNAME = "" Then $SAPPNAMETYPE = "ptr" $SAPPNAME = 0 EndIf If $SCOMMAND <> "" Then Local $TCOMMAND = DllStructCreate("wchar Text[" & 260 + 1 & "]") $PCOMMAND = DllStructGetPtr($TCOMMAND) DllStructSetData($TCOMMAND, "Text", $SCOMMAND) EndIf If $SDIR = "" Then $SDIRTYPE = "ptr" $SDIR = 0 EndIf Local $ARESULT = DllCall("kernel32.dll", "bool", "CreateProcessW", $SAPPNAMETYPE, $SAPPNAME, "ptr", $PCOMMAND, "ptr", $PSECURITY, "ptr", $PTHREAD, "bool", $FINHERIT, "dword", $IFLAGS, "ptr", $PENVIRON, $SDIRTYPE, $SDIR, "ptr", $PSTARTUPINFO, "ptr", $PPROCESS) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WINAPI_CREATERECTRGN($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT) Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WINAPI_CREATEROUNDRECTRGN($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT, $IWIDTHELLIPSE, $IHEIGHTELLIPSE) Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRoundRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT, "int", $IWIDTHELLIPSE, "int", $IHEIGHTELLIPSE) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateSolidBitmap($HWND, $ICOLOR, $IWIDTH, $IHEIGHT, $BRGB = 1) Local $HDC = _WinAPI_GetDC($HWND) Local $HDESTDC = _WinAPI_CreateCompatibleDC($HDC) Local $HBITMAP = _WinAPI_CreateCompatibleBitmap($HDC, $IWIDTH, $IHEIGHT) Local $HOLD = _WinAPI_SelectObject($HDESTDC, $HBITMAP) Local $TRECT = DllStructCreate($TAGRECT) DllStructSetData($TRECT, 1, 0) DllStructSetData($TRECT, 2, 0) DllStructSetData($TRECT, 3, $IWIDTH) DllStructSetData($TRECT, 4, $IHEIGHT) If $BRGB Then $ICOLOR = BitOR(BitAND($ICOLOR, 65280), BitShift(BitAND($ICOLOR, 255), -16), BitShift(BitAND($ICOLOR, 16711680), 16)) EndIf Local $HBRUSH = _WinAPI_CreateSolidBrush($ICOLOR) _WinAPI_FillRect($HDESTDC, DllStructGetPtr($TRECT), $HBRUSH) If @error Then _WinAPI_DeleteObject($HBITMAP) $HBITMAP = 0 EndIf _WinAPI_DeleteObject($HBRUSH) _WinAPI_ReleaseDC($HWND, $HDC) _WinAPI_SelectObject($HDESTDC, $HOLD) _WinAPI_DeleteDC($HDESTDC) If Not $HBITMAP Then Return SetError(1, 0, 0) Return $HBITMAP EndFunc Func _WinAPI_CreateSolidBrush($NCOLOR) Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateSolidBrush", "dword", $NCOLOR) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_CreateWindowEx($IEXSTYLE, $SCLASS, $SNAME, $ISTYLE, $IX, $IY, $IWIDTH, $IHEIGHT, $HPARENT, $HMENU = 0, $HINSTANCE = 0, $PPARAM = 0) If $HINSTANCE = 0 Then $HINSTANCE = _WinAPI_GetModuleHandle("") Local $ARESULT = DllCall("user32.dll", "hwnd", "CreateWindowExW", "dword", $IEXSTYLE, "wstr", $SCLASS, "wstr", $SNAME, "dword", $ISTYLE, "int", $IX, "int", $IY, "int", $IWIDTH, "int", $IHEIGHT, "hwnd", $HPARENT, "handle", $HMENU, "handle", $HINSTANCE, "ptr", $PPARAM) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_DefWindowProc($HWND, $IMSG, $IWPARAM, $ILPARAM) Local $ARESULT = DllCall("user32.dll", "lresult", "DefWindowProc", "hwnd", $HWND, "uint", $IMSG, "wparam", $IWPARAM, "lparam", $ILPARAM) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_DeleteDC($HDC) Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $HDC) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_DeleteObject($HOBJECT) Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $HOBJECT) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_DestroyIcon($HICON) Local $ARESULT = DllCall("user32.dll", "bool", "DestroyIcon", "handle", $HICON) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_DestroyWindow($HWND) Local $ARESULT = DllCall("user32.dll", "bool", "DestroyWindow", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_DrawEdge($HDC, $PTRRECT, $NEDGETYPE, $GRFFLAGS) Local $ARESULT = DllCall("user32.dll", "bool", "DrawEdge", "handle", $HDC, "ptr", $PTRRECT, "uint", $NEDGETYPE, "uint", $GRFFLAGS) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_DrawFrameControl($HDC, $PTRRECT, $NTYPE, $NSTATE) Local $ARESULT = DllCall("user32.dll", "bool", "DrawFrameControl", "handle", $HDC, "ptr", $PTRRECT, "uint", $NTYPE, "uint", $NSTATE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_DrawIcon($HDC, $IX, $IY, $HICON) Local $ARESULT = DllCall("user32.dll", "bool", "DrawIcon", "handle", $HDC, "int", $IX, "int", $IY, "handle", $HICON) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_DrawIconEx($HDC, $IX, $IY, $HICON, $IWIDTH = 0, $IHEIGHT = 0, $ISTEP = 0, $HBRUSH = 0, $IFLAGS = 3) Local $IOPTIONS Switch $IFLAGS Case 1 $IOPTIONS = $__WINAPICONSTANT_DI_MASK Case 2 $IOPTIONS = $__WINAPICONSTANT_DI_IMAGE Case 3 $IOPTIONS = $__WINAPICONSTANT_DI_NORMAL Case 4 $IOPTIONS = $__WINAPICONSTANT_DI_COMPAT Case 5 $IOPTIONS = $__WINAPICONSTANT_DI_DEFAULTSIZE Case Else $IOPTIONS = $__WINAPICONSTANT_DI_NOMIRROR EndSwitch Local $ARESULT = DllCall("user32.dll", "bool", "DrawIconEx", "handle", $HDC, "int", $IX, "int", $IY, "handle", $HICON, "int", $IWIDTH, "int", $IHEIGHT, "uint", $ISTEP, "handle", $HBRUSH, "uint", $IOPTIONS) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WINAPI_DRAWLINE($HDC, $IX1, $IY1, $IX2, $IY2) _WINAPI_MOVETO($HDC, $IX1, $IY1) If @error Then Return SetError(@error, @extended, False) _WINAPI_LINETO($HDC, $IX2, $IY2) If @error Then Return SetError(@error, @extended, False) Return True EndFunc Func _WinAPI_DrawText($HDC, $STEXT, ByRef $TRECT, $IFLAGS) Local $ARESULT = DllCall("user32.dll", "int", "DrawTextW", "handle", $HDC, "wstr", $STEXT, "int", -1, "ptr", DllStructGetPtr($TRECT), "uint", $IFLAGS) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_EnableWindow($HWND, $FENABLE = True) Local $ARESULT = DllCall("user32.dll", "bool", "EnableWindow", "hwnd", $HWND, "bool", $FENABLE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_EnumDisplayDevices($SDEVICE, $IDEVNUM) Local $PNAME = 0, $IFLAGS = 0, $ADEVICE[5] If $SDEVICE <> "" Then Local $TNAME = DllStructCreate("wchar Text[" & StringLen($SDEVICE) + 1 & "]") $PNAME = DllStructGetPtr($TNAME) DllStructSetData($TNAME, "Text", $SDEVICE) EndIf Local $TDEVICE = DllStructCreate($TAGDISPLAY_DEVICE) Local $PDEVICE = DllStructGetPtr($TDEVICE) Local $IDEVICE = DllStructGetSize($TDEVICE) DllStructSetData($TDEVICE, "Size", $IDEVICE) DllCall("user32.dll", "bool", "EnumDisplayDevicesW", "ptr", $PNAME, "dword", $IDEVNUM, "ptr", $PDEVICE, "dword", 1) If @error Then Return SetError(@error, @extended, 0) Local $IN = DllStructGetData($TDEVICE, "Flags") If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) <> 0 Then $IFLAGS = BitOR($IFLAGS, 1) If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 2) If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER) <> 0 Then $IFLAGS = BitOR($IFLAGS, 4) If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 8) If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 16) If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED) <> 0 Then $IFLAGS = BitOR($IFLAGS, 32) $ADEVICE[0] = True $ADEVICE[1] = DllStructGetData($TDEVICE, "Name") $ADEVICE[2] = DllStructGetData($TDEVICE, "String") $ADEVICE[3] = $IFLAGS $ADEVICE[4] = DllStructGetData($TDEVICE, "ID") Return $ADEVICE EndFunc Func _WinAPI_EnumWindows($FVISIBLE = True, $HWND = Default) __WINAPI_ENUMWINDOWSINIT() If $HWND = Default Then $HWND = _WinAPI_GetDesktopWindow() __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE) Return $__GAWINLIST_WINAPI EndFunc Func __WINAPI_ENUMWINDOWSADD($HWND, $SCLASS = "") If $SCLASS = "" Then $SCLASS = _WinAPI_GetClassName($HWND) $__GAWINLIST_WINAPI[0][0] += 1 Local $ICOUNT = $__GAWINLIST_WINAPI[0][0] If $ICOUNT >= $__GAWINLIST_WINAPI[0][1] Then ReDim $__GAWINLIST_WINAPI[$ICOUNT + 64][2] $__GAWINLIST_WINAPI[0][1] += 64 EndIf $__GAWINLIST_WINAPI[$ICOUNT][0] = $HWND $__GAWINLIST_WINAPI[$ICOUNT][1] = $SCLASS EndFunc Func __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE = True) $HWND = _WinAPI_GetWindow($HWND, $__WINAPICONSTANT_GW_CHILD) While $HWND <> 0 If (Not $FVISIBLE) Or _WinAPI_IsWindowVisible($HWND) Then __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE) __WINAPI_ENUMWINDOWSADD($HWND) EndIf $HWND = _WinAPI_GetWindow($HWND, $__WINAPICONSTANT_GW_HWNDNEXT) WEnd EndFunc Func __WINAPI_ENUMWINDOWSINIT() ReDim $__GAWINLIST_WINAPI[64][2] $__GAWINLIST_WINAPI[0][0] = 0 $__GAWINLIST_WINAPI[0][1] = 64 EndFunc Func _WinAPI_EnumWindowsPopup() __WINAPI_ENUMWINDOWSINIT() Local $HWND = _WinAPI_GetWindow(_WinAPI_GetDesktopWindow(), $__WINAPICONSTANT_GW_CHILD) Local $SCLASS While $HWND <> 0 If _WinAPI_IsWindowVisible($HWND) Then $SCLASS = _WinAPI_GetClassName($HWND) If $SCLASS = "#32768" Then __WINAPI_ENUMWINDOWSADD($HWND) ElseIf $SCLASS = "ToolbarWindow32" Then __WINAPI_ENUMWINDOWSADD($HWND) ElseIf $SCLASS = "ToolTips_Class32" Then __WINAPI_ENUMWINDOWSADD($HWND) ElseIf $SCLASS = "BaseBar" Then __WINAPI_ENUMWINDOWSCHILD($HWND) EndIf EndIf $HWND = _WinAPI_GetWindow($HWND, $__WINAPICONSTANT_GW_HWNDNEXT) WEnd Return $__GAWINLIST_WINAPI EndFunc Func _WinAPI_EnumWindowsTop() __WINAPI_ENUMWINDOWSINIT() Local $HWND = _WinAPI_GetWindow(_WinAPI_GetDesktopWindow(), $__WINAPICONSTANT_GW_CHILD) While $HWND <> 0 If _WinAPI_IsWindowVisible($HWND) Then __WINAPI_ENUMWINDOWSADD($HWND) $HWND = _WinAPI_GetWindow($HWND, $__WINAPICONSTANT_GW_HWNDNEXT) WEnd Return $__GAWINLIST_WINAPI EndFunc Func _WinAPI_ExpandEnvironmentStrings($SSTRING) Local $ARESULT = DllCall("kernel32.dll", "dword", "ExpandEnvironmentStringsW", "wstr", $SSTRING, "wstr", "", "dword", 4096) If @error Then Return SetError(@error, @extended, "") Return $ARESULT[2] EndFunc Func _WinAPI_ExtractIconEx($SFILE, $IINDEX, $PLARGE, $PSMALL, $IICONS) Local $ARESULT = DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $SFILE, "int", $IINDEX, "handle", $PLARGE, "handle", $PSMALL, "uint", $IICONS) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_FatalAppExit($SMESSAGE) DllCall("kernel32.dll", "none", "FatalAppExitW", "uint", 0, "wstr", $SMESSAGE) If @error Then Return SetError(@error, @extended) EndFunc Func _WinAPI_FillRect($HDC, $PTRRECT, $HBRUSH) Local $ARESULT If IsPtr($HBRUSH) Then $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "ptr", $PTRRECT, "handle", $HBRUSH) Else $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "ptr", $PTRRECT, "dword", $HBRUSH) EndIf If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_FindExecutable($SFILENAME, $SDIRECTORY = "") Local $ARESULT = DllCall("shell32.dll", "INT", "FindExecutableW", "wstr", $SFILENAME, "wstr", $SDIRECTORY, "wstr", "") If @error Then Return SetError(@error, @extended, 0) Return SetExtended($ARESULT[0], $ARESULT[3]) EndFunc Func _WinAPI_FindWindow($SCLASSNAME, $SWINDOWNAME) Local $ARESULT = DllCall("user32.dll", "hwnd", "FindWindowW", "wstr", $SCLASSNAME, "wstr", $SWINDOWNAME) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_FlashWindow($HWND, $FINVERT = True) Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindow", "hwnd", $HWND, "bool", $FINVERT) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_FlashWindowEx($HWND, $IFLAGS = 3, $ICOUNT = 3, $ITIMEOUT = 0) Local $TFLASH = DllStructCreate($TAGFLASHWINFO) Local $PFLASH = DllStructGetPtr($TFLASH) Local $IFLASH = DllStructGetSize($TFLASH) Local $IMODE = 0 If BitAND($IFLAGS, 1) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_CAPTION) If BitAND($IFLAGS, 2) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TRAY) If BitAND($IFLAGS, 4) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMER) If BitAND($IFLAGS, 8) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMERNOFG) DllStructSetData($TFLASH, "Size", $IFLASH) DllStructSetData($TFLASH, "hWnd", $HWND) DllStructSetData($TFLASH, "Flags", $IMODE) DllStructSetData($TFLASH, "Count", $ICOUNT) DllStructSetData($TFLASH, "Timeout", $ITIMEOUT) Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindowEx", "ptr", $PFLASH) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_FloatToInt($NFLOAT) Local $TFLOAT = DllStructCreate("float") Local $TINT = DllStructCreate("int", DllStructGetPtr($TFLOAT)) DllStructSetData($TFLOAT, 1, $NFLOAT) Return DllStructGetData($TINT, 1) EndFunc Func _WinAPI_FlushFileBuffers($HFILE) Local $ARESULT = DllCall("kernel32.dll", "bool", "FlushFileBuffers", "handle", $HFILE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_FormatMessage($IFLAGS, $PSOURCE, $IMESSAGEID, $ILANGUAGEID, ByRef $PBUFFER, $ISIZE, $VARGUMENTS) Local $SBUFFERTYPE = "ptr" If IsString($PBUFFER) Then $SBUFFERTYPE = "wstr" Local $ARESULT = DllCall("Kernel32.dll", "dword", "FormatMessageW", "dword", $IFLAGS, "ptr", $PSOURCE, "dword", $IMESSAGEID, "dword", $ILANGUAGEID, $SBUFFERTYPE, $PBUFFER, "dword", $ISIZE, "ptr", $VARGUMENTS) If @error Then Return SetError(@error, @extended, 0) If $SBUFFERTYPE = "wstr" Then $PBUFFER = $ARESULT[5] Return $ARESULT[0] EndFunc Func _WinAPI_FrameRect($HDC, $PTRRECT, $HBRUSH) Local $ARESULT = DllCall("user32.dll", "int", "FrameRect", "handle", $HDC, "ptr", $PTRRECT, "handle", $HBRUSH) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_FreeLibrary($HMODULE) Local $ARESULT = DllCall("kernel32.dll", "bool", "FreeLibrary", "handle", $HMODULE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_GetAncestor($HWND, $IFLAGS = 1) Local $ARESULT = DllCall("user32.dll", "hwnd", "GetAncestor", "hwnd", $HWND, "uint", $IFLAGS) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetAsyncKeyState($IKEY) Local $ARESULT = DllCall("user32.dll", "short", "GetAsyncKeyState", "int", $IKEY) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WINAPI_GETBKMODE($HDC) Local $ARESULT = DllCall("gdi32.dll", "int", "GetBkMode", "handle", $HDC) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetClassName($HWND) If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND) Local $ARESULT = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $HWND, "wstr", "", "int", 4096) If @error Then Return SetError(@error, @extended, False) Return SetExtended($ARESULT[0], $ARESULT[2]) EndFunc Func _WinAPI_GetClientHeight($HWND) Local $TRECT = _WinAPI_GetClientRect($HWND) If @error Then Return SetError(@error, @extended, 0) Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top") EndFunc Func _WinAPI_GetClientWidth($HWND) Local $TRECT = _WinAPI_GetClientRect($HWND) If @error Then Return SetError(@error, @extended, 0) Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left") EndFunc Func _WinAPI_GetClientRect($HWND) Local $TRECT = DllStructCreate($TAGRECT) DllCall("user32.dll", "bool", "GetClientRect", "hwnd", $HWND, "ptr", DllStructGetPtr($TRECT)) If @error Then Return SetError(@error, @extended, 0) Return $TRECT EndFunc Func _WinAPI_GetCurrentProcess() Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentProcess") If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetCurrentProcessID() Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentProcessId") If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetCurrentThread() Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentThread") If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetCurrentThreadId() Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentThreadId") If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetCursorInfo() Local $TCURSOR = DllStructCreate($TAGCURSORINFO) Local $ICURSOR = DllStructGetSize($TCURSOR) DllStructSetData($TCURSOR, "Size", $ICURSOR) DllCall("user32.dll", "bool", "GetCursorInfo", "ptr", DllStructGetPtr($TCURSOR)) If @error Then Return SetError(@error, @extended, 0) Local $ACURSOR[5] $ACURSOR[0] = True $ACURSOR[1] = DllStructGetData($TCURSOR, "Flags") <> 0 $ACURSOR[2] = DllStructGetData($TCURSOR, "hCursor") $ACURSOR[3] = DllStructGetData($TCURSOR, "X") $ACURSOR[4] = DllStructGetData($TCURSOR, "Y") Return $ACURSOR EndFunc Func _WinAPI_GetDC($HWND) Local $ARESULT = DllCall("user32.dll", "handle", "GetDC", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetDesktopWindow() Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDesktopWindow") If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetDeviceCaps($HDC, $IINDEX) Local $ARESULT = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $HDC, "int", $IINDEX) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetDIBits($HDC, $HBMP, $ISTARTSCAN, $ISCANLINES, $PBITS, $PBI, $IUSAGE) Local $ARESULT = DllCall("gdi32.dll", "int", "GetDIBits", "handle", $HDC, "handle", $HBMP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "ptr", $PBITS, "ptr", $PBI, "uint", $IUSAGE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_GetDlgCtrlID($HWND) Local $ARESULT = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetDlgItem($HWND, $IITEMID) Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDlgItem", "hwnd", $HWND, "int", $IITEMID) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetFocus() Local $ARESULT = DllCall("user32.dll", "hwnd", "GetFocus") If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetForegroundWindow() Local $ARESULT = DllCall("user32.dll", "hwnd", "GetForegroundWindow") If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WINAPI_GETGUIRESOURCES($IFLAG = 0, $HPROCESS = -1) If $HPROCESS = -1 Then $HPROCESS = _WinAPI_GetCurrentProcess() Local $ARESULT = DllCall("user32.dll", "dword", "GetGuiResources", "handle", $HPROCESS, "dword", $IFLAG) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetIconInfo($HICON) Local $TINFO = DllStructCreate($TAGICONINFO) DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HICON, "ptr", DllStructGetPtr($TINFO)) If @error Then Return SetError(@error, @extended, 0) Local $AICON[6] $AICON[0] = True $AICON[1] = DllStructGetData($TINFO, "Icon") <> 0 $AICON[2] = DllStructGetData($TINFO, "XHotSpot") $AICON[3] = DllStructGetData($TINFO, "YHotSpot") $AICON[4] = DllStructGetData($TINFO, "hMask") $AICON[5] = DllStructGetData($TINFO, "hColor") Return $AICON EndFunc Func _WinAPI_GetFileSizeEx($HFILE) Local $ARESULT = DllCall("kernel32.dll", "bool", "GetFileSizeEx", "handle", $HFILE, "int64*", 0) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[2] EndFunc Func _WinAPI_GetLastErrorMessage() Local $TBUFFERPTR = DllStructCreate("ptr") Local $PBUFFERPTR = DllStructGetPtr($TBUFFERPTR) Local $NCOUNT = _WinAPI_FormatMessage(BitOR($__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER, $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM), 0, _WinAPI_GetLastError(), 0, $PBUFFERPTR, 0, 0) If @error Then Return SetError(@error, 0, "") Local $STEXT = "" Local $PBUFFER = DllStructGetData($TBUFFERPTR, 1) If $PBUFFER Then If $NCOUNT > 0 Then Local $TBUFFER = DllStructCreate("wchar[" & ($NCOUNT + 1) & "]", $PBUFFER) $STEXT = DllStructGetData($TBUFFER, 1) EndIf _WinAPI_LocalFree($PBUFFER) EndIf Return $STEXT EndFunc Func _WINAPI_GETLAYEREDWINDOWATTRIBUTES($HWND, ByRef $I_TRANSCOLOR, ByRef $TRANSPARENCY, $ASCOLORREF = False) $I_TRANSCOLOR = -1 $TRANSPARENCY = -1 Local $ARESULT = DllCall("user32.dll", "bool", "GetLayeredWindowAttributes", "hwnd", $HWND, "dword*", $I_TRANSCOLOR, "byte*", $TRANSPARENCY, "dword*", 0) If @error Then Return SetError(@error, @extended, 0) If Not $ASCOLORREF Then $ARESULT[2] = Hex(String($ARESULT[2]), 6) $ARESULT[2] = "0x" & StringMid($ARESULT[2], 5, 2) & StringMid($ARESULT[2], 3, 2) & StringMid($ARESULT[2], 1, 2) EndIf $I_TRANSCOLOR = $ARESULT[2] $TRANSPARENCY = $ARESULT[3] Return $ARESULT[4] EndFunc Func _WinAPI_GetModuleHandle($SMODULENAME) Local $SMODULENAMETYPE = "wstr" If $SMODULENAME = "" Then $SMODULENAME = 0 $SMODULENAMETYPE = "ptr" EndIf Local $ARESULT = DllCall("kernel32.dll", "handle", "GetModuleHandleW", $SMODULENAMETYPE, $SMODULENAME) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetMousePos($FTOCLIENT = False, $HWND = 0) Local $IMODE = Opt("MouseCoordMode", 1) Local $APOS = MouseGetPos() Opt("MouseCoordMode", $IMODE) Local $TPOINT = DllStructCreate($TAGPOINT) DllStructSetData($TPOINT, "X", $APOS[0]) DllStructSetData($TPOINT, "Y", $APOS[1]) If $FTOCLIENT Then _WinAPI_ScreenToClient($HWND, $TPOINT) If @error Then Return SetError(@error, @extended, 0) EndIf Return $TPOINT EndFunc Func _WinAPI_GetMousePosX($FTOCLIENT = False, $HWND = 0) Local $TPOINT = _WinAPI_GetMousePos($FTOCLIENT, $HWND) If @error Then Return SetError(@error, @extended, 0) Return DllStructGetData($TPOINT, "X") EndFunc Func _WinAPI_GetMousePosY($FTOCLIENT = False, $HWND = 0) Local $TPOINT = _WinAPI_GetMousePos($FTOCLIENT, $HWND) If @error Then Return SetError(@error, @extended, 0) Return DllStructGetData($TPOINT, "Y") EndFunc Func _WinAPI_GetObject($HOBJECT, $ISIZE, $POBJECT) Local $ARESULT = DllCall("gdi32.dll", "int", "GetObject", "handle", $HOBJECT, "int", $ISIZE, "ptr", $POBJECT) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetOpenFileName($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0) Local $IPATHLEN = 4096 Local $INULLS = 0 Local $TOFN = DllStructCreate($TAGOPENFILENAME) Local $AFILES[1] = [0] Local $IFLAG = $IFLAGS Local $ASFLINES = StringSplit($SFILTER, "|") Local $ASFILTER[$ASFLINES[0] * 2 + 1] Local $ISTART, $IFINAL, $STFILTER $ASFILTER[0] = $ASFLINES[0] * 2 For $I = 1 To $ASFLINES[0] $ISTART = StringInStr($ASFLINES[$I], "(", 0, 1) $IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1) $ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3) $ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3) $STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];" Next Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]") Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]") Local $TFILTER = DllStructCreate($STFILTER & "wchar") Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]") Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]") For $I = 1 To $ASFILTER[0] DllStructSetData($TFILTER, $I, $ASFILTER[$I]) Next DllStructSetData($TTITLE, "Title", $STITLE) DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR) DllStructSetData($TPATH, "Path", $SDEFAULTFILE) DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT) DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN)) DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER) DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER)) DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX) DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH)) DllStructSetData($TOFN, "nMaxFile", $IPATHLEN) DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR)) DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE)) DllStructSetData($TOFN, "Flags", $IFLAG) DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN)) DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX) DllCall("comdlg32.dll", "bool", "GetOpenFileNameW", "ptr", DllStructGetPtr($TOFN)) If @error Then Return SetError(@error, @extended, $AFILES) If BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT And BitAND($IFLAGS, $OFN_EXPLORER) = $OFN_EXPLORER Then For $X = 1 To $IPATHLEN If DllStructGetData($TPATH, "Path", $X) = Chr(0) Then DllStructSetData($TPATH, "Path", "|", $X) $INULLS += 1 Else $INULLS = 0 EndIf If $INULLS = 2 Then ExitLoop Next DllStructSetData($TPATH, "Path", Chr(0), $X - 1) $AFILES = StringSplit(DllStructGetData($TPATH, "Path"), "|") If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path")) Return StringSplit(DllStructGetData($TPATH, "Path"), "|") ElseIf BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT Then $AFILES = StringSplit(DllStructGetData($TPATH, "Path"), " ") If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path")) Return StringSplit(StringReplace(DllStructGetData($TPATH, "Path"), " ", "|"), "|") Else Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path")) EndIf EndFunc Func _WinAPI_GetOverlappedResult($HFILE, $POVERLAPPED, ByRef $IBYTES, $FWAIT = False) Local $ARESULT = DllCall("kernel32.dll", "bool", "GetOverlappedResult", "handle", $HFILE, "ptr", $POVERLAPPED, "dword*", 0, "bool", $FWAIT) If @error Then Return SetError(@error, @extended, False) $IBYTES = $ARESULT[3] Return $ARESULT[0] EndFunc Func _WinAPI_GetParent($HWND) Local $ARESULT = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetProcessAffinityMask($HPROCESS) Local $ARESULT = DllCall("kernel32.dll", "bool", "GetProcessAffinityMask", "handle", $HPROCESS, "dword_ptr*", 0, "dword_ptr*", 0) If @error Then Return SetError(@error, @extended, 0) Local $AMASK[3] $AMASK[0] = True $AMASK[1] = $ARESULT[2] $AMASK[2] = $ARESULT[3] Return $AMASK EndFunc Func _WinAPI_GetSaveFileName($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0) Local $IPATHLEN = 4096 Local $TOFN = DllStructCreate($TAGOPENFILENAME) Local $AFILES[1] = [0] Local $IFLAG = $IFLAGS Local $ASFLINES = StringSplit($SFILTER, "|") Local $ASFILTER[$ASFLINES[0] * 2 + 1] Local $ISTART, $IFINAL, $STFILTER $ASFILTER[0] = $ASFLINES[0] * 2 For $I = 1 To $ASFLINES[0] $ISTART = StringInStr($ASFLINES[$I], "(", 0, 1) $IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1) $ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3) $ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3) $STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];" Next Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]") Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]") Local $TFILTER = DllStructCreate($STFILTER & "wchar") Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]") Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]") For $I = 1 To $ASFILTER[0] DllStructSetData($TFILTER, $I, $ASFILTER[$I]) Next DllStructSetData($TTITLE, "Title", $STITLE) DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR) DllStructSetData($TPATH, "Path", $SDEFAULTFILE) DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT) DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN)) DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER) DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER)) DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX) DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH)) DllStructSetData($TOFN, "nMaxFile", $IPATHLEN) DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR)) DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE)) DllStructSetData($TOFN, "Flags", $IFLAG) DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN)) DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX) DllCall("comdlg32.dll", "bool", "GetSaveFileNameW", "ptr", DllStructGetPtr($TOFN)) If @error Then Return SetError(@error, @extended, $AFILES) Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path")) EndFunc Func _WinAPI_GetStockObject($IOBJECT) Local $ARESULT = DllCall("gdi32.dll", "handle", "GetStockObject", "int", $IOBJECT) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetStdHandle($ISTDHANDLE) If $ISTDHANDLE < 0 Or $ISTDHANDLE > 2 Then Return SetError(2, 0, -1) Local Const $AHANDLE[3] = [-10, -11, -12] Local $ARESULT = DllCall("kernel32.dll", "handle", "GetStdHandle", "dword", $AHANDLE[$ISTDHANDLE]) If @error Then Return SetError(@error, @extended, -1) Return $ARESULT[0] EndFunc Func _WinAPI_GetSysColor($IINDEX) Local $ARESULT = DllCall("user32.dll", "dword", "GetSysColor", "int", $IINDEX) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetSysColorBrush($IINDEX) Local $ARESULT = DllCall("user32.dll", "handle", "GetSysColorBrush", "int", $IINDEX) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetSystemMetrics($IINDEX) Local $ARESULT = DllCall("user32.dll", "int", "GetSystemMetrics", "int", $IINDEX) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetTextExtentPoint32($HDC, $STEXT) Local $TSIZE = DllStructCreate($TAGSIZE) Local $ISIZE = StringLen($STEXT) DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $HDC, "wstr", $STEXT, "int", $ISIZE, "ptr", DllStructGetPtr($TSIZE)) If @error Then Return SetError(@error, @extended, 0) Return $TSIZE EndFunc Func _WinAPI_GetWindow($HWND, $ICMD) Local $ARESULT = DllCall("user32.dll", "hwnd", "GetWindow", "hwnd", $HWND, "uint", $ICMD) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetWindowDC($HWND) Local $ARESULT = DllCall("user32.dll", "handle", "GetWindowDC", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetWindowHeight($HWND) Local $TRECT = _WinAPI_GetWindowRect($HWND) If @error Then Return SetError(@error, @extended, 0) Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top") EndFunc Func _WinAPI_GetWindowLong($HWND, $IINDEX) Local $SFUNCNAME = "GetWindowLongW" If @AutoItX64 Then $SFUNCNAME = "GetWindowLongPtrW" Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WINAPI_GETWINDOWPLACEMENT($HWND) Local $TWINDOWPLACEMENT = DllStructCreate($TAGWINDOWPLACEMENT) DllStructSetData($TWINDOWPLACEMENT, "length", DllStructGetSize($TWINDOWPLACEMENT)) Local $PWINDOWPLACEMENT = DllStructGetPtr($TWINDOWPLACEMENT) DllCall("user32.dll", "bool", "GetWindowPlacement", "hwnd", $HWND, "ptr", $PWINDOWPLACEMENT) If @error Then Return SetError(@error, @extended, 0) Return $TWINDOWPLACEMENT EndFunc Func _WinAPI_GetWindowRect($HWND) Local $TRECT = DllStructCreate($TAGRECT) DllCall("user32.dll", "bool", "GetWindowRect", "hwnd", $HWND, "ptr", DllStructGetPtr($TRECT)) If @error Then Return SetError(@error, @extended, 0) Return $TRECT EndFunc Func _WINAPI_GETWINDOWRGN($HWND, $HRGN) Local $ARESULT = DllCall("user32.dll", "int", "GetWindowRgn", "hwnd", $HWND, "handle", $HRGN) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_GetWindowText($HWND) Local $ARESULT = DllCall("user32.dll", "int", "GetWindowTextW", "hwnd", $HWND, "wstr", "", "int", 4096) If @error Then Return SetError(@error, @extended, "") Return SetExtended($ARESULT[0], $ARESULT[2]) EndFunc Func _WinAPI_GetWindowThreadProcessId($HWND, ByRef $IPID) Local $ARESULT = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0) If @error Then Return SetError(@error, @extended, 0) $IPID = $ARESULT[2] Return $ARESULT[0] EndFunc Func _WinAPI_GetWindowWidth($HWND) Local $TRECT = _WinAPI_GetWindowRect($HWND) If @error Then Return SetError(@error, @extended, 0) Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left") EndFunc Func _WinAPI_GetXYFromPoint(ByRef $TPOINT, ByRef $IX, ByRef $IY) $IX = DllStructGetData($TPOINT, "X") $IY = DllStructGetData($TPOINT, "Y") EndFunc Func _WINAPI_GLOBALMEMORYSTATUS() Local $TMEM = DllStructCreate($TAGMEMORYSTATUSEX) Local $PMEM = DllStructGetPtr($TMEM) Local $IMEM = DllStructGetSize($TMEM) DllStructSetData($TMEM, 1, $IMEM) DllCall("kernel32.dll", "none", "GlobalMemoryStatusEx", "ptr", $PMEM) If @error Then Return SetError(@error, @extended, 0) Local $AMEM[7] $AMEM[0] = DllStructGetData($TMEM, 2) $AMEM[1] = DllStructGetData($TMEM, 3) $AMEM[2] = DllStructGetData($TMEM, 4) $AMEM[3] = DllStructGetData($TMEM, 5) $AMEM[4] = DllStructGetData($TMEM, 6) $AMEM[5] = DllStructGetData($TMEM, 7) $AMEM[6] = DllStructGetData($TMEM, 8) Return $AMEM EndFunc Func _WinAPI_GUIDFromString($SGUID) Local $TGUID = DllStructCreate($TAGGUID) _WinAPI_GUIDFromStringEx($SGUID, DllStructGetPtr($TGUID)) If @error Then Return SetError(@error, @extended, 0) Return $TGUID EndFunc Func _WinAPI_GUIDFromStringEx($SGUID, $PGUID) Local $ARESULT = DllCall("ole32.dll", "long", "CLSIDFromString", "wstr", $SGUID, "ptr", $PGUID) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_HiWord($ILONG) Return BitShift($ILONG, 16) EndFunc Func _WinAPI_InProcess($HWND, ByRef $HLASTWND) If $HWND = $HLASTWND Then Return True For $II = $__GAINPROCESS_WINAPI[0][0] To 1 Step -1 If $HWND = $__GAINPROCESS_WINAPI[$II][0] Then If $__GAINPROCESS_WINAPI[$II][1] Then $HLASTWND = $HWND Return True Else Return False EndIf EndIf Next Local $IPROCESSID _WinAPI_GetWindowThreadProcessId($HWND, $IPROCESSID) Local $ICOUNT = $__GAINPROCESS_WINAPI[0][0] + 1 If $ICOUNT >= 64 Then $ICOUNT = 1 $__GAINPROCESS_WINAPI[0][0] = $ICOUNT $__GAINPROCESS_WINAPI[$ICOUNT][0] = $HWND $__GAINPROCESS_WINAPI[$ICOUNT][1] = ($IPROCESSID = @AutoItPID) Return $__GAINPROCESS_WINAPI[$ICOUNT][1] EndFunc Func _WinAPI_IntToFloat($IINT) Local $TINT = DllStructCreate("int") Local $TFLOAT = DllStructCreate("float", DllStructGetPtr($TINT)) DllStructSetData($TINT, 1, $IINT) Return DllStructGetData($TFLOAT, 1) EndFunc Func _WinAPI_IsClassName($HWND, $SCLASSNAME) Local $SSEPARATOR = Opt("GUIDataSeparatorChar") Local $ACLASSNAME = StringSplit($SCLASSNAME, $SSEPARATOR) If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND) Local $SCLASSCHECK = _WinAPI_GetClassName($HWND) For $X = 1 To UBound($ACLASSNAME) - 1 If StringUpper(StringMid($SCLASSCHECK, 1, StringLen($ACLASSNAME[$X]))) = StringUpper($ACLASSNAME[$X]) Then Return True Next Return False EndFunc Func _WinAPI_IsWindow($HWND) Local $ARESULT = DllCall("user32.dll", "bool", "IsWindow", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_IsWindowVisible($HWND) Local $ARESULT = DllCall("user32.dll", "bool", "IsWindowVisible", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_InvalidateRect($HWND, $TRECT = 0, $FERASE = True) Local $PRECT = 0 If IsDllStruct($TRECT) Then $PRECT = DllStructGetPtr($TRECT) Local $ARESULT = DllCall("user32.dll", "bool", "InvalidateRect", "hwnd", $HWND, "ptr", $PRECT, "bool", $FERASE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WINAPI_LINETO($HDC, $IX, $IY) Local $ARESULT = DllCall("gdi32.dll", "bool", "LineTo", "handle", $HDC, "int", $IX, "int", $IY) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_LoadBitmap($HINSTANCE, $SBITMAP) Local $SBITMAPTYPE = "int" If IsString($SBITMAP) Then $SBITMAPTYPE = "wstr" Local $ARESULT = DllCall("user32.dll", "handle", "LoadBitmapW", "handle", $HINSTANCE, $SBITMAPTYPE, $SBITMAP) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_LoadImage($HINSTANCE, $SIMAGE, $ITYPE, $IXDESIRED, $IYDESIRED, $ILOAD) Local $ARESULT, $SIMAGETYPE = "int" If IsString($SIMAGE) Then $SIMAGETYPE = "wstr" $ARESULT = DllCall("user32.dll", "handle", "LoadImageW", "handle", $HINSTANCE, $SIMAGETYPE, $SIMAGE, "uint", $ITYPE, "int", $IXDESIRED, "int", $IYDESIRED, "uint", $ILOAD) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_LoadLibrary($SFILENAME) Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryW", "wstr", $SFILENAME) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_LoadLibraryEx($SFILENAME, $IFLAGS = 0) Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryExW", "wstr", $SFILENAME, "ptr", 0, "dword", $IFLAGS) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_LoadShell32Icon($IICONID) Local $TICONS = DllStructCreate("ptr Data") Local $PICONS = DllStructGetPtr($TICONS) Local $IICONS = _WinAPI_ExtractIconEx("shell32.dll", $IICONID, 0, $PICONS, 1) If @error Then Return SetError(@error, @extended, 0) If $IICONS <= 0 Then Return SetError(1, 0, 0) Return DllStructGetData($TICONS, "Data") EndFunc Func _WinAPI_LoadString($HINSTANCE, $ISTRINGID) Local $ARESULT = DllCall("user32.dll", "int", "LoadStringW", "handle", $HINSTANCE, "uint", $ISTRINGID, "wstr", "", "int", 4096) If @error Then Return SetError(@error, @extended, "") Return SetExtended($ARESULT[0], $ARESULT[3]) EndFunc Func _WinAPI_LocalFree($HMEM) Local $ARESULT = DllCall("kernel32.dll", "handle", "LocalFree", "handle", $HMEM) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_LoWord($ILONG) Return BitAND($ILONG, 65535) EndFunc Func _WinAPI_MAKELANGID($LGIDPRIMARY, $LGIDSUB) Return BitOR(BitShift($LGIDSUB, -10), $LGIDPRIMARY) EndFunc Func _WinAPI_MAKELCID($LGID, $SRTID) Return BitOR(BitShift($SRTID, -16), $LGID) EndFunc Func _WinAPI_MakeLong($ILO, $IHI) Return BitOR(BitShift($IHI, -16), BitAND($ILO, 65535)) EndFunc Func _WINAPI_MAKEQWORD($LODWORD, $HIDWORD) Local $TINT64 = DllStructCreate("uint64") Local $TDWORDS = DllStructCreate("dword;dword", DllStructGetPtr($TINT64)) DllStructSetData($TDWORDS, 1, $LODWORD) DllStructSetData($TDWORDS, 2, $HIDWORD) Return DllStructGetData($TINT64, 1) EndFunc Func _WinAPI_MessageBeep($ITYPE = 1) Local $ISOUND Switch $ITYPE Case 1 $ISOUND = 0 Case 2 $ISOUND = 16 Case 3 $ISOUND = 32 Case 4 $ISOUND = 48 Case 5 $ISOUND = 64 Case Else $ISOUND = -1 EndSwitch Local $ARESULT = DllCall("user32.dll", "bool", "MessageBeep", "uint", $ISOUND) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_MsgBox($IFLAGS, $STITLE, $STEXT) BlockInput(0) MsgBox($IFLAGS, $STITLE, $STEXT & " ") EndFunc Func _WinAPI_Mouse_Event($IFLAGS, $IX = 0, $IY = 0, $IDATA = 0, $IEXTRAINFO = 0) DllCall("user32.dll", "none", "mouse_event", "dword", $IFLAGS, "dword", $IX, "dword", $IY, "dword", $IDATA, "ulong_ptr", $IEXTRAINFO) If @error Then Return SetError(@error, @extended) EndFunc Func _WINAPI_MOVETO($HDC, $IX, $IY) Local $ARESULT = DllCall("gdi32.dll", "bool", "MoveToEx", "handle", $HDC, "int", $IX, "int", $IY, "ptr", 0) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_MoveWindow($HWND, $IX, $IY, $IWIDTH, $IHEIGHT, $FREPAINT = True) Local $ARESULT = DllCall("user32.dll", "bool", "MoveWindow", "hwnd", $HWND, "int", $IX, "int", $IY, "int", $IWIDTH, "int", $IHEIGHT, "bool", $FREPAINT) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_MulDiv($INUMBER, $INUMERATOR, $IDENOMINATOR) Local $ARESULT = DllCall("kernel32.dll", "int", "MulDiv", "int", $INUMBER, "int", $INUMERATOR, "int", $IDENOMINATOR) If @error Then Return SetError(@error, @extended, -1) Return $ARESULT[0] EndFunc Func _WinAPI_MultiByteToWideChar($STEXT, $ICODEPAGE = 0, $IFLAGS = 0, $BRETSTRING = False) Local $STEXTTYPE = "ptr", $PTEXT = $STEXT If IsDllStruct($STEXT) Then $PTEXT = DllStructGetPtr($STEXT) Else If Not IsPtr($STEXT) Then $STEXTTYPE = "STR" EndIf Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $PTEXT, "int", -1, "ptr", 0, "int", 0) If @error Then Return SetError(@error, @extended, 0) Local $IOUT = $ARESULT[0] Local $TOUT = DllStructCreate("wchar[" & $IOUT & "]") Local $POUT = DllStructGetPtr($TOUT) $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $PTEXT, "int", -1, "ptr", $POUT, "int", $IOUT) If @error Then Return SetError(@error, @extended, 0) If $BRETSTRING Then Return DllStructGetData($TOUT, 1) Return $TOUT EndFunc Func _WinAPI_MultiByteToWideCharEx($STEXT, $PTEXT, $ICODEPAGE = 0, $IFLAGS = 0) Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, "STR", $STEXT, "int", -1, "ptr", $PTEXT, "int", (StringLen($STEXT) + 1) * 2) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_OpenProcess($IACCESS, $FINHERIT, $IPROCESSID, $FDEBUGPRIV = False) Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID) If @error Then Return SetError(@error, @extended, 0) If $ARESULT[0] Then Return $ARESULT[0] If Not $FDEBUGPRIV Then Return 0 Local $HTOKEN = _Security__OpenThreadTokenEx(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY)) If @error Then Return SetError(@error, @extended, 0) _Security__SetPrivilege($HTOKEN, "SeDebugPrivilege", True) Local $IERROR = @error Local $ILASTERROR = @extended Local $IRET = 0 If Not @error Then $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID) $IERROR = @error $ILASTERROR = @extended If $ARESULT[0] Then $IRET = $ARESULT[0] _Security__SetPrivilege($HTOKEN, "SeDebugPrivilege", False) If @error Then $IERROR = @error $ILASTERROR = @extended EndIf EndIf _WinAPI_CloseHandle($HTOKEN) Return SetError($IERROR, $ILASTERROR, $IRET) EndFunc Func __WINAPI_PARSEFILEDIALOGPATH($SPATH) Local $AFILES[3] $AFILES[0] = 2 Local $STEMP = StringMid($SPATH, 1, StringInStr($SPATH, "\", 0, -1) - 1) $AFILES[1] = $STEMP $AFILES[2] = StringMid($SPATH, StringInStr($SPATH, "\", 0, -1) + 1) Return $AFILES EndFunc Func _WINAPI_PATHFINDONPATH(Const $SZFILE, $AEXTRAPATHS = "", Const $SZPATHDELIMITER = @LF) Local $IEXTRACOUNT = 0 If IsString($AEXTRAPATHS) Then If StringLen($AEXTRAPATHS) Then $AEXTRAPATHS = StringSplit($AEXTRAPATHS, $SZPATHDELIMITER, 1 + 2) $IEXTRACOUNT = UBound($AEXTRAPATHS, 1) EndIf ElseIf IsArray($AEXTRAPATHS) Then $IEXTRACOUNT = UBound($AEXTRAPATHS) EndIf Local $TPATHS, $TPATHPTRS If $IEXTRACOUNT Then Local $SZSTRUCT = "" For $PATH In $AEXTRAPATHS $SZSTRUCT &= "wchar[" & StringLen($PATH) + 1 & "];" Next $TPATHS = DllStructCreate($SZSTRUCT) $TPATHPTRS = DllStructCreate("ptr[" & $IEXTRACOUNT + 1 & "]") For $I = 1 To $IEXTRACOUNT DllStructSetData($TPATHS, $I, $AEXTRAPATHS[$I - 1]) DllStructSetData($TPATHPTRS, 1, DllStructGetPtr($TPATHS, $I), $I) Next DllStructSetData($TPATHPTRS, 1, Ptr(0), $IEXTRACOUNT + 1) EndIf Local $ARESULT = DllCall("shlwapi.dll", "bool", "PathFindOnPathW", "wstr", $SZFILE, "ptr", DllStructGetPtr($TPATHPTRS)) If @error Then Return SetError(@error, @extended, False) If $ARESULT[0] = 0 Then Return SetError(1, 0, $SZFILE) Return $ARESULT[1] EndFunc Func _WinAPI_PointFromRect(ByRef $TRECT, $FCENTER = True) Local $IX1 = DllStructGetData($TRECT, "Left") Local $IY1 = DllStructGetData($TRECT, "Top") Local $IX2 = DllStructGetData($TRECT, "Right") Local $IY2 = DllStructGetData($TRECT, "Bottom") If $FCENTER Then $IX1 = $IX1 + (($IX2 - $IX1) / 2) $IY1 = $IY1 + (($IY2 - $IY1) / 2) EndIf Local $TPOINT = DllStructCreate($TAGPOINT) DllStructSetData($TPOINT, "X", $IX1) DllStructSetData($TPOINT, "Y", $IY1) Return $TPOINT EndFunc Func _WinAPI_PostMessage($HWND, $IMSG, $IWPARAM, $ILPARAM) Local $ARESULT = DllCall("user32.dll", "bool", "PostMessage", "hwnd", $HWND, "uint", $IMSG, "wparam", $IWPARAM, "lparam", $ILPARAM) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_PrimaryLangId($LGID) Return BitAND($LGID, 1023) EndFunc Func _WinAPI_PtInRect(ByRef $TRECT, ByRef $TPOINT) Local $IX = DllStructGetData($TPOINT, "X") Local $IY = DllStructGetData($TPOINT, "Y") Local $ARESULT = DllCall("user32.dll", "bool", "PtInRect", "ptr", DllStructGetPtr($TRECT), "long", $IX, "long", $IY) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_ReadFile($HFILE, $PBUFFER, $ITOREAD, ByRef $IREAD, $POVERLAPPED = 0) Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadFile", "handle", $HFILE, "ptr", $PBUFFER, "dword", $ITOREAD, "dword*", 0, "ptr", $POVERLAPPED) If @error Then Return SetError(@error, @extended, False) $IREAD = $ARESULT[4] Return $ARESULT[0] EndFunc Func _WinAPI_ReadProcessMemory($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IREAD) Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, "ptr", $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0) If @error Then Return SetError(@error, @extended, False) $IREAD = $ARESULT[5] Return $ARESULT[0] EndFunc Func _WinAPI_RectIsEmpty(ByRef $TRECT) Return (DllStructGetData($TRECT, "Left") = 0) And (DllStructGetData($TRECT, "Top") = 0) And (DllStructGetData($TRECT, "Right") = 0) And (DllStructGetData($TRECT, "Bottom") = 0) EndFunc Func _WinAPI_RedrawWindow($HWND, $TRECT = 0, $HREGION = 0, $IFLAGS = 5) Local $PRECT = 0 If $TRECT <> 0 Then $PRECT = DllStructGetPtr($TRECT) Local $ARESULT = DllCall("user32.dll", "bool", "RedrawWindow", "hwnd", $HWND, "ptr", $PRECT, "handle", $HREGION, "uint", $IFLAGS) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_RegisterWindowMessage($SMESSAGE) Local $ARESULT = DllCall("user32.dll", "uint", "RegisterWindowMessageW", "wstr", $SMESSAGE) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_ReleaseCapture() Local $ARESULT = DllCall("user32.dll", "bool", "ReleaseCapture") If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_ReleaseDC($HWND, $HDC) Local $ARESULT = DllCall("user32.dll", "int", "ReleaseDC", "hwnd", $HWND, "handle", $HDC) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_ScreenToClient($HWND, ByRef $TPOINT) Local $ARESULT = DllCall("user32.dll", "bool", "ScreenToClient", "hwnd", $HWND, "ptr", DllStructGetPtr($TPOINT)) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_SelectObject($HDC, $HGDIOBJ) Local $ARESULT = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HDC, "handle", $HGDIOBJ) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_SetBkColor($HDC, $ICOLOR) Local $ARESULT = DllCall("gdi32.dll", "INT", "SetBkColor", "handle", $HDC, "dword", $ICOLOR) If @error Then Return SetError(@error, @extended, -1) Return $ARESULT[0] EndFunc Func _WINAPI_SETBKMODE($HDC, $IBKMODE) Local $ARESULT = DllCall("gdi32.dll", "int", "SetBkMode", "handle", $HDC, "int", $IBKMODE) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_SetCapture($HWND) Local $ARESULT = DllCall("user32.dll", "hwnd", "SetCapture", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_SetCursor($HCURSOR) Local $ARESULT = DllCall("user32.dll", "handle", "SetCursor", "handle", $HCURSOR) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_SetDefaultPrinter($SPRINTER) Local $ARESULT = DllCall("winspool.drv", "bool", "SetDefaultPrinterW", "wstr", $SPRINTER) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_SetDIBits($HDC, $HBMP, $ISTARTSCAN, $ISCANLINES, $PBITS, $PBMI, $ICOLORUSE = 0) Local $ARESULT = DllCall("gdi32.dll", "int", "SetDIBits", "handle", $HDC, "handle", $HBMP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "ptr", $PBITS, "ptr", $PBMI, "uint", $ICOLORUSE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WINAPI_SETENDOFFILE($HFILE) Local $ARESULT = DllCall("kernel32.dll", "bool", "SetEndOfFile", "handle", $HFILE) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_SetEvent($HEVENT) Local $ARESULT = DllCall("kernel32.dll", "bool", "SetEvent", "handle", $HEVENT) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WINAPI_SETFILEPOINTER($HFILE, $IPOS, $IMETHOD = 0) Local $ARESULT = DllCall("kernel32.dll", "INT", "SetFilePointer", "handle", $HFILE, "long", $IPOS, "ptr", 0, "long", $IMETHOD) If @error Then Return SetError(@error, @extended, -1) Return $ARESULT[0] EndFunc Func _WinAPI_SetFocus($HWND) Local $ARESULT = DllCall("user32.dll", "hwnd", "SetFocus", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_SetFont($HWND, $HFONT, $FREDRAW = True) _SendMessage($HWND, $__WINAPICONSTANT_WM_SETFONT, $HFONT, $FREDRAW, 0, "hwnd") EndFunc Func _WinAPI_SetHandleInformation($HOBJECT, $IMASK, $IFLAGS) Local $ARESULT = DllCall("kernel32.dll", "bool", "SetHandleInformation", "handle", $HOBJECT, "dword", $IMASK, "dword", $IFLAGS) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WINAPI_SETLAYEREDWINDOWATTRIBUTES($HWND, $I_TRANSCOLOR, $TRANSPARENCY = 255, $DWFLAGS = 3, $ISCOLORREF = False) If $DWFLAGS = Default Or $DWFLAGS = "" Or $DWFLAGS < 0 Then $DWFLAGS = 3 If Not $ISCOLORREF Then $I_TRANSCOLOR = Hex(String($I_TRANSCOLOR), 6) $I_TRANSCOLOR = Execute("0x00" & StringMid($I_TRANSCOLOR, 5, 2) & StringMid($I_TRANSCOLOR, 3, 2) & StringMid($I_TRANSCOLOR, 1, 2)) EndIf Local $ARESULT = DllCall("user32.dll", "bool", "SetLayeredWindowAttributes", "hwnd", $HWND, "dword", $I_TRANSCOLOR, "byte", $TRANSPARENCY, "dword", $DWFLAGS) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_SetParent($HWNDCHILD, $HWNDPARENT) Local $ARESULT = DllCall("user32.dll", "hwnd", "SetParent", "hwnd", $HWNDCHILD, "hwnd", $HWNDPARENT) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_SetProcessAffinityMask($HPROCESS, $IMASK) Local $ARESULT = DllCall("kernel32.dll", "bool", "SetProcessAffinityMask", "handle", $HPROCESS, "ulong_ptr", $IMASK) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_SetSysColors($VELEMENTS, $VCOLORS) Local $ISEARRAY = IsArray($VELEMENTS), $ISCARRAY = IsArray($VCOLORS) Local $IELEMENTNUM If Not $ISCARRAY And Not $ISEARRAY Then $IELEMENTNUM = 1 ElseIf $ISCARRAY Or $ISEARRAY Then If Not $ISCARRAY Or Not $ISEARRAY Then Return SetError(-1, -1, False) If UBound($VELEMENTS) <> UBound($VCOLORS) Then Return SetError(-1, -1, False) $IELEMENTNUM = UBound($VELEMENTS) EndIf Local $TELEMENTS = DllStructCreate("int Element[" & $IELEMENTNUM & "]") Local $TCOLORS = DllStructCreate("dword NewColor[" & $IELEMENTNUM & "]") Local $PELEMENTS = DllStructGetPtr($TELEMENTS) Local $PCOLORS = DllStructGetPtr($TCOLORS) If Not $ISEARRAY Then DllStructSetData($TELEMENTS, "Element", $VELEMENTS, 1) Else For $X = 0 To $IELEMENTNUM - 1 DllStructSetData($TELEMENTS, "Element", $VELEMENTS[$X], $X + 1) Next EndIf If Not $ISCARRAY Then DllStructSetData($TCOLORS, "NewColor", $VCOLORS, 1) Else For $X = 0 To $IELEMENTNUM - 1 DllStructSetData($TCOLORS, "NewColor", $VCOLORS[$X], $X + 1) Next EndIf Local $ARESULT = DllCall("user32.dll", "bool", "SetSysColors", "int", $IELEMENTNUM, "ptr", $PELEMENTS, "ptr", $PCOLORS) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_SetTextColor($HDC, $ICOLOR) Local $ARESULT = DllCall("gdi32.dll", "INT", "SetTextColor", "handle", $HDC, "dword", $ICOLOR) If @error Then Return SetError(@error, @extended, -1) Return $ARESULT[0] EndFunc Func _WinAPI_SetWindowLong($HWND, $IINDEX, $IVALUE) _WinAPI_SetLastError(0) Local $SFUNCNAME = "SetWindowLongW" If @AutoItX64 Then $SFUNCNAME = "SetWindowLongPtrW" Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX, "long_ptr", $IVALUE) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WINAPI_SETWINDOWPLACEMENT($HWND, $PWINDOWPLACEMENT) Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowPlacement", "hwnd", $HWND, "ptr", $PWINDOWPLACEMENT) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_SetWindowPos($HWND, $HAFTER, $IX, $IY, $ICX, $ICY, $IFLAGS) Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowPos", "hwnd", $HWND, "hwnd", $HAFTER, "int", $IX, "int", $IY, "int", $ICX, "int", $ICY, "uint", $IFLAGS) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WINAPI_SETWINDOWRGN($HWND, $HRGN, $BREDRAW = True) Local $ARESULT = DllCall("user32.dll", "int", "SetWindowRgn", "hwnd", $HWND, "handle", $HRGN, "bool", $BREDRAW) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_SetWindowsHookEx($IDHOOK, $LPFN, $HMOD, $DWTHREADID = 0) Local $ARESULT = DllCall("user32.dll", "handle", "SetWindowsHookEx", "int", $IDHOOK, "ptr", $LPFN, "handle", $HMOD, "dword", $DWTHREADID) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_SetWindowText($HWND, $STEXT) Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowTextW", "hwnd", $HWND, "wstr", $STEXT) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_ShowCursor($FSHOW) Local $ARESULT = DllCall("user32.dll", "int", "ShowCursor", "bool", $FSHOW) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_ShowError($STEXT, $FEXIT = True) _WinAPI_MsgBox(266256, "Error", $STEXT) If $FEXIT Then Exit EndFunc Func _WinAPI_ShowMsg($STEXT) _WinAPI_MsgBox(64 + 4096, "Information", $STEXT) EndFunc Func _WinAPI_ShowWindow($HWND, $ICMDSHOW = 5) Local $ARESULT = DllCall("user32.dll", "bool", "ShowWindow", "hwnd", $HWND, "int", $ICMDSHOW) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_StringFromGUID($PGUID) Local $ARESULT = DllCall("ole32.dll", "int", "StringFromGUID2", "ptr", $PGUID, "wstr", "", "int", 40) If @error Then Return SetError(@error, @extended, "") Return SetExtended($ARESULT[0], $ARESULT[2]) EndFunc Func _WinAPI_SubLangId($LGID) Return BitShift($LGID, 10) EndFunc Func _WinAPI_SystemParametersInfo($IACTION, $IPARAM = 0, $VPARAM = 0, $IWININI = 0) Local $ARESULT = DllCall("user32.dll", "bool", "SystemParametersInfoW", "uint", $IACTION, "uint", $IPARAM, "ptr", $VPARAM, "uint", $IWININI) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_TwipsPerPixelX() Local $LNGDC, $TWIPSPERPIXELX $LNGDC = _WinAPI_GetDC(0) $TWIPSPERPIXELX = 1440 / _WinAPI_GetDeviceCaps($LNGDC, $__WINAPICONSTANT_LOGPIXELSX) _WinAPI_ReleaseDC(0, $LNGDC) Return $TWIPSPERPIXELX EndFunc Func _WinAPI_TwipsPerPixelY() Local $LNGDC, $TWIPSPERPIXELY $LNGDC = _WinAPI_GetDC(0) $TWIPSPERPIXELY = 1440 / _WinAPI_GetDeviceCaps($LNGDC, $__WINAPICONSTANT_LOGPIXELSY) _WinAPI_ReleaseDC(0, $LNGDC) Return $TWIPSPERPIXELY EndFunc Func _WinAPI_UnhookWindowsHookEx($HHK) Local $ARESULT = DllCall("user32.dll", "bool", "UnhookWindowsHookEx", "handle", $HHK) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_UpdateLayeredWindow($HWND, $HDCDEST, $PPTDEST, $PSIZE, $HDCSRCE, $PPTSRCE, $IRGB, $PBLEND, $IFLAGS) Local $ARESULT = DllCall("user32.dll", "bool", "UpdateLayeredWindow", "hwnd", $HWND, "handle", $HDCDEST, "ptr", $PPTDEST, "ptr", $PSIZE, "handle", $HDCSRCE, "ptr", $PPTSRCE, "dword", $IRGB, "ptr", $PBLEND, "dword", $IFLAGS) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_UpdateWindow($HWND) Local $ARESULT = DllCall("user32.dll", "bool", "UpdateWindow", "hwnd", $HWND) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_WaitForInputIdle($HPROCESS, $ITIMEOUT = -1) Local $ARESULT = DllCall("user32.dll", "dword", "WaitForInputIdle", "handle", $HPROCESS, "dword", $ITIMEOUT) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_WaitForMultipleObjects($ICOUNT, $PHANDLES, $FWAITALL = False, $ITIMEOUT = -1) Local $ARESULT = DllCall("kernel32.dll", "INT", "WaitForMultipleObjects", "dword", $ICOUNT, "ptr", $PHANDLES, "bool", $FWAITALL, "dword", $ITIMEOUT) If @error Then Return SetError(@error, @extended, -1) Return $ARESULT[0] EndFunc Func _WinAPI_WaitForSingleObject($HHANDLE, $ITIMEOUT = -1) Local $ARESULT = DllCall("kernel32.dll", "INT", "WaitForSingleObject", "handle", $HHANDLE, "dword", $ITIMEOUT) If @error Then Return SetError(@error, @extended, -1) Return $ARESULT[0] EndFunc Func _WinAPI_WideCharToMultiByte($PUNICODE, $ICODEPAGE = 0, $BRETSTRING = True) Local $SUNICODETYPE = "ptr" If IsDllStruct($PUNICODE) Then $PUNICODE = DllStructGetPtr($PUNICODE) Else If Not IsPtr($PUNICODE) Then $SUNICODETYPE = "wstr" EndIf Local $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "ptr", 0, "int", 0, "ptr", 0, "ptr", 0) If @error Then Return SetError(@error, @extended, "") Local $TMULTIBYTE = DllStructCreate("char[" & $ARESULT[0] & "]") Local $PMULTIBYTE = DllStructGetPtr($TMULTIBYTE) $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "ptr", $PMULTIBYTE, "int", $ARESULT[0], "ptr", 0, "ptr", 0) If @error Then Return SetError(@error, @extended, "") If $BRETSTRING Then Return DllStructGetData($TMULTIBYTE, 1) Return $TMULTIBYTE EndFunc Func _WinAPI_WindowFromPoint(ByRef $TPOINT) Local $TPOINTCAST = DllStructCreate("int64", DllStructGetPtr($TPOINT)) Local $ARESULT = DllCall("user32.dll", "hwnd", "WindowFromPoint", "int64", DllStructGetData($TPOINTCAST, 1)) If @error Then Return SetError(@error, @extended, 0) Return $ARESULT[0] EndFunc Func _WinAPI_WriteConsole($HCONSOLE, $STEXT) Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteConsoleW", "handle", $HCONSOLE, "wstr", $STEXT, "dword", StringLen($STEXT), "dword*", 0, "ptr", 0) If @error Then Return SetError(@error, @extended, False) Return $ARESULT[0] EndFunc Func _WinAPI_WriteFile($HFILE, $PBUFFER, $ITOWRITE, ByRef $IWRITTEN, $POVERLAPPED = 0) Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteFile", "handle", $HFILE, "ptr", $PBUFFER, "dword", $ITOWRITE, "dword*", 0, "ptr", $POVERLAPPED) If @error Then Return SetError(@error, @extended, False) $IWRITTEN = $ARESULT[4] Return $ARESULT[0] EndFunc Func _WinAPI_WriteProcessMemory($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IWRITTEN, $SBUFFER = "ptr") Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, $SBUFFER, $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0) If @error Then Return SetError(@error, @extended, False) $IWRITTEN = $ARESULT[5] Return $ARESULT[0] EndFunc Global Const $_UDF_GLOBALIDS_OFFSET = 2 Global Const $_UDF_GLOBALID_MAX_WIN = 16 Global Const $_UDF_STARTID = 10000 Global Const $_UDF_GLOBALID_MAX_IDS = 55535 Global Const $__UDFGUICONSTANT_WS_VISIBLE = 268435456 Global Const $__UDFGUICONSTANT_WS_CHILD = 1073741824 Global $_UDF_GLOBALIDS_USED[$_UDF_GLOBALID_MAX_WIN][$_UDF_GLOBALID_MAX_IDS + $_UDF_GLOBALIDS_OFFSET + 1] Func __UDF_GETNEXTGLOBALID($HWND) Local $NCTRLID, $IUSEDINDEX = -1, $FALLUSED = True If Not WinExists($HWND) Then Return SetError(-1, -1, 0) For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1 If $_UDF_GLOBALIDS_USED[$IINDEX][0] <> 0 Then If Not WinExists($_UDF_GLOBALIDS_USED[$IINDEX][0]) Then For $X = 0 To UBound($_UDF_GLOBALIDS_USED, 2) - 1 $_UDF_GLOBALIDS_USED[$IINDEX][$X] = 0 Next $_UDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID $FALLUSED = False EndIf EndIf Next For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1 If $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then $IUSEDINDEX = $IINDEX ExitLoop EndIf Next If $IUSEDINDEX = -1 Then For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1 If $_UDF_GLOBALIDS_USED[$IINDEX][0] = 0 Then $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND $_UDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID $FALLUSED = False $IUSEDINDEX = $IINDEX ExitLoop EndIf Next EndIf If $IUSEDINDEX = -1 And $FALLUSED Then Return SetError(16, 0, 0) If $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1] = $_UDF_STARTID + $_UDF_GLOBALID_MAX_IDS Then For $IIDINDEX = $_UDF_GLOBALIDS_OFFSET To UBound($_UDF_GLOBALIDS_USED, 2) - 1 If $_UDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = 0 Then $NCTRLID = ($IIDINDEX - $_UDF_GLOBALIDS_OFFSET) + 10000 $_UDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = $NCTRLID Return $NCTRLID EndIf Next Return SetError(-1, $_UDF_GLOBALID_MAX_IDS, 0) EndIf $NCTRLID = $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1] $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1] += 1 $_UDF_GLOBALIDS_USED[$IUSEDINDEX][($NCTRLID - 10000) + $_UDF_GLOBALIDS_OFFSET] = $NCTRLID Return $NCTRLID EndFunc Func __UDF_FREEGLOBALID($HWND, $IGLOBALID) If $IGLOBALID - $_UDF_STARTID < 0 Or $IGLOBALID - $_UDF_STARTID > $_UDF_GLOBALID_MAX_IDS Then Return SetError(-1, 0, False) For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1 If $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then For $X = $_UDF_GLOBALIDS_OFFSET To UBound($_UDF_GLOBALIDS_USED, 2) - 1 If $_UDF_GLOBALIDS_USED[$IINDEX][$X] = $IGLOBALID Then $_UDF_GLOBALIDS_USED[$IINDEX][$X] = 0 Return True EndIf Next Return SetError(-3, 0, False) EndIf Next Return SetError(-2, 0, False) EndFunc Func __UDF_DEBUGPRINT($STEXT, $ILINE = @ScriptLineNumber, $ERR = @error, $EXT = @extended) ConsoleWrite("!===========================================================" & @CRLF & "+======================================================" & @CRLF & "-->Line(" & StringFormat("%04d", $ILINE) & "):" & @TAB & $STEXT & @CRLF & "+======================================================" & @CRLF) Return SetError($ERR, $EXT, 1) EndFunc Func __UDF_VALIDATECLASSNAME($HWND, $SCLASSNAMES) __UDF_DEBUGPRINT("This is for debugging only, set the debug variable to false before submitting") If _WinAPI_IsClassName($HWND, $SCLASSNAMES) Then Return True Local $SSEPARATOR = Opt("GUIDataSeparatorChar") $SCLASSNAMES = StringReplace($SCLASSNAMES, $SSEPARATOR, ",") __UDF_DEBUGPRINT("Invalid Class Type(s):" & @LF & @TAB & "Expecting Type(s): " & $SCLASSNAMES & @LF & @TAB & "Received Type : " & _WinAPI_GetClassName($HWND)) Exit EndFunc Global $__GHSBLASTWND Global $DEBUG_SB = False Global Const $__STATUSBARCONSTANT_CLASSNAME = "msctls_statusbar32" Global Const $__STATUSBARCONSTANT_WM_SIZE = 5 Global Const $__STATUSBARCONSTANT_CLR_DEFAULT = -16777216 Global Const $TAGBORDERS = "int BX;int BY;int RX" Func _GUICtrlStatusBar_Create($HWND, $VPARTEDGE = -1, $VPARTTEXT = "", $ISTYLES = -1, $IEXSTYLES = -1) If Not IsHWnd($HWND) Then Return SetError(1, 0, 0) Local $ISTYLE = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE) If $ISTYLES = -1 Then $ISTYLES = 0 If $IEXSTYLES = -1 Then $IEXSTYLES = 0 Local $APARTWIDTH[1], $APARTTEXT[1] If @NumParams > 1 Then If IsArray($VPARTEDGE) Then $APARTWIDTH = $VPARTEDGE Else $APARTWIDTH[0] = $VPARTEDGE EndIf If @NumParams = 2 Then ReDim $APARTTEXT[UBound($APARTWIDTH)] Else If IsArray($VPARTTEXT) Then $APARTTEXT = $VPARTTEXT Else $APARTTEXT[0] = $VPARTTEXT EndIf If UBound($APARTWIDTH) <> UBound($APARTTEXT) Then Local $ILAST If UBound($APARTWIDTH) > UBound($APARTTEXT) Then $ILAST = UBound($APARTTEXT) ReDim $APARTTEXT[UBound($APARTWIDTH)] For $X = $ILAST To UBound($APARTTEXT) - 1 $APARTWIDTH[$X] = "" Next Else $ILAST = UBound($APARTWIDTH) ReDim $APARTWIDTH[UBound($APARTTEXT)] For $X = $ILAST To UBound($APARTWIDTH) - 1 $APARTWIDTH[$X] = $APARTWIDTH[$X - 1] + 75 Next $APARTWIDTH[UBound($APARTTEXT) - 1] = -1 EndIf EndIf EndIf If Not IsHWnd($HWND) Then $HWND = HWnd($HWND) If @NumParams > 3 Then $ISTYLE = BitOR($ISTYLE, $ISTYLES) EndIf Local $NCTRLID = __UDF_GETNEXTGLOBALID($HWND) If @error Then Return SetError(@error, @extended, 0) Local $HWNDSBAR = _WinAPI_CreateWindowEx($IEXSTYLES, $__STATUSBARCONSTANT_CLASSNAME, "", $ISTYLE, 0, 0, 0, 0, $HWND, $NCTRLID) If @error Then Return SetError(@error, @extended, 0) If @NumParams > 1 Then _GUICtrlStatusBar_SetParts($HWNDSBAR, UBound($APARTWIDTH), $APARTWIDTH) For $X = 0 To UBound($APARTTEXT) - 1 _GUICtrlStatusBar_SetText($HWNDSBAR, $APARTTEXT[$X], $X) Next EndIf Return $HWNDSBAR EndFunc Func _GUICtrlStatusBar_Destroy(ByRef $HWND) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) If Not _WinAPI_IsClassName($HWND, $__STATUSBARCONSTANT_CLASSNAME) Then Return SetError(2, 2, False) Local $DESTROYED = 0 If IsHWnd($HWND) Then If _WinAPI_InProcess($HWND, $__GHSBLASTWND) Then Local $NCTRLID = _WinAPI_GetDlgCtrlID($HWND) Local $HPARENT = _WinAPI_GetParent($HWND) $DESTROYED = _WinAPI_DestroyWindow($HWND) Local $IRET = __UDF_FREEGLOBALID($HPARENT, $NCTRLID) If Not $IRET Then EndIf Else Return SetError(1, 1, False) EndIf EndIf If $DESTROYED Then $HWND = 0 Return $DESTROYED <> 0 EndFunc Func _GUICtrlStatusBar_EmbedControl($HWND, $IPART, $HCONTROL, $IFIT = 4) Local $ARECT = _GUICtrlStatusBar_GetRect($HWND, $IPART) Local $IBARX = $ARECT[0] Local $IBARY = $ARECT[1] Local $IBARW = $ARECT[2] - $IBARX Local $IBARH = $ARECT[3] - $IBARY Local $ICONX = $IBARX Local $ICONY = $IBARY Local $ICONW = _WinAPI_GetWindowWidth($HCONTROL) Local $ICONH = _WinAPI_GetWindowHeight($HCONTROL) If $ICONW > $IBARW Then $ICONW = $IBARW If $ICONH > $IBARH Then $ICONH = $IBARH Local $IPADX = ($IBARW - $ICONW) / 2 Local $IPADY = ($IBARH - $ICONH) / 2 If $IPADX < 0 Then $IPADX = 0 If $IPADY < 0 Then $IPADY = 0 If BitAND($IFIT, 1) = 1 Then $ICONX = $IBARX + $IPADX If BitAND($IFIT, 2) = 2 Then $ICONY = $IBARY + $IPADY If BitAND($IFIT, 4) = 4 Then $IPADX = _GUICtrlStatusBar_GetBordersRect($HWND) $IPADY = _GUICtrlStatusBar_GetBordersVert($HWND) $ICONX = $IBARX If _GUICtrlStatusBar_IsSimple($HWND) Then $ICONX += $IPADX $ICONY = $IBARY + $IPADY $ICONW = $IBARW - ($IPADX * 2) $ICONH = $IBARH - ($IPADY * 2) EndIf _WinAPI_SetParent($HCONTROL, $HWND) _WinAPI_MoveWindow($HCONTROL, $ICONX, $ICONY, $ICONW, $ICONH) EndFunc Func _GUICtrlStatusBar_GetBorders($HWND) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Local $TBORDERS = DllStructCreate($TAGBORDERS) Local $PBORDERS = DllStructGetPtr($TBORDERS) Local $IRET If _WinAPI_InProcess($HWND, $__GHSBLASTWND) Then $IRET = _SendMessage($HWND, $SB_GETBORDERS, 0, $PBORDERS, 0, "wparam", "ptr") Else Local $ISIZE = DllStructGetSize($TBORDERS) Local $TMEMMAP Local $PMEMORY = _MEMINIT($HWND, $ISIZE, $TMEMMAP) $IRET = _SendMessage($HWND, $SB_GETBORDERS, 0, $PMEMORY, 0, "wparam", "ptr") _MEMREAD($TMEMMAP, $PMEMORY, $PBORDERS, $ISIZE) _MEMFREE($TMEMMAP) EndIf Local $ABORDERS[3] If $IRET = 0 Then Return SetError(-1, -1, $ABORDERS) $ABORDERS[0] = DllStructGetData($TBORDERS, "BX") $ABORDERS[1] = DllStructGetData($TBORDERS, "BY") $ABORDERS[2] = DllStructGetData($TBORDERS, "RX") Return $ABORDERS EndFunc Func _GUICtrlStatusBar_GetBordersHorz($HWND) Local $ABORDERS = _GUICtrlStatusBar_GetBorders($HWND) Return SetError(@error, @extended, $ABORDERS[0]) EndFunc Func _GUICtrlStatusBar_GetBordersRect($HWND) Local $ABORDERS = _GUICtrlStatusBar_GetBorders($HWND) Return SetError(@error, @extended, $ABORDERS[2]) EndFunc Func _GUICtrlStatusBar_GetBordersVert($HWND) Local $ABORDERS = _GUICtrlStatusBar_GetBorders($HWND) Return SetError(@error, @extended, $ABORDERS[1]) EndFunc Func _GUICtrlStatusBar_GetCount($HWND) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Return _SendMessage($HWND, $SB_GETPARTS) EndFunc Func _GUICtrlStatusBar_GetHeight($HWND) Local $TRECT = _GUICtrlStatusBar_GetRectEx($HWND, 0) Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top") - (_GUICtrlStatusBar_GetBordersVert($HWND) * 2) EndFunc Func _GUICtrlStatusBar_GetIcon($HWND, $IINDEX = 0) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Return _SendMessage($HWND, $SB_GETICON, $IINDEX, 0, 0, "wparam", "lparam", "hwnd") EndFunc Func _GUICtrlStatusBar_GetParts($HWND) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Local $ICOUNT = _GUICtrlStatusBar_GetCount($HWND) Local $TPARTS = DllStructCreate("int[" & $ICOUNT & "]") Local $PPARTS = DllStructGetPtr($TPARTS) Local $APARTS[$ICOUNT + 1] If _WinAPI_InProcess($HWND, $__GHSBLASTWND) Then $APARTS[0] = _SendMessage($HWND, $SB_GETPARTS, $ICOUNT, $PPARTS, 0, "wparam", "ptr") Else Local $IPARTS = DllStructGetSize($TPARTS) Local $TMEMMAP Local $PMEMORY = _MEMINIT($HWND, $IPARTS, $TMEMMAP) $APARTS[0] = _SendMessage($HWND, $SB_GETPARTS, $ICOUNT, $PMEMORY, 0, "wparam", "ptr") _MEMREAD($TMEMMAP, $PMEMORY, $PPARTS, $IPARTS) _MEMFREE($TMEMMAP) EndIf For $II = 1 To $ICOUNT $APARTS[$II] = DllStructGetData($TPARTS, 1, $II) Next Return $APARTS EndFunc Func _GUICtrlStatusBar_GetRect($HWND, $IPART) Local $TRECT = _GUICtrlStatusBar_GetRectEx($HWND, $IPART) If @error Then Return SetError(@error, 0, 0) Local $ARECT[4] $ARECT[0] = DllStructGetData($TRECT, "Left") $ARECT[1] = DllStructGetData($TRECT, "Top") $ARECT[2] = DllStructGetData($TRECT, "Right") $ARECT[3] = DllStructGetData($TRECT, "Bottom") Return $ARECT EndFunc Func _GUICtrlStatusBar_GetRectEx($HWND, $IPART) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Local $TRECT = DllStructCreate($TAGRECT) Local $PRECT = DllStructGetPtr($TRECT) Local $IRET If _WinAPI_InProcess($HWND, $__GHSBLASTWND) Then $IRET = _SendMessage($HWND, $SB_GETRECT, $IPART, $PRECT, 0, "wparam", "ptr") Else Local $IRECT = DllStructGetSize($TRECT) Local $TMEMMAP Local $PMEMORY = _MEMINIT($HWND, $IRECT, $TMEMMAP) $IRET = _SendMessage($HWND, $SB_GETRECT, $IPART, $PMEMORY, 0, "wparam", "ptr") _MEMREAD($TMEMMAP, $PMEMORY, $PRECT, $IRECT) _MEMFREE($TMEMMAP) EndIf Return SetError($IRET = 0, 0, $TRECT) EndFunc Func _GUICtrlStatusBar_GetText($HWND, $IPART) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Local $FUNICODE = _GUICtrlStatusBar_GetUnicodeFormat($HWND) Local $IBUFFER = _GUICtrlStatusBar_GetTextLength($HWND, $IPART) If $IBUFFER = 0 Then Return SetError(1, 0, "") Local $TBUFFER If $FUNICODE Then $TBUFFER = DllStructCreate("wchar Text[" & $IBUFFER & "]") $IBUFFER *= 2 Else $TBUFFER = DllStructCreate("char Text[" & $IBUFFER & "]") EndIf Local $PBUFFER = DllStructGetPtr($TBUFFER) If _WinAPI_InProcess($HWND, $__GHSBLASTWND) Then _SendMessage($HWND, $SB_GETTEXTW, $IPART, $PBUFFER, 0, "wparam", "ptr") Else Local $TMEMMAP Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP) If $FUNICODE Then _SendMessage($HWND, $SB_GETTEXTW, $IPART, $PMEMORY, 0, "wparam", "ptr") Else _SendMessage($HWND, $SB_GETTEXT, $IPART, $PMEMORY, 0, "wparam", "ptr") EndIf _MEMREAD($TMEMMAP, $PMEMORY, $PBUFFER, $IBUFFER) _MEMFREE($TMEMMAP) EndIf Return DllStructGetData($TBUFFER, "Text") EndFunc Func _GUICtrlStatusBar_GetTextFlags($HWND, $IPART) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) If _GUICtrlStatusBar_GetUnicodeFormat($HWND) Then Return _SendMessage($HWND, $SB_GETTEXTLENGTHW, $IPART) Else Return _SendMessage($HWND, $SB_GETTEXTLENGTH, $IPART) EndIf EndFunc Func _GUICtrlStatusBar_GetTextLength($HWND, $IPART) Return _WinAPI_LoWord(_GUICtrlStatusBar_GetTextFlags($HWND, $IPART)) EndFunc Func _GUICtrlStatusBar_GetTextLengthEx($HWND, $IPART) Return _WinAPI_HiWord(_GUICtrlStatusBar_GetTextFlags($HWND, $IPART)) EndFunc Func _GUICtrlStatusBar_GetTipText($HWND, $IPART) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Local $FUNICODE = _GUICtrlStatusBar_GetUnicodeFormat($HWND) Local $TBUFFER If $FUNICODE Then $TBUFFER = DllStructCreate("wchar Text[4096]") Else $TBUFFER = DllStructCreate("char Text[4096]") EndIf Local $PBUFFER = DllStructGetPtr($TBUFFER) If _WinAPI_InProcess($HWND, $__GHSBLASTWND) Then _SendMessage($HWND, $SB_GETTIPTEXTW, _WinAPI_MakeLong($IPART, 4096), $PBUFFER, 0, "wparam", "ptr") Else Local $TMEMMAP Local $PMEMORY = _MEMINIT($HWND, 4096, $TMEMMAP) If $FUNICODE Then _SendMessage($HWND, $SB_GETTIPTEXTW, _WinAPI_MakeLong($IPART, 4096), $PMEMORY, 0, "wparam", "ptr") Else _SendMessage($HWND, $SB_GETTIPTEXTA, _WinAPI_MakeLong($IPART, 4096), $PMEMORY, 0, "wparam", "ptr") EndIf _MEMREAD($TMEMMAP, $PMEMORY, $PBUFFER, 4096) _MEMFREE($TMEMMAP) EndIf Return DllStructGetData($TBUFFER, "Text") EndFunc Func _GUICtrlStatusBar_GetUnicodeFormat($HWND) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Return _SendMessage($HWND, $SB_GETUNICODEFORMAT) <> 0 EndFunc Func _GUICtrlStatusBar_GetWidth($HWND, $IPART) Local $TRECT = _GUICtrlStatusBar_GetRectEx($HWND, $IPART) Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left") - (_GUICtrlStatusBar_GetBordersHorz($HWND) * 2) EndFunc Func _GUICtrlStatusBar_IsSimple($HWND) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Return _SendMessage($HWND, $SB_ISSIMPLE) <> 0 EndFunc Func _GUICtrlStatusBar_Resize($HWND) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) _SendMessage($HWND, $__STATUSBARCONSTANT_WM_SIZE) EndFunc Func _GUICtrlStatusBar_SetBkColor($HWND, $ICOLOR) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) $ICOLOR = _SendMessage($HWND, $SB_SETBKCOLOR, 0, $ICOLOR) If $ICOLOR = $__STATUSBARCONSTANT_CLR_DEFAULT Then Return "0x" & Hex($__STATUSBARCONSTANT_CLR_DEFAULT) Return $ICOLOR EndFunc Func _GUICtrlStatusBar_SetIcon($HWND, $IPART, $HICON = -1, $SICONFILE = "") If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) If $HICON = -1 Then Return _SendMessage($HWND, $SB_SETICON, $IPART, $HICON, 0, "wparam", "handle") <> 0 If StringLen($SICONFILE) <= 0 Then Return _SendMessage($HWND, $SB_SETICON, $IPART, $HICON) <> 0 Local $TICON = DllStructCreate("handle") Local $VRESULT = DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $SICONFILE, "int", $HICON, "ptr", 0, "ptr", DllStructGetPtr($TICON), "uint", 1) If @error Then Return SetError(@error, @extended, False) $VRESULT = $VRESULT[0] If $VRESULT > 0 Then $VRESULT = _SendMessage($HWND, $SB_SETICON, $IPART, DllStructGetData($TICON, 1), 0, "wparam", "handle") DllCall("user32.dll", "bool", "DestroyIcon", "handle", DllStructGetData($TICON, 1)) Return $VRESULT EndFunc Func _GUICtrlStatusBar_SetMinHeight($HWND, $IMINHEIGHT) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) _SendMessage($HWND, $SB_SETMINHEIGHT, $IMINHEIGHT) _GUICtrlStatusBar_Resize($HWND) EndFunc Func _GUICtrlStatusBar_SetParts($HWND, $IAPARTS = -1, $IAPARTWIDTH = 25) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Local $TPARTS, $IPARTS = 1 If IsArray($IAPARTS) <> 0 Then $IAPARTS[UBound($IAPARTS) - 1] = -1 $IPARTS = UBound($IAPARTS) $TPARTS = DllStructCreate("int[" & $IPARTS & "]") For $X = 0 To $IPARTS - 2 DllStructSetData($TPARTS, 1, $IAPARTS[$X], $X + 1) Next DllStructSetData($TPARTS, 1, -1, $IPARTS) ElseIf IsArray($IAPARTWIDTH) <> 0 Then $IPARTS = UBound($IAPARTWIDTH) $TPARTS = DllStructCreate("int[" & $IPARTS & "]") For $X = 0 To $IPARTS - 2 DllStructSetData($TPARTS, 1, $IAPARTWIDTH[$X], $X + 1) Next DllStructSetData($TPARTS, 1, -1, $IPARTS) ElseIf $IAPARTS > 1 Then $IPARTS = $IAPARTS $TPARTS = DllStructCreate("int[" & $IPARTS & "]") For $X = 1 To $IPARTS - 1 DllStructSetData($TPARTS, 1, $IAPARTWIDTH * $X, $X) Next DllStructSetData($TPARTS, 1, -1, $IPARTS) Else $TPARTS = DllStructCreate("int") DllStructSetData($TPARTS, $IPARTS, -1) EndIf Local $PPARTS = DllStructGetPtr($TPARTS) If _WinAPI_InProcess($HWND, $__GHSBLASTWND) Then _SendMessage($HWND, $SB_SETPARTS, $IPARTS, $PPARTS, 0, "wparam", "ptr") Else Local $ISIZE = DllStructGetSize($TPARTS) Local $TMEMMAP Local $PMEMORY = _MEMINIT($HWND, $ISIZE, $TMEMMAP) _MEMWRITE($TMEMMAP, $PPARTS) _SendMessage($HWND, $SB_SETPARTS, $IPARTS, $PMEMORY, 0, "wparam", "ptr") _MEMFREE($TMEMMAP) EndIf _GUICtrlStatusBar_Resize($HWND) Return True EndFunc Func _GUICtrlStatusBar_SetSimple($HWND, $FSIMPLE = True) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) _SendMessage($HWND, $SB_SIMPLE, $FSIMPLE) EndFunc Func _GUICtrlStatusBar_SetText($HWND, $STEXT = "", $IPART = 0, $IUFLAG = 0) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Local $FUNICODE = _GUICtrlStatusBar_GetUnicodeFormat($HWND) Local $IBUFFER = StringLen($STEXT) + 1 Local $TTEXT If $FUNICODE Then $TTEXT = DllStructCreate("wchar Text[" & $IBUFFER & "]") $IBUFFER *= 2 Else $TTEXT = DllStructCreate("char Text[" & $IBUFFER & "]") EndIf Local $PBUFFER = DllStructGetPtr($TTEXT) DllStructSetData($TTEXT, "Text", $STEXT) If _GUICtrlStatusBar_IsSimple($HWND) Then $IPART = $SB_SIMPLEID Local $IRET If _WinAPI_InProcess($HWND, $__GHSBLASTWND) Then $IRET = _SendMessage($HWND, $SB_SETTEXTW, BitOR($IPART, $IUFLAG), $PBUFFER, 0, "wparam", "ptr") Else Local $TMEMMAP Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP) _MEMWRITE($TMEMMAP, $PBUFFER) If $FUNICODE Then $IRET = _SendMessage($HWND, $SB_SETTEXTW, BitOR($IPART, $IUFLAG), $PMEMORY, 0, "wparam", "ptr") Else $IRET = _SendMessage($HWND, $SB_SETTEXT, BitOR($IPART, $IUFLAG), $PMEMORY, 0, "wparam", "ptr") EndIf _MEMFREE($TMEMMAP) EndIf Return $IRET <> 0 EndFunc Func _GUICtrlStatusBar_SetTipText($HWND, $IPART, $STEXT) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Local $FUNICODE = _GUICtrlStatusBar_GetUnicodeFormat($HWND) Local $IBUFFER = StringLen($STEXT) + 1 Local $TTEXT If $FUNICODE Then $TTEXT = DllStructCreate("wchar TipText[" & $IBUFFER & "]") $IBUFFER *= 2 Else $TTEXT = DllStructCreate("char TipText[" & $IBUFFER & "]") EndIf Local $PBUFFER = DllStructGetPtr($TTEXT) DllStructSetData($TTEXT, "TipText", $STEXT) If _WinAPI_InProcess($HWND, $__GHSBLASTWND) Then _SendMessage($HWND, $SB_SETTIPTEXTW, $IPART, $PBUFFER, 0, "wparam", "ptr") Else Local $TMEMMAP Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP) _MEMWRITE($TMEMMAP, $PBUFFER, $PMEMORY, $IBUFFER) If $FUNICODE Then _SendMessage($HWND, $SB_SETTIPTEXTW, $IPART, $PMEMORY, 0, "wparam", "ptr") Else _SendMessage($HWND, $SB_SETTIPTEXTA, $IPART, $PMEMORY, 0, "wparam", "ptr") EndIf _MEMFREE($TMEMMAP) EndIf EndFunc Func _GUICtrlStatusBar_SetUnicodeFormat($HWND, $FUNICODE = True) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Return _SendMessage($HWND, $SB_SETUNICODEFORMAT, $FUNICODE) EndFunc Func _GUICtrlStatusBar_ShowHide($HWND, $ISTATE) If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) If $ISTATE <> @SW_HIDE And $ISTATE <> @SW_SHOW Then Return SetError(1, 1, False) Return _WinAPI_ShowWindow($HWND, $ISTATE) EndFunc Global Const $SS_LEFT = 0 Global Const $SS_CENTER = 1 Global Const $SS_RIGHT = 2 Global Const $SS_ICON = 3 Global Const $SS_BLACKRECT = 4 Global Const $SS_GRAYRECT = 5 Global Const $SS_WHITERECT = 6 Global Const $SS_BLACKFRAME = 7 Global Const $SS_GRAYFRAME = 8 Global Const $SS_WHITEFRAME = 9 Global Const $SS_SIMPLE = 11 Global Const $SS_LEFTNOWORDWRAP = 12 Global Const $SS_BITMAP = 14 Global Const $SS_ETCHEDHORZ = 16 Global Const $SS_ETCHEDVERT = 17 Global Const $SS_ETCHEDFRAME = 18 Global Const $SS_NOPREFIX = 128 Global Const $SS_NOTIFY = 256 Global Const $SS_CENTERIMAGE = 512 Global Const $SS_RIGHTJUST = 1024 Global Const $SS_SUNKEN = 4096 Global Const $GUI_SS_DEFAULT_LABEL = 0 Global Const $GUI_SS_DEFAULT_GRAPHIC = 0 Global Const $GUI_SS_DEFAULT_ICON = $SS_NOTIFY Global Const $GUI_SS_DEFAULT_PIC = $SS_NOTIFY Global Const $WS_TILED = 0 Global Const $WS_OVERLAPPED = 0 Global Const $WS_MAXIMIZEBOX = 65536 Global Const $WS_MINIMIZEBOX = 131072 Global Const $WS_TABSTOP = 65536 Global Const $WS_GROUP = 131072 Global Const $WS_SIZEBOX = 262144 Global Const $WS_THICKFRAME = 262144 Global Const $WS_SYSMENU = 524288 Global Const $WS_HSCROLL = 1048576 Global Const $WS_VSCROLL = 2097152 Global Const $WS_DLGFRAME = 4194304 Global Const $WS_BORDER = 8388608 Global Const $WS_CAPTION = 12582912 Global Const $WS_OVERLAPPEDWINDOW = 13565952 Global Const $WS_TILEDWINDOW = 13565952 Global Const $WS_MAXIMIZE = 16777216 Global Const $WS_CLIPCHILDREN = 33554432 Global Const $WS_CLIPSIBLINGS = 67108864 Global Const $WS_DISABLED = 134217728 Global Const $WS_VISIBLE = 268435456 Global Const $WS_MINIMIZE = 536870912 Global Const $WS_CHILD = 1073741824 Global Const $WS_POPUP = -2147483648 Global Const $WS_POPUPWINDOW = -2138570752 Global Const $DS_MODALFRAME = 128 Global Const $DS_SETFOREGROUND = 512 Global Const $DS_CONTEXTHELP = 8192 Global Const $WS_EX_ACCEPTFILES = 16 Global Const $WS_EX_MDICHILD = 64 Global Const $WS_EX_APPWINDOW = 262144 Global Const $WS_EX_COMPOSITED = 33554432 Global Const $WS_EX_CLIENTEDGE = 512 Global Const $WS_EX_CONTEXTHELP = 1024 Global Const $WS_EX_DLGMODALFRAME = 1 Global Const $WS_EX_LEFTSCROLLBAR = 16384 Global Const $WS_EX_OVERLAPPEDWINDOW = 768 Global Const $WS_EX_RIGHT = 4096 Global Const $WS_EX_STATICEDGE = 131072 Global Const $WS_EX_TOOLWINDOW = 128 Global Const $WS_EX_TOPMOST = 8 Global Const $WS_EX_TRANSPARENT = 32 Global Const $WS_EX_WINDOWEDGE = 256 Global Const $WS_EX_LAYERED = 524288 Global Const $WS_EX_CONTROLPARENT = 65536 Global Const $WS_EX_LAYOUTRTL = 4194304 Global Const $WS_EX_RTLREADING = 8192 Global Const $WM_GETTEXTLENGTH = 14 Global Const $WM_GETTEXT = 13 Global Const $WM_SIZE = 5 Global Const $WM_SIZING = 532 Global Const $WM_USER = 1024 Global Const $WM_CREATE = 1 Global Const $WM_DESTROY = 2 Global Const $WM_MOVE = 3 Global Const $WM_ACTIVATE = 6 Global Const $WM_SETFOCUS = 7 Global Const $WM_KILLFOCUS = 8 Global Const $WM_ENABLE = 10 Global Const $WM_SETREDRAW = 11 Global Const $WM_SETTEXT = 12 Global Const $WM_PAINT = 15 Global Const $WM_CLOSE = 16 Global Const $WM_QUIT = 18 Global Const $WM_ERASEBKGND = 20 Global Const $WM_SYSCOLORCHANGE = 21 Global Const $WM_SHOWWINDOW = 24 Global Const $WM_WININICHANGE = 26 Global Const $WM_DEVMODECHANGE = 27 Global Const $WM_ACTIVATEAPP = 28 Global Const $WM_FONTCHANGE = 29 Global Const $WM_TIMECHANGE = 30 Global Const $WM_CANCELMODE = 31 Global Const $WM_SETCURSOR = 32 Global Const $WM_MOUSEACTIVATE = 33 Global Const $WM_CHILDACTIVATE = 34 Global Const $WM_QUEUESYNC = 35 Global Const $WM_GETMINMAXINFO = 36 Global Const $WM_PAINTICON = 38 Global Const $WM_ICONERASEBKGND = 39 Global Const $WM_NEXTDLGCTL = 40 Global Const $WM_SPOOLERSTATUS = 42 Global Const $WM_DRAWITEM = 43 Global Const $WM_MEASUREITEM = 44 Global Const $WM_DELETEITEM = 45 Global Const $WM_VKEYTOITEM = 46 Global Const $WM_CHARTOITEM = 47 Global Const $WM_SETFONT = 48 Global Const $WM_GETFONT = 49 Global Const $WM_SETHOTKEY = 50 Global Const $WM_GETHOTKEY = 51 Global Const $WM_QUERYDRAGICON = 55 Global Const $WM_COMPAREITEM = 57 Global Const $WM_GETOBJECT = 61 Global Const $WM_COMPACTING = 65 Global Const $WM_COMMNOTIFY = 68 Global Const $WM_WINDOWPOSCHANGING = 70 Global Const $WM_WINDOWPOSCHANGED = 71 Global Const $WM_POWER = 72 Global Const $WM_NOTIFY = 78 Global Const $WM_COPYDATA = 74 Global Const $WM_CANCELJOURNAL = 75 Global Const $WM_INPUTLANGCHANGEREQUEST = 80 Global Const $WM_INPUTLANGCHANGE = 81 Global Const $WM_TCARD = 82 Global Const $WM_HELP = 83 Global Const $WM_USERCHANGED = 84 Global Const $WM_NOTIFYFORMAT = 85 Global Const $WM_CUT = 768 Global Const $WM_COPY = 769 Global Const $WM_PASTE = 770 Global Const $WM_CLEAR = 771 Global Const $WM_UNDO = 772 Global Const $WM_CONTEXTMENU = 123 Global Const $WM_STYLECHANGING = 124 Global Const $WM_STYLECHANGED = 125 Global Const $WM_DISPLAYCHANGE = 126 Global Const $WM_GETICON = 127 Global Const $WM_SETICON = 128 Global Const $WM_NCCREATE = 129 Global Const $WM_NCDESTROY = 130 Global Const $WM_NCCALCSIZE = 131 Global Const $WM_NCHITTEST = 132 Global Const $WM_NCPAINT = 133 Global Const $WM_NCACTIVATE = 134 Global Const $WM_GETDLGCODE = 135 Global Const $WM_SYNCPAINT = 136 Global Const $WM_NCMOUSEMOVE = 160 Global Const $WM_NCLBUTTONDOWN = 161 Global Const $WM_NCLBUTTONUP = 162 Global Const $WM_NCLBUTTONDBLCLK = 163 Global Const $WM_NCRBUTTONDOWN = 164 Global Const $WM_NCRBUTTONUP = 165 Global Const $WM_NCRBUTTONDBLCLK = 166 Global Const $WM_NCMBUTTONDOWN = 167 Global Const $WM_NCMBUTTONUP = 168 Global Const $WM_NCMBUTTONDBLCLK = 169 Global Const $WM_KEYDOWN = 256 Global Const $WM_KEYUP = 257 Global Const $WM_CHAR = 258 Global Const $WM_DEADCHAR = 259 Global Const $WM_SYSKEYDOWN = 260 Global Const $WM_SYSKEYUP = 261 Global Const $WM_SYSCHAR = 262 Global Const $WM_SYSDEADCHAR = 263 Global Const $WM_INITDIALOG = 272 Global Const $WM_COMMAND = 273 Global Const $WM_SYSCOMMAND = 274 Global Const $WM_TIMER = 275 Global Const $WM_HSCROLL = 276 Global Const $WM_VSCROLL = 277 Global Const $WM_INITMENU = 278 Global Const $WM_INITMENUPOPUP = 279 Global Const $WM_MENUSELECT = 287 Global Const $WM_MENUCHAR = 288 Global Const $WM_ENTERIDLE = 289 Global Const $WM_MENURBUTTONUP = 290 Global Const $WM_MENUDRAG = 291 Global Const $WM_MENUGETOBJECT = 292 Global Const $WM_UNINITMENUPOPUP = 293 Global Const $WM_MENUCOMMAND = 294 Global Const $WM_CHANGEUISTATE = 295 Global Const $WM_UPDATEUISTATE = 296 Global Const $WM_QUERYUISTATE = 297 Global Const $WM_CTLCOLORMSGBOX = 306 Global Const $WM_CTLCOLOREDIT = 307 Global Const $WM_CTLCOLORLISTBOX = 308 Global Const $WM_CTLCOLORBTN = 309 Global Const $WM_CTLCOLORDLG = 310 Global Const $WM_CTLCOLORSCROLLBAR = 311 Global Const $WM_CTLCOLORSTATIC = 312 Global Const $WM_CTLCOLOR = 25 Global Const $MN_GETHMENU = 481 Global Const $NM_FIRST = 0 Global Const $NM_OUTOFMEMORY = $NM_FIRST - 1 Global Const $NM_CLICK = $NM_FIRST - 2 Global Const $NM_DBLCLK = $NM_FIRST - 3 Global Const $NM_RETURN = $NM_FIRST - 4 Global Const $NM_RCLICK = $NM_FIRST - 5 Global Const $NM_RDBLCLK = $NM_FIRST - 6 Global Const $NM_SETFOCUS = $NM_FIRST - 7 Global Const $NM_KILLFOCUS = $NM_FIRST - 8 Global Const $NM_CUSTOMDRAW = $NM_FIRST - 12 Global Const $NM_HOVER = $NM_FIRST - 13 Global Const $NM_NCHITTEST = $NM_FIRST - 14 Global Const $NM_KEYDOWN = $NM_FIRST - 15 Global Const $NM_RELEASEDCAPTURE = $NM_FIRST - 16 Global Const $NM_SETCURSOR = $NM_FIRST - 17 Global Const $NM_CHAR = $NM_FIRST - 18 Global Const $NM_TOOLTIPSCREATED = $NM_FIRST - 19 Global Const $NM_LDOWN = $NM_FIRST - 20 Global Const $NM_RDOWN = $NM_FIRST - 21 Global Const $NM_THEMECHANGED = $NM_FIRST - 22 Global Const $WM_MOUSEMOVE = 512 Global Const $WM_LBUTTONDOWN = 513 Global Const $WM_LBUTTONUP = 514 Global Const $WM_LBUTTONDBLCLK = 515 Global Const $WM_RBUTTONDOWN = 516 Global Const $WM_RBUTTONUP = 517 Global Const $WM_RBUTTONDBLCK = 518 Global Const $WM_MBUTTONDOWN = 519 Global Const $WM_MBUTTONUP = 520 Global Const $WM_MBUTTONDBLCK = 521 Global Const $WM_MOUSEWHEEL = 522 Global Const $WM_XBUTTONDOWN = 523 Global Const $WM_XBUTTONUP = 524 Global Const $WM_XBUTTONDBLCLK = 525 Global Const $WM_MOUSEHWHEEL = 526 Global Const $PS_SOLID = 0 Global Const $PS_DASH = 1 Global Const $PS_DOT = 2 Global Const $PS_DASHDOT = 3 Global Const $PS_DASHDOTDOT = 4 Global Const $PS_NULL = 5 Global Const $PS_INSIDEFRAME = 6 Global Const $LWA_ALPHA = 2 Global Const $LWA_COLORKEY = 1 Global Const $RGN_AND = 1 Global Const $RGN_OR = 2 Global Const $RGN_XOR = 3 Global Const $RGN_DIFF = 4 Global Const $RGN_COPY = 5 Global Const $ERRORREGION = 0 Global Const $NULLREGION = 1 Global Const $SIMPLEREGION = 2 Global Const $COMPLEXREGION = 3 Global Const $TRANSPARENT = 1 Global Const $OPAQUE = 2 Global Const $CCM_FIRST = 8192 Global Const $CCM_GETUNICODEFORMAT = ($CCM_FIRST + 6) Global Const $CCM_SETUNICODEFORMAT = ($CCM_FIRST + 5) Global Const $CCM_SETBKCOLOR = $CCM_FIRST + 1 Global Const $CCM_SETCOLORSCHEME = $CCM_FIRST + 2 Global Const $CCM_GETCOLORSCHEME = $CCM_FIRST + 3 Global Const $CCM_GETDROPTARGET = $CCM_FIRST + 4 Global Const $CCM_SETWINDOWTHEME = $CCM_FIRST + 11 Global Const $GA_PARENT = 1 Global Const $GA_ROOT = 2 Global Const $GA_ROOTOWNER = 3 Global Const $SM_CXSCREEN = 0 Global Const $SM_CYSCREEN = 1 Global Const $SM_CXVSCROLL = 2 Global Const $SM_CYHSCROLL = 3 Global Const $SM_CYCAPTION = 4 Global Const $SM_CXBORDER = 5 Global Const $SM_CYBORDER = 6 Global Const $SM_CXDLGFRAME = 7 Global Const $SM_CYDLGFRAME = 8 Global Const $SM_CYVTHUMB = 9 Global Const $SM_CXHTHUMB = 10 Global Const $SM_CXICON = 11 Global Const $SM_CYICON = 12 Global Const $SM_CXCURSOR = 13 Global Const $SM_CYCURSOR = 14 Global Const $SM_CYMENU = 15 Global Const $SM_CXFULLSCREEN = 16 Global Const $SM_CYFULLSCREEN = 17 Global Const $SM_CYKANJIWINDOW = 18 Global Const $SM_MOUSEPRESENT = 19 Global Const $SM_CYVSCROLL = 20 Global Const $SM_CXHSCROLL = 21 Global Const $SM_DEBUG = 22 Global Const $SM_SWAPBUTTON = 23 Global Const $SM_RESERVED1 = 24 Global Const $SM_RESERVED2 = 25 Global Const $SM_RESERVED3 = 26 Global Const $SM_RESERVED4 = 27 Global Const $SM_CXMIN = 28 Global Const $SM_CYMIN = 29 Global Const $SM_CXSIZE = 30 Global Const $SM_CYSIZE = 31 Global Const $SM_CXFRAME = 32 Global Const $SM_CYFRAME = 33 Global Const $SM_CXMINTRACK = 34 Global Const $SM_CYMINTRACK = 35 Global Const $SM_CXDOUBLECLK = 36 Global Const $SM_CYDOUBLECLK = 37 Global Const $SM_CXICONSPACING = 38 Global Const $SM_CYICONSPACING = 39 Global Const $SM_MENUDROPALIGNMENT = 40 Global Const $SM_PENWINDOWS = 41 Global Const $SM_DBCSENABLED = 42 Global Const $SM_CMOUSEBUTTONS = 43 Global Const $SM_SECURE = 44 Global Const $SM_CXEDGE = 45 Global Const $SM_CYEDGE = 46 Global Const $SM_CXMINSPACING = 47 Global Const $SM_CYMINSPACING = 48 Global Const $SM_CXSMICON = 49 Global Const $SM_CYSMICON = 50 Global Const $SM_CYSMCAPTION = 51 Global Const $SM_CXSMSIZE = 52 Global Const $SM_CYSMSIZE = 53 Global Const $SM_CXMENUSIZE = 54 Global Const $SM_CYMENUSIZE = 55 Global Const $SM_ARRANGE = 56 Global Const $SM_CXMINIMIZED = 57 Global Const $SM_CYMINIMIZED = 58 Global Const $SM_CXMAXTRACK = 59 Global Const $SM_CYMAXTRACK = 60 Global Const $SM_CXMAXIMIZED = 61 Global Const $SM_CYMAXIMIZED = 62 Global Const $SM_NETWORK = 63 Global Const $SM_CLEANBOOT = 67 Global Const $SM_CXDRAG = 68 Global Const $SM_CYDRAG = 69 Global Const $SM_SHOWSOUNDS = 70 Global Const $SM_CXMENUCHECK = 71 Global Const $SM_CYMENUCHECK = 72 Global Const $SM_SLOWMACHINE = 73 Global Const $SM_MIDEASTENABLED = 74 Global Const $SM_MOUSEWHEELPRESENT = 75 Global Const $SM_XVIRTUALSCREEN = 76 Global Const $SM_YVIRTUALSCREEN = 77 Global Const $SM_CXVIRTUALSCREEN = 78 Global Const $SM_CYVIRTUALSCREEN = 79 Global Const $SM_CMONITORS = 80 Global Const $SM_SAMEDISPLAYFORMAT = 81 Global Const $SM_IMMENABLED = 82 Global Const $SM_CXFOCUSBORDER = 83 Global Const $SM_CYFOCUSBORDER = 84 Global Const $SM_TABLETPC = 86 Global Const $SM_MEDIACENTER = 87 Global Const $SM_STARTER = 88 Global Const $SM_SERVERR2 = 89 Global Const $SM_CMETRICS = 90 Global Const $SM_REMOTESESSION = 4096 Global Const $SM_SHUTTINGDOWN = 8192 Global Const $SM_REMOTECONTROL = 8193 Global Const $SM_CARETBLINKINGENABLED = 8194 Global Const $BLACKNESS = 66 Global Const $CAPTUREBLT = 1073741824 Global Const $DSTINVERT = 5570569 Global Const $MERGECOPY = 12583114 Global Const $MERGEPAINT = 12255782 Global Const $NOMIRRORBITMAP = -2147483648 Global Const $NOTSRCCOPY = 3342344 Global Const $NOTSRCERASE = 1114278 Global Const $PATCOPY = 15728673 Global Const $PATINVERT = 5898313 Global Const $PATPAINT = 16452105 Global Const $SRCAND = 8913094 Global Const $SRCCOPY = 13369376 Global Const $SRCERASE = 4457256 Global Const $SRCINVERT = 6684742 Global Const $SRCPAINT = 15597702 Global Const $WHITENESS = 16711778 Global Const $DT_BOTTOM = 8 Global Const $DT_CALCRECT = 1024 Global Const $DT_CENTER = 1 Global Const $DT_EDITCONTROL = 8192 Global Const $DT_END_ELLIPSIS = 32768 Global Const $DT_EXPANDTABS = 64 Global Const $DT_EXTERNALLEADING = 512 Global Const $DT_HIDEPREFIX = 1048576 Global Const $DT_INTERNAL = 4096 Global Const $DT_LEFT = 0 Global Const $DT_MODIFYSTRING = 65536 Global Const $DT_NOCLIP = 256 Global Const $DT_NOFULLWIDTHCHARBREAK = 524288 Global Const $DT_NOPREFIX = 2048 Global Const $DT_PATH_ELLIPSIS = 16384 Global Const $DT_PREFIXONLY = 2097152 Global Const $DT_RIGHT = 2 Global Const $DT_RTLREADING = 131072 Global Const $DT_SINGLELINE = 32 Global Const $DT_TABSTOP = 128 Global Const $DT_TOP = 0 Global Const $DT_VCENTER = 4 Global Const $DT_WORDBREAK = 16 Global Const $DT_WORD_ELLIPSIS = 262144 Global Const $RDW_ERASE = 4 Global Const $RDW_FRAME = 1024 Global Const $RDW_INTERNALPAINT = 2 Global Const $RDW_INVALIDATE = 1 Global Const $RDW_NOERASE = 32 Global Const $RDW_NOFRAME = 2048 Global Const $RDW_NOINTERNALPAINT = 16 Global Const $RDW_VALIDATE = 8 Global Const $RDW_ERASENOW = 512 Global Const $RDW_UPDATENOW = 256 Global Const $RDW_ALLCHILDREN = 128 Global Const $RDW_NOCHILDREN = 64 Global Const $WM_RENDERFORMAT = 773 Global Const $WM_RENDERALLFORMATS = 774 Global Const $WM_DESTROYCLIPBOARD = 775 Global Const $WM_DRAWCLIPBOARD = 776 Global Const $WM_PAINTCLIPBOARD = 777 Global Const $WM_VSCROLLCLIPBOARD = 778 Global Const $WM_SIZECLIPBOARD = 779 Global Const $WM_ASKCBFORMATNAME = 780 Global Const $WM_CHANGECBCHAIN = 781 Global Const $WM_HSCROLLCLIPBOARD = 782 Global Const $HTERROR = -2 Global Const $HTTRANSPARENT = -1 Global Const $HTNOWHERE = 0 Global Const $HTCLIENT = 1 Global Const $HTCAPTION = 2 Global Const $HTSYSMENU = 3 Global Const $HTGROWBOX = 4 Global Const $HTSIZE = $HTGROWBOX Global Const $HTMENU = 5 Global Const $HTHSCROLL = 6 Global Const $HTVSCROLL = 7 Global Const $HTMINBUTTON = 8 Global Const $HTMAXBUTTON = 9 Global Const $HTLEFT = 10 Global Const $HTRIGHT = 11 Global Const $HTTOP = 12 Global Const $HTTOPLEFT = 13 Global Const $HTTOPRIGHT = 14 Global Const $HTBOTTOM = 15 Global Const $HTBOTTOMLEFT = 16 Global Const $HTBOTTOMRIGHT = 17 Global Const $HTBORDER = 18 Global Const $HTREDUCE = $HTMINBUTTON Global Const $HTZOOM = $HTMAXBUTTON Global Const $HTSIZEFIRST = $HTLEFT Global Const $HTSIZELAST = $HTBOTTOMRIGHT Global Const $HTOBJECT = 19 Global Const $HTCLOSE = 20 Global Const $HTHELP = 21 Global Const $COLOR_SCROLLBAR = 0 Global Const $COLOR_BACKGROUND = 1 Global Const $COLOR_ACTIVECAPTION = 2 Global Const $COLOR_INACTIVECAPTION = 3 Global Const $COLOR_MENU = 4 Global Const $COLOR_WINDOW = 5 Global Const $COLOR_WINDOWFRAME = 6 Global Const $COLOR_MENUTEXT = 7 Global Const $COLOR_WINDOWTEXT = 8 Global Const $COLOR_CAPTIONTEXT = 9 Global Const $COLOR_ACTIVEBORDER = 10 Global Const $COLOR_INACTIVEBORDER = 11 Global Const $COLOR_APPWORKSPACE = 12 Global Const $COLOR_HIGHLIGHT = 13 Global Const $COLOR_HIGHLIGHTTEXT = 14 Global Const $COLOR_BTNFACE = 15 Global Const $COLOR_BTNSHADOW = 16 Global Const $COLOR_GRAYTEXT = 17 Global Const $COLOR_BTNTEXT = 18 Global Const $COLOR_INACTIVECAPTIONTEXT = 19 Global Const $COLOR_BTNHIGHLIGHT = 20 Global Const $COLOR_3DDKSHADOW = 21 Global Const $COLOR_3DLIGHT = 22 Global Const $COLOR_INFOTEXT = 23 Global Const $COLOR_INFOBK = 24 Global Const $COLOR_HOTLIGHT = 26 Global Const $COLOR_GRADIENTACTIVECAPTION = 27 Global Const $COLOR_GRADIENTINACTIVECAPTION = 28 Global Const $COLOR_MENUHILIGHT = 29 Global Const $COLOR_MENUBAR = 30 Global Const $COLOR_DESKTOP = 1 Global Const $COLOR_3DFACE = 15 Global Const $COLOR_3DSHADOW = 16 Global Const $COLOR_3DHIGHLIGHT = 20 Global Const $COLOR_3DHILIGHT = 20 Global Const $COLOR_BTNHILIGHT = 20 Global Const $HINST_COMMCTRL = -1 Global Const $IDB_STD_SMALL_COLOR = 0 Global Const $IDB_STD_LARGE_COLOR = 1 Global Const $IDB_VIEW_SMALL_COLOR = 4 Global Const $IDB_VIEW_LARGE_COLOR = 5 Global Const $IDB_HIST_SMALL_COLOR = 8 Global Const $IDB_HIST_LARGE_COLOR = 9 Global Const $STARTF_FORCEOFFFEEDBACK = 128 Global Const $STARTF_FORCEONFEEDBACK = 64 Global Const $STARTF_RUNFULLSCREEN = 32 Global Const $STARTF_USECOUNTCHARS = 8 Global Const $STARTF_USEFILLATTRIBUTE = 16 Global Const $STARTF_USEHOTKEY = 512 Global Const $STARTF_USEPOSITION = 4 Global Const $STARTF_USESHOWWINDOW = 1 Global Const $STARTF_USESIZE = 2 Global Const $STARTF_USESTDHANDLES = 256 Global Const $CDDS_PREPAINT = 1 Global Const $CDDS_POSTPAINT = 2 Global Const $CDDS_PREERASE = 3 Global Const $CDDS_POSTERASE = 4 Global Const $CDDS_ITEM = 65536 Global Const $CDDS_ITEMPREPAINT = 65537 Global Const $CDDS_ITEMPOSTPAINT = 65538 Global Const $CDDS_ITEMPREERASE = 65539 Global Const $CDDS_ITEMPOSTERASE = 65540 Global Const $CDDS_SUBITEM = 131072 Global Const $CDIS_SELECTED = 1 Global Const $CDIS_GRAYED = 2 Global Const $CDIS_DISABLED = 4 Global Const $CDIS_CHECKED = 8 Global Const $CDIS_FOCUS = 16 Global Const $CDIS_DEFAULT = 32 Global Const $CDIS_HOT = 64 Global Const $CDIS_MARKED = 128 Global Const $CDIS_INDETERMINATE = 256 Global Const $CDIS_SHOWKEYBOARDCUES = 512 Global Const $CDIS_NEARHOT = 1024 Global Const $CDIS_OTHERSIDEHOT = 2048 Global Const $CDIS_DROPHILITED = 4096 Global Const $CDRF_DODEFAULT = 0 Global Const $CDRF_NEWFONT = 2 Global Const $CDRF_SKIPDEFAULT = 4 Global Const $CDRF_NOTIFYPOSTPAINT = 16 Global Const $CDRF_NOTIFYITEMDRAW = 32 Global Const $CDRF_NOTIFYSUBITEMDRAW = 32 Global Const $CDRF_NOTIFYPOSTERASE = 64 Global Const $CDRF_DOERASE = 8 Global Const $CDRF_SKIPPOSTPAINT = 256 Global Const $GUI_SS_DEFAULT_GUI = BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU) #Region ### START Koda GUI section ### Form=c:\documents and settings\angry man\my documents\downloads\form1.kxf $FORM1_1 = GUICreate("", 526, 201, 192, 114) $STATUSBAR1 = _GUICtrlStatusBar_Create($FORM1_1) _GUICtrlStatusBar_SetMinHeight($STATUSBAR1, 17) $COMBO1 = GUICtrlCreateCombo("Combo1", 10, 5, 185, 25, $CBS_DROPDOWNLIST) GUICtrlSetOnEvent($COMBO1, "_PlayerSwitch") GUICtrlSetData($COMBO1, "|Player 1|Player 2", "Player 1") $COMBO2 = GUICtrlCreateCombo("System", 325, 5, 185, 25, $CBS_DROPDOWNLIST) GUICtrlSetOnEvent($COMBO2, "_SystemSwitch") GUICtrlSetData($COMBO2, "|System [CPS2]|System [CPS3]|System [NEOGEO]", "System [NEOGEO]") $INPUTLABEL = GUICtrlCreateLabel(" Input Watch", 200, 3, 120, 30) GUICtrlSetFont(-1, 8, 400, 0, "Fixedsys") $BUTTON5 = GUICtrlCreateButton("L.Punch", 195, 40, 50, 40, $WS_GROUP) $BUTTON6 = GUICtrlCreateButton("M.Punch", 305, 40, 50, 40, $WS_GROUP) $BUTTON7 = GUICtrlCreateButton("H.Punch", 415, 40, 50, 40, $WS_GROUP) $BUTTON8 = GUICtrlCreateButton("L.Kick", 195, 90, 50, 40, $WS_GROUP) $BUTTON9 = GUICtrlCreateButton("M.Kick", 305, 90, 50, 39, $WS_GROUP) $BUTTON10 = GUICtrlCreateButton("H.Kick", 415, 90, 50, 40, $WS_GROUP) $BUTTON1 = GUICtrlCreateButton("UP", 75, 35, 50, 40, $WS_GROUP) $BUTTON2 = GUICtrlCreateButton("LEFT", 10, 85, 50, 40, $WS_GROUP) $BUTTON3 = GUICtrlCreateButton("RIGHT", 140, 85, 50, 40, $WS_GROUP) $BUTTON4 = GUICtrlCreateButton("DOWN", 75, 135, 50, 40, $WS_GROUP) $GROUP1 = GUICtrlCreateGroup("", 136, 40, 50, 40) $LABEL2 = GUICtrlCreateLabel("UP", 141, 50, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP2 = GUICtrlCreateGroup("", 141, 131, 50, 40) $LABEL4 = GUICtrlCreateLabel("RIGHT", 146, 141, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP3 = GUICtrlCreateGroup("", 10, 134, 50, 40) $LABEL3 = GUICtrlCreateLabel("DOWN", 15, 144, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP4 = GUICtrlCreateGroup("", 10, 39, 50, 40) $LABEL1 = GUICtrlCreateLabel("LEFT", 15, 49, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP5 = GUICtrlCreateGroup("", 250, 40, 50, 40) $LABEL5 = GUICtrlCreateLabel("LP", 255, 50, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP6 = GUICtrlCreateGroup("", 250, 90, 50, 40) $LABEL6 = GUICtrlCreateLabel("LK", 255, 100, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP7 = GUICtrlCreateGroup("", 360, 40, 50, 40) $LABEL7 = GUICtrlCreateLabel("MP", 365, 50, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP8 = GUICtrlCreateGroup("", 360, 90, 50, 40) $LABEL9 = GUICtrlCreateLabel("MK", 365, 100, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP9 = GUICtrlCreateGroup("", 470, 40, 50, 40) $LABEL8 = GUICtrlCreateLabel("HP", 475, 50, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP10 = GUICtrlCreateGroup("", 470, 90, 50, 40) $LABEL10 = GUICtrlCreateLabel("HK", 475, 100, 36, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) $GROUP11 = GUICtrlCreateGroup("Logging", 200, 136, 305, 41) $RADIO1 = GUICtrlCreateRadio("This Session", 208, 152, 89, 17) GUICtrlSetOnEvent($RADIO1, "_Log") $RADIO2 = GUICtrlCreateRadio("All Sessions", 296, 152, 89, 17) GUICtrlSetOnEvent($RADIO2, "_Log") $RADIO3 = GUICtrlCreateRadio("Never Log", 400, 152, 97, 17) GUICtrlSetOnEvent($RADIO3, "_Log") GUICtrlCreateGroup("", -99, -99, 1, 1) If $LOG = 0 Then GUICtrlSetState($RADIO3, $GUI_CHECKED) If $LOG = 1 Then GUICtrlSetState($RADIO2, $GUI_CHECKED) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### If Not ProcessExists($GAMENAME) Then EXISTS() Else MEMORYOPEN() EndIf $TIME = TimerInit() $TIMEROLD = 0 While 1 EXISTS() Select Case $GAME = "NEOGEO" $MEM1 = _MEMORYPOINTERREAD($WORKINGADDR1, $OPENMEM, $OFFSET, "byte") $INPUT = _INPUT($MEM1[1], 1) If $MEM1[1] <> $OLD1 Then _GUICtrlStatusBar_SetText($STATUSBAR1, $INPUT, 0, 0) If $LOG = 1 Then FileWriteLine(_NAMEHANDLER(), $INPUT) EndIf $OLD1 = $MEM1[1] Case $GAME = "CPS2" Or "CPS3" $MEM1 = _MEMORYREAD($WORKINGADDR1, $OPENMEM, "byte") $MEM2 = _MEMORYREAD($WORKINGADDR2, $OPENMEM, "byte") If $PLAYER = 2 Then $MEM3 = _MEMORYREAD($WORKINGADDR3, $OPENMEM, "byte") If $MEM1 <> $OLD1 Or $MEM2 <> $OLD2 Or $MEM3 <> $OLD3 Then $INPUT = "" If $GAME = "CPS2" Then $INPUT = $INPUT & _INPUT($MEM1, 2) If $GAME = "CPS3" Then $INPUT = $INPUT & _INPUT($MEM1, 5) If $GAME = "CPS2" Then $INPUT = $INPUT & _INPUT($MEM2, 3) If $GAME = "CPS3" Then $INPUT = $INPUT & _INPUT($MEM2, 6) If $PLAYER = 2 Then $INPUT = _INPUT($MEM3, 4) & $INPUT _GUICtrlStatusBar_SetText($STATUSBAR1, $INPUT, 0, 0) If $LOG = 1 Then FileWriteLine(_NAMEHANDLER(), $INPUT) EndIf $OLD1 = $MEM1 $OLD2 = $MEM2 If $PLAYER = 2 Then $OLD3 = $MEM3 EndSelect $TIMER = TimerDiff($TIME) If $TIMER - $TIMEROLD > 1000 Then _UPDATE() Sleep(1) WEnd Func _INPUT($VAR, $MODE) Local $STRING Select Case $MODE = 1 If $VAR >= 128 Then $VAR = $VAR - 128 $STRING = $STRING & "D " If $PRESSED[10] = 0 Then $RECORD[19] = $RECORD[19] + 1 $PRESSED[10] = 1 GUICtrlSetState($BUTTON10, $GUI_ENABLE) EndIf Else $PRESSED[10] = 0 GUICtrlSetState($BUTTON10, $GUI_DISABLE) EndIf If $VAR >= 64 Then $STRING = $STRING & "C " $VAR = $VAR - 64 If $PRESSED[7] = 0 Then $RECORD[13] = $RECORD[13] + 1 $PRESSED[7] = 1 GUICtrlSetState($BUTTON7, $GUI_ENABLE) EndIf Else $PRESSED[7] = 0 GUICtrlSetState($BUTTON7, $GUI_DISABLE) EndIf If $VAR >= 32 Then $VAR = $VAR - 32 $STRING = $STRING & "B " If $PRESSED[8] = 0 Then $RECORD[15] = $RECORD[15] + 1 $PRESSED[8] = 1 GUICtrlSetState($BUTTON8, $GUI_ENABLE) EndIf Else $PRESSED[8] = 0 GUICtrlSetState($BUTTON8, $GUI_DISABLE) EndIf If $VAR >= 16 Then $STRING = $STRING & "A " $VAR = $VAR - 16 If $PRESSED[5] = 0 Then $RECORD[9] = $RECORD[9] + 1 $PRESSED[5] = 1 GUICtrlSetState($BUTTON5, $GUI_ENABLE) EndIf Else $PRESSED[5] = 0 GUICtrlSetState($BUTTON5, $GUI_DISABLE) EndIf If $VAR >= 8 Then $STRING = $STRING & "RIGHT " $VAR = $VAR - 8 If $PRESSED[4] = 0 Then $RECORD[7] = $RECORD[7] + 1 $PRESSED[4] = 1 GUICtrlSetState($BUTTON3, $GUI_ENABLE) EndIf Else $PRESSED[4] = 0 GUICtrlSetState($BUTTON3, $GUI_DISABLE) EndIf If $VAR >= 4 Then $STRING = $STRING & "LEFT " $VAR = $VAR - 4 If $PRESSED[3] = 0 Then $RECORD[5] = $RECORD[5] + 1 $PRESSED[3] = 1 GUICtrlSetState($BUTTON2, $GUI_ENABLE) EndIf Else $PRESSED[3] = 0 GUICtrlSetState($BUTTON2, $GUI_DISABLE) EndIf If $VAR >= 2 Then $STRING = $STRING & "DOWN " $VAR = $VAR - 2 If $PRESSED[2] = 0 Then $RECORD[3] = $RECORD[3] + 1 $PRESSED[2] = 1 GUICtrlSetState($BUTTON4, $GUI_ENABLE) EndIf Else $PRESSED[2] = 0 GUICtrlSetState($BUTTON4, $GUI_DISABLE) EndIf If $VAR >= 1 Then $STRING = $STRING & "UP " $VAR = $VAR - 1 If $PRESSED[1] = 0 Then $RECORD[1] = $RECORD[1] + 1 $PRESSED[1] = 1 GUICtrlSetState($BUTTON1, $GUI_ENABLE) EndIf Else $PRESSED[1] = 0 GUICtrlSetState($BUTTON1, $GUI_DISABLE) EndIf Case $MODE = 2 If $VAR >= 64 Then $STRING = $STRING & "HP " $VAR = $VAR - 64 If $PRESSED[7] = 0 Then $RECORD[13] = $RECORD[13] + 1 $PRESSED[7] = 1 GUICtrlSetState($BUTTON7, $GUI_ENABLE) EndIf Else $PRESSED[7] = 0 GUICtrlSetState($BUTTON7, $GUI_DISABLE) EndIf If $VAR >= 32 Then $STRING = $STRING & "MP " $VAR = $VAR - 32 If $PRESSED[6] = 0 Then $RECORD[11] = $RECORD[11] + 1 $PRESSED[6] = 1 GUICtrlSetState($BUTTON6, $GUI_ENABLE) EndIf Else $PRESSED[6] = 0 GUICtrlSetState($BUTTON6, $GUI_DISABLE) EndIf If $VAR >= 16 Then $STRING = $STRING & "LP " $VAR = $VAR - 16 If $PRESSED[5] = 0 Then $RECORD[9] = $RECORD[9] + 1 $PRESSED[5] = 1 GUICtrlSetState($BUTTON5, $GUI_ENABLE) EndIf Else $PRESSED[5] = 0 GUICtrlSetState($BUTTON5, $GUI_DISABLE) EndIf If $VAR >= 8 Then $STRING = $STRING & "UP " $VAR = $VAR - 8 If $PRESSED[1] = 0 Then $RECORD[1] = $RECORD[1] + 1 $PRESSED[1] = 1 GUICtrlSetState($BUTTON1, $GUI_ENABLE) EndIf Else $PRESSED[1] = 0 GUICtrlSetState($BUTTON1, $GUI_DISABLE) EndIf If $VAR >= 4 Then $STRING = $STRING & "DOWN " $VAR = $VAR - 4 If $PRESSED[2] = 0 Then $RECORD[3] = $RECORD[3] + 1 $PRESSED[2] = 1 GUICtrlSetState($BUTTON4, $GUI_ENABLE) EndIf Else $PRESSED[2] = 0 GUICtrlSetState($BUTTON4, $GUI_DISABLE) EndIf If $VAR >= 2 Then $STRING = $STRING & "LEFT " $VAR = $VAR - 2 If $PRESSED[3] = 0 Then $RECORD[5] = $RECORD[5] + 1 $PRESSED[3] = 1 GUICtrlSetState($BUTTON2, $GUI_ENABLE) EndIf Else $PRESSED[3] = 0 GUICtrlSetState($BUTTON2, $GUI_DISABLE) EndIf If $VAR >= 1 Then $STRING = $STRING & "RIGHT " $VAR = $VAR - 1 If $PRESSED[4] = 0 Then $RECORD[7] = $RECORD[7] + 1 $PRESSED[4] = 1 GUICtrlSetState($BUTTON3, $GUI_ENABLE) EndIf Else $PRESSED[4] = 0 GUICtrlSetState($BUTTON3, $GUI_DISABLE) EndIf Case $MODE = 3 If $VAR >= 32 Then $VAR = $VAR - 32 If $PLAYER = 2 Then $STRING = $STRING & "MK " If $PRESSED[9] = 0 Then $RECORD[17] = $RECORD[17] + 1 $PRESSED[9] = 1 GUICtrlSetState($BUTTON9, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 2 Then $PRESSED[9] = 0 GUICtrlSetState($BUTTON9, $GUI_DISABLE) EndIf EndIf If $VAR >= 16 Then $VAR = $VAR - 16 If $PLAYER = 2 Then $STRING = $STRING & "LK " If $PRESSED[8] = 0 Then $RECORD[15] = $RECORD[15] + 1 $PRESSED[8] = 1 GUICtrlSetState($BUTTON8, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 2 Then $PRESSED[8] = 0 GUICtrlSetState($BUTTON8, $GUI_DISABLE) EndIf EndIf If $VAR >= 4 Then $VAR = $VAR - 4 If $PLAYER = 1 Then $STRING = $STRING & "HK " If $PRESSED[10] = 0 Then $RECORD[19] = $RECORD[19] + 1 $PRESSED[10] = 1 GUICtrlSetState($BUTTON10, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 1 Then $PRESSED[10] = 0 GUICtrlSetState($BUTTON10, $GUI_DISABLE) EndIf EndIf If $VAR >= 2 Then $VAR = $VAR - 2 If $PLAYER = 1 Then $STRING = $STRING & "MK " If $PRESSED[9] = 0 Then $RECORD[17] = $RECORD[17] + 1 $PRESSED[9] = 1 GUICtrlSetState($BUTTON9, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 1 Then $PRESSED[9] = 0 GUICtrlSetState($BUTTON9, $GUI_DISABLE) EndIf EndIf If $VAR >= 1 Then $VAR = $VAR - 1 If $PLAYER = 1 Then $STRING = $STRING & "LK " If $PRESSED[8] = 0 Then $RECORD[15] = $RECORD[15] + 1 $PRESSED[8] = 1 GUICtrlSetState($BUTTON8, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 1 Then $PRESSED[8] = 0 GUICtrlSetState($BUTTON8, $GUI_DISABLE) EndIf EndIf Case $MODE = 4 If $VAR > 0 Then $VAR = 0 If $PLAYER = 2 Then $STRING = $STRING & "HK " If $PRESSED[10] = 0 Then $RECORD[19] = $RECORD[19] + 1 $PRESSED[10] = 1 GUICtrlSetState($BUTTON10, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 2 Then $PRESSED[10] = 0 GUICtrlSetState($BUTTON10, $GUI_DISABLE) EndIf EndIf Case $MODE = 5 If $VAR >= 64 Then $STRING = $STRING & "HP " $VAR = $VAR - 64 If $PRESSED[7] = 0 Then $RECORD[13] = $RECORD[13] + 1 $PRESSED[7] = 1 GUICtrlSetState($BUTTON7, $GUI_ENABLE) EndIf Else $PRESSED[7] = 0 GUICtrlSetState($BUTTON7, $GUI_DISABLE) EndIf If $VAR >= 32 Then $STRING = $STRING & "MP " $VAR = $VAR - 32 If $PRESSED[6] = 0 Then $RECORD[11] = $RECORD[11] + 1 $PRESSED[6] = 1 GUICtrlSetState($BUTTON6, $GUI_ENABLE) EndIf Else $PRESSED[6] = 0 GUICtrlSetState($BUTTON6, $GUI_DISABLE) EndIf If $VAR >= 16 Then $STRING = $STRING & "LP " $VAR = $VAR - 16 If $PRESSED[5] = 0 Then $RECORD[9] = $RECORD[9] + 1 $PRESSED[5] = 1 GUICtrlSetState($BUTTON5, $GUI_ENABLE) EndIf Else $PRESSED[5] = 0 GUICtrlSetState($BUTTON5, $GUI_DISABLE) EndIf If $VAR >= 8 Then $STRING = $STRING & "RIGHT " $VAR = $VAR - 8 If $PRESSED[4] = 0 Then $RECORD[7] = $RECORD[7] + 1 $PRESSED[4] = 1 GUICtrlSetState($BUTTON3, $GUI_ENABLE) EndIf Else $PRESSED[4] = 0 GUICtrlSetState($BUTTON3, $GUI_DISABLE) EndIf If $VAR >= 4 Then $STRING = $STRING & "LEFT " $VAR = $VAR - 4 If $PRESSED[3] = 0 Then $RECORD[5] = $RECORD[5] + 1 $PRESSED[3] = 1 GUICtrlSetState($BUTTON2, $GUI_ENABLE) EndIf Else $PRESSED[3] = 0 GUICtrlSetState($BUTTON2, $GUI_DISABLE) EndIf If $VAR >= 2 Then $STRING = $STRING & "DOWN " $VAR = $VAR - 2 If $PRESSED[2] = 0 Then $RECORD[3] = $RECORD[3] + 1 $PRESSED[2] = 1 GUICtrlSetState($BUTTON4, $GUI_ENABLE) EndIf Else $PRESSED[2] = 0 GUICtrlSetState($BUTTON4, $GUI_DISABLE) EndIf If $VAR >= 1 Then $STRING = $STRING & "UP " $VAR = $VAR - 1 If $PRESSED[1] = 0 Then $RECORD[1] = $RECORD[1] + 1 $PRESSED[1] = 1 GUICtrlSetState($BUTTON1, $GUI_ENABLE) EndIf Else $PRESSED[1] = 0 GUICtrlSetState($BUTTON1, $GUI_DISABLE) EndIf Case $MODE = 6 If $VAR >= 32 Then $VAR = $VAR - 32 If $PLAYER = 2 Then $STRING = $STRING & "MK " If $PRESSED[9] = 0 Then $RECORD[17] = $RECORD[17] + 1 $PRESSED[9] = 1 GUICtrlSetState($BUTTON9, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 2 Then $PRESSED[9] = 0 GUICtrlSetState($BUTTON9, $GUI_DISABLE) EndIf EndIf If $VAR >= 16 Then $VAR = $VAR - 16 If $PLAYER = 2 Then $STRING = $STRING & "LK " If $PRESSED[8] = 0 Then $RECORD[15] = $RECORD[15] + 1 $PRESSED[8] = 1 GUICtrlSetState($BUTTON8, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 2 Then $PRESSED[8] = 0 GUICtrlSetState($BUTTON8, $GUI_DISABLE) EndIf EndIf If $VAR >= 8 Then $VAR = $VAR - 8 If $PLAYER = 1 Then $STRING = $STRING & "LK " If $PRESSED[8] = 0 Then $RECORD[15] = $RECORD[15] + 1 $PRESSED[8] = 1 GUICtrlSetState($BUTTON8, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 1 Then $PRESSED[8] = 0 GUICtrlSetState($BUTTON8, $GUI_DISABLE) EndIf EndIf If $VAR >= 4 Then $VAR = $VAR - 4 If $PLAYER = 1 Then $STRING = $STRING & "MK " If $PRESSED[9] = 0 Then $RECORD[17] = $RECORD[17] + 1 $PRESSED[9] = 1 GUICtrlSetState($BUTTON9, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 1 Then $PRESSED[9] = 0 GUICtrlSetState($BUTTON9, $GUI_DISABLE) EndIf EndIf If $VAR >= 2 Then $VAR = $VAR - 2 If $PLAYER = 1 Then $STRING = $STRING & "HK " If $PRESSED[10] = 0 Then $RECORD[19] = $RECORD[19] + 1 $PRESSED[10] = 1 GUICtrlSetState($BUTTON10, $GUI_ENABLE) EndIf EndIf Else If $PLAYER = 1 Then $PRESSED[10] = 0 GUICtrlSetState($BUTTON10, $GUI_DISABLE) EndIf EndIf EndSelect For $I = 1 To 19 Step 2 If $RECORD[$I] > $RECORD[$I + 1] Then $RECORD[$I + 1] = $RECORD[$I] Next If $VAR <> 0 Then FileWriteLine("Error.log", $GAME & ":" & $VAR & ", " & $MODE & @CRLF) Return ("ERROR: VAR NOT ZERO AFTER PROCESSING:" & $VAR) EndIf Return ($STRING) EndFunc Func _UPDATE() GUICtrlSetData($LABEL1, "P:" & $RECORD[6] & @CRLF & "L:" & $RECORD[5]) GUICtrlSetData($LABEL2, "P:" & $RECORD[2] & @CRLF & "L:" & $RECORD[1]) GUICtrlSetData($LABEL3, "P:" & $RECORD[4] & @CRLF & "L:" & $RECORD[3]) GUICtrlSetData($LABEL4, "P:" & $RECORD[8] & @CRLF & "L:" & $RECORD[7]) GUICtrlSetData($LABEL5, "P:" & $RECORD[10] & @CRLF & "L:" & $RECORD[9]) GUICtrlSetData($LABEL6, "P:" & $RECORD[16] & @CRLF & "L:" & $RECORD[15]) GUICtrlSetData($LABEL7, "P:" & $RECORD[12] & @CRLF & "L:" & $RECORD[11]) GUICtrlSetData($LABEL8, "P:" & $RECORD[14] & @CRLF & "L:" & $RECORD[13]) GUICtrlSetData($LABEL9, "P:" & $RECORD[18] & @CRLF & "L:" & $RECORD[17]) GUICtrlSetData($LABEL10, "P:" & $RECORD[20] & @CRLF & "L:" & $RECORD[19]) _DETECT() _CLEAR(1) $TIMEROLD = $TIMER EndFunc Func _CLEAR($MODE) If $MODE = 1 Then For $I = 1 To 19 Step 2 $RECORD[$I] = 0 Next Else For $I = 1 To 20 Step 1 $RECORD[$I] = 0 Next EndIf EndFunc Func _DETECT() For $I = 10 To 20 Step 2 If $RECORD[$I] > $DETECT Then GUICtrlSetData($INPUTLABEL, " [Probable] " & @CRLF & " [Autofire] ") GUICtrlSetBkColor($INPUTLABEL, 16711680) EndIf Next EndFunc Func _PLAYERSWITCH() Local $DATA $DATA = GUICtrlRead($COMBO1) _GUICtrlStatusBar_SetText($STATUSBAR1, "Viewing set to " & $DATA & "!" & @CRLF, 0, 0) If $DATA = "Player 1" Then $PLAYER = 1 Select Case $GAME = "NEOGEO" Global $OFFSET[2] $OFFSET[0] = 0 $OFFSET[1] = Dec($NEOGEO[2]) $WORKINGADDR1 = "0x" & Hex($BASEADDR + Dec($NEOGEO[1])) Case $GAME = "CPS2" $WORKINGADDR1 = "0x" & Hex($BASEADDR + Dec($CPS2[1])) $WORKINGADDR2 = "0x" & Hex($BASEADDR + Dec($CPS2[3])) $WORKINGADDR3 = "0x" & Hex($BASEADDR + Dec($CPS2[4])) Case $GAME = "CPS3" $WORKINGADDR1 = "0x" & Hex($BASEADDR + Dec($CPS3[1])) $WORKINGADDR2 = "0x" & Hex($BASEADDR + Dec($CPS3[3])) $WORKINGADDR3 = "0x" & Hex($BASEADDR + Dec($CPS3[4])) EndSelect Else $PLAYER = 2 Select Case $GAME = "NEOGEO" Global $OFFSET[2] $OFFSET[0] = 0 $OFFSET[1] = Dec($NEOGEO[4]) $WORKINGADDR1 = "0x" & Hex($BASEADDR + Dec($NEOGEO[3])) Case $GAME = "CPS2" $WORKINGADDR1 = "0x" & Hex($BASEADDR + Dec($CPS2[2])) $WORKINGADDR2 = "0x" & Hex($BASEADDR + Dec($CPS2[3])) $WORKINGADDR3 = "0x" & Hex($BASEADDR + Dec($CPS2[4])) Case $GAME = "CPS3" $WORKINGADDR1 = "0x" & Hex($BASEADDR + Dec($CPS3[2])) $WORKINGADDR2 = "0x" & Hex($BASEADDR + Dec($CPS3[3])) $WORKINGADDR3 = "0x" & Hex($BASEADDR + Dec($CPS3[4])) EndSelect EndIf Select Case $GAME = "NEOGEO" GUICtrlSetData($BUTTON5, "[A]") GUICtrlSetData($BUTTON6, "") GUICtrlSetData($BUTTON7, "[C]") GUICtrlSetData($BUTTON8, "[B]") GUICtrlSetData($BUTTON9, "") GUICtrlSetData($BUTTON10, "[D]") GUICtrlSetState($BUTTON6, $GUI_DISABLE) GUICtrlSetState($BUTTON9, $GUI_DISABLE) Case $GAME = "CPS2" Or $GAME = "CPS3" GUICtrlSetData($BUTTON5, "L.Punch") GUICtrlSetData($BUTTON6, "M.Punch") GUICtrlSetData($BUTTON7, "H.Punch") GUICtrlSetData($BUTTON8, "L.Kick") GUICtrlSetData($BUTTON9, "M.Kick") GUICtrlSetData($BUTTON10, "H.Kick") EndSelect GUICtrlSetData($INPUTLABEL, " Input Watch") GUICtrlSetBkColor($INPUTLABEL, Default) _CLEAR(2) EndFunc Func _SYSTEMSWITCH() Local $DATA $DATA = GUICtrlRead($COMBO2) Select Case $DATA = "System [NEOGEO]" $GAME = "NEOGEO" Case $DATA = "System [CPS2]" $GAME = "CPS2" Case $DATA = "System [CPS3]" $GAME = "CPS3" EndSelect _PLAYERSWITCH() _GUICtrlStatusBar_SetText($STATUSBAR1, "Game type set to " & $GAME & "!" & @CRLF, 0, 0) EndFunc Func MEMORYOPEN() $PID = ProcessExists($GAMENAME) $OPENMEM = _MEMORYOPEN($PID) $BASEADDR = _MEMORYGETBASEADDRESS($OPENMEM, 1) _SYSTEMSWITCH() EndFunc Func EXISTS() If Not ProcessExists($GAMENAME) Then _MEMORYCLOSE($OPENMEM) _GUICtrlStatusBar_SetText($STATUSBAR1, $GAMENAME & " ain't open. You suck.", 0, 0) While 1 If ProcessExists($GAMENAME) Then ExitLoop Sleep(100) WEnd _GUICtrlStatusBar_SetText($STATUSBAR1, $GAMENAME & " has been found!", 0, 0) MEMORYOPEN() EndIf EndFunc Func _LOG() If GUICtrlRead($RADIO1) = $GUI_CHECKED Then $SESSION = 1 $LOG = 1 EndIf If GUICtrlRead($RADIO2) = $GUI_CHECKED Then $LOG = 1 If GUICtrlRead($RADIO3) = $GUI_CHECKED Then $LOG = 0 EndFunc Func _NAMEHANDLER() Local $STRING $STRING = @YEAR & "-" & @MON & "-" & @MDAY & " Input.log" Return ($STRING) EndFunc Func INILOAD() Global $CPS3[5], $CPS2[5], $NEOGEO[5] $CPS3[0] = 4 $CPS3[1] = IniRead("wconfig.ini", "CPS3", "Mem1", "71A288") $CPS3[2] = IniRead("wconfig.ini", "CPS3", "Mem2", "71A289") $CPS3[3] = IniRead("wconfig.ini", "CPS3", "Mem3", "71A28E") $CPS3[4] = IniRead("wconfig.ini", "CPS3", "Mem4", "71A28B") $CPS2[0] = 4 $CPS2[1] = IniRead("wconfig.ini", "CPS2", "Mem1", "686861") $CPS2[2] = IniRead("wconfig.ini", "CPS2", "Mem2", "5EB54E") $CPS2[3] = IniRead("wconfig.ini", "CPS2", "Mem3", "5F584B") $CPS2[4] = IniRead("wconfig.ini", "CPS2", "Mem4", "5F6452") $NEOGEO[0] = 0 $NEOGEO[1] = IniRead("wconfig.ini", "NEOGEO", "Mem1", "A872BC") $NEOGEO[2] = IniRead("wconfig.ini", "NEOGEO", "Mem2", "B1A300") $NEOGEO[3] = IniRead("wconfig.ini", "NEOGEO", "Mem3", "A872BC") $NEOGEO[4] = IniRead("wconfig.ini", "NEOGEO", "Mem4", "B1A301") $LOG = IniRead("wconfig.ini", "Settings", "Log", 0) $DETECT = IniRead("wconfig.ini", "Settings", "Autofire", 17) $GAMENAME = IniRead("wconfig.ini", "Settings", "Game", "ggpofba.exe") EndFunc Func INISAVE() If $SESSION = 1 Then $LOG = 0 IniWrite(@ScriptDir & "\wconfig.ini", "Settings", "Log", $LOG) IniWrite(@ScriptDir & "\wconfig.ini", "Settings", "Autofire", $DETECT) IniWrite(@ScriptDir & "\wconfig.ini", "Settings", "Game", $GAMENAME) IniWrite(@ScriptDir & "\wconfig.ini", "CPS3", "Mem1", $CPS3[1]) IniWrite(@ScriptDir & "\wconfig.ini", "CPS3", "Mem2", $CPS3[2]) IniWrite(@ScriptDir & "\wconfig.ini", "CPS3", "Mem3", $CPS3[3]) IniWrite(@ScriptDir & "\wconfig.ini", "CPS3", "Mem4", $CPS3[4]) IniWrite(@ScriptDir & "\wconfig.ini", "CPS2", "Mem1", $CPS2[1]) IniWrite(@ScriptDir & "\wconfig.ini", "CPS2", "Mem2", $CPS2[2]) IniWrite(@ScriptDir & "\wconfig.ini", "CPS2", "Mem3", $CPS2[3]) IniWrite(@ScriptDir & "\wconfig.ini", "CPS2", "Mem4", $CPS2[4]) IniWrite(@ScriptDir & "\wconfig.ini", "NEOGEO", "Mem1", $NEOGEO[1]) IniWrite(@ScriptDir & "\wconfig.ini", "NEOGEO", "Mem2", $NEOGEO[2]) IniWrite(@ScriptDir & "\wconfig.ini", "NEOGEO", "Mem3", $NEOGEO[3]) IniWrite(@ScriptDir & "\wconfig.ini", "NEOGEO", "Mem4", $NEOGEO[4]) EndFunc Func _EXIT() _MEMORYCLOSE($OPENMEM) INISAVE() Exit EndFunc