Advertisement
Guest User

Untitled

a guest
Jul 1st, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 209.95 KB | None | 0 0
  1. #NoTrayIcon
  2. #Region
  3. #AutoIt3Wrapper_Icon=NPCEverywhere.ico
  4. #AutoIt3Wrapper_Outfile=NPCEverywhere.exe
  5. #AutoIt3Wrapper_Res_Comment=Tested with US/DE/FR/IT/PL clients. Stable Version.
  6. #AutoIt3Wrapper_Res_Description=Open Shaiya NPC's everywhere!
  7. #AutoIt3Wrapper_Res_Fileversion=1.2.5.0
  8. #AutoIt3Wrapper_Res_LegalCopyright=Alaedriel 2011
  9. #AutoIt3Wrapper_Res_Language=1033
  10. #AutoIt3Wrapper_Res_Icon_Add=0005.ico
  11. #AutoIt3Wrapper_Res_Icon_Add=0006.ico
  12. #AutoIt3Wrapper_Res_Icon_Add=0007.ico
  13. #AutoIt3Wrapper_Res_Icon_Add=0008.ico
  14. #AutoIt3Wrapper_Res_Icon_Add=0009.ico
  15. #AutoIt3Wrapper_Res_Icon_Add=0010.ico
  16. #AutoIt3Wrapper_Res_Icon_Add=0011.ico
  17. #AutoIt3Wrapper_Res_Icon_Add=0012.ico
  18. #AutoIt3Wrapper_Res_Icon_Add=0013.ico
  19. #EndRegion
  20. #Region _Memory
  21. Func _MEMORYOPEN($IV_PID, $IV_DESIREDACCESS = 2035711, $IF_INHERITHANDLE = 1)
  22.     If Not ProcessExists($IV_PID) Then
  23.         SetError(1)
  24.         Return 0
  25.     EndIf
  26.     Local $AH_HANDLE[2] = [DllOpen("kernel32.dll")]
  27.     If @error Then
  28.         SetError(2)
  29.         Return 0
  30.     EndIf
  31.     Local $AV_OPENPROCESS = DllCall($AH_HANDLE[0], "int", "OpenProcess", "int", $IV_DESIREDACCESS, "int", $IF_INHERITHANDLE, "int", $IV_PID)
  32.     If @error Then
  33.         DllClose($AH_HANDLE[0])
  34.         SetError(3)
  35.         Return 0
  36.     EndIf
  37.     $AH_HANDLE[1] = $AV_OPENPROCESS[0]
  38.     Return $AH_HANDLE
  39. EndFunc
  40. Func _MEMORYREAD($IV_ADDRESS, $AH_HANDLE, $SV_TYPE = "dword")
  41.     If Not IsArray($AH_HANDLE) Then
  42.         SetError(1)
  43.         Return 0
  44.     EndIf
  45.     Local $V_BUFFER = DllStructCreate($SV_TYPE)
  46.     If @error Then
  47.         SetError(@error + 1)
  48.         Return 0
  49.     EndIf
  50.     DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
  51.     If Not @error Then
  52.         Local $V_VALUE = DllStructGetData($V_BUFFER, 1)
  53.         Return $V_VALUE
  54.     Else
  55.         SetError(6)
  56.         Return 0
  57.     EndIf
  58. EndFunc
  59. Func _MEMORYWRITE($IV_ADDRESS, $AH_HANDLE, $V_DATA, $SV_TYPE = "dword")
  60.     If Not IsArray($AH_HANDLE) Then
  61.         SetError(1)
  62.         Return 0
  63.     EndIf
  64.     Local $V_BUFFER = DllStructCreate($SV_TYPE)
  65.     If @error Then
  66.         SetError(@error + 1)
  67.         Return 0
  68.     Else
  69.         DllStructSetData($V_BUFFER, 1, $V_DATA)
  70.         If @error Then
  71.             SetError(6)
  72.             Return 0
  73.         EndIf
  74.     EndIf
  75.     DllCall($AH_HANDLE[0], "int", "WriteProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
  76.     If Not @error Then
  77.         Return 1
  78.     Else
  79.         SetError(7)
  80.         Return 0
  81.     EndIf
  82. EndFunc
  83. Func _MEMORYCLOSE($AH_HANDLE)
  84.     If Not IsArray($AH_HANDLE) Then
  85.         SetError(1)
  86.         Return 0
  87.     EndIf
  88.     DllCall($AH_HANDLE[0], "int", "CloseHandle", "int", $AH_HANDLE[1])
  89.     If Not @error Then
  90.         DllClose($AH_HANDLE[0])
  91.         Return 1
  92.     Else
  93.         DllClose($AH_HANDLE[0])
  94.         SetError(2)
  95.         Return 0
  96.     EndIf
  97. EndFunc
  98. Func _MEMORYPOINTERREAD($IV_ADDRESS, $AH_HANDLE, $AV_OFFSET, $SV_TYPE = "dword")
  99.     If IsArray($AV_OFFSET) Then
  100.         If IsArray($AH_HANDLE) Then
  101.             Local $IV_POINTERCOUNT = UBound($AV_OFFSET) - 1
  102.         Else
  103.             SetError(2)
  104.             Return 0
  105.         EndIf
  106.     Else
  107.         SetError(1)
  108.         Return 0
  109.     EndIf
  110.     Local $IV_DATA[2], $I
  111.     Local $V_BUFFER = DllStructCreate("dword")
  112.     For $I = 0 To $IV_POINTERCOUNT
  113.         If $I = $IV_POINTERCOUNT Then
  114.             $V_BUFFER = DllStructCreate($SV_TYPE)
  115.             If @error Then
  116.                 SetError(@error + 2)
  117.                 Return 0
  118.             EndIf
  119.             $IV_ADDRESS = "0x" & Hex($IV_DATA[1] + $AV_OFFSET[$I])
  120.             DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
  121.             If @error Then
  122.                 SetError(7)
  123.                 Return 0
  124.             EndIf
  125.             $IV_DATA[1] = DllStructGetData($V_BUFFER, 1)
  126.         ElseIf $I = 0 Then
  127.             DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
  128.             If @error Then
  129.                 SetError(7)
  130.                 Return 0
  131.             EndIf
  132.             $IV_DATA[1] = DllStructGetData($V_BUFFER, 1)
  133.         Else
  134.             $IV_ADDRESS = "0x" & Hex($IV_DATA[1] + $AV_OFFSET[$I])
  135.             DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
  136.             If @error Then
  137.                 SetError(7)
  138.                 Return 0
  139.             EndIf
  140.             $IV_DATA[1] = DllStructGetData($V_BUFFER, 1)
  141.         EndIf
  142.     Next
  143.     $IV_DATA[0] = $IV_ADDRESS
  144.     Return $IV_DATA
  145. EndFunc
  146. Func _MEMORYPOINTERWRITE($IV_ADDRESS, $AH_HANDLE, $AV_OFFSET, $V_DATA, $SV_TYPE = "dword")
  147.     If IsArray($AV_OFFSET) Then
  148.         If IsArray($AH_HANDLE) Then
  149.             Local $IV_POINTERCOUNT = UBound($AV_OFFSET) - 1
  150.         Else
  151.             SetError(2)
  152.             Return 0
  153.         EndIf
  154.     Else
  155.         SetError(1)
  156.         Return 0
  157.     EndIf
  158.     Local $IV_STRUCTDATA, $I
  159.     Local $V_BUFFER = DllStructCreate("dword")
  160.     For $I = 0 To $IV_POINTERCOUNT
  161.         If $I = $IV_POINTERCOUNT Then
  162.             $V_BUFFER = DllStructCreate($SV_TYPE)
  163.             If @error Then
  164.                 SetError(@error + 3)
  165.                 Return 0
  166.             EndIf
  167.             DllStructSetData($V_BUFFER, 1, $V_DATA)
  168.             If @error Then
  169.                 SetError(8)
  170.                 Return 0
  171.             EndIf
  172.             $IV_ADDRESS = "0x" & Hex($IV_STRUCTDATA + $AV_OFFSET[$I])
  173.             DllCall($AH_HANDLE[0], "int", "WriteProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
  174.             If @error Then
  175.                 SetError(9)
  176.                 Return 0
  177.             Else
  178.                 Return $IV_ADDRESS
  179.             EndIf
  180.         ElseIf $I = 0 Then
  181.             DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
  182.             If @error Then
  183.                 SetError(3)
  184.                 Return 0
  185.             EndIf
  186.             $IV_STRUCTDATA = DllStructGetData($V_BUFFER, 1)
  187.         Else
  188.             $IV_ADDRESS = "0x" & Hex($IV_STRUCTDATA + $AV_OFFSET[$I])
  189.             DllCall($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER), "int", "")
  190.             If @error Then
  191.                 SetError(3)
  192.                 Return 0
  193.             EndIf
  194.             $IV_STRUCTDATA = DllStructGetData($V_BUFFER, 1)
  195.         EndIf
  196.     Next
  197. EndFunc
  198. Func _MEMORYGETBASEADDRESS($AH_HANDLE, $IHEXDEC = 0)
  199.     Local $IV_ADDRESS = 1048576
  200.     Local $V_BUFFER = DllStructCreate("dword;dword;dword;dword;dword;dword;dword")
  201.     Local $VDATA
  202.     Local $VTYPE
  203.     If Not IsArray($AH_HANDLE) Then
  204.         SetError(1)
  205.         Return 0
  206.     EndIf
  207.     DllCall($AH_HANDLE[0], "int", "VirtualQueryEx", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER))
  208.     If Not @error Then
  209.         $VDATA = Hex(DllStructGetData($V_BUFFER, 2))
  210.         $VTYPE = Hex(DllStructGetData($V_BUFFER, 3))
  211.         While $VTYPE <> "00000080"
  212.             DllCall($AH_HANDLE[0], "int", "VirtualQueryEx", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DllStructGetPtr($V_BUFFER), "int", DllStructGetSize($V_BUFFER))
  213.             $VDATA = Hex(DllStructGetData($V_BUFFER, 2))
  214.             $VTYPE = Hex(DllStructGetData($V_BUFFER, 3))
  215.             If Hex($IV_ADDRESS) = "01000000" Then ExitLoop
  216.             $IV_ADDRESS += 65536
  217.         WEnd
  218.         If $VTYPE = "00000080" Then
  219.             SetError(0)
  220.             If $IHEXDEC = 1 Then
  221.                 Return Dec($VDATA)
  222.             Else
  223.                 Return $VDATA
  224.             EndIf
  225.         Else
  226.             SetError(2)
  227.             Return 0
  228.         EndIf
  229.     Else
  230.         SetError(3)
  231.         Return 0
  232.     EndIf
  233. EndFunc
  234. Func SETPRIVILEGE($PRIVILEGE, $BENABLE)
  235.     Const $TOKEN_ADJUST_PRIVILEGES = 32
  236.     Const $TOKEN_QUERY = 8
  237.     Const $SE_PRIVILEGE_ENABLED = 2
  238.     Local $HTOKEN, $SP_AUXRET, $SP_RET, $HCURRPROCESS, $NTOKENS, $NTOKENINDEX, $PRIV
  239.     $NTOKENS = 1
  240.     $LUID = DllStructCreate("dword;int")
  241.     If IsArray($PRIVILEGE) Then $NTOKENS = UBound($PRIVILEGE)
  242.     $TOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * $NTOKENS) & "]")
  243.     $NEWTOKEN_PRIVILEGES = DllStructCreate("dword;dword[" & (3 * $NTOKENS) & "]")
  244.     $HCURRPROCESS = DllCall("kernel32.dll", "hwnd", "GetCurrentProcess")
  245.     $SP_AUXRET = DllCall("advapi32.dll", "int", "OpenProcessToken", "hwnd", $HCURRPROCESS[0], "int", BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY), "int*", 0)
  246.     If $SP_AUXRET[0] Then
  247.         $HTOKEN = $SP_AUXRET[3]
  248.         DllStructSetData($TOKEN_PRIVILEGES, 1, 1)
  249.         $NTOKENINDEX = 1
  250.         While $NTOKENINDEX <= $NTOKENS
  251.             If IsArray($PRIVILEGE) Then
  252.                 $NTOKENVAR = $NTOKENINDEX - 1
  253.                 $PRIV = $PRIVILEGE[$NTOKENVAR]
  254.             Else
  255.                 $PRIV = $PRIVILEGE
  256.             EndIf
  257.             $RET = DllCall("advapi32.dll", "int", "LookupPrivilegeValue", "str", "", "str", $PRIV, "ptr", DllStructGetPtr($LUID))
  258.             If $RET[0] Then
  259.                 If $BENABLE Then
  260.                     DllStructSetData($TOKEN_PRIVILEGES, 2, $SE_PRIVILEGE_ENABLED, (3 * $NTOKENINDEX))
  261.                 Else
  262.                     DllStructSetData($TOKEN_PRIVILEGES, 2, 0, (3 * $NTOKENINDEX))
  263.                 EndIf
  264.                 DllStructSetData($TOKEN_PRIVILEGES, 2, DllStructGetData($LUID, 1), (3 * ($NTOKENINDEX - 1)) + 1)
  265.                 DllStructSetData($TOKEN_PRIVILEGES, 2, DllStructGetData($LUID, 2), (3 * ($NTOKENINDEX - 1)) + 2)
  266.                 DllStructSetData($LUID, 1, 0)
  267.                 DllStructSetData($LUID, 2, 0)
  268.             EndIf
  269.             $NTOKENINDEX += 1
  270.         WEnd
  271.         $RET = DllCall("advapi32.dll", "int", "AdjustTokenPrivileges", "hwnd", $HTOKEN, "int", 0, "ptr", DllStructGetPtr($TOKEN_PRIVILEGES), "int", DllStructGetSize($NEWTOKEN_PRIVILEGES), "ptr", DllStructGetPtr($NEWTOKEN_PRIVILEGES), "int*", 0)
  272.         $F = DllCall("kernel32.dll", "int", "GetLastError")
  273.     EndIf
  274.     $NEWTOKEN_PRIVILEGES = 0
  275.     $TOKEN_PRIVILEGES = 0
  276.     $LUID = 0
  277.     If $SP_AUXRET[0] = 0 Then Return 0
  278.     $SP_AUXRET = DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", $HTOKEN)
  279.     If Not $RET[0] And Not $SP_AUXRET[0] Then Return 0
  280.     Return $RET[0]
  281. EndFunc
  282. #EndRegion _Memory
  283. Global Const $LBS_NOTIFY = 1
  284. Global Const $LBS_SORT = 2
  285. Global Const $LBS_NOREDRAW = 4
  286. Global Const $LBS_MULTIPLESEL = 8
  287. Global Const $LBS_OWNERDRAWFIXED = 16
  288. Global Const $LBS_OWNERDRAWVARIABLE = 32
  289. Global Const $LBS_HASSTRINGS = 64
  290. Global Const $LBS_USETABSTOPS = 128
  291. Global Const $LBS_NOINTEGRALHEIGHT = 256
  292. Global Const $LBS_MULTICOLUMN = 512
  293. Global Const $LBS_WANTKEYBOARDINPUT = 1024
  294. Global Const $LBS_EXTENDEDSEL = 2048
  295. Global Const $LBS_DISABLENOSCROLL = 4096
  296. Global Const $LBS_NODATA = 8192
  297. Global Const $LBS_NOSEL = 16384
  298. Global Const $LBS_COMBOBOX = 32768
  299. Global Const $LBS_STANDARD = 3
  300. Global Const $LB_ERR = -1
  301. Global Const $LB_ERRATTRIBUTE = -3
  302. Global Const $LB_ERRREQUIRED = -4
  303. Global Const $LB_ERRSPACE = -2
  304. Global Const $LB_ADDSTRING = 384
  305. Global Const $LB_INSERTSTRING = 385
  306. Global Const $LB_DELETESTRING = 386
  307. Global Const $LB_SELITEMRANGEEX = 387
  308. Global Const $LB_RESETCONTENT = 388
  309. Global Const $LB_SETSEL = 389
  310. Global Const $LB_SETCURSEL = 390
  311. Global Const $LB_GETSEL = 391
  312. Global Const $LB_GETCURSEL = 392
  313. Global Const $LB_GETTEXT = 393
  314. Global Const $LB_GETTEXTLEN = 394
  315. Global Const $LB_GETCOUNT = 395
  316. Global Const $LB_SELECTSTRING = 396
  317. Global Const $LB_DIR = 397
  318. Global Const $LB_GETTOPINDEX = 398
  319. Global Const $LB_FINDSTRING = 399
  320. Global Const $LB_GETSELCOUNT = 400
  321. Global Const $LB_GETSELITEMS = 401
  322. Global Const $LB_SETTABSTOPS = 402
  323. Global Const $LB_GETHORIZONTALEXTENT = 403
  324. Global Const $LB_SETHORIZONTALEXTENT = 404
  325. Global Const $LB_SETCOLUMNWIDTH = 405
  326. Global Const $LB_ADDFILE = 406
  327. Global Const $LB_SETTOPINDEX = 407
  328. Global Const $LB_GETITEMRECT = 408
  329. Global Const $LB_GETITEMDATA = 409
  330. Global Const $LB_SETITEMDATA = 410
  331. Global Const $LB_SELITEMRANGE = 411
  332. Global Const $LB_SETANCHORINDEX = 412
  333. Global Const $LB_GETANCHORINDEX = 413
  334. Global Const $LB_SETCARETINDEX = 414
  335. Global Const $LB_GETCARETINDEX = 415
  336. Global Const $LB_SETITEMHEIGHT = 416
  337. Global Const $LB_GETITEMHEIGHT = 417
  338. Global Const $LB_FINDSTRINGEXACT = 418
  339. Global Const $LB_SETLOCALE = 421
  340. Global Const $LB_GETLOCALE = 422
  341. Global Const $LB_SETCOUNT = 423
  342. Global Const $LB_INITSTORAGE = 424
  343. Global Const $LB_ITEMFROMPOINT = 425
  344. Global Const $LB_MULTIPLEADDSTRING = 433
  345. Global Const $LB_GETLISTBOXINFO = 434
  346. Global Const $LBN_ERRSPACE = -2
  347. Global Const $LBN_SELCHANGE = 1
  348. Global Const $LBN_DBLCLK = 2
  349. Global Const $LBN_SELCANCEL = 3
  350. Global Const $LBN_SETFOCUS = 4
  351. Global Const $LBN_KILLFOCUS = 5
  352. Global Const $__LISTBOXCONSTANT_WS_BORDER = 8388608
  353. Global Const $__LISTBOXCONSTANT_WS_VSCROLL = 2097152
  354. Global Const $GUI_SS_DEFAULT_LIST = BitOR($LBS_SORT, $__LISTBOXCONSTANT_WS_BORDER, $__LISTBOXCONSTANT_WS_VSCROLL, $LBS_NOTIFY)
  355. Global Const $ES_LEFT = 0
  356. Global Const $ES_CENTER = 1
  357. Global Const $ES_RIGHT = 2
  358. Global Const $ES_MULTILINE = 4
  359. Global Const $ES_UPPERCASE = 8
  360. Global Const $ES_LOWERCASE = 16
  361. Global Const $ES_PASSWORD = 32
  362. Global Const $ES_AUTOVSCROLL = 64
  363. Global Const $ES_AUTOHSCROLL = 128
  364. Global Const $ES_NOHIDESEL = 256
  365. Global Const $ES_OEMCONVERT = 1024
  366. Global Const $ES_READONLY = 2048
  367. Global Const $ES_WANTRETURN = 4096
  368. Global Const $ES_NUMBER = 8192
  369. Global Const $EC_ERR = -1
  370. Global Const $ECM_FIRST = 5376
  371. Global Const $EM_CANUNDO = 198
  372. Global Const $EM_CHARFROMPOS = 215
  373. Global Const $EM_EMPTYUNDOBUFFER = 205
  374. Global Const $EM_FMTLINES = 200
  375. Global Const $EM_GETCUEBANNER = ($ECM_FIRST + 2)
  376. Global Const $EM_GETFIRSTVISIBLELINE = 206
  377. Global Const $EM_GETHANDLE = 189
  378. Global Const $EM_GETIMESTATUS = 217
  379. Global Const $EM_GETLIMITTEXT = 213
  380. Global Const $EM_GETLINE = 196
  381. Global Const $EM_GETLINECOUNT = 186
  382. Global Const $EM_GETMARGINS = 212
  383. Global Const $EM_GETMODIFY = 184
  384. Global Const $EM_GETPASSWORDCHAR = 210
  385. Global Const $EM_GETRECT = 178
  386. Global Const $EM_GETSEL = 176
  387. Global Const $EM_GETTHUMB = 190
  388. Global Const $EM_GETWORDBREAKPROC = 209
  389. Global Const $EM_HIDEBALLOONTIP = ($ECM_FIRST + 4)
  390. Global Const $EM_LIMITTEXT = 197
  391. Global Const $EM_LINEFROMCHAR = 201
  392. Global Const $EM_LINEINDEX = 187
  393. Global Const $EM_LINELENGTH = 193
  394. Global Const $EM_LINESCROLL = 182
  395. Global Const $EM_POSFROMCHAR = 214
  396. Global Const $EM_REPLACESEL = 194
  397. Global Const $EM_SCROLL = 181
  398. Global Const $EM_SCROLLCARET = 183
  399. Global Const $EM_SETCUEBANNER = ($ECM_FIRST + 1)
  400. Global Const $EM_SETHANDLE = 188
  401. Global Const $EM_SETIMESTATUS = 216
  402. Global Const $EM_SETLIMITTEXT = $EM_LIMITTEXT
  403. Global Const $EM_SETMARGINS = 211
  404. Global Const $EM_SETMODIFY = 185
  405. Global Const $EM_SETPASSWORDCHAR = 204
  406. Global Const $EM_SETREADONLY = 207
  407. Global Const $EM_SETRECT = 179
  408. Global Const $EM_SETRECTNP = 180
  409. Global Const $EM_SETSEL = 177
  410. Global Const $EM_SETTABSTOPS = 203
  411. Global Const $EM_SETWORDBREAKPROC = 208
  412. Global Const $EM_SHOWBALLOONTIP = ($ECM_FIRST + 3)
  413. Global Const $EM_UNDO = 199
  414. Global Const $EC_LEFTMARGIN = 1
  415. Global Const $EC_RIGHTMARGIN = 2
  416. Global Const $EC_USEFONTINFO = 65535
  417. Global Const $EMSIS_COMPOSITIONSTRING = 1
  418. Global Const $EIMES_GETCOMPSTRATONCE = 1
  419. Global Const $EIMES_CANCELCOMPSTRINFOCUS = 2
  420. Global Const $EIMES_COMPLETECOMPSTRKILLFOCUS = 4
  421. Global Const $EN_ALIGN_LTR_EC = 1792
  422. Global Const $EN_ALIGN_RTL_EC = 1793
  423. Global Const $EN_CHANGE = 768
  424. Global Const $EN_ERRSPACE = 1280
  425. Global Const $EN_HSCROLL = 1537
  426. Global Const $EN_KILLFOCUS = 512
  427. Global Const $EN_MAXTEXT = 1281
  428. Global Const $EN_SETFOCUS = 256
  429. Global Const $EN_UPDATE = 1024
  430. Global Const $EN_VSCROLL = 1538
  431. Global Const $TTI_NONE = 0
  432. Global Const $TTI_INFO = 1
  433. Global Const $TTI_WARNING = 2
  434. Global Const $TTI_ERROR = 3
  435. Global Const $TTI_INFO_LARGE = 4
  436. Global Const $TTI_WARNING_LARGE = 5
  437. Global Const $TTI_ERROR_LARGE = 6
  438. Global Const $__EDITCONSTANT_WS_VSCROLL = 2097152
  439. Global Const $__EDITCONSTANT_WS_HSCROLL = 1048576
  440. Global Const $GUI_SS_DEFAULT_EDIT = BitOR($ES_WANTRETURN, $__EDITCONSTANT_WS_VSCROLL, $__EDITCONSTANT_WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL)
  441. Global Const $GUI_SS_DEFAULT_INPUT = BitOR($ES_LEFT, $ES_AUTOHSCROLL)
  442. Global Const $BS_GROUPBOX = 7
  443. Global Const $BS_BOTTOM = 2048
  444. Global Const $BS_CENTER = 768
  445. Global Const $BS_DEFPUSHBUTTON = 1
  446. Global Const $BS_LEFT = 256
  447. Global Const $BS_MULTILINE = 8192
  448. Global Const $BS_PUSHBOX = 10
  449. Global Const $BS_PUSHLIKE = 4096
  450. Global Const $BS_RIGHT = 512
  451. Global Const $BS_RIGHTBUTTON = 32
  452. Global Const $BS_TOP = 1024
  453. Global Const $BS_VCENTER = 3072
  454. Global Const $BS_FLAT = 32768
  455. Global Const $BS_ICON = 64
  456. Global Const $BS_BITMAP = 128
  457. Global Const $BS_NOTIFY = 16384
  458. Global Const $BS_SPLITBUTTON = 12
  459. Global Const $BS_DEFSPLITBUTTON = 13
  460. Global Const $BS_COMMANDLINK = 14
  461. Global Const $BS_DEFCOMMANDLINK = 15
  462. Global Const $BCSIF_GLYPH = 1
  463. Global Const $BCSIF_IMAGE = 2
  464. Global Const $BCSIF_STYLE = 4
  465. Global Const $BCSIF_SIZE = 8
  466. Global Const $BCSS_NOSPLIT = 1
  467. Global Const $BCSS_STRETCH = 2
  468. Global Const $BCSS_ALIGNLEFT = 4
  469. Global Const $BCSS_IMAGE = 8
  470. Global Const $BUTTON_IMAGELIST_ALIGN_LEFT = 0
  471. Global Const $BUTTON_IMAGELIST_ALIGN_RIGHT = 1
  472. Global Const $BUTTON_IMAGELIST_ALIGN_TOP = 2
  473. Global Const $BUTTON_IMAGELIST_ALIGN_BOTTOM = 3
  474. Global Const $BUTTON_IMAGELIST_ALIGN_CENTER = 4
  475. Global Const $BS_3STATE = 5
  476. Global Const $BS_AUTO3STATE = 6
  477. Global Const $BS_AUTOCHECKBOX = 3
  478. Global Const $BS_CHECKBOX = 2
  479. Global Const $BS_RADIOBUTTON = 4
  480. Global Const $BS_AUTORADIOBUTTON = 9
  481. Global Const $BS_OWNERDRAW = 11
  482. Global Const $GUI_SS_DEFAULT_BUTTON = 0
  483. Global Const $GUI_SS_DEFAULT_CHECKBOX = 0
  484. Global Const $GUI_SS_DEFAULT_GROUP = 0
  485. Global Const $GUI_SS_DEFAULT_RADIO = 0
  486. Global Const $BCM_FIRST = 5632
  487. Global Const $BCM_GETIDEALSIZE = ($BCM_FIRST + 1)
  488. Global Const $BCM_GETIMAGELIST = ($BCM_FIRST + 3)
  489. Global Const $BCM_GETNOTE = ($BCM_FIRST + 10)
  490. Global Const $BCM_GETNOTELENGTH = ($BCM_FIRST + 11)
  491. Global Const $BCM_GETSPLITINFO = ($BCM_FIRST + 8)
  492. Global Const $BCM_GETTEXTMARGIN = ($BCM_FIRST + 5)
  493. Global Const $BCM_SETDROPDOWNSTATE = ($BCM_FIRST + 6)
  494. Global Const $BCM_SETIMAGELIST = ($BCM_FIRST + 2)
  495. Global Const $BCM_SETNOTE = ($BCM_FIRST + 9)
  496. Global Const $BCM_SETSHIELD = ($BCM_FIRST + 12)
  497. Global Const $BCM_SETSPLITINFO = ($BCM_FIRST + 7)
  498. Global Const $BCM_SETTEXTMARGIN = ($BCM_FIRST + 4)
  499. Global Const $BM_CLICK = 245
  500. Global Const $BM_GETCHECK = 240
  501. Global Const $BM_GETIMAGE = 246
  502. Global Const $BM_GETSTATE = 242
  503. Global Const $BM_SETCHECK = 241
  504. Global Const $BM_SETDONTCLICK = 248
  505. Global Const $BM_SETIMAGE = 247
  506. Global Const $BM_SETSTATE = 243
  507. Global Const $BM_SETSTYLE = 244
  508. Global Const $BCN_FIRST = -1250
  509. Global Const $BCN_DROPDOWN = ($BCN_FIRST + 2)
  510. Global Const $BCN_HOTITEMCHANGE = ($BCN_FIRST + 1)
  511. Global Const $BN_CLICKED = 0
  512. Global Const $BN_PAINT = 1
  513. Global Const $BN_HILITE = 2
  514. Global Const $BN_UNHILITE = 3
  515. Global Const $BN_DISABLE = 4
  516. Global Const $BN_DOUBLECLICKED = 5
  517. Global Const $BN_SETFOCUS = 6
  518. Global Const $BN_KILLFOCUS = 7
  519. Global Const $BN_PUSHED = $BN_HILITE
  520. Global Const $BN_UNPUSHED = $BN_UNHILITE
  521. Global Const $BN_DBLCLK = $BN_DOUBLECLICKED
  522. Global Const $BST_CHECKED = 1
  523. Global Const $BST_INDETERMINATE = 2
  524. Global Const $BST_UNCHECKED = 0
  525. Global Const $BST_FOCUS = 8
  526. Global Const $BST_PUSHED = 4
  527. Global Const $BST_DONTCLICK = 128
  528. Global Const $GUI_EVENT_CLOSE = -3
  529. Global Const $GUI_EVENT_MINIMIZE = -4
  530. Global Const $GUI_EVENT_RESTORE = -5
  531. Global Const $GUI_EVENT_MAXIMIZE = -6
  532. Global Const $GUI_EVENT_PRIMARYDOWN = -7
  533. Global Const $GUI_EVENT_PRIMARYUP = -8
  534. Global Const $GUI_EVENT_SECONDARYDOWN = -9
  535. Global Const $GUI_EVENT_SECONDARYUP = -10
  536. Global Const $GUI_EVENT_MOUSEMOVE = -11
  537. Global Const $GUI_EVENT_RESIZED = -12
  538. Global Const $GUI_EVENT_DROPPED = -13
  539. Global Const $GUI_RUNDEFMSG = "GUI_RUNDEFMSG"
  540. Global Const $GUI_AVISTOP = 0
  541. Global Const $GUI_AVISTART = 1
  542. Global Const $GUI_AVICLOSE = 2
  543. Global Const $GUI_CHECKED = 1
  544. Global Const $GUI_INDETERMINATE = 2
  545. Global Const $GUI_UNCHECKED = 4
  546. Global Const $GUI_DROPACCEPTED = 8
  547. Global Const $GUI_NODROPACCEPTED = 4096
  548. Global Const $GUI_ACCEPTFILES = $GUI_DROPACCEPTED
  549. Global Const $GUI_SHOW = 16
  550. Global Const $GUI_HIDE = 32
  551. Global Const $GUI_ENABLE = 64
  552. Global Const $GUI_DISABLE = 128
  553. Global Const $GUI_FOCUS = 256
  554. Global Const $GUI_NOFOCUS = 8192
  555. Global Const $GUI_DEFBUTTON = 512
  556. Global Const $GUI_EXPAND = 1024
  557. Global Const $GUI_ONTOP = 2048
  558. Global Const $GUI_FONTITALIC = 2
  559. Global Const $GUI_FONTUNDER = 4
  560. Global Const $GUI_FONTSTRIKE = 8
  561. Global Const $GUI_DOCKAUTO = 1
  562. Global Const $GUI_DOCKLEFT = 2
  563. Global Const $GUI_DOCKRIGHT = 4
  564. Global Const $GUI_DOCKHCENTER = 8
  565. Global Const $GUI_DOCKTOP = 32
  566. Global Const $GUI_DOCKBOTTOM = 64
  567. Global Const $GUI_DOCKVCENTER = 128
  568. Global Const $GUI_DOCKWIDTH = 256
  569. Global Const $GUI_DOCKHEIGHT = 512
  570. Global Const $GUI_DOCKSIZE = 768
  571. Global Const $GUI_DOCKMENUBAR = 544
  572. Global Const $GUI_DOCKSTATEBAR = 576
  573. Global Const $GUI_DOCKALL = 802
  574. Global Const $GUI_DOCKBORDERS = 102
  575. Global Const $GUI_GR_CLOSE = 1
  576. Global Const $GUI_GR_LINE = 2
  577. Global Const $GUI_GR_BEZIER = 4
  578. Global Const $GUI_GR_MOVE = 6
  579. Global Const $GUI_GR_COLOR = 8
  580. Global Const $GUI_GR_RECT = 10
  581. Global Const $GUI_GR_ELLIPSE = 12
  582. Global Const $GUI_GR_PIE = 14
  583. Global Const $GUI_GR_DOT = 16
  584. Global Const $GUI_GR_PIXEL = 18
  585. Global Const $GUI_GR_HINT = 20
  586. Global Const $GUI_GR_REFRESH = 22
  587. Global Const $GUI_GR_PENSIZE = 24
  588. Global Const $GUI_GR_NOBKCOLOR = -2
  589. Global Const $GUI_BKCOLOR_DEFAULT = -1
  590. Global Const $GUI_BKCOLOR_TRANSPARENT = -2
  591. Global Const $GUI_BKCOLOR_LV_ALTERNATE = -33554432
  592. Global Const $GUI_WS_EX_PARENTDRAG = 1048576
  593. Global Const $DDL_ARCHIVE = 32
  594. Global Const $DDL_DIRECTORY = 16
  595. Global Const $DDL_DRIVES = 16384
  596. Global Const $DDL_EXCLUSIVE = 32768
  597. Global Const $DDL_HIDDEN = 2
  598. Global Const $DDL_READONLY = 1
  599. Global Const $DDL_READWRITE = 0
  600. Global Const $DDL_SYSTEM = 4
  601. Global Const $GMEM_FIXED = 0
  602. Global Const $GMEM_MOVEABLE = 2
  603. Global Const $GMEM_NOCOMPACT = 16
  604. Global Const $GMEM_NODISCARD = 32
  605. Global Const $GMEM_ZEROINIT = 64
  606. Global Const $GMEM_MODIFY = 128
  607. Global Const $GMEM_DISCARDABLE = 256
  608. Global Const $GMEM_NOT_BANKED = 4096
  609. Global Const $GMEM_SHARE = 8192
  610. Global Const $GMEM_DDESHARE = 8192
  611. Global Const $GMEM_NOTIFY = 16384
  612. Global Const $GMEM_LOWER = 4096
  613. Global Const $GMEM_VALID_FLAGS = 32626
  614. Global Const $GMEM_INVALID_HANDLE = 32768
  615. Global Const $GPTR = $GMEM_FIXED + $GMEM_ZEROINIT
  616. Global Const $GHND = $GMEM_MOVEABLE + $GMEM_ZEROINIT
  617. Global Const $MEM_COMMIT = 4096
  618. Global Const $MEM_RESERVE = 8192
  619. Global Const $MEM_TOP_DOWN = 1048576
  620. Global Const $MEM_SHARED = 134217728
  621. Global Const $PAGE_NOACCESS = 1
  622. Global Const $PAGE_READONLY = 2
  623. Global Const $PAGE_READWRITE = 4
  624. Global Const $PAGE_EXECUTE = 16
  625. Global Const $PAGE_EXECUTE_READ = 32
  626. Global Const $PAGE_EXECUTE_READWRITE = 64
  627. Global Const $PAGE_GUARD = 256
  628. Global Const $PAGE_NOCACHE = 512
  629. Global Const $MEM_DECOMMIT = 16384
  630. Global Const $MEM_RELEASE = 32768
  631. Global Const $TAGPOINT = "long X;long Y"
  632. Global Const $TAGRECT = "long Left;long Top;long Right;long Bottom"
  633. Global Const $TAGSIZE = "long X;long Y"
  634. Global Const $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight"
  635. Global Const $TAGFILETIME = "dword Lo;dword Hi"
  636. Global Const $TAGSYSTEMTIME = "word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds"
  637. Global Const $TAGTIME_ZONE_INFORMATION = "long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias"
  638. Global Const $TAGNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;INT Code"
  639. Global Const $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param"
  640. Global Const $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;ptr szText"
  641. Global Const $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;ptr szText;int Why"
  642. Global Const $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param"
  643. 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"
  644. Global Const $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TAGSYSTEMTIME
  645. Global Const $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TAGSYSTEMTIME & ";ptr pDisplay;wchar Display[64]"
  646. Global Const $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;long SizeX;long SizeY"
  647. Global Const $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TAGSYSTEMTIME
  648. Global Const $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TAGSYSTEMTIME & ";dword Flags"
  649. 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"
  650. Global Const $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved"
  651. Global Const $TAGGDIPENCODERPARAM = "byte GUID[16];dword Count;dword Type;ptr Values"
  652. Global Const $TAGGDIPENCODERPARAMS = "dword Count;byte Params[0]"
  653. Global Const $TAGGDIPRECTF = "float X;float Y;float Width;float Height"
  654. Global Const $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs"
  655. Global Const $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc"
  656. 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"
  657. Global Const $TAGGDIPPENCODERPARAMS = "dword Count;byte Params[0]"
  658. 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"
  659. Global Const $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam"
  660. Global Const $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT
  661. Global Const $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem"
  662. Global Const $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1"
  663. Global Const $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value"
  664. Global Const $TAGLVFINDINFO = "uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction"
  665. Global Const $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem"
  666. 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"
  667. Global Const $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "long ActionX;long ActionY;lparam Param"
  668. 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"
  669. Global Const $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM
  670. Global Const $TAGNMLVFINDITEM = $TAGNMHDR & ";" & $TAGLVFINDINFO
  671. Global Const $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam"
  672. Global Const $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags"
  673. Global Const $TAGNMLVKEYDOWN = $TAGNMHDR & ";align 1;word VKey;uint Flags"
  674. Global Const $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY"
  675. Global Const $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TAGSYSTEMTIME
  676. 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"
  677. 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"
  678. 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"
  679. Global Const $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TAGSYSTEMTIME & ";int DayState;ptr pDayState"
  680. 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"
  681. Global Const $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result"
  682. Global Const $TAGNMTCKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags"
  683. Global Const $TAGTVITEM = "uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param"
  684. Global Const $TAGTVITEMEX = $TAGTVITEM & ";int Integral"
  685. 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"
  686. 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"
  687. Global Const $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM
  688. Global Const $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam"
  689. Global Const $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item"
  690. Global Const $TAGNMTVKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags"
  691. Global Const $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo"
  692. Global Const $TAGTOKEN_PRIVILEGES = "dword Count;int64 LUID;dword Attributes"
  693. Global Const $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT
  694. Global Const $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData"
  695. 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"
  696. 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"
  697. Global Const $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak"
  698. Global Const $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;" & "long ActualLeft;long ActualTop;long ActualRight;long ActualBottom"
  699. Global Const $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;laram lParam"
  700. Global Const $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM"
  701. Global Const $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;long CLeft;long CTop;long CRight;long CBottom;" & "long BLeft;long BTop;long BRight;long BBottom"
  702. Global Const $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow"
  703. 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
  704. Global Const $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags"
  705. Global Const $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;align;dword_ptr Param;int_ptr String"
  706. Global Const $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax"
  707. Global Const $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider"
  708. Global Const $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;dword Offset;dword OffsetHigh;handle hEvent"
  709. 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"
  710. 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"
  711. Global Const $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format"
  712. Global Const $TAGGUID = "dword Data1;word Data2;word Data3;byte Data4[8]"
  713. Global Const $TAGWINDOWPLACEMENT = "uint length; uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]"
  714. Global Const $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags"
  715. Global Const $TAGSCROLLINFO = "uint cbSize;uint fMask;int  nMin;int  nMax;uint nPage;int  nPos;int  nTrackPos"
  716. Global Const $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]"
  717. 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]"
  718. Global Const $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo"
  719. Global Const $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID"
  720. 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"
  721. Global Const $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle"
  722. 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]"
  723. Global Const $PROCESS_TERMINATE = 1
  724. Global Const $PROCESS_CREATE_THREAD = 2
  725. Global Const $PROCESS_SET_SESSIONID = 4
  726. Global Const $PROCESS_VM_OPERATION = 8
  727. Global Const $PROCESS_VM_READ = 16
  728. Global Const $PROCESS_VM_WRITE = 32
  729. Global Const $PROCESS_DUP_HANDLE = 64
  730. Global Const $PROCESS_CREATE_PROCESS = 128
  731. Global Const $PROCESS_SET_QUOTA = 256
  732. Global Const $PROCESS_SET_INFORMATION = 512
  733. Global Const $PROCESS_QUERY_INFORMATION = 1024
  734. Global Const $PROCESS_SUSPEND_RESUME = 2048
  735. Global Const $PROCESS_ALL_ACCESS = 2035711
  736. Global Const $ERROR_NO_TOKEN = 1008
  737. Global Const $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
  738. Global Const $SE_AUDIT_NAME = "SeAuditPrivilege"
  739. Global Const $SE_BACKUP_NAME = "SeBackupPrivilege"
  740. Global Const $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
  741. Global Const $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
  742. Global Const $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
  743. Global Const $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
  744. Global Const $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
  745. Global Const $SE_DEBUG_NAME = "SeDebugPrivilege"
  746. Global Const $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
  747. Global Const $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
  748. Global Const $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
  749. Global Const $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
  750. Global Const $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
  751. Global Const $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
  752. Global Const $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
  753. Global Const $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
  754. Global Const $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
  755. Global Const $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
  756. Global Const $SE_RESTORE_NAME = "SeRestorePrivilege"
  757. Global Const $SE_SECURITY_NAME = "SeSecurityPrivilege"
  758. Global Const $SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
  759. Global Const $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
  760. Global Const $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
  761. Global Const $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
  762. Global Const $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
  763. Global Const $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
  764. Global Const $SE_TCB_NAME = "SeTcbPrivilege"
  765. Global Const $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
  766. Global Const $SE_UNDOCK_NAME = "SeUndockPrivilege"
  767. Global Const $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1
  768. Global Const $SE_PRIVILEGE_ENABLED = 2
  769. Global Const $SE_PRIVILEGE_REMOVED = 4
  770. Global Const $SE_PRIVILEGE_USED_FOR_ACCESS = -2147483648
  771. Global Const $TOKENUSER = 1
  772. Global Const $TOKENGROUPS = 2
  773. Global Const $TOKENPRIVILEGES = 3
  774. Global Const $TOKENOWNER = 4
  775. Global Const $TOKENPRIMARYGROUP = 5
  776. Global Const $TOKENDEFAULTDACL = 6
  777. Global Const $TOKENSOURCE = 7
  778. Global Const $TOKENTYPE = 8
  779. Global Const $TOKENIMPERSONATIONLEVEL = 9
  780. Global Const $TOKENSTATISTICS = 10
  781. Global Const $TOKENRESTRICTEDSIDS = 11
  782. Global Const $TOKENSESSIONID = 12
  783. Global Const $TOKENGROUPSANDPRIVILEGES = 13
  784. Global Const $TOKENSESSIONREFERENCE = 14
  785. Global Const $TOKENSANDBOXINERT = 15
  786. Global Const $TOKENAUDITPOLICY = 16
  787. Global Const $TOKENORIGIN = 17
  788. Global Const $TOKENELEVATIONTYPE = 18
  789. Global Const $TOKENLINKEDTOKEN = 19
  790. Global Const $TOKENELEVATION = 20
  791. Global Const $TOKENHASRESTRICTIONS = 21
  792. Global Const $TOKENACCESSINFORMATION = 22
  793. Global Const $TOKENVIRTUALIZATIONALLOWED = 23
  794. Global Const $TOKENVIRTUALIZATIONENABLED = 24
  795. Global Const $TOKENINTEGRITYLEVEL = 25
  796. Global Const $TOKENUIACCESS = 26
  797. Global Const $TOKENMANDATORYPOLICY = 27
  798. Global Const $TOKENLOGONSID = 28
  799. Global Const $TOKEN_ASSIGN_PRIMARY = 1
  800. Global Const $TOKEN_DUPLICATE = 2
  801. Global Const $TOKEN_IMPERSONATE = 4
  802. Global Const $TOKEN_QUERY = 8
  803. Global Const $TOKEN_QUERY_SOURCE = 16
  804. Global Const $TOKEN_ADJUST_PRIVILEGES = 32
  805. Global Const $TOKEN_ADJUST_GROUPS = 64
  806. Global Const $TOKEN_ADJUST_DEFAULT = 128
  807. Global Const $TOKEN_ADJUST_SESSIONID = 256
  808. Func _WINAPI_GETLASTERROR($CURERR = @error, $CUREXT = @extended)
  809.     Local $ARESULT = DllCall("kernel32.dll", "dword", "GetLastError")
  810.     Return SetError($CURERR, $CUREXT, $ARESULT[0])
  811. EndFunc
  812. Func _WINAPI_SETLASTERROR($IERRCODE, $CURERR = @error, $CUREXT = @extended)
  813.     DllCall("kernel32.dll", "none", "SetLastError", "dword", $IERRCODE)
  814.     Return SetError($CURERR, $CUREXT)
  815. EndFunc
  816. Func _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN, $FDISABLEALL, $PNEWSTATE, $IBUFFERLEN, $PPREVSTATE = 0, $PREQUIRED = 0)
  817.     Local $ARESULT = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $HTOKEN, "bool", $FDISABLEALL, "ptr", $PNEWSTATE, "dword", $IBUFFERLEN, "ptr", $PPREVSTATE, "ptr", $PREQUIRED)
  818.     If @error Then Return SetError(@error, @extended, False)
  819.     Return $ARESULT[0]
  820. EndFunc
  821. Func _SECURITY__GETACCOUNTSID($SACCOUNT, $SSYSTEM = "")
  822.     Local $AACCT = _SECURITY__LOOKUPACCOUNTNAME($SACCOUNT, $SSYSTEM)
  823.     If @error Then Return SetError(@error, 0, 0)
  824.     Return _SECURITY__STRINGSIDTOSID($AACCT[0])
  825. EndFunc
  826. Func _SECURITY__GETLENGTHSID($PSID)
  827.     If Not _SECURITY__ISVALIDSID($PSID) Then Return SetError(-1, 0, 0)
  828.     Local $ARESULT = DllCall("advapi32.dll", "dword", "GetLengthSid", "ptr", $PSID)
  829.     If @error Then Return SetError(@error, @extended, 0)
  830.     Return $ARESULT[0]
  831. EndFunc
  832. Func _SECURITY__GETTOKENINFORMATION($HTOKEN, $ICLASS)
  833.     Local $ARESULT = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "ptr", 0, "dword", 0, "dword*", 0)
  834.     If @error Then Return SetError(@error, @extended, 0)
  835.     If Not $ARESULT[0] Then Return 0
  836.     Local $TBUFFER = DllStructCreate("byte[" & $ARESULT[5] & "]")
  837.     Local $PBUFFER = DllStructGetPtr($TBUFFER)
  838.     $ARESULT = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "ptr", $PBUFFER, "dword", $ARESULT[5], "dword*", 0)
  839.     If @error Then Return SetError(@error, @extended, 0)
  840.     If Not $ARESULT[0] Then Return 0
  841.     Return $TBUFFER
  842. EndFunc
  843. Func _SECURITY__IMPERSONATESELF($ILEVEL = 2)
  844.     Local $ARESULT = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $ILEVEL)
  845.     If @error Then Return SetError(@error, @extended, False)
  846.     Return $ARESULT[0]
  847. EndFunc
  848. Func _SECURITY__ISVALIDSID($PSID)
  849.     Local $ARESULT = DllCall("advapi32.dll", "bool", "IsValidSid", "ptr", $PSID)
  850.     If @error Then Return SetError(@error, @extended, False)
  851.     Return $ARESULT[0]
  852. EndFunc
  853. Func _SECURITY__LOOKUPACCOUNTNAME($SACCOUNT, $SSYSTEM = "")
  854.     Local $TDATA = DllStructCreate("byte SID[256]")
  855.     Local $PSID = DllStructGetPtr($TDATA, "SID")
  856.     Local $ARESULT = DllCall("advapi32.dll", "bool", "LookupAccountNameW", "wstr", $SSYSTEM, "wstr", $SACCOUNT, "ptr", $PSID, "dword*", 256, "wstr", "", "dword*", 256, "int*", 0)
  857.     If @error Then Return SetError(@error, @extended, 0)
  858.     If Not $ARESULT[0] Then Return 0
  859.     Local $AACCT[3]
  860.     $AACCT[0] = _SECURITY__SIDTOSTRINGSID($PSID)
  861.     $AACCT[1] = $ARESULT[5]
  862.     $AACCT[2] = $ARESULT[7]
  863.     Return $AACCT
  864. EndFunc
  865. Func _SECURITY__LOOKUPACCOUNTSID($VSID)
  866.     Local $PSID, $AACCT[3]
  867.     If IsString($VSID) Then
  868.         Local $TSID = _SECURITY__STRINGSIDTOSID($VSID)
  869.         $PSID = DllStructGetPtr($TSID)
  870.     Else
  871.         $PSID = $VSID
  872.     EndIf
  873.     If Not _SECURITY__ISVALIDSID($PSID) Then Return SetError(-1, 0, 0)
  874.     Local $ARESULT = DllCall("advapi32.dll", "bool", "LookupAccountSidW", "ptr", 0, "ptr", $PSID, "wstr", "", "dword*", 256, "wstr", "", "dword*", 256, "int*", 0)
  875.     If @error Then Return SetError(@error, @extended, 0)
  876.     If Not $ARESULT[0] Then Return 0
  877.     Local $AACCT[3]
  878.     $AACCT[0] = $ARESULT[3]
  879.     $AACCT[1] = $ARESULT[5]
  880.     $AACCT[2] = $ARESULT[7]
  881.     Return $AACCT
  882. EndFunc
  883. Func _SECURITY__LOOKUPPRIVILEGEVALUE($SSYSTEM, $SNAME)
  884.     Local $ARESULT = DllCall("advapi32.dll", "int", "LookupPrivilegeValueW", "wstr", $SSYSTEM, "wstr", $SNAME, "int64*", 0)
  885.     If @error Then Return SetError(@error, @extended, 0)
  886.     Return SetError(0, $ARESULT[0], $ARESULT[3])
  887. EndFunc
  888. Func _SECURITY__OPENPROCESSTOKEN($HPROCESS, $IACCESS)
  889.     Local $ARESULT = DllCall("advapi32.dll", "int", "OpenProcessToken", "handle", $HPROCESS, "dword", $IACCESS, "ptr", 0)
  890.     If @error Then Return SetError(@error, @extended, 0)
  891.     Return SetError(0, $ARESULT[0], $ARESULT[3])
  892. EndFunc
  893. Func _SECURITY__OPENTHREADTOKEN($IACCESS, $HTHREAD = 0, $FOPENASSELF = False)
  894.     If $HTHREAD = 0 Then $HTHREAD = DllCall("kernel32.dll", "handle", "GetCurrentThread")
  895.     If @error Then Return SetError(@error, @extended, 0)
  896.     Local $ARESULT = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $HTHREAD[0], "dword", $IACCESS, "int", $FOPENASSELF, "ptr*", 0)
  897.     If @error Then Return SetError(@error, @extended, 0)
  898.     Return SetError(0, $ARESULT[0], $ARESULT[4])
  899. EndFunc
  900. Func _SECURITY__OPENTHREADTOKENEX($IACCESS, $HTHREAD = 0, $FOPENASSELF = False)
  901.     Local $HTOKEN = _SECURITY__OPENTHREADTOKEN($IACCESS, $HTHREAD, $FOPENASSELF)
  902.     If $HTOKEN = 0 Then
  903.         If _WINAPI_GETLASTERROR() <> $ERROR_NO_TOKEN Then Return SetError(-3, _WINAPI_GETLASTERROR(), 0)
  904.         If Not _SECURITY__IMPERSONATESELF() Then Return SetError(-1, _WINAPI_GETLASTERROR(), 0)
  905.         $HTOKEN = _SECURITY__OPENTHREADTOKEN($IACCESS, $HTHREAD, $FOPENASSELF)
  906.         If $HTOKEN = 0 Then Return SetError(-2, _WINAPI_GETLASTERROR(), 0)
  907.     EndIf
  908.     Return $HTOKEN
  909. EndFunc
  910. Func _SECURITY__SETPRIVILEGE($HTOKEN, $SPRIVILEGE, $FENABLE)
  911.     Local $ILUID = _SECURITY__LOOKUPPRIVILEGEVALUE("", $SPRIVILEGE)
  912.     If $ILUID = 0 Then Return SetError(-1, 0, False)
  913.     Local $TCURRSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
  914.     Local $PCURRSTATE = DllStructGetPtr($TCURRSTATE)
  915.     Local $ICURRSTATE = DllStructGetSize($TCURRSTATE)
  916.     Local $TPREVSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
  917.     Local $PPREVSTATE = DllStructGetPtr($TPREVSTATE)
  918.     Local $IPREVSTATE = DllStructGetSize($TPREVSTATE)
  919.     Local $TREQUIRED = DllStructCreate("int Data")
  920.     Local $PREQUIRED = DllStructGetPtr($TREQUIRED)
  921.     DllStructSetData($TCURRSTATE, "Count", 1)
  922.     DllStructSetData($TCURRSTATE, "LUID", $ILUID)
  923.     If Not _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN, False, $PCURRSTATE, $ICURRSTATE, $PPREVSTATE, $PREQUIRED) Then Return SetError(-2, @error, False)
  924.     DllStructSetData($TPREVSTATE, "Count", 1)
  925.     DllStructSetData($TPREVSTATE, "LUID", $ILUID)
  926.     Local $IATTRIBUTES = DllStructGetData($TPREVSTATE, "Attributes")
  927.     If $FENABLE Then
  928.         $IATTRIBUTES = BitOR($IATTRIBUTES, $SE_PRIVILEGE_ENABLED)
  929.     Else
  930.         $IATTRIBUTES = BitAND($IATTRIBUTES, BitNOT($SE_PRIVILEGE_ENABLED))
  931.     EndIf
  932.     DllStructSetData($TPREVSTATE, "Attributes", $IATTRIBUTES)
  933.     If Not _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN, False, $PPREVSTATE, $IPREVSTATE, $PCURRSTATE, $PREQUIRED) Then Return SetError(-3, @error, False)
  934.     Return True
  935. EndFunc
  936. Func _SECURITY__SIDTOSTRINGSID($PSID)
  937.     If Not _SECURITY__ISVALIDSID($PSID) Then Return SetError(-1, 0, "")
  938.     Local $ARESULT = DllCall("advapi32.dll", "int", "ConvertSidToStringSidW", "ptr", $PSID, "ptr*", 0)
  939.     If @error Then Return SetError(@error, @extended, "")
  940.     If Not $ARESULT[0] Then Return ""
  941.     Local $TBUFFER = DllStructCreate("wchar Text[256]", $ARESULT[2])
  942.     Local $SSID = DllStructGetData($TBUFFER, "Text")
  943.     DllCall("Kernel32.dll", "ptr", "LocalFree", "ptr", $ARESULT[2])
  944.     Return $SSID
  945. EndFunc
  946. Func _SECURITY__SIDTYPESTR($ITYPE)
  947.     Switch $ITYPE
  948.         Case 1
  949.             Return "User"
  950.         Case 2
  951.             Return "Group"
  952.         Case 3
  953.             Return "Domain"
  954.         Case 4
  955.             Return "Alias"
  956.         Case 5
  957.             Return "Well Known Group"
  958.         Case 6
  959.             Return "Deleted Account"
  960.         Case 7
  961.             Return "Invalid"
  962.         Case 8
  963.             Return "Invalid"
  964.         Case 9
  965.             Return "Computer"
  966.         Case Else
  967.             Return "Unknown SID Type"
  968.     EndSwitch
  969. EndFunc
  970. Func _SECURITY__STRINGSIDTOSID($SSID)
  971.     Local $ARESULT = DllCall("advapi32.dll", "bool", "ConvertStringSidToSidW", "wstr", $SSID, "ptr*", 0)
  972.     If @error Then Return SetError(@error, @extended, 0)
  973.     If Not $ARESULT[0] Then Return 0
  974.     Local $ISIZE = _SECURITY__GETLENGTHSID($ARESULT[2])
  975.     Local $TBUFFER = DllStructCreate("byte Data[" & $ISIZE & "]", $ARESULT[2])
  976.     Local $TSID = DllStructCreate("byte Data[" & $ISIZE & "]")
  977.     DllStructSetData($TSID, "Data", DllStructGetData($TBUFFER, "Data"))
  978.     DllCall("kernel32.dll", "ptr", "LocalFree", "ptr", $ARESULT[2])
  979.     Return $TSID
  980. EndFunc
  981. Global Const $TAGMEMMAP = "handle hProc;ulong_ptr Size;ptr Mem"
  982. Func _MEMFREE(ByRef $TMEMMAP)
  983.     Local $PMEMORY = DllStructGetData($TMEMMAP, "Mem")
  984.     Local $HPROCESS = DllStructGetData($TMEMMAP, "hProc")
  985.     Local $BRESULT = _MEMVIRTUALFREEEX($HPROCESS, $PMEMORY, 0, $MEM_RELEASE)
  986.     DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HPROCESS)
  987.     If @error Then Return SetError(@error, @extended, False)
  988.     Return $BRESULT
  989. EndFunc
  990. Func _MEMGLOBALALLOC($IBYTES, $IFLAGS = 0)
  991.     Local $ARESULT = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", $IFLAGS, "ulong_ptr", $IBYTES)
  992.     If @error Then Return SetError(@error, @extended, 0)
  993.     Return $ARESULT[0]
  994. EndFunc
  995. Func _MEMGLOBALFREE($HMEM)
  996.     Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $HMEM)
  997.     If @error Then Return SetError(@error, @extended, False)
  998.     Return $ARESULT[0]
  999. EndFunc
  1000. Func _MEMGLOBALLOCK($HMEM)
  1001.     Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $HMEM)
  1002.     If @error Then Return SetError(@error, @extended, 0)
  1003.     Return $ARESULT[0]
  1004. EndFunc
  1005. Func _MEMGLOBALSIZE($HMEM)
  1006.     Local $ARESULT = DllCall("kernel32.dll", "ulong_ptr", "GlobalSize", "handle", $HMEM)
  1007.     If @error Then Return SetError(@error, @extended, 0)
  1008.     Return $ARESULT[0]
  1009. EndFunc
  1010. Func _MEMGLOBALUNLOCK($HMEM)
  1011.     Local $ARESULT = DllCall("kernel32.dll", "bool", "GlobalUnlock", "handle", $HMEM)
  1012.     If @error Then Return SetError(@error, @extended, 0)
  1013.     Return $ARESULT[0]
  1014. EndFunc
  1015. Func _MEMINIT($HWND, $ISIZE, ByRef $TMEMMAP)
  1016.     Local $ARESULT = DllCall("User32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0)
  1017.     If @error Then Return SetError(@error, @extended, 0)
  1018.     Local $IPROCESSID = $ARESULT[2]
  1019.     If $IPROCESSID = 0 Then Return SetError(1, 0, 0)
  1020.     Local $IACCESS = BitOR($PROCESS_VM_OPERATION, $PROCESS_VM_READ, $PROCESS_VM_WRITE)
  1021.     Local $HPROCESS = __MEM_OPENPROCESS($IACCESS, False, $IPROCESSID, True)
  1022.     Local $IALLOC = BitOR($MEM_RESERVE, $MEM_COMMIT)
  1023.     Local $PMEMORY = _MEMVIRTUALALLOCEX($HPROCESS, 0, $ISIZE, $IALLOC, $PAGE_READWRITE)
  1024.     If $PMEMORY = 0 Then Return SetError(2, 0, 0)
  1025.     $TMEMMAP = DllStructCreate($TAGMEMMAP)
  1026.     DllStructSetData($TMEMMAP, "hProc", $HPROCESS)
  1027.     DllStructSetData($TMEMMAP, "Size", $ISIZE)
  1028.     DllStructSetData($TMEMMAP, "Mem", $PMEMORY)
  1029.     Return $PMEMORY
  1030. EndFunc
  1031. Func _MEMMOVEMEMORY($PSOURCE, $PDEST, $ILENGTH)
  1032.     DllCall("kernel32.dll", "none", "RtlMoveMemory", "ptr", $PDEST, "ptr", $PSOURCE, "ulong_ptr", $ILENGTH)
  1033.     If @error Then Return SetError(@error, @extended)
  1034. EndFunc
  1035. Func _MEMREAD(ByRef $TMEMMAP, $PSRCE, $PDEST, $ISIZE)
  1036.     Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PSRCE, "ptr", $PDEST, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  1037.     If @error Then Return SetError(@error, @extended, False)
  1038.     Return $ARESULT[0]
  1039. EndFunc
  1040. Func _MEMWRITE(ByRef $TMEMMAP, $PSRCE, $PDEST = 0, $ISIZE = 0, $SSRCE = "ptr")
  1041.     If $PDEST = 0 Then $PDEST = DllStructGetData($TMEMMAP, "Mem")
  1042.     If $ISIZE = 0 Then $ISIZE = DllStructGetData($TMEMMAP, "Size")
  1043.     Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PDEST, $SSRCE, $PSRCE, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  1044.     If @error Then Return SetError(@error, @extended, False)
  1045.     Return $ARESULT[0]
  1046. EndFunc
  1047. Func _MEMVIRTUALALLOC($PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT)
  1048.     Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT)
  1049.     If @error Then Return SetError(@error, @extended, 0)
  1050.     Return $ARESULT[0]
  1051. EndFunc
  1052. Func _MEMVIRTUALALLOCEX($HPROCESS, $PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT)
  1053.     Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAllocEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT)
  1054.     If @error Then Return SetError(@error, @extended, 0)
  1055.     Return $ARESULT[0]
  1056. EndFunc
  1057. Func _MEMVIRTUALFREE($PADDRESS, $ISIZE, $IFREETYPE)
  1058.     Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE)
  1059.     If @error Then Return SetError(@error, @extended, False)
  1060.     Return $ARESULT[0]
  1061. EndFunc
  1062. Func _MEMVIRTUALFREEEX($HPROCESS, $PADDRESS, $ISIZE, $IFREETYPE)
  1063.     Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFreeEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE)
  1064.     If @error Then Return SetError(@error, @extended, False)
  1065.     Return $ARESULT[0]
  1066. EndFunc
  1067. Func __MEM_OPENPROCESS($IACCESS, $FINHERIT, $IPROCESSID, $FDEBUGPRIV = False)
  1068.     Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  1069.     If @error Then Return SetError(@error, @extended, 0)
  1070.     If $ARESULT[0] Then Return $ARESULT[0]
  1071.     If Not $FDEBUGPRIV Then Return 0
  1072.     Local $HTOKEN = _SECURITY__OPENTHREADTOKENEX(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
  1073.     If @error Then Return SetError(@error, @extended, 0)
  1074.     _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", True)
  1075.     Local $IERROR = @error
  1076.     Local $ILASTERROR = @extended
  1077.     Local $IRET = 0
  1078.     If Not @error Then
  1079.         $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  1080.         $IERROR = @error
  1081.         $ILASTERROR = @extended
  1082.         If $ARESULT[0] Then $IRET = $ARESULT[0]
  1083.         _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", False)
  1084.         If @error Then
  1085.             $IERROR = @error
  1086.             $ILASTERROR = @extended
  1087.         EndIf
  1088.     EndIf
  1089.     DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HTOKEN)
  1090.     Return SetError($IERROR, $ILASTERROR, $IRET)
  1091. EndFunc
  1092. Global Const $FC_NOOVERWRITE = 0
  1093. Global Const $FC_OVERWRITE = 1
  1094. Global Const $FT_MODIFIED = 0
  1095. Global Const $FT_CREATED = 1
  1096. Global Const $FT_ACCESSED = 2
  1097. Global Const $FO_READ = 0
  1098. Global Const $FO_APPEND = 1
  1099. Global Const $FO_OVERWRITE = 2
  1100. Global Const $FO_BINARY = 16
  1101. Global Const $FO_UNICODE = 32
  1102. Global Const $FO_UTF16_LE = 32
  1103. Global Const $FO_UTF16_BE = 64
  1104. Global Const $FO_UTF8 = 128
  1105. Global Const $FO_UTF8_NOBOM = 256
  1106. Global Const $EOF = -1
  1107. Global Const $FD_FILEMUSTEXIST = 1
  1108. Global Const $FD_PATHMUSTEXIST = 2
  1109. Global Const $FD_MULTISELECT = 4
  1110. Global Const $FD_PROMPTCREATENEW = 8
  1111. Global Const $FD_PROMPTOVERWRITE = 16
  1112. Global Const $CREATE_NEW = 1
  1113. Global Const $CREATE_ALWAYS = 2
  1114. Global Const $OPEN_EXISTING = 3
  1115. Global Const $OPEN_ALWAYS = 4
  1116. Global Const $TRUNCATE_EXISTING = 5
  1117. Global Const $INVALID_SET_FILE_POINTER = -1
  1118. Global Const $FILE_BEGIN = 0
  1119. Global Const $FILE_CURRENT = 1
  1120. Global Const $FILE_END = 2
  1121. Global Const $FILE_ATTRIBUTE_READONLY = 1
  1122. Global Const $FILE_ATTRIBUTE_HIDDEN = 2
  1123. Global Const $FILE_ATTRIBUTE_SYSTEM = 4
  1124. Global Const $FILE_ATTRIBUTE_DIRECTORY = 16
  1125. Global Const $FILE_ATTRIBUTE_ARCHIVE = 32
  1126. Global Const $FILE_ATTRIBUTE_DEVICE = 64
  1127. Global Const $FILE_ATTRIBUTE_NORMAL = 128
  1128. Global Const $FILE_ATTRIBUTE_TEMPORARY = 256
  1129. Global Const $FILE_ATTRIBUTE_SPARSE_FILE = 512
  1130. Global Const $FILE_ATTRIBUTE_REPARSE_POINT = 1024
  1131. Global Const $FILE_ATTRIBUTE_COMPRESSED = 2048
  1132. Global Const $FILE_ATTRIBUTE_OFFLINE = 4096
  1133. Global Const $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
  1134. Global Const $FILE_ATTRIBUTE_ENCRYPTED = 16384
  1135. Global Const $FILE_SHARE_READ = 1
  1136. Global Const $FILE_SHARE_WRITE = 2
  1137. Global Const $FILE_SHARE_DELETE = 4
  1138. Global Const $GENERIC_ALL = 268435456
  1139. Global Const $GENERIC_EXECUTE = 536870912
  1140. Global Const $GENERIC_WRITE = 1073741824
  1141. Global Const $GENERIC_READ = -2147483648
  1142. Func _SENDMESSAGE($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
  1143.     Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageW", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
  1144.     If @error Then Return SetError(@error, @extended, "")
  1145.     If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN]
  1146.     Return $ARESULT
  1147. EndFunc
  1148. Func _SENDMESSAGEA($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
  1149.     Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageA", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
  1150.     If @error Then Return SetError(@error, @extended, "")
  1151.     If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN]
  1152.     Return $ARESULT
  1153. EndFunc
  1154. Global $__GAINPROCESS_WINAPI[64][2] = [[0, 0]]
  1155. Global $__GAWINLIST_WINAPI[64][2] = [[0, 0]]
  1156. Global Const $__WINAPICONSTANT_WM_SETFONT = 48
  1157. Global Const $__WINAPICONSTANT_FW_NORMAL = 400
  1158. Global Const $__WINAPICONSTANT_DEFAULT_CHARSET = 1
  1159. Global Const $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0
  1160. Global Const $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0
  1161. Global Const $__WINAPICONSTANT_DEFAULT_QUALITY = 0
  1162. Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
  1163. Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM = 4096
  1164. Global Const $__WINAPICONSTANT_LOGPIXELSX = 88
  1165. Global Const $__WINAPICONSTANT_LOGPIXELSY = 90
  1166. Global Const $HGDI_ERROR = Ptr(-1)
  1167. Global Const $INVALID_HANDLE_VALUE = Ptr(-1)
  1168. Global Const $CLR_INVALID = -1
  1169. Global Const $__WINAPICONSTANT_FLASHW_CAPTION = 1
  1170. Global Const $__WINAPICONSTANT_FLASHW_TRAY = 2
  1171. Global Const $__WINAPICONSTANT_FLASHW_TIMER = 4
  1172. Global Const $__WINAPICONSTANT_FLASHW_TIMERNOFG = 12
  1173. Global Const $__WINAPICONSTANT_GW_HWNDNEXT = 2
  1174. Global Const $__WINAPICONSTANT_GW_CHILD = 5
  1175. Global Const $__WINAPICONSTANT_DI_MASK = 1
  1176. Global Const $__WINAPICONSTANT_DI_IMAGE = 2
  1177. Global Const $__WINAPICONSTANT_DI_NORMAL = 3
  1178. Global Const $__WINAPICONSTANT_DI_COMPAT = 4
  1179. Global Const $__WINAPICONSTANT_DI_DEFAULTSIZE = 8
  1180. Global Const $__WINAPICONSTANT_DI_NOMIRROR = 16
  1181. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1
  1182. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE = 4
  1183. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER = 8
  1184. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE = 16
  1185. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE = 32
  1186. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED = 134217728
  1187. Global Const $NULL_BRUSH = 5
  1188. Global Const $NULL_PEN = 8
  1189. Global Const $BLACK_BRUSH = 4
  1190. Global Const $DKGRAY_BRUSH = 3
  1191. Global Const $DC_BRUSH = 18
  1192. Global Const $GRAY_BRUSH = 2
  1193. Global Const $HOLLOW_BRUSH = $NULL_BRUSH
  1194. Global Const $LTGRAY_BRUSH = 1
  1195. Global Const $WHITE_BRUSH = 0
  1196. Global Const $BLACK_PEN = 7
  1197. Global Const $DC_PEN = 19
  1198. Global Const $WHITE_PEN = 6
  1199. Global Const $ANSI_FIXED_FONT = 11
  1200. Global Const $ANSI_VAR_FONT = 12
  1201. Global Const $DEVICE_DEFAULT_FONT = 14
  1202. Global Const $DEFAULT_GUI_FONT = 17
  1203. Global Const $OEM_FIXED_FONT = 10
  1204. Global Const $SYSTEM_FONT = 13
  1205. Global Const $SYSTEM_FIXED_FONT = 16
  1206. Global Const $DEFAULT_PALETTE = 15
  1207. Global Const $MB_PRECOMPOSED = 1
  1208. Global Const $MB_COMPOSITE = 2
  1209. Global Const $MB_USEGLYPHCHARS = 4
  1210. Global Const $ULW_ALPHA = 2
  1211. Global Const $ULW_COLORKEY = 1
  1212. Global Const $ULW_OPAQUE = 4
  1213. Global Const $WH_CALLWNDPROC = 4
  1214. Global Const $WH_CALLWNDPROCRET = 12
  1215. Global Const $WH_CBT = 5
  1216. Global Const $WH_DEBUG = 9
  1217. Global Const $WH_FOREGROUNDIDLE = 11
  1218. Global Const $WH_GETMESSAGE = 3
  1219. Global Const $WH_JOURNALPLAYBACK = 1
  1220. Global Const $WH_JOURNALRECORD = 0
  1221. Global Const $WH_KEYBOARD = 2
  1222. Global Const $WH_KEYBOARD_LL = 13
  1223. Global Const $WH_MOUSE = 7
  1224. Global Const $WH_MOUSE_LL = 14
  1225. Global Const $WH_MSGFILTER = -1
  1226. Global Const $WH_SHELL = 10
  1227. Global Const $WH_SYSMSGFILTER = 6
  1228. Global Const $WPF_ASYNCWINDOWPLACEMENT = 4
  1229. Global Const $WPF_RESTORETOMAXIMIZED = 2
  1230. Global Const $WPF_SETMINPOSITION = 1
  1231. Global Const $KF_EXTENDED = 256
  1232. Global Const $KF_ALTDOWN = 8192
  1233. Global Const $KF_UP = 32768
  1234. Global Const $LLKHF_EXTENDED = BitShift($KF_EXTENDED, 8)
  1235. Global Const $LLKHF_INJECTED = 16
  1236. Global Const $LLKHF_ALTDOWN = BitShift($KF_ALTDOWN, 8)
  1237. Global Const $LLKHF_UP = BitShift($KF_UP, 8)
  1238. Global Const $OFN_ALLOWMULTISELECT = 512
  1239. Global Const $OFN_CREATEPROMPT = 8192
  1240. Global Const $OFN_DONTADDTORECENT = 33554432
  1241. Global Const $OFN_ENABLEHOOK = 32
  1242. Global Const $OFN_ENABLEINCLUDENOTIFY = 4194304
  1243. Global Const $OFN_ENABLESIZING = 8388608
  1244. Global Const $OFN_ENABLETEMPLATE = 64
  1245. Global Const $OFN_ENABLETEMPLATEHANDLE = 128
  1246. Global Const $OFN_EXPLORER = 524288
  1247. Global Const $OFN_EXTENSIONDIFFERENT = 1024
  1248. Global Const $OFN_FILEMUSTEXIST = 4096
  1249. Global Const $OFN_FORCESHOWHIDDEN = 268435456
  1250. Global Const $OFN_HIDEREADONLY = 4
  1251. Global Const $OFN_LONGNAMES = 2097152
  1252. Global Const $OFN_NOCHANGEDIR = 8
  1253. Global Const $OFN_NODEREFERENCELINKS = 1048576
  1254. Global Const $OFN_NOLONGNAMES = 262144
  1255. Global Const $OFN_NONETWORKBUTTON = 131072
  1256. Global Const $OFN_NOREADONLYRETURN = 32768
  1257. Global Const $OFN_NOTESTFILECREATE = 65536
  1258. Global Const $OFN_NOVALIDATE = 256
  1259. Global Const $OFN_OVERWRITEPROMPT = 2
  1260. Global Const $OFN_PATHMUSTEXIST = 2048
  1261. Global Const $OFN_READONLY = 1
  1262. Global Const $OFN_SHAREAWARE = 16384
  1263. Global Const $OFN_SHOWHELP = 16
  1264. Global Const $OFN_EX_NOPLACESBAR = 1
  1265. Global Const $TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & $TAGPOINT
  1266. Global Const $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]"
  1267. Global Const $TAGFLASHWINFO = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut"
  1268. Global Const $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
  1269. Global Const $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"
  1270. Func _WINAPI_ATTACHCONSOLE($IPROCESSID = -1)
  1271.     Local $ARESULT = DllCall("kernel32.dll", "bool", "AttachConsole", "dword", $IPROCESSID)
  1272.     If @error Then Return SetError(@error, @extended, False)
  1273.     Return $ARESULT[0]
  1274. EndFunc
  1275. Func _WINAPI_ATTACHTHREADINPUT($IATTACH, $IATTACHTO, $FATTACH)
  1276.     Local $ARESULT = DllCall("user32.dll", "bool", "AttachThreadInput", "dword", $IATTACH, "dword", $IATTACHTO, "bool", $FATTACH)
  1277.     If @error Then Return SetError(@error, @extended, False)
  1278.     Return $ARESULT[0]
  1279. EndFunc
  1280. Func _WINAPI_BEEP($IFREQ = 500, $IDURATION = 1000)
  1281.     Local $ARESULT = DllCall("kernel32.dll", "bool", "Beep", "dword", $IFREQ, "dword", $IDURATION)
  1282.     If @error Then Return SetError(@error, @extended, False)
  1283.     Return $ARESULT[0]
  1284. EndFunc
  1285. Func _WINAPI_BITBLT($HDESTDC, $IXDEST, $IYDEST, $IWIDTH, $IHEIGHT, $HSRCDC, $IXSRC, $IYSRC, $IROP)
  1286.     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)
  1287.     If @error Then Return SetError(@error, @extended, False)
  1288.     Return $ARESULT[0]
  1289. EndFunc
  1290. Func _WINAPI_CALLNEXTHOOKEX($HHK, $ICODE, $WPARAM, $LPARAM)
  1291.     Local $ARESULT = DllCall("user32.dll", "lresult", "CallNextHookEx", "handle", $HHK, "int", $ICODE, "wparam", $WPARAM, "lparam", $LPARAM)
  1292.     If @error Then Return SetError(@error, @extended, -1)
  1293.     Return $ARESULT[0]
  1294. EndFunc
  1295. Func _WINAPI_CALLWINDOWPROC($LPPREVWNDFUNC, $HWND, $MSG, $WPARAM, $LPARAM)
  1296.     Local $ARESULT = DllCall("user32.dll", "lresult", "CallWindowProc", "ptr", $LPPREVWNDFUNC, "hwnd", $HWND, "uint", $MSG, "wparam", $WPARAM, "lparam", $LPARAM)
  1297.     If @error Then Return SetError(@error, @extended, -1)
  1298.     Return $ARESULT[0]
  1299. EndFunc
  1300. Func _WINAPI_CLIENTTOSCREEN($HWND, ByRef $TPOINT)
  1301.     Local $PPOINT = DllStructGetPtr($TPOINT)
  1302.     DllCall("user32.dll", "bool", "ClientToScreen", "hwnd", $HWND, "ptr", $PPOINT)
  1303.     Return SetError(@error, @extended, $TPOINT)
  1304. EndFunc
  1305. Func _WINAPI_CLOSEHANDLE($HOBJECT)
  1306.     Local $ARESULT = DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HOBJECT)
  1307.     If @error Then Return SetError(@error, @extended, False)
  1308.     Return $ARESULT[0]
  1309. EndFunc
  1310. Func _WINAPI_COMBINERGN($HRGNDEST, $HRGNSRC1, $HRGNSRC2, $ICOMBINEMODE)
  1311.     Local $ARESULT = DllCall("gdi32.dll", "int", "CombineRgn", "handle", $HRGNDEST, "handle", $HRGNSRC1, "handle", $HRGNSRC2, "int", $ICOMBINEMODE)
  1312.     If @error Then Return SetError(@error, @extended, 0)
  1313.     Return $ARESULT[0]
  1314. EndFunc
  1315. Func _WINAPI_COMMDLGEXTENDEDERROR()
  1316.     Local Const $CDERR_DIALOGFAILURE = 65535
  1317.     Local Const $CDERR_FINDRESFAILURE = 6
  1318.     Local Const $CDERR_INITIALIZATION = 2
  1319.     Local Const $CDERR_LOADRESFAILURE = 7
  1320.     Local Const $CDERR_LOADSTRFAILURE = 5
  1321.     Local Const $CDERR_LOCKRESFAILURE = 8
  1322.     Local Const $CDERR_MEMALLOCFAILURE = 9
  1323.     Local Const $CDERR_MEMLOCKFAILURE = 10
  1324.     Local Const $CDERR_NOHINSTANCE = 4
  1325.     Local Const $CDERR_NOHOOK = 11
  1326.     Local Const $CDERR_NOTEMPLATE = 3
  1327.     Local Const $CDERR_REGISTERMSGFAIL = 12
  1328.     Local Const $CDERR_STRUCTSIZE = 1
  1329.     Local Const $FNERR_BUFFERTOOSMALL = 12291
  1330.     Local Const $FNERR_INVALIDFILENAME = 12290
  1331.     Local Const $FNERR_SUBCLASSFAILURE = 12289
  1332.     Local $ARESULT = DllCall("comdlg32.dll", "dword", "CommDlgExtendedError")
  1333.     If @error Then Return SetError(@error, @extended, 0)
  1334.     Switch $ARESULT[0]
  1335.         Case $CDERR_DIALOGFAILURE
  1336.             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.")
  1337.         Case $CDERR_FINDRESFAILURE
  1338.             Return SetError($ARESULT[0], 0, "The common dialog box function failed to find a specified resource.")
  1339.         Case $CDERR_INITIALIZATION
  1340.             Return SetError($ARESULT[0], 0, "The common dialog box function failed during initialization." & @LF & "This error often occurs when sufficient memory is not available.")
  1341.         Case $CDERR_LOADRESFAILURE
  1342.             Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified resource.")
  1343.         Case $CDERR_LOADSTRFAILURE
  1344.             Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified string.")
  1345.         Case $CDERR_LOCKRESFAILURE
  1346.             Return SetError($ARESULT[0], 0, "The common dialog box function failed to lock a specified resource.")
  1347.         Case $CDERR_MEMALLOCFAILURE
  1348.             Return SetError($ARESULT[0], 0, "The common dialog box function was unable to allocate memory for internal structures.")
  1349.         Case $CDERR_MEMLOCKFAILURE
  1350.             Return SetError($ARESULT[0], 0, "The common dialog box function was unable to lock the memory associated with a handle.")
  1351.         Case $CDERR_NOHINSTANCE
  1352.             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.")
  1353.         Case $CDERR_NOHOOK
  1354.             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.")
  1355.         Case $CDERR_NOTEMPLATE
  1356.             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.")
  1357.         Case $CDERR_REGISTERMSGFAIL
  1358.             Return SetError($ARESULT[0], 0, "The RegisterWindowMessage function returned an error code when it was called by the common dialog box function.")
  1359.         Case $CDERR_STRUCTSIZE
  1360.             Return SetError($ARESULT[0], 0, "The lStructSize member of the initialization structure for the corresponding common dialog box is invalid")
  1361.         Case $FNERR_BUFFERTOOSMALL
  1362.             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.")
  1363.         Case $FNERR_INVALIDFILENAME
  1364.             Return SetError($ARESULT[0], 0, "A file name is invalid.")
  1365.         Case $FNERR_SUBCLASSFAILURE
  1366.             Return SetError($ARESULT[0], 0, "An attempt to subclass a list box failed because sufficient memory was not available.")
  1367.     EndSwitch
  1368.     Return Hex($ARESULT[0])
  1369. EndFunc
  1370. Func _WINAPI_COPYICON($HICON)
  1371.     Local $ARESULT = DllCall("user32.dll", "handle", "CopyIcon", "handle", $HICON)
  1372.     If @error Then Return SetError(@error, @extended, 0)
  1373.     Return $ARESULT[0]
  1374. EndFunc
  1375. Func _WINAPI_CREATEBITMAP($IWIDTH, $IHEIGHT, $IPLANES = 1, $IBITSPERPEL = 1, $PBITS = 0)
  1376.     Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateBitmap", "int", $IWIDTH, "int", $IHEIGHT, "uint", $IPLANES, "uint", $IBITSPERPEL, "ptr", $PBITS)
  1377.     If @error Then Return SetError(@error, @extended, 0)
  1378.     Return $ARESULT[0]
  1379. EndFunc
  1380. Func _WINAPI_CREATECOMPATIBLEBITMAP($HDC, $IWIDTH, $IHEIGHT)
  1381.     Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleBitmap", "handle", $HDC, "int", $IWIDTH, "int", $IHEIGHT)
  1382.     If @error Then Return SetError(@error, @extended, 0)
  1383.     Return $ARESULT[0]
  1384. EndFunc
  1385. Func _WINAPI_CREATECOMPATIBLEDC($HDC)
  1386.     Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $HDC)
  1387.     If @error Then Return SetError(@error, @extended, 0)
  1388.     Return $ARESULT[0]
  1389. EndFunc
  1390. Func _WINAPI_CREATEEVENT($PATTRIBUTES = 0, $FMANUALRESET = True, $FINITIALSTATE = True, $SNAME = "")
  1391.     Local $SNAMETYPE = "wstr"
  1392.     If $SNAME = "" Then
  1393.         $SNAME = 0
  1394.         $SNAMETYPE = "ptr"
  1395.     EndIf
  1396.     Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateEventW", "ptr", $PATTRIBUTES, "bool", $FMANUALRESET, "bool", $FINITIALSTATE, $SNAMETYPE, $SNAME)
  1397.     If @error Then Return SetError(@error, @extended, 0)
  1398.     Return $ARESULT[0]
  1399. EndFunc
  1400. Func _WINAPI_CREATEFILE($SFILENAME, $ICREATION, $IACCESS = 4, $ISHARE = 0, $IATTRIBUTES = 0, $PSECURITY = 0)
  1401.     Local $IDA = 0, $ISM = 0, $ICD = 0, $IFA = 0
  1402.     If BitAND($IACCESS, 1) <> 0 Then $IDA = BitOR($IDA, $GENERIC_EXECUTE)
  1403.     If BitAND($IACCESS, 2) <> 0 Then $IDA = BitOR($IDA, $GENERIC_READ)
  1404.     If BitAND($IACCESS, 4) <> 0 Then $IDA = BitOR($IDA, $GENERIC_WRITE)
  1405.     If BitAND($ISHARE, 1) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_DELETE)
  1406.     If BitAND($ISHARE, 2) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_READ)
  1407.     If BitAND($ISHARE, 4) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_WRITE)
  1408.     Switch $ICREATION
  1409.         Case 0
  1410.             $ICD = $CREATE_NEW
  1411.         Case 1
  1412.             $ICD = $CREATE_ALWAYS
  1413.         Case 2
  1414.             $ICD = $OPEN_EXISTING
  1415.         Case 3
  1416.             $ICD = $OPEN_ALWAYS
  1417.         Case 4
  1418.             $ICD = $TRUNCATE_EXISTING
  1419.     EndSwitch
  1420.     If BitAND($IATTRIBUTES, 1) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_ARCHIVE)
  1421.     If BitAND($IATTRIBUTES, 2) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_HIDDEN)
  1422.     If BitAND($IATTRIBUTES, 4) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_READONLY)
  1423.     If BitAND($IATTRIBUTES, 8) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_SYSTEM)
  1424.     Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateFileW", "wstr", $SFILENAME, "dword", $IDA, "dword", $ISM, "ptr", $PSECURITY, "dword", $ICD, "dword", $IFA, "ptr", 0)
  1425.     If @error Or $ARESULT[0] = Ptr(-1) Then Return SetError(@error, @extended, 0)
  1426.     Return $ARESULT[0]
  1427. EndFunc
  1428. 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")
  1429.     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)
  1430.     If @error Then Return SetError(@error, @extended, 0)
  1431.     Return $ARESULT[0]
  1432. EndFunc
  1433. Func _WINAPI_CREATEFONTINDIRECT($TLOGFONT)
  1434.     Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateFontIndirectW", "ptr", DllStructGetPtr($TLOGFONT))
  1435.     If @error Then Return SetError(@error, @extended, 0)
  1436.     Return $ARESULT[0]
  1437. EndFunc
  1438. Func _WINAPI_CREATEPEN($IPENSTYLE, $IWIDTH, $NCOLOR)
  1439.     Local $ARESULT = DllCall("gdi32.dll", "handle", "CreatePen", "int", $IPENSTYLE, "int", $IWIDTH, "dword", $NCOLOR)
  1440.     If @error Then Return SetError(@error, @extended, 0)
  1441.     Return $ARESULT[0]
  1442. EndFunc
  1443. Func _WINAPI_CREATEPROCESS($SAPPNAME, $SCOMMAND, $PSECURITY, $PTHREAD, $FINHERIT, $IFLAGS, $PENVIRON, $SDIR, $PSTARTUPINFO, $PPROCESS)
  1444.     Local $PCOMMAND = 0
  1445.     Local $SAPPNAMETYPE = "wstr", $SDIRTYPE = "wstr"
  1446.     If $SAPPNAME = "" Then
  1447.         $SAPPNAMETYPE = "ptr"
  1448.         $SAPPNAME = 0
  1449.     EndIf
  1450.     If $SCOMMAND <> "" Then
  1451.         Local $TCOMMAND = DllStructCreate("wchar Text[" & 260 + 1 & "]")
  1452.         $PCOMMAND = DllStructGetPtr($TCOMMAND)
  1453.         DllStructSetData($TCOMMAND, "Text", $SCOMMAND)
  1454.     EndIf
  1455.     If $SDIR = "" Then
  1456.         $SDIRTYPE = "ptr"
  1457.         $SDIR = 0
  1458.     EndIf
  1459.     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)
  1460.     If @error Then Return SetError(@error, @extended, False)
  1461.     Return $ARESULT[0]
  1462. EndFunc
  1463. Func _WINAPI_CREATERECTRGN($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT)
  1464.     Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT)
  1465.     If @error Then Return SetError(@error, @extended, 0)
  1466.     Return $ARESULT[0]
  1467. EndFunc
  1468. Func _WINAPI_CREATEROUNDRECTRGN($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT, $IWIDTHELLIPSE, $IHEIGHTELLIPSE)
  1469.     Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRoundRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT, "int", $IWIDTHELLIPSE, "int", $IHEIGHTELLIPSE)
  1470.     If @error Then Return SetError(@error, @extended, 0)
  1471.     Return $ARESULT[0]
  1472. EndFunc
  1473. Func _WINAPI_CREATESOLIDBITMAP($HWND, $ICOLOR, $IWIDTH, $IHEIGHT, $BRGB = 1)
  1474.     Local $HDC = _WINAPI_GETDC($HWND)
  1475.     Local $HDESTDC = _WINAPI_CREATECOMPATIBLEDC($HDC)
  1476.     Local $HBITMAP = _WINAPI_CREATECOMPATIBLEBITMAP($HDC, $IWIDTH, $IHEIGHT)
  1477.     Local $HOLD = _WINAPI_SELECTOBJECT($HDESTDC, $HBITMAP)
  1478.     Local $TRECT = DllStructCreate($TAGRECT)
  1479.     DllStructSetData($TRECT, 1, 0)
  1480.     DllStructSetData($TRECT, 2, 0)
  1481.     DllStructSetData($TRECT, 3, $IWIDTH)
  1482.     DllStructSetData($TRECT, 4, $IHEIGHT)
  1483.     If $BRGB Then
  1484.         $ICOLOR = BitOR(BitAND($ICOLOR, 65280), BitShift(BitAND($ICOLOR, 255), -16), BitShift(BitAND($ICOLOR, 16711680), 16))
  1485.     EndIf
  1486.     Local $HBRUSH = _WINAPI_CREATESOLIDBRUSH($ICOLOR)
  1487.     _WINAPI_FILLRECT($HDESTDC, DllStructGetPtr($TRECT), $HBRUSH)
  1488.     If @error Then
  1489.         _WINAPI_DELETEOBJECT($HBITMAP)
  1490.         $HBITMAP = 0
  1491.     EndIf
  1492.     _WINAPI_DELETEOBJECT($HBRUSH)
  1493.     _WINAPI_RELEASEDC($HWND, $HDC)
  1494.     _WINAPI_SELECTOBJECT($HDESTDC, $HOLD)
  1495.     _WINAPI_DELETEDC($HDESTDC)
  1496.     If Not $HBITMAP Then Return SetError(1, 0, 0)
  1497.     Return $HBITMAP
  1498. EndFunc
  1499. Func _WINAPI_CREATESOLIDBRUSH($NCOLOR)
  1500.     Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateSolidBrush", "dword", $NCOLOR)
  1501.     If @error Then Return SetError(@error, @extended, 0)
  1502.     Return $ARESULT[0]
  1503. EndFunc
  1504. Func _WINAPI_CREATEWINDOWEX($IEXSTYLE, $SCLASS, $SNAME, $ISTYLE, $IX, $IY, $IWIDTH, $IHEIGHT, $HPARENT, $HMENU = 0, $HINSTANCE = 0, $PPARAM = 0)
  1505.     If $HINSTANCE = 0 Then $HINSTANCE = _WINAPI_GETMODULEHANDLE("")
  1506.     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)
  1507.     If @error Then Return SetError(@error, @extended, 0)
  1508.     Return $ARESULT[0]
  1509. EndFunc
  1510. Func _WINAPI_DEFWINDOWPROC($HWND, $IMSG, $IWPARAM, $ILPARAM)
  1511.     Local $ARESULT = DllCall("user32.dll", "lresult", "DefWindowProc", "hwnd", $HWND, "uint", $IMSG, "wparam", $IWPARAM, "lparam", $ILPARAM)
  1512.     If @error Then Return SetError(@error, @extended, 0)
  1513.     Return $ARESULT[0]
  1514. EndFunc
  1515. Func _WINAPI_DELETEDC($HDC)
  1516.     Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $HDC)
  1517.     If @error Then Return SetError(@error, @extended, False)
  1518.     Return $ARESULT[0]
  1519. EndFunc
  1520. Func _WINAPI_DELETEOBJECT($HOBJECT)
  1521.     Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $HOBJECT)
  1522.     If @error Then Return SetError(@error, @extended, False)
  1523.     Return $ARESULT[0]
  1524. EndFunc
  1525. Func _WINAPI_DESTROYICON($HICON)
  1526.     Local $ARESULT = DllCall("user32.dll", "bool", "DestroyIcon", "handle", $HICON)
  1527.     If @error Then Return SetError(@error, @extended, False)
  1528.     Return $ARESULT[0]
  1529. EndFunc
  1530. Func _WINAPI_DESTROYWINDOW($HWND)
  1531.     Local $ARESULT = DllCall("user32.dll", "bool", "DestroyWindow", "hwnd", $HWND)
  1532.     If @error Then Return SetError(@error, @extended, False)
  1533.     Return $ARESULT[0]
  1534. EndFunc
  1535. Func _WINAPI_DRAWEDGE($HDC, $PTRRECT, $NEDGETYPE, $GRFFLAGS)
  1536.     Local $ARESULT = DllCall("user32.dll", "bool", "DrawEdge", "handle", $HDC, "ptr", $PTRRECT, "uint", $NEDGETYPE, "uint", $GRFFLAGS)
  1537.     If @error Then Return SetError(@error, @extended, False)
  1538.     Return $ARESULT[0]
  1539. EndFunc
  1540. Func _WINAPI_DRAWFRAMECONTROL($HDC, $PTRRECT, $NTYPE, $NSTATE)
  1541.     Local $ARESULT = DllCall("user32.dll", "bool", "DrawFrameControl", "handle", $HDC, "ptr", $PTRRECT, "uint", $NTYPE, "uint", $NSTATE)
  1542.     If @error Then Return SetError(@error, @extended, False)
  1543.     Return $ARESULT[0]
  1544. EndFunc
  1545. Func _WINAPI_DRAWICON($HDC, $IX, $IY, $HICON)
  1546.     Local $ARESULT = DllCall("user32.dll", "bool", "DrawIcon", "handle", $HDC, "int", $IX, "int", $IY, "handle", $HICON)
  1547.     If @error Then Return SetError(@error, @extended, False)
  1548.     Return $ARESULT[0]
  1549. EndFunc
  1550. Func _WINAPI_DRAWICONEX($HDC, $IX, $IY, $HICON, $IWIDTH = 0, $IHEIGHT = 0, $ISTEP = 0, $HBRUSH = 0, $IFLAGS = 3)
  1551.     Local $IOPTIONS
  1552.     Switch $IFLAGS
  1553.         Case 1
  1554.             $IOPTIONS = $__WINAPICONSTANT_DI_MASK
  1555.         Case 2
  1556.             $IOPTIONS = $__WINAPICONSTANT_DI_IMAGE
  1557.         Case 3
  1558.             $IOPTIONS = $__WINAPICONSTANT_DI_NORMAL
  1559.         Case 4
  1560.             $IOPTIONS = $__WINAPICONSTANT_DI_COMPAT
  1561.         Case 5
  1562.             $IOPTIONS = $__WINAPICONSTANT_DI_DEFAULTSIZE
  1563.         Case Else
  1564.             $IOPTIONS = $__WINAPICONSTANT_DI_NOMIRROR
  1565.     EndSwitch
  1566.     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)
  1567.     If @error Then Return SetError(@error, @extended, False)
  1568.     Return $ARESULT[0]
  1569. EndFunc
  1570. Func _WINAPI_DRAWLINE($HDC, $IX1, $IY1, $IX2, $IY2)
  1571.     _WINAPI_MOVETO($HDC, $IX1, $IY1)
  1572.     If @error Then Return SetError(@error, @extended, False)
  1573.     _WINAPI_LINETO($HDC, $IX2, $IY2)
  1574.     If @error Then Return SetError(@error, @extended, False)
  1575.     Return True
  1576. EndFunc
  1577. Func _WINAPI_DRAWTEXT($HDC, $STEXT, ByRef $TRECT, $IFLAGS)
  1578.     Local $ARESULT = DllCall("user32.dll", "int", "DrawTextW", "handle", $HDC, "wstr", $STEXT, "int", -1, "ptr", DllStructGetPtr($TRECT), "uint", $IFLAGS)
  1579.     If @error Then Return SetError(@error, @extended, 0)
  1580.     Return $ARESULT[0]
  1581. EndFunc
  1582. Func _WINAPI_ENABLEWINDOW($HWND, $FENABLE = True)
  1583.     Local $ARESULT = DllCall("user32.dll", "bool", "EnableWindow", "hwnd", $HWND, "bool", $FENABLE)
  1584.     If @error Then Return SetError(@error, @extended, False)
  1585.     Return $ARESULT[0]
  1586. EndFunc
  1587. Func _WINAPI_ENUMDISPLAYDEVICES($SDEVICE, $IDEVNUM)
  1588.     Local $PNAME = 0, $IFLAGS = 0, $ADEVICE[5]
  1589.     If $SDEVICE <> "" Then
  1590.         Local $TNAME = DllStructCreate("wchar Text[" & StringLen($SDEVICE) + 1 & "]")
  1591.         $PNAME = DllStructGetPtr($TNAME)
  1592.         DllStructSetData($TNAME, "Text", $SDEVICE)
  1593.     EndIf
  1594.     Local $TDEVICE = DllStructCreate($TAGDISPLAY_DEVICE)
  1595.     Local $PDEVICE = DllStructGetPtr($TDEVICE)
  1596.     Local $IDEVICE = DllStructGetSize($TDEVICE)
  1597.     DllStructSetData($TDEVICE, "Size", $IDEVICE)
  1598.     DllCall("user32.dll", "bool", "EnumDisplayDevicesW", "ptr", $PNAME, "dword", $IDEVNUM, "ptr", $PDEVICE, "dword", 1)
  1599.     If @error Then Return SetError(@error, @extended, 0)
  1600.     Local $IN = DllStructGetData($TDEVICE, "Flags")
  1601.     If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) <> 0 Then $IFLAGS = BitOR($IFLAGS, 1)
  1602.     If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 2)
  1603.     If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER) <> 0 Then $IFLAGS = BitOR($IFLAGS, 4)
  1604.     If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 8)
  1605.     If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 16)
  1606.     If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED) <> 0 Then $IFLAGS = BitOR($IFLAGS, 32)
  1607.     $ADEVICE[0] = True
  1608.     $ADEVICE[1] = DllStructGetData($TDEVICE, "Name")
  1609.     $ADEVICE[2] = DllStructGetData($TDEVICE, "String")
  1610.     $ADEVICE[3] = $IFLAGS
  1611.     $ADEVICE[4] = DllStructGetData($TDEVICE, "ID")
  1612.     Return $ADEVICE
  1613. EndFunc
  1614. Func _WINAPI_ENUMWINDOWS($FVISIBLE = True, $HWND = Default)
  1615.     __WINAPI_ENUMWINDOWSINIT()
  1616.     If $HWND = Default Then $HWND = _WINAPI_GETDESKTOPWINDOW()
  1617.     __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE)
  1618.     Return $__GAWINLIST_WINAPI
  1619. EndFunc
  1620. Func __WINAPI_ENUMWINDOWSADD($HWND, $SCLASS = "")
  1621.     If $SCLASS = "" Then $SCLASS = _WINAPI_GETCLASSNAME($HWND)
  1622.     $__GAWINLIST_WINAPI[0][0] += 1
  1623.     Local $ICOUNT = $__GAWINLIST_WINAPI[0][0]
  1624.     If $ICOUNT >= $__GAWINLIST_WINAPI[0][1] Then
  1625.         ReDim $__GAWINLIST_WINAPI[$ICOUNT + 64][2]
  1626.         $__GAWINLIST_WINAPI[0][1] += 64
  1627.     EndIf
  1628.     $__GAWINLIST_WINAPI[$ICOUNT][0] = $HWND
  1629.     $__GAWINLIST_WINAPI[$ICOUNT][1] = $SCLASS
  1630. EndFunc
  1631. Func __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE = True)
  1632.     $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_CHILD)
  1633.     While $HWND <> 0
  1634.         IF (Not $FVISIBLE) Or _WINAPI_ISWINDOWVISIBLE($HWND) Then
  1635.             __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE)
  1636.             __WINAPI_ENUMWINDOWSADD($HWND)
  1637.         EndIf
  1638.         $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
  1639.     WEnd
  1640. EndFunc
  1641. Func __WINAPI_ENUMWINDOWSINIT()
  1642.     ReDim $__GAWINLIST_WINAPI[64][2]
  1643.     $__GAWINLIST_WINAPI[0][0] = 0
  1644.     $__GAWINLIST_WINAPI[0][1] = 64
  1645. EndFunc
  1646. Func _WINAPI_ENUMWINDOWSPOPUP()
  1647.     __WINAPI_ENUMWINDOWSINIT()
  1648.     Local $HWND = _WINAPI_GETWINDOW(_WINAPI_GETDESKTOPWINDOW(), $__WINAPICONSTANT_GW_CHILD)
  1649.     Local $SCLASS
  1650.     While $HWND <> 0
  1651.         If _WINAPI_ISWINDOWVISIBLE($HWND) Then
  1652.             $SCLASS = _WINAPI_GETCLASSNAME($HWND)
  1653.             If $SCLASS = "#32768" Then
  1654.                 __WINAPI_ENUMWINDOWSADD($HWND)
  1655.             ElseIf $SCLASS = "ToolbarWindow32" Then
  1656.                 __WINAPI_ENUMWINDOWSADD($HWND)
  1657.             ElseIf $SCLASS = "ToolTips_Class32" Then
  1658.                 __WINAPI_ENUMWINDOWSADD($HWND)
  1659.             ElseIf $SCLASS = "BaseBar" Then
  1660.                 __WINAPI_ENUMWINDOWSCHILD($HWND)
  1661.             EndIf
  1662.         EndIf
  1663.         $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
  1664.     WEnd
  1665.     Return $__GAWINLIST_WINAPI
  1666. EndFunc
  1667. Func _WINAPI_ENUMWINDOWSTOP()
  1668.     __WINAPI_ENUMWINDOWSINIT()
  1669.     Local $HWND = _WINAPI_GETWINDOW(_WINAPI_GETDESKTOPWINDOW(), $__WINAPICONSTANT_GW_CHILD)
  1670.     While $HWND <> 0
  1671.         If _WINAPI_ISWINDOWVISIBLE($HWND) Then __WINAPI_ENUMWINDOWSADD($HWND)
  1672.         $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
  1673.     WEnd
  1674.     Return $__GAWINLIST_WINAPI
  1675. EndFunc
  1676. Func _WINAPI_EXPANDENVIRONMENTSTRINGS($SSTRING)
  1677.     Local $ARESULT = DllCall("kernel32.dll", "dword", "ExpandEnvironmentStringsW", "wstr", $SSTRING, "wstr", "", "dword", 4096)
  1678.     If @error Then Return SetError(@error, @extended, "")
  1679.     Return $ARESULT[2]
  1680. EndFunc
  1681. Func _WINAPI_EXTRACTICONEX($SFILE, $IINDEX, $PLARGE, $PSMALL, $IICONS)
  1682.     Local $ARESULT = DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $SFILE, "int", $IINDEX, "handle", $PLARGE, "handle", $PSMALL, "uint", $IICONS)
  1683.     If @error Then Return SetError(@error, @extended, 0)
  1684.     Return $ARESULT[0]
  1685. EndFunc
  1686. Func _WINAPI_FATALAPPEXIT($SMESSAGE)
  1687.     DllCall("kernel32.dll", "none", "FatalAppExitW", "uint", 0, "wstr", $SMESSAGE)
  1688.     If @error Then Return SetError(@error, @extended)
  1689. EndFunc
  1690. Func _WINAPI_FILLRECT($HDC, $PTRRECT, $HBRUSH)
  1691.     Local $ARESULT
  1692.     If IsPtr($HBRUSH) Then
  1693.         $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "ptr", $PTRRECT, "handle", $HBRUSH)
  1694.     Else
  1695.         $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "ptr", $PTRRECT, "dword", $HBRUSH)
  1696.     EndIf
  1697.     If @error Then Return SetError(@error, @extended, False)
  1698.     Return $ARESULT[0]
  1699. EndFunc
  1700. Func _WINAPI_FINDEXECUTABLE($SFILENAME, $SDIRECTORY = "")
  1701.     Local $ARESULT = DllCall("shell32.dll", "INT", "FindExecutableW", "wstr", $SFILENAME, "wstr", $SDIRECTORY, "wstr", "")
  1702.     If @error Then Return SetError(@error, @extended, 0)
  1703.     Return SetExtended($ARESULT[0], $ARESULT[3])
  1704. EndFunc
  1705. Func _WINAPI_FINDWINDOW($SCLASSNAME, $SWINDOWNAME)
  1706.     Local $ARESULT = DllCall("user32.dll", "hwnd", "FindWindowW", "wstr", $SCLASSNAME, "wstr", $SWINDOWNAME)
  1707.     If @error Then Return SetError(@error, @extended, 0)
  1708.     Return $ARESULT[0]
  1709. EndFunc
  1710. Func _WINAPI_FLASHWINDOW($HWND, $FINVERT = True)
  1711.     Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindow", "hwnd", $HWND, "bool", $FINVERT)
  1712.     If @error Then Return SetError(@error, @extended, False)
  1713.     Return $ARESULT[0]
  1714. EndFunc
  1715. Func _WINAPI_FLASHWINDOWEX($HWND, $IFLAGS = 3, $ICOUNT = 3, $ITIMEOUT = 0)
  1716.     Local $TFLASH = DllStructCreate($TAGFLASHWINFO)
  1717.     Local $PFLASH = DllStructGetPtr($TFLASH)
  1718.     Local $IFLASH = DllStructGetSize($TFLASH)
  1719.     Local $IMODE = 0
  1720.     If BitAND($IFLAGS, 1) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_CAPTION)
  1721.     If BitAND($IFLAGS, 2) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TRAY)
  1722.     If BitAND($IFLAGS, 4) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMER)
  1723.     If BitAND($IFLAGS, 8) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMERNOFG)
  1724.     DllStructSetData($TFLASH, "Size", $IFLASH)
  1725.     DllStructSetData($TFLASH, "hWnd", $HWND)
  1726.     DllStructSetData($TFLASH, "Flags", $IMODE)
  1727.     DllStructSetData($TFLASH, "Count", $ICOUNT)
  1728.     DllStructSetData($TFLASH, "Timeout", $ITIMEOUT)
  1729.     Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindowEx", "ptr", $PFLASH)
  1730.     If @error Then Return SetError(@error, @extended, False)
  1731.     Return $ARESULT[0]
  1732. EndFunc
  1733. Func _WINAPI_FLOATTOINT($NFLOAT)
  1734.     Local $TFLOAT = DllStructCreate("float")
  1735.     Local $TINT = DllStructCreate("int", DllStructGetPtr($TFLOAT))
  1736.     DllStructSetData($TFLOAT, 1, $NFLOAT)
  1737.     Return DllStructGetData($TINT, 1)
  1738. EndFunc
  1739. Func _WINAPI_FLUSHFILEBUFFERS($HFILE)
  1740.     Local $ARESULT = DllCall("kernel32.dll", "bool", "FlushFileBuffers", "handle", $HFILE)
  1741.     If @error Then Return SetError(@error, @extended, False)
  1742.     Return $ARESULT[0]
  1743. EndFunc
  1744. Func _WINAPI_FORMATMESSAGE($IFLAGS, $PSOURCE, $IMESSAGEID, $ILANGUAGEID, ByRef $PBUFFER, $ISIZE, $VARGUMENTS)
  1745.     Local $SBUFFERTYPE = "ptr"
  1746.     If IsString($PBUFFER) Then $SBUFFERTYPE = "wstr"
  1747.     Local $ARESULT = DllCall("Kernel32.dll", "dword", "FormatMessageW", "dword", $IFLAGS, "ptr", $PSOURCE, "dword", $IMESSAGEID, "dword", $ILANGUAGEID, $SBUFFERTYPE, $PBUFFER, "dword", $ISIZE, "ptr", $VARGUMENTS)
  1748.     If @error Then Return SetError(@error, @extended, 0)
  1749.     If $SBUFFERTYPE = "wstr" Then $PBUFFER = $ARESULT[5]
  1750.     Return $ARESULT[0]
  1751. EndFunc
  1752. Func _WINAPI_FRAMERECT($HDC, $PTRRECT, $HBRUSH)
  1753.     Local $ARESULT = DllCall("user32.dll", "int", "FrameRect", "handle", $HDC, "ptr", $PTRRECT, "handle", $HBRUSH)
  1754.     If @error Then Return SetError(@error, @extended, False)
  1755.     Return $ARESULT[0]
  1756. EndFunc
  1757. Func _WINAPI_FREELIBRARY($HMODULE)
  1758.     Local $ARESULT = DllCall("kernel32.dll", "bool", "FreeLibrary", "handle", $HMODULE)
  1759.     If @error Then Return SetError(@error, @extended, False)
  1760.     Return $ARESULT[0]
  1761. EndFunc
  1762. Func _WINAPI_GETANCESTOR($HWND, $IFLAGS = 1)
  1763.     Local $ARESULT = DllCall("user32.dll", "hwnd", "GetAncestor", "hwnd", $HWND, "uint", $IFLAGS)
  1764.     If @error Then Return SetError(@error, @extended, 0)
  1765.     Return $ARESULT[0]
  1766. EndFunc
  1767. Func _WINAPI_GETASYNCKEYSTATE($IKEY)
  1768.     Local $ARESULT = DllCall("user32.dll", "short", "GetAsyncKeyState", "int", $IKEY)
  1769.     If @error Then Return SetError(@error, @extended, 0)
  1770.     Return $ARESULT[0]
  1771. EndFunc
  1772. Func _WINAPI_GETBKMODE($HDC)
  1773.     Local $ARESULT = DllCall("gdi32.dll", "int", "GetBkMode", "handle", $HDC)
  1774.     If @error Then Return SetError(@error, @extended, 0)
  1775.     Return $ARESULT[0]
  1776. EndFunc
  1777. Func _WINAPI_GETCLASSNAME($HWND)
  1778.     If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  1779.     Local $ARESULT = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $HWND, "wstr", "", "int", 4096)
  1780.     If @error Then Return SetError(@error, @extended, False)
  1781.     Return SetExtended($ARESULT[0], $ARESULT[2])
  1782. EndFunc
  1783. Func _WINAPI_GETCLIENTHEIGHT($HWND)
  1784.     Local $TRECT = _WINAPI_GETCLIENTRECT($HWND)
  1785.     If @error Then Return SetError(@error, @extended, 0)
  1786.     Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top")
  1787. EndFunc
  1788. Func _WINAPI_GETCLIENTWIDTH($HWND)
  1789.     Local $TRECT = _WINAPI_GETCLIENTRECT($HWND)
  1790.     If @error Then Return SetError(@error, @extended, 0)
  1791.     Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left")
  1792. EndFunc
  1793. Func _WINAPI_GETCLIENTRECT($HWND)
  1794.     Local $TRECT = DllStructCreate($TAGRECT)
  1795.     DllCall("user32.dll", "bool", "GetClientRect", "hwnd", $HWND, "ptr", DllStructGetPtr($TRECT))
  1796.     If @error Then Return SetError(@error, @extended, 0)
  1797.     Return $TRECT
  1798. EndFunc
  1799. Func _WINAPI_GETCURRENTPROCESS()
  1800.     Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentProcess")
  1801.     If @error Then Return SetError(@error, @extended, 0)
  1802.     Return $ARESULT[0]
  1803. EndFunc
  1804. Func _WINAPI_GETCURRENTPROCESSID()
  1805.     Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentProcessId")
  1806.     If @error Then Return SetError(@error, @extended, 0)
  1807.     Return $ARESULT[0]
  1808. EndFunc
  1809. Func _WINAPI_GETCURRENTTHREAD()
  1810.     Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentThread")
  1811.     If @error Then Return SetError(@error, @extended, 0)
  1812.     Return $ARESULT[0]
  1813. EndFunc
  1814. Func _WINAPI_GETCURRENTTHREADID()
  1815.     Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentThreadId")
  1816.     If @error Then Return SetError(@error, @extended, 0)
  1817.     Return $ARESULT[0]
  1818. EndFunc
  1819. Func _WINAPI_GETCURSORINFO()
  1820.     Local $TCURSOR = DllStructCreate($TAGCURSORINFO)
  1821.     Local $ICURSOR = DllStructGetSize($TCURSOR)
  1822.     DllStructSetData($TCURSOR, "Size", $ICURSOR)
  1823.     DllCall("user32.dll", "bool", "GetCursorInfo", "ptr", DllStructGetPtr($TCURSOR))
  1824.     If @error Then Return SetError(@error, @extended, 0)
  1825.     Local $ACURSOR[5]
  1826.     $ACURSOR[0] = True
  1827.     $ACURSOR[1] = DllStructGetData($TCURSOR, "Flags") <> 0
  1828.     $ACURSOR[2] = DllStructGetData($TCURSOR, "hCursor")
  1829.     $ACURSOR[3] = DllStructGetData($TCURSOR, "X")
  1830.     $ACURSOR[4] = DllStructGetData($TCURSOR, "Y")
  1831.     Return $ACURSOR
  1832. EndFunc
  1833. Func _WINAPI_GETDC($HWND)
  1834.     Local $ARESULT = DllCall("user32.dll", "handle", "GetDC", "hwnd", $HWND)
  1835.     If @error Then Return SetError(@error, @extended, 0)
  1836.     Return $ARESULT[0]
  1837. EndFunc
  1838. Func _WINAPI_GETDESKTOPWINDOW()
  1839.     Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDesktopWindow")
  1840.     If @error Then Return SetError(@error, @extended, 0)
  1841.     Return $ARESULT[0]
  1842. EndFunc
  1843. Func _WINAPI_GETDEVICECAPS($HDC, $IINDEX)
  1844.     Local $ARESULT = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $HDC, "int", $IINDEX)
  1845.     If @error Then Return SetError(@error, @extended, 0)
  1846.     Return $ARESULT[0]
  1847. EndFunc
  1848. Func _WINAPI_GETDIBITS($HDC, $HBMP, $ISTARTSCAN, $ISCANLINES, $PBITS, $PBI, $IUSAGE)
  1849.     Local $ARESULT = DllCall("gdi32.dll", "int", "GetDIBits", "handle", $HDC, "handle", $HBMP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "ptr", $PBITS, "ptr", $PBI, "uint", $IUSAGE)
  1850.     If @error Then Return SetError(@error, @extended, False)
  1851.     Return $ARESULT[0]
  1852. EndFunc
  1853. Func _WINAPI_GETDLGCTRLID($HWND)
  1854.     Local $ARESULT = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $HWND)
  1855.     If @error Then Return SetError(@error, @extended, 0)
  1856.     Return $ARESULT[0]
  1857. EndFunc
  1858. Func _WINAPI_GETDLGITEM($HWND, $IITEMID)
  1859.     Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDlgItem", "hwnd", $HWND, "int", $IITEMID)
  1860.     If @error Then Return SetError(@error, @extended, 0)
  1861.     Return $ARESULT[0]
  1862. EndFunc
  1863. Func _WINAPI_GETFOCUS()
  1864.     Local $ARESULT = DllCall("user32.dll", "hwnd", "GetFocus")
  1865.     If @error Then Return SetError(@error, @extended, 0)
  1866.     Return $ARESULT[0]
  1867. EndFunc
  1868. Func _WINAPI_GETFOREGROUNDWINDOW()
  1869.     Local $ARESULT = DllCall("user32.dll", "hwnd", "GetForegroundWindow")
  1870.     If @error Then Return SetError(@error, @extended, 0)
  1871.     Return $ARESULT[0]
  1872. EndFunc
  1873. Func _WINAPI_GETGUIRESOURCES($IFLAG = 0, $HPROCESS = -1)
  1874.     If $HPROCESS = -1 Then $HPROCESS = _WINAPI_GETCURRENTPROCESS()
  1875.     Local $ARESULT = DllCall("user32.dll", "dword", "GetGuiResources", "handle", $HPROCESS, "dword", $IFLAG)
  1876.     If @error Then Return SetError(@error, @extended, 0)
  1877.     Return $ARESULT[0]
  1878. EndFunc
  1879. Func _WINAPI_GETICONINFO($HICON)
  1880.     Local $TINFO = DllStructCreate($TAGICONINFO)
  1881.     DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HICON, "ptr", DllStructGetPtr($TINFO))
  1882.     If @error Then Return SetError(@error, @extended, 0)
  1883.     Local $AICON[6]
  1884.     $AICON[0] = True
  1885.     $AICON[1] = DllStructGetData($TINFO, "Icon") <> 0
  1886.     $AICON[2] = DllStructGetData($TINFO, "XHotSpot")
  1887.     $AICON[3] = DllStructGetData($TINFO, "YHotSpot")
  1888.     $AICON[4] = DllStructGetData($TINFO, "hMask")
  1889.     $AICON[5] = DllStructGetData($TINFO, "hColor")
  1890.     Return $AICON
  1891. EndFunc
  1892. Func _WINAPI_GETFILESIZEEX($HFILE)
  1893.     Local $ARESULT = DllCall("kernel32.dll", "bool", "GetFileSizeEx", "handle", $HFILE, "int64*", 0)
  1894.     If @error Then Return SetError(@error, @extended, 0)
  1895.     Return $ARESULT[2]
  1896. EndFunc
  1897. Func _WINAPI_GETLASTERRORMESSAGE()
  1898.     Local $TBUFFERPTR = DllStructCreate("ptr")
  1899.     Local $PBUFFERPTR = DllStructGetPtr($TBUFFERPTR)
  1900.     Local $NCOUNT = _WINAPI_FORMATMESSAGE(BitOR($__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER, $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM), 0, _WINAPI_GETLASTERROR(), 0, $PBUFFERPTR, 0, 0)
  1901.     If @error Then Return SetError(@error, 0, "")
  1902.     Local $STEXT = ""
  1903.     Local $PBUFFER = DllStructGetData($TBUFFERPTR, 1)
  1904.     If $PBUFFER Then
  1905.         If $NCOUNT > 0 Then
  1906.             Local $TBUFFER = DllStructCreate("wchar[" & ($NCOUNT + 1) & "]", $PBUFFER)
  1907.             $STEXT = DllStructGetData($TBUFFER, 1)
  1908.         EndIf
  1909.         _WINAPI_LOCALFREE($PBUFFER)
  1910.     EndIf
  1911.     Return $STEXT
  1912. EndFunc
  1913. Func _WINAPI_GETLAYEREDWINDOWATTRIBUTES($HWND, ByRef $I_TRANSCOLOR, ByRef $TRANSPARENCY, $ASCOLORREF = False)
  1914.     $I_TRANSCOLOR = -1
  1915.     $TRANSPARENCY = -1
  1916.     Local $ARESULT = DllCall("user32.dll", "bool", "GetLayeredWindowAttributes", "hwnd", $HWND, "dword*", $I_TRANSCOLOR, "byte*", $TRANSPARENCY, "dword*", 0)
  1917.     If @error Then Return SetError(@error, @extended, 0)
  1918.     If Not $ASCOLORREF Then
  1919.         $ARESULT[2] = Hex(String($ARESULT[2]), 6)
  1920.         $ARESULT[2] = "0x" & StringMid($ARESULT[2], 5, 2) & StringMid($ARESULT[2], 3, 2) & StringMid($ARESULT[2], 1, 2)
  1921.     EndIf
  1922.     $I_TRANSCOLOR = $ARESULT[2]
  1923.     $TRANSPARENCY = $ARESULT[3]
  1924.     Return $ARESULT[4]
  1925. EndFunc
  1926. Func _WINAPI_GETMODULEHANDLE($SMODULENAME)
  1927.     Local $SMODULENAMETYPE = "wstr"
  1928.     If $SMODULENAME = "" Then
  1929.         $SMODULENAME = 0
  1930.         $SMODULENAMETYPE = "ptr"
  1931.     EndIf
  1932.     Local $ARESULT = DllCall("kernel32.dll", "handle", "GetModuleHandleW", $SMODULENAMETYPE, $SMODULENAME)
  1933.     If @error Then Return SetError(@error, @extended, 0)
  1934.     Return $ARESULT[0]
  1935. EndFunc
  1936. Func _WINAPI_GETMOUSEPOS($FTOCLIENT = False, $HWND = 0)
  1937.     Local $IMODE = Opt("MouseCoordMode", 1)
  1938.     Local $APOS = MouseGetPos()
  1939.     Opt("MouseCoordMode", $IMODE)
  1940.     Local $TPOINT = DllStructCreate($TAGPOINT)
  1941.     DllStructSetData($TPOINT, "X", $APOS[0])
  1942.     DllStructSetData($TPOINT, "Y", $APOS[1])
  1943.     If $FTOCLIENT Then
  1944.         _WINAPI_SCREENTOCLIENT($HWND, $TPOINT)
  1945.         If @error Then Return SetError(@error, @extended, 0)
  1946.     EndIf
  1947.     Return $TPOINT
  1948. EndFunc
  1949. Func _WINAPI_GETMOUSEPOSX($FTOCLIENT = False, $HWND = 0)
  1950.     Local $TPOINT = _WINAPI_GETMOUSEPOS($FTOCLIENT, $HWND)
  1951.     If @error Then Return SetError(@error, @extended, 0)
  1952.     Return DllStructGetData($TPOINT, "X")
  1953. EndFunc
  1954. Func _WINAPI_GETMOUSEPOSY($FTOCLIENT = False, $HWND = 0)
  1955.     Local $TPOINT = _WINAPI_GETMOUSEPOS($FTOCLIENT, $HWND)
  1956.     If @error Then Return SetError(@error, @extended, 0)
  1957.     Return DllStructGetData($TPOINT, "Y")
  1958. EndFunc
  1959. Func _WINAPI_GETOBJECT($HOBJECT, $ISIZE, $POBJECT)
  1960.     Local $ARESULT = DllCall("gdi32.dll", "int", "GetObject", "handle", $HOBJECT, "int", $ISIZE, "ptr", $POBJECT)
  1961.     If @error Then Return SetError(@error, @extended, 0)
  1962.     Return $ARESULT[0]
  1963. EndFunc
  1964. Func _WINAPI_GETOPENFILENAME($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0)
  1965.     Local $IPATHLEN = 4096
  1966.     Local $INULLS = 0
  1967.     Local $TOFN = DllStructCreate($TAGOPENFILENAME)
  1968.     Local $AFILES[1] = [0]
  1969.     Local $IFLAG = $IFLAGS
  1970.     Local $ASFLINES = StringSplit($SFILTER, "|")
  1971.     Local $ASFILTER[$ASFLINES[0] * 2 + 1]
  1972.     Local $ISTART, $IFINAL, $STFILTER
  1973.     $ASFILTER[0] = $ASFLINES[0] * 2
  1974.     For $I = 1 To $ASFLINES[0]
  1975.         $ISTART = StringInStr($ASFLINES[$I], "(", 0, 1)
  1976.         $IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1)
  1977.         $ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3)
  1978.         $ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3)
  1979.         $STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];"
  1980.     Next
  1981.     Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]")
  1982.     Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]")
  1983.     Local $TFILTER = DllStructCreate($STFILTER & "wchar")
  1984.     Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]")
  1985.     Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]")
  1986.     For $I = 1 To $ASFILTER[0]
  1987.         DllStructSetData($TFILTER, $I, $ASFILTER[$I])
  1988.     Next
  1989.     DllStructSetData($TTITLE, "Title", $STITLE)
  1990.     DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR)
  1991.     DllStructSetData($TPATH, "Path", $SDEFAULTFILE)
  1992.     DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT)
  1993.     DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN))
  1994.     DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER)
  1995.     DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER))
  1996.     DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX)
  1997.     DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH))
  1998.     DllStructSetData($TOFN, "nMaxFile", $IPATHLEN)
  1999.     DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR))
  2000.     DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE))
  2001.     DllStructSetData($TOFN, "Flags", $IFLAG)
  2002.     DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN))
  2003.     DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX)
  2004.     DllCall("comdlg32.dll", "bool", "GetOpenFileNameW", "ptr", DllStructGetPtr($TOFN))
  2005.     If @error Then Return SetError(@error, @extended, $AFILES)
  2006.     If BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT And BitAND($IFLAGS, $OFN_EXPLORER) = $OFN_EXPLORER Then
  2007.         For $X = 1 To $IPATHLEN
  2008.             If DllStructGetData($TPATH, "Path", $X) = Chr(0) Then
  2009.                 DllStructSetData($TPATH, "Path", "|", $X)
  2010.                 $INULLS += 1
  2011.             Else
  2012.                 $INULLS = 0
  2013.             EndIf
  2014.             If $INULLS = 2 Then ExitLoop
  2015.         Next
  2016.         DllStructSetData($TPATH, "Path", Chr(0), $X - 1)
  2017.         $AFILES = StringSplit(DllStructGetData($TPATH, "Path"), "|")
  2018.         If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2019.         Return StringSplit(DllStructGetData($TPATH, "Path"), "|")
  2020.     ElseIf BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT Then
  2021.         $AFILES = StringSplit(DllStructGetData($TPATH, "Path"), " ")
  2022.         If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2023.         Return StringSplit(StringReplace(DllStructGetData($TPATH, "Path"), " ", "|"), "|")
  2024.     Else
  2025.         Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2026.     EndIf
  2027. EndFunc
  2028. Func _WINAPI_GETOVERLAPPEDRESULT($HFILE, $POVERLAPPED, ByRef $IBYTES, $FWAIT = False)
  2029.     Local $ARESULT = DllCall("kernel32.dll", "bool", "GetOverlappedResult", "handle", $HFILE, "ptr", $POVERLAPPED, "dword*", 0, "bool", $FWAIT)
  2030.     If @error Then Return SetError(@error, @extended, False)
  2031.     $IBYTES = $ARESULT[3]
  2032.     Return $ARESULT[0]
  2033. EndFunc
  2034. Func _WINAPI_GETPARENT($HWND)
  2035.     Local $ARESULT = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $HWND)
  2036.     If @error Then Return SetError(@error, @extended, 0)
  2037.     Return $ARESULT[0]
  2038. EndFunc
  2039. Func _WINAPI_GETPROCESSAFFINITYMASK($HPROCESS)
  2040.     Local $ARESULT = DllCall("kernel32.dll", "bool", "GetProcessAffinityMask", "handle", $HPROCESS, "dword_ptr*", 0, "dword_ptr*", 0)
  2041.     If @error Then Return SetError(@error, @extended, 0)
  2042.     Local $AMASK[3]
  2043.     $AMASK[0] = True
  2044.     $AMASK[1] = $ARESULT[2]
  2045.     $AMASK[2] = $ARESULT[3]
  2046.     Return $AMASK
  2047. EndFunc
  2048. Func _WINAPI_GETSAVEFILENAME($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0)
  2049.     Local $IPATHLEN = 4096
  2050.     Local $TOFN = DllStructCreate($TAGOPENFILENAME)
  2051.     Local $AFILES[1] = [0]
  2052.     Local $IFLAG = $IFLAGS
  2053.     Local $ASFLINES = StringSplit($SFILTER, "|")
  2054.     Local $ASFILTER[$ASFLINES[0] * 2 + 1]
  2055.     Local $ISTART, $IFINAL, $STFILTER
  2056.     $ASFILTER[0] = $ASFLINES[0] * 2
  2057.     For $I = 1 To $ASFLINES[0]
  2058.         $ISTART = StringInStr($ASFLINES[$I], "(", 0, 1)
  2059.         $IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1)
  2060.         $ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3)
  2061.         $ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3)
  2062.         $STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];"
  2063.     Next
  2064.     Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]")
  2065.     Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]")
  2066.     Local $TFILTER = DllStructCreate($STFILTER & "wchar")
  2067.     Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]")
  2068.     Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]")
  2069.     For $I = 1 To $ASFILTER[0]
  2070.         DllStructSetData($TFILTER, $I, $ASFILTER[$I])
  2071.     Next
  2072.     DllStructSetData($TTITLE, "Title", $STITLE)
  2073.     DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR)
  2074.     DllStructSetData($TPATH, "Path", $SDEFAULTFILE)
  2075.     DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT)
  2076.     DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN))
  2077.     DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER)
  2078.     DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER))
  2079.     DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX)
  2080.     DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH))
  2081.     DllStructSetData($TOFN, "nMaxFile", $IPATHLEN)
  2082.     DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR))
  2083.     DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE))
  2084.     DllStructSetData($TOFN, "Flags", $IFLAG)
  2085.     DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN))
  2086.     DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX)
  2087.     DllCall("comdlg32.dll", "bool", "GetSaveFileNameW", "ptr", DllStructGetPtr($TOFN))
  2088.     If @error Then Return SetError(@error, @extended, $AFILES)
  2089.     Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2090. EndFunc
  2091. Func _WINAPI_GETSTOCKOBJECT($IOBJECT)
  2092.     Local $ARESULT = DllCall("gdi32.dll", "handle", "GetStockObject", "int", $IOBJECT)
  2093.     If @error Then Return SetError(@error, @extended, 0)
  2094.     Return $ARESULT[0]
  2095. EndFunc
  2096. Func _WINAPI_GETSTDHANDLE($ISTDHANDLE)
  2097.     If $ISTDHANDLE < 0 Or $ISTDHANDLE > 2 Then Return SetError(2, 0, -1)
  2098.     Local Const $AHANDLE[3] = [-10, -11, -12]
  2099.     Local $ARESULT = DllCall("kernel32.dll", "handle", "GetStdHandle", "dword", $AHANDLE[$ISTDHANDLE])
  2100.     If @error Then Return SetError(@error, @extended, -1)
  2101.     Return $ARESULT[0]
  2102. EndFunc
  2103. Func _WINAPI_GETSYSCOLOR($IINDEX)
  2104.     Local $ARESULT = DllCall("user32.dll", "dword", "GetSysColor", "int", $IINDEX)
  2105.     If @error Then Return SetError(@error, @extended, 0)
  2106.     Return $ARESULT[0]
  2107. EndFunc
  2108. Func _WINAPI_GETSYSCOLORBRUSH($IINDEX)
  2109.     Local $ARESULT = DllCall("user32.dll", "handle", "GetSysColorBrush", "int", $IINDEX)
  2110.     If @error Then Return SetError(@error, @extended, 0)
  2111.     Return $ARESULT[0]
  2112. EndFunc
  2113. Func _WINAPI_GETSYSTEMMETRICS($IINDEX)
  2114.     Local $ARESULT = DllCall("user32.dll", "int", "GetSystemMetrics", "int", $IINDEX)
  2115.     If @error Then Return SetError(@error, @extended, 0)
  2116.     Return $ARESULT[0]
  2117. EndFunc
  2118. Func _WINAPI_GETTEXTEXTENTPOINT32($HDC, $STEXT)
  2119.     Local $TSIZE = DllStructCreate($TAGSIZE)
  2120.     Local $ISIZE = StringLen($STEXT)
  2121.     DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $HDC, "wstr", $STEXT, "int", $ISIZE, "ptr", DllStructGetPtr($TSIZE))
  2122.     If @error Then Return SetError(@error, @extended, 0)
  2123.     Return $TSIZE
  2124. EndFunc
  2125. Func _WINAPI_GETWINDOW($HWND, $ICMD)
  2126.     Local $ARESULT = DllCall("user32.dll", "hwnd", "GetWindow", "hwnd", $HWND, "uint", $ICMD)
  2127.     If @error Then Return SetError(@error, @extended, 0)
  2128.     Return $ARESULT[0]
  2129. EndFunc
  2130. Func _WINAPI_GETWINDOWDC($HWND)
  2131.     Local $ARESULT = DllCall("user32.dll", "handle", "GetWindowDC", "hwnd", $HWND)
  2132.     If @error Then Return SetError(@error, @extended, 0)
  2133.     Return $ARESULT[0]
  2134. EndFunc
  2135. Func _WINAPI_GETWINDOWHEIGHT($HWND)
  2136.     Local $TRECT = _WINAPI_GETWINDOWRECT($HWND)
  2137.     If @error Then Return SetError(@error, @extended, 0)
  2138.     Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top")
  2139. EndFunc
  2140. Func _WINAPI_GETWINDOWLONG($HWND, $IINDEX)
  2141.     Local $SFUNCNAME = "GetWindowLongW"
  2142.     If @AutoItX64 Then $SFUNCNAME = "GetWindowLongPtrW"
  2143.     Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX)
  2144.     If @error Then Return SetError(@error, @extended, 0)
  2145.     Return $ARESULT[0]
  2146. EndFunc
  2147. Func _WINAPI_GETWINDOWPLACEMENT($HWND)
  2148.     Local $TWINDOWPLACEMENT = DllStructCreate($TAGWINDOWPLACEMENT)
  2149.     DllStructSetData($TWINDOWPLACEMENT, "length", DllStructGetSize($TWINDOWPLACEMENT))
  2150.     Local $PWINDOWPLACEMENT = DllStructGetPtr($TWINDOWPLACEMENT)
  2151.     DllCall("user32.dll", "bool", "GetWindowPlacement", "hwnd", $HWND, "ptr", $PWINDOWPLACEMENT)
  2152.     If @error Then Return SetError(@error, @extended, 0)
  2153.     Return $TWINDOWPLACEMENT
  2154. EndFunc
  2155. Func _WINAPI_GETWINDOWRECT($HWND)
  2156.     Local $TRECT = DllStructCreate($TAGRECT)
  2157.     DllCall("user32.dll", "bool", "GetWindowRect", "hwnd", $HWND, "ptr", DllStructGetPtr($TRECT))
  2158.     If @error Then Return SetError(@error, @extended, 0)
  2159.     Return $TRECT
  2160. EndFunc
  2161. Func _WINAPI_GETWINDOWRGN($HWND, $HRGN)
  2162.     Local $ARESULT = DllCall("user32.dll", "int", "GetWindowRgn", "hwnd", $HWND, "handle", $HRGN)
  2163.     If @error Then Return SetError(@error, @extended, 0)
  2164.     Return $ARESULT[0]
  2165. EndFunc
  2166. Func _WINAPI_GETWINDOWTEXT($HWND)
  2167.     Local $ARESULT = DllCall("user32.dll", "int", "GetWindowTextW", "hwnd", $HWND, "wstr", "", "int", 4096)
  2168.     If @error Then Return SetError(@error, @extended, "")
  2169.     Return SetExtended($ARESULT[0], $ARESULT[2])
  2170. EndFunc
  2171. Func _WINAPI_GETWINDOWTHREADPROCESSID($HWND, ByRef $IPID)
  2172.     Local $ARESULT = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0)
  2173.     If @error Then Return SetError(@error, @extended, 0)
  2174.     $IPID = $ARESULT[2]
  2175.     Return $ARESULT[0]
  2176. EndFunc
  2177. Func _WINAPI_GETWINDOWWIDTH($HWND)
  2178.     Local $TRECT = _WINAPI_GETWINDOWRECT($HWND)
  2179.     If @error Then Return SetError(@error, @extended, 0)
  2180.     Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left")
  2181. EndFunc
  2182. Func _WINAPI_GETXYFROMPOINT(ByRef $TPOINT, ByRef $IX, ByRef $IY)
  2183.     $IX = DllStructGetData($TPOINT, "X")
  2184.     $IY = DllStructGetData($TPOINT, "Y")
  2185. EndFunc
  2186. Func _WINAPI_GLOBALMEMORYSTATUS()
  2187.     Local $TMEM = DllStructCreate($TAGMEMORYSTATUSEX)
  2188.     Local $PMEM = DllStructGetPtr($TMEM)
  2189.     Local $IMEM = DllStructGetSize($TMEM)
  2190.     DllStructSetData($TMEM, 1, $IMEM)
  2191.     DllCall("kernel32.dll", "none", "GlobalMemoryStatusEx", "ptr", $PMEM)
  2192.     If @error Then Return SetError(@error, @extended, 0)
  2193.     Local $AMEM[7]
  2194.     $AMEM[0] = DllStructGetData($TMEM, 2)
  2195.     $AMEM[1] = DllStructGetData($TMEM, 3)
  2196.     $AMEM[2] = DllStructGetData($TMEM, 4)
  2197.     $AMEM[3] = DllStructGetData($TMEM, 5)
  2198.     $AMEM[4] = DllStructGetData($TMEM, 6)
  2199.     $AMEM[5] = DllStructGetData($TMEM, 7)
  2200.     $AMEM[6] = DllStructGetData($TMEM, 8)
  2201.     Return $AMEM
  2202. EndFunc
  2203. Func _WINAPI_GUIDFROMSTRING($SGUID)
  2204.     Local $TGUID = DllStructCreate($TAGGUID)
  2205.     _WINAPI_GUIDFROMSTRINGEX($SGUID, DllStructGetPtr($TGUID))
  2206.     If @error Then Return SetError(@error, @extended, 0)
  2207.     Return $TGUID
  2208. EndFunc
  2209. Func _WINAPI_GUIDFROMSTRINGEX($SGUID, $PGUID)
  2210.     Local $ARESULT = DllCall("ole32.dll", "long", "CLSIDFromString", "wstr", $SGUID, "ptr", $PGUID)
  2211.     If @error Then Return SetError(@error, @extended, False)
  2212.     Return $ARESULT[0]
  2213. EndFunc
  2214. Func _WINAPI_HIWORD($ILONG)
  2215.     Return BitShift($ILONG, 16)
  2216. EndFunc
  2217. Func _WINAPI_INPROCESS($HWND, ByRef $HLASTWND)
  2218.     If $HWND = $HLASTWND Then Return True
  2219.     For $II = $__GAINPROCESS_WINAPI[0][0] To 1 Step -1
  2220.         If $HWND = $__GAINPROCESS_WINAPI[$II][0] Then
  2221.             If $__GAINPROCESS_WINAPI[$II][1] Then
  2222.                 $HLASTWND = $HWND
  2223.                 Return True
  2224.             Else
  2225.                 Return False
  2226.             EndIf
  2227.         EndIf
  2228.     Next
  2229.     Local $IPROCESSID
  2230.     _WINAPI_GETWINDOWTHREADPROCESSID($HWND, $IPROCESSID)
  2231.     Local $ICOUNT = $__GAINPROCESS_WINAPI[0][0] + 1
  2232.     If $ICOUNT >= 64 Then $ICOUNT = 1
  2233.     $__GAINPROCESS_WINAPI[0][0] = $ICOUNT
  2234.     $__GAINPROCESS_WINAPI[$ICOUNT][0] = $HWND
  2235.     $__GAINPROCESS_WINAPI[$ICOUNT][1] = ($IPROCESSID = @AutoItPID)
  2236.     Return $__GAINPROCESS_WINAPI[$ICOUNT][1]
  2237. EndFunc
  2238. Func _WINAPI_INTTOFLOAT($IINT)
  2239.     Local $TINT = DllStructCreate("int")
  2240.     Local $TFLOAT = DllStructCreate("float", DllStructGetPtr($TINT))
  2241.     DllStructSetData($TINT, 1, $IINT)
  2242.     Return DllStructGetData($TFLOAT, 1)
  2243. EndFunc
  2244. Func _WINAPI_ISCLASSNAME($HWND, $SCLASSNAME)
  2245.     Local $SSEPARATOR = Opt("GUIDataSeparatorChar")
  2246.     Local $ACLASSNAME = StringSplit($SCLASSNAME, $SSEPARATOR)
  2247.     If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  2248.     Local $SCLASSCHECK = _WINAPI_GETCLASSNAME($HWND)
  2249.     For $X = 1 To UBound($ACLASSNAME) - 1
  2250.         If StringUpper(StringMid($SCLASSCHECK, 1, StringLen($ACLASSNAME[$X]))) = StringUpper($ACLASSNAME[$X]) Then Return True
  2251.     Next
  2252.     Return False
  2253. EndFunc
  2254. Func _WINAPI_ISWINDOW($HWND)
  2255.     Local $ARESULT = DllCall("user32.dll", "bool", "IsWindow", "hwnd", $HWND)
  2256.     If @error Then Return SetError(@error, @extended, 0)
  2257.     Return $ARESULT[0]
  2258. EndFunc
  2259. Func _WINAPI_ISWINDOWVISIBLE($HWND)
  2260.     Local $ARESULT = DllCall("user32.dll", "bool", "IsWindowVisible", "hwnd", $HWND)
  2261.     If @error Then Return SetError(@error, @extended, 0)
  2262.     Return $ARESULT[0]
  2263. EndFunc
  2264. Func _WINAPI_INVALIDATERECT($HWND, $TRECT = 0, $FERASE = True)
  2265.     Local $PRECT = 0
  2266.     If IsDllStruct($TRECT) Then $PRECT = DllStructGetPtr($TRECT)
  2267.     Local $ARESULT = DllCall("user32.dll", "bool", "InvalidateRect", "hwnd", $HWND, "ptr", $PRECT, "bool", $FERASE)
  2268.     If @error Then Return SetError(@error, @extended, False)
  2269.     Return $ARESULT[0]
  2270. EndFunc
  2271. Func _WINAPI_LINETO($HDC, $IX, $IY)
  2272.     Local $ARESULT = DllCall("gdi32.dll", "bool", "LineTo", "handle", $HDC, "int", $IX, "int", $IY)
  2273.     If @error Then Return SetError(@error, @extended, False)
  2274.     Return $ARESULT[0]
  2275. EndFunc
  2276. Func _WINAPI_LOADBITMAP($HINSTANCE, $SBITMAP)
  2277.     Local $SBITMAPTYPE = "int"
  2278.     If IsString($SBITMAP) Then $SBITMAPTYPE = "wstr"
  2279.     Local $ARESULT = DllCall("user32.dll", "handle", "LoadBitmapW", "handle", $HINSTANCE, $SBITMAPTYPE, $SBITMAP)
  2280.     If @error Then Return SetError(@error, @extended, 0)
  2281.     Return $ARESULT[0]
  2282. EndFunc
  2283. Func _WINAPI_LOADIMAGE($HINSTANCE, $SIMAGE, $ITYPE, $IXDESIRED, $IYDESIRED, $ILOAD)
  2284.     Local $ARESULT, $SIMAGETYPE = "int"
  2285.     If IsString($SIMAGE) Then $SIMAGETYPE = "wstr"
  2286.     $ARESULT = DllCall("user32.dll", "handle", "LoadImageW", "handle", $HINSTANCE, $SIMAGETYPE, $SIMAGE, "uint", $ITYPE, "int", $IXDESIRED, "int", $IYDESIRED, "uint", $ILOAD)
  2287.     If @error Then Return SetError(@error, @extended, 0)
  2288.     Return $ARESULT[0]
  2289. EndFunc
  2290. Func _WINAPI_LOADLIBRARY($SFILENAME)
  2291.     Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryW", "wstr", $SFILENAME)
  2292.     If @error Then Return SetError(@error, @extended, 0)
  2293.     Return $ARESULT[0]
  2294. EndFunc
  2295. Func _WINAPI_LOADLIBRARYEX($SFILENAME, $IFLAGS = 0)
  2296.     Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryExW", "wstr", $SFILENAME, "ptr", 0, "dword", $IFLAGS)
  2297.     If @error Then Return SetError(@error, @extended, 0)
  2298.     Return $ARESULT[0]
  2299. EndFunc
  2300. Func _WINAPI_LOADSHELL32ICON($IICONID)
  2301.     Local $TICONS = DllStructCreate("ptr Data")
  2302.     Local $PICONS = DllStructGetPtr($TICONS)
  2303.     Local $IICONS = _WINAPI_EXTRACTICONEX("shell32.dll", $IICONID, 0, $PICONS, 1)
  2304.     If @error Then Return SetError(@error, @extended, 0)
  2305.     If $IICONS <= 0 Then Return SetError(1, 0, 0)
  2306.     Return DllStructGetData($TICONS, "Data")
  2307. EndFunc
  2308. Func _WINAPI_LOADSTRING($HINSTANCE, $ISTRINGID)
  2309.     Local $ARESULT = DllCall("user32.dll", "int", "LoadStringW", "handle", $HINSTANCE, "uint", $ISTRINGID, "wstr", "", "int", 4096)
  2310.     If @error Then Return SetError(@error, @extended, "")
  2311.     Return SetExtended($ARESULT[0], $ARESULT[3])
  2312. EndFunc
  2313. Func _WINAPI_LOCALFREE($HMEM)
  2314.     Local $ARESULT = DllCall("kernel32.dll", "handle", "LocalFree", "handle", $HMEM)
  2315.     If @error Then Return SetError(@error, @extended, False)
  2316.     Return $ARESULT[0]
  2317. EndFunc
  2318. Func _WINAPI_LOWORD($ILONG)
  2319.     Return BitAND($ILONG, 65535)
  2320. EndFunc
  2321. Func _WINAPI_MAKELANGID($LGIDPRIMARY, $LGIDSUB)
  2322.     Return BitOR(BitShift($LGIDSUB, -10), $LGIDPRIMARY)
  2323. EndFunc
  2324. Func _WINAPI_MAKELCID($LGID, $SRTID)
  2325.     Return BitOR(BitShift($SRTID, -16), $LGID)
  2326. EndFunc
  2327. Func _WINAPI_MAKELONG($ILO, $IHI)
  2328.     Return BitOR(BitShift($IHI, -16), BitAND($ILO, 65535))
  2329. EndFunc
  2330. Func _WINAPI_MAKEQWORD($LODWORD, $HIDWORD)
  2331.     Local $TINT64 = DllStructCreate("uint64")
  2332.     Local $TDWORDS = DllStructCreate("dword;dword", DllStructGetPtr($TINT64))
  2333.     DllStructSetData($TDWORDS, 1, $LODWORD)
  2334.     DllStructSetData($TDWORDS, 2, $HIDWORD)
  2335.     Return DllStructGetData($TINT64, 1)
  2336. EndFunc
  2337. Func _WINAPI_MESSAGEBEEP($ITYPE = 1)
  2338.     Local $ISOUND
  2339.     Switch $ITYPE
  2340.         Case 1
  2341.             $ISOUND = 0
  2342.         Case 2
  2343.             $ISOUND = 16
  2344.         Case 3
  2345.             $ISOUND = 32
  2346.         Case 4
  2347.             $ISOUND = 48
  2348.         Case 5
  2349.             $ISOUND = 64
  2350.         Case Else
  2351.             $ISOUND = -1
  2352.     EndSwitch
  2353.     Local $ARESULT = DllCall("user32.dll", "bool", "MessageBeep", "uint", $ISOUND)
  2354.     If @error Then Return SetError(@error, @extended, False)
  2355.     Return $ARESULT[0]
  2356. EndFunc
  2357. Func _WINAPI_MSGBOX($IFLAGS, $STITLE, $STEXT)
  2358.     BlockInput(0)
  2359.     MsgBox($IFLAGS, $STITLE, $STEXT & "      ")
  2360. EndFunc
  2361. Func _WINAPI_MOUSE_EVENT($IFLAGS, $IX = 0, $IY = 0, $IDATA = 0, $IEXTRAINFO = 0)
  2362.     DllCall("user32.dll", "none", "mouse_event", "dword", $IFLAGS, "dword", $IX, "dword", $IY, "dword", $IDATA, "ulong_ptr", $IEXTRAINFO)
  2363.     If @error Then Return SetError(@error, @extended)
  2364. EndFunc
  2365. Func _WINAPI_MOVETO($HDC, $IX, $IY)
  2366.     Local $ARESULT = DllCall("gdi32.dll", "bool", "MoveToEx", "handle", $HDC, "int", $IX, "int", $IY, "ptr", 0)
  2367.     If @error Then Return SetError(@error, @extended, False)
  2368.     Return $ARESULT[0]
  2369. EndFunc
  2370. Func _WINAPI_MOVEWINDOW($HWND, $IX, $IY, $IWIDTH, $IHEIGHT, $FREPAINT = True)
  2371.     Local $ARESULT = DllCall("user32.dll", "bool", "MoveWindow", "hwnd", $HWND, "int", $IX, "int", $IY, "int", $IWIDTH, "int", $IHEIGHT, "bool", $FREPAINT)
  2372.     If @error Then Return SetError(@error, @extended, False)
  2373.     Return $ARESULT[0]
  2374. EndFunc
  2375. Func _WINAPI_MULDIV($INUMBER, $INUMERATOR, $IDENOMINATOR)
  2376.     Local $ARESULT = DllCall("kernel32.dll", "int", "MulDiv", "int", $INUMBER, "int", $INUMERATOR, "int", $IDENOMINATOR)
  2377.     If @error Then Return SetError(@error, @extended, -1)
  2378.     Return $ARESULT[0]
  2379. EndFunc
  2380. Func _WINAPI_MULTIBYTETOWIDECHAR($STEXT, $ICODEPAGE = 0, $IFLAGS = 0, $BRETSTRING = False)
  2381.     Local $STEXTTYPE = "ptr", $PTEXT = $STEXT
  2382.     If IsDllStruct($STEXT) Then
  2383.         $PTEXT = DllStructGetPtr($STEXT)
  2384.     Else
  2385.         If Not IsPtr($STEXT) Then $STEXTTYPE = "STR"
  2386.     EndIf
  2387.     Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $PTEXT, "int", -1, "ptr", 0, "int", 0)
  2388.     If @error Then Return SetError(@error, @extended, 0)
  2389.     Local $IOUT = $ARESULT[0]
  2390.     Local $TOUT = DllStructCreate("wchar[" & $IOUT & "]")
  2391.     Local $POUT = DllStructGetPtr($TOUT)
  2392.     $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $PTEXT, "int", -1, "ptr", $POUT, "int", $IOUT)
  2393.     If @error Then Return SetError(@error, @extended, 0)
  2394.     If $BRETSTRING Then Return DllStructGetData($TOUT, 1)
  2395.     Return $TOUT
  2396. EndFunc
  2397. Func _WINAPI_MULTIBYTETOWIDECHAREX($STEXT, $PTEXT, $ICODEPAGE = 0, $IFLAGS = 0)
  2398.     Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, "STR", $STEXT, "int", -1, "ptr", $PTEXT, "int", (StringLen($STEXT) + 1) * 2)
  2399.     If @error Then Return SetError(@error, @extended, False)
  2400.     Return $ARESULT[0]
  2401. EndFunc
  2402. Func _WINAPI_OPENPROCESS($IACCESS, $FINHERIT, $IPROCESSID, $FDEBUGPRIV = False)
  2403.     Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  2404.     If @error Then Return SetError(@error, @extended, 0)
  2405.     If $ARESULT[0] Then Return $ARESULT[0]
  2406.     If Not $FDEBUGPRIV Then Return 0
  2407.     Local $HTOKEN = _SECURITY__OPENTHREADTOKENEX(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
  2408.     If @error Then Return SetError(@error, @extended, 0)
  2409.     _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", True)
  2410.     Local $IERROR = @error
  2411.     Local $ILASTERROR = @extended
  2412.     Local $IRET = 0
  2413.     If Not @error Then
  2414.         $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  2415.         $IERROR = @error
  2416.         $ILASTERROR = @extended
  2417.         If $ARESULT[0] Then $IRET = $ARESULT[0]
  2418.         _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", False)
  2419.         If @error Then
  2420.             $IERROR = @error
  2421.             $ILASTERROR = @extended
  2422.         EndIf
  2423.     EndIf
  2424.     _WINAPI_CLOSEHANDLE($HTOKEN)
  2425.     Return SetError($IERROR, $ILASTERROR, $IRET)
  2426. EndFunc
  2427. Func __WINAPI_PARSEFILEDIALOGPATH($SPATH)
  2428.     Local $AFILES[3]
  2429.     $AFILES[0] = 2
  2430.     Local $STEMP = StringMid($SPATH, 1, StringInStr($SPATH, "\", 0, -1) - 1)
  2431.     $AFILES[1] = $STEMP
  2432.     $AFILES[2] = StringMid($SPATH, StringInStr($SPATH, "\", 0, -1) + 1)
  2433.     Return $AFILES
  2434. EndFunc
  2435. Func _WINAPI_PATHFINDONPATH(Const $SZFILE, $AEXTRAPATHS = "", Const $SZPATHDELIMITER = @LF)
  2436.     Local $IEXTRACOUNT = 0
  2437.     If IsString($AEXTRAPATHS) Then
  2438.         If StringLen($AEXTRAPATHS) Then
  2439.             $AEXTRAPATHS = StringSplit($AEXTRAPATHS, $SZPATHDELIMITER, 1 + 2)
  2440.             $IEXTRACOUNT = UBound($AEXTRAPATHS, 1)
  2441.         EndIf
  2442.     ElseIf IsArray($AEXTRAPATHS) Then
  2443.         $IEXTRACOUNT = UBound($AEXTRAPATHS)
  2444.     EndIf
  2445.     Local $TPATHS, $TPATHPTRS
  2446.     If $IEXTRACOUNT Then
  2447.         Local $SZSTRUCT = ""
  2448.         For $PATH In $AEXTRAPATHS
  2449.             $SZSTRUCT &= "wchar[" & StringLen($PATH) + 1 & "];"
  2450.         Next
  2451.         $TPATHS = DllStructCreate($SZSTRUCT)
  2452.         $TPATHPTRS = DllStructCreate("ptr[" & $IEXTRACOUNT + 1 & "]")
  2453.         For $I = 1 To $IEXTRACOUNT
  2454.             DllStructSetData($TPATHS, $I, $AEXTRAPATHS[$I - 1])
  2455.             DllStructSetData($TPATHPTRS, 1, DllStructGetPtr($TPATHS, $I), $I)
  2456.         Next
  2457.         DllStructSetData($TPATHPTRS, 1, Ptr(0), $IEXTRACOUNT + 1)
  2458.     EndIf
  2459.     Local $ARESULT = DllCall("shlwapi.dll", "bool", "PathFindOnPathW", "wstr", $SZFILE, "ptr", DllStructGetPtr($TPATHPTRS))
  2460.     If @error Then Return SetError(@error, @extended, False)
  2461.     If $ARESULT[0] = 0 Then Return SetError(1, 0, $SZFILE)
  2462.     Return $ARESULT[1]
  2463. EndFunc
  2464. Func _WINAPI_POINTFROMRECT(ByRef $TRECT, $FCENTER = True)
  2465.     Local $IX1 = DllStructGetData($TRECT, "Left")
  2466.     Local $IY1 = DllStructGetData($TRECT, "Top")
  2467.     Local $IX2 = DllStructGetData($TRECT, "Right")
  2468.     Local $IY2 = DllStructGetData($TRECT, "Bottom")
  2469.     If $FCENTER Then
  2470.         $IX1 = $IX1 + (($IX2 - $IX1) / 2)
  2471.         $IY1 = $IY1 + (($IY2 - $IY1) / 2)
  2472.     EndIf
  2473.     Local $TPOINT = DllStructCreate($TAGPOINT)
  2474.     DllStructSetData($TPOINT, "X", $IX1)
  2475.     DllStructSetData($TPOINT, "Y", $IY1)
  2476.     Return $TPOINT
  2477. EndFunc
  2478. Func _WINAPI_POSTMESSAGE($HWND, $IMSG, $IWPARAM, $ILPARAM)
  2479.     Local $ARESULT = DllCall("user32.dll", "bool", "PostMessage", "hwnd", $HWND, "uint", $IMSG, "wparam", $IWPARAM, "lparam", $ILPARAM)
  2480.     If @error Then Return SetError(@error, @extended, False)
  2481.     Return $ARESULT[0]
  2482. EndFunc
  2483. Func _WINAPI_PRIMARYLANGID($LGID)
  2484.     Return BitAND($LGID, 1023)
  2485. EndFunc
  2486. Func _WINAPI_PTINRECT(ByRef $TRECT, ByRef $TPOINT)
  2487.     Local $IX = DllStructGetData($TPOINT, "X")
  2488.     Local $IY = DllStructGetData($TPOINT, "Y")
  2489.     Local $ARESULT = DllCall("user32.dll", "bool", "PtInRect", "ptr", DllStructGetPtr($TRECT), "long", $IX, "long", $IY)
  2490.     If @error Then Return SetError(@error, @extended, False)
  2491.     Return $ARESULT[0]
  2492. EndFunc
  2493. Func _WINAPI_READFILE($HFILE, $PBUFFER, $ITOREAD, ByRef $IREAD, $POVERLAPPED = 0)
  2494.     Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadFile", "handle", $HFILE, "ptr", $PBUFFER, "dword", $ITOREAD, "dword*", 0, "ptr", $POVERLAPPED)
  2495.     If @error Then Return SetError(@error, @extended, False)
  2496.     $IREAD = $ARESULT[4]
  2497.     Return $ARESULT[0]
  2498. EndFunc
  2499. Func _WINAPI_READPROCESSMEMORY($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IREAD)
  2500.     Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, "ptr", $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  2501.     If @error Then Return SetError(@error, @extended, False)
  2502.     $IREAD = $ARESULT[5]
  2503.     Return $ARESULT[0]
  2504. EndFunc
  2505. Func _WINAPI_RECTISEMPTY(ByRef $TRECT)
  2506.     RETURN (DllStructGetData($TRECT, "Left") = 0) AND (DllStructGetData($TRECT, "Top") = 0) AND (DllStructGetData($TRECT, "Right") = 0) AND (DllStructGetData($TRECT, "Bottom") = 0)
  2507. EndFunc
  2508. Func _WINAPI_REDRAWWINDOW($HWND, $TRECT = 0, $HREGION = 0, $IFLAGS = 5)
  2509.     Local $PRECT = 0
  2510.     If $TRECT <> 0 Then $PRECT = DllStructGetPtr($TRECT)
  2511.     Local $ARESULT = DllCall("user32.dll", "bool", "RedrawWindow", "hwnd", $HWND, "ptr", $PRECT, "handle", $HREGION, "uint", $IFLAGS)
  2512.     If @error Then Return SetError(@error, @extended, False)
  2513.     Return $ARESULT[0]
  2514. EndFunc
  2515. Func _WINAPI_REGISTERWINDOWMESSAGE($SMESSAGE)
  2516.     Local $ARESULT = DllCall("user32.dll", "uint", "RegisterWindowMessageW", "wstr", $SMESSAGE)
  2517.     If @error Then Return SetError(@error, @extended, 0)
  2518.     Return $ARESULT[0]
  2519. EndFunc
  2520. Func _WINAPI_RELEASECAPTURE()
  2521.     Local $ARESULT = DllCall("user32.dll", "bool", "ReleaseCapture")
  2522.     If @error Then Return SetError(@error, @extended, False)
  2523.     Return $ARESULT[0]
  2524. EndFunc
  2525. Func _WINAPI_RELEASEDC($HWND, $HDC)
  2526.     Local $ARESULT = DllCall("user32.dll", "int", "ReleaseDC", "hwnd", $HWND, "handle", $HDC)
  2527.     If @error Then Return SetError(@error, @extended, False)
  2528.     Return $ARESULT[0]
  2529. EndFunc
  2530. Func _WINAPI_SCREENTOCLIENT($HWND, ByRef $TPOINT)
  2531.     Local $ARESULT = DllCall("user32.dll", "bool", "ScreenToClient", "hwnd", $HWND, "ptr", DllStructGetPtr($TPOINT))
  2532.     If @error Then Return SetError(@error, @extended, False)
  2533.     Return $ARESULT[0]
  2534. EndFunc
  2535. Func _WINAPI_SELECTOBJECT($HDC, $HGDIOBJ)
  2536.     Local $ARESULT = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HDC, "handle", $HGDIOBJ)
  2537.     If @error Then Return SetError(@error, @extended, False)
  2538.     Return $ARESULT[0]
  2539. EndFunc
  2540. Func _WINAPI_SETBKCOLOR($HDC, $ICOLOR)
  2541.     Local $ARESULT = DllCall("gdi32.dll", "INT", "SetBkColor", "handle", $HDC, "dword", $ICOLOR)
  2542.     If @error Then Return SetError(@error, @extended, -1)
  2543.     Return $ARESULT[0]
  2544. EndFunc
  2545. Func _WINAPI_SETBKMODE($HDC, $IBKMODE)
  2546.     Local $ARESULT = DllCall("gdi32.dll", "int", "SetBkMode", "handle", $HDC, "int", $IBKMODE)
  2547.     If @error Then Return SetError(@error, @extended, 0)
  2548.     Return $ARESULT[0]
  2549. EndFunc
  2550. Func _WINAPI_SETCAPTURE($HWND)
  2551.     Local $ARESULT = DllCall("user32.dll", "hwnd", "SetCapture", "hwnd", $HWND)
  2552.     If @error Then Return SetError(@error, @extended, 0)
  2553.     Return $ARESULT[0]
  2554. EndFunc
  2555. Func _WINAPI_SETCURSOR($HCURSOR)
  2556.     Local $ARESULT = DllCall("user32.dll", "handle", "SetCursor", "handle", $HCURSOR)
  2557.     If @error Then Return SetError(@error, @extended, 0)
  2558.     Return $ARESULT[0]
  2559. EndFunc
  2560. Func _WINAPI_SETDEFAULTPRINTER($SPRINTER)
  2561.     Local $ARESULT = DllCall("winspool.drv", "bool", "SetDefaultPrinterW", "wstr", $SPRINTER)
  2562.     If @error Then Return SetError(@error, @extended, False)
  2563.     Return $ARESULT[0]
  2564. EndFunc
  2565. Func _WINAPI_SETDIBITS($HDC, $HBMP, $ISTARTSCAN, $ISCANLINES, $PBITS, $PBMI, $ICOLORUSE = 0)
  2566.     Local $ARESULT = DllCall("gdi32.dll", "int", "SetDIBits", "handle", $HDC, "handle", $HBMP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "ptr", $PBITS, "ptr", $PBMI, "uint", $ICOLORUSE)
  2567.     If @error Then Return SetError(@error, @extended, False)
  2568.     Return $ARESULT[0]
  2569. EndFunc
  2570. Func _WINAPI_SETENDOFFILE($HFILE)
  2571.     Local $ARESULT = DllCall("kernel32.dll", "bool", "SetEndOfFile", "handle", $HFILE)
  2572.     If @error Then Return SetError(@error, @extended, False)
  2573.     Return $ARESULT[0]
  2574. EndFunc
  2575. Func _WINAPI_SETEVENT($HEVENT)
  2576.     Local $ARESULT = DllCall("kernel32.dll", "bool", "SetEvent", "handle", $HEVENT)
  2577.     If @error Then Return SetError(@error, @extended, False)
  2578.     Return $ARESULT[0]
  2579. EndFunc
  2580. Func _WINAPI_SETFILEPOINTER($HFILE, $IPOS, $IMETHOD = 0)
  2581.     Local $ARESULT = DllCall("kernel32.dll", "INT", "SetFilePointer", "handle", $HFILE, "long", $IPOS, "ptr", 0, "long", $IMETHOD)
  2582.     If @error Then Return SetError(@error, @extended, -1)
  2583.     Return $ARESULT[0]
  2584. EndFunc
  2585. Func _WINAPI_SETFOCUS($HWND)
  2586.     Local $ARESULT = DllCall("user32.dll", "hwnd", "SetFocus", "hwnd", $HWND)
  2587.     If @error Then Return SetError(@error, @extended, 0)
  2588.     Return $ARESULT[0]
  2589. EndFunc
  2590. Func _WINAPI_SETFONT($HWND, $HFONT, $FREDRAW = True)
  2591.     _SENDMESSAGE($HWND, $__WINAPICONSTANT_WM_SETFONT, $HFONT, $FREDRAW, 0, "hwnd")
  2592. EndFunc
  2593. Func _WINAPI_SETHANDLEINFORMATION($HOBJECT, $IMASK, $IFLAGS)
  2594.     Local $ARESULT = DllCall("kernel32.dll", "bool", "SetHandleInformation", "handle", $HOBJECT, "dword", $IMASK, "dword", $IFLAGS)
  2595.     If @error Then Return SetError(@error, @extended, False)
  2596.     Return $ARESULT[0]
  2597. EndFunc
  2598. Func _WINAPI_SETLAYEREDWINDOWATTRIBUTES($HWND, $I_TRANSCOLOR, $TRANSPARENCY = 255, $DWFLAGS = 3, $ISCOLORREF = False)
  2599.     If $DWFLAGS = Default Or $DWFLAGS = "" Or $DWFLAGS < 0 Then $DWFLAGS = 3
  2600.     If Not $ISCOLORREF Then
  2601.         $I_TRANSCOLOR = Hex(String($I_TRANSCOLOR), 6)
  2602.         $I_TRANSCOLOR = Execute("0x00" & StringMid($I_TRANSCOLOR, 5, 2) & StringMid($I_TRANSCOLOR, 3, 2) & StringMid($I_TRANSCOLOR, 1, 2))
  2603.     EndIf
  2604.     Local $ARESULT = DllCall("user32.dll", "bool", "SetLayeredWindowAttributes", "hwnd", $HWND, "dword", $I_TRANSCOLOR, "byte", $TRANSPARENCY, "dword", $DWFLAGS)
  2605.     If @error Then Return SetError(@error, @extended, False)
  2606.     Return $ARESULT[0]
  2607. EndFunc
  2608. Func _WINAPI_SETPARENT($HWNDCHILD, $HWNDPARENT)
  2609.     Local $ARESULT = DllCall("user32.dll", "hwnd", "SetParent", "hwnd", $HWNDCHILD, "hwnd", $HWNDPARENT)
  2610.     If @error Then Return SetError(@error, @extended, 0)
  2611.     Return $ARESULT[0]
  2612. EndFunc
  2613. Func _WINAPI_SETPROCESSAFFINITYMASK($HPROCESS, $IMASK)
  2614.     Local $ARESULT = DllCall("kernel32.dll", "bool", "SetProcessAffinityMask", "handle", $HPROCESS, "ulong_ptr", $IMASK)
  2615.     If @error Then Return SetError(@error, @extended, False)
  2616.     Return $ARESULT[0]
  2617. EndFunc
  2618. Func _WINAPI_SETSYSCOLORS($VELEMENTS, $VCOLORS)
  2619.     Local $ISEARRAY = IsArray($VELEMENTS), $ISCARRAY = IsArray($VCOLORS)
  2620.     Local $IELEMENTNUM
  2621.     If Not $ISCARRAY And Not $ISEARRAY Then
  2622.         $IELEMENTNUM = 1
  2623.     ElseIf $ISCARRAY Or $ISEARRAY Then
  2624.         If Not $ISCARRAY Or Not $ISEARRAY Then Return SetError(-1, -1, False)
  2625.         If UBound($VELEMENTS) <> UBound($VCOLORS) Then Return SetError(-1, -1, False)
  2626.         $IELEMENTNUM = UBound($VELEMENTS)
  2627.     EndIf
  2628.     Local $TELEMENTS = DllStructCreate("int Element[" & $IELEMENTNUM & "]")
  2629.     Local $TCOLORS = DllStructCreate("dword NewColor[" & $IELEMENTNUM & "]")
  2630.     Local $PELEMENTS = DllStructGetPtr($TELEMENTS)
  2631.     Local $PCOLORS = DllStructGetPtr($TCOLORS)
  2632.     If Not $ISEARRAY Then
  2633.         DllStructSetData($TELEMENTS, "Element", $VELEMENTS, 1)
  2634.     Else
  2635.         For $X = 0 To $IELEMENTNUM - 1
  2636.             DllStructSetData($TELEMENTS, "Element", $VELEMENTS[$X], $X + 1)
  2637.         Next
  2638.     EndIf
  2639.     If Not $ISCARRAY Then
  2640.         DllStructSetData($TCOLORS, "NewColor", $VCOLORS, 1)
  2641.     Else
  2642.         For $X = 0 To $IELEMENTNUM - 1
  2643.             DllStructSetData($TCOLORS, "NewColor", $VCOLORS[$X], $X + 1)
  2644.         Next
  2645.     EndIf
  2646.     Local $ARESULT = DllCall("user32.dll", "bool", "SetSysColors", "int", $IELEMENTNUM, "ptr", $PELEMENTS, "ptr", $PCOLORS)
  2647.     If @error Then Return SetError(@error, @extended, False)
  2648.     Return $ARESULT[0]
  2649. EndFunc
  2650. Func _WINAPI_SETTEXTCOLOR($HDC, $ICOLOR)
  2651.     Local $ARESULT = DllCall("gdi32.dll", "INT", "SetTextColor", "handle", $HDC, "dword", $ICOLOR)
  2652.     If @error Then Return SetError(@error, @extended, -1)
  2653.     Return $ARESULT[0]
  2654. EndFunc
  2655. Func _WINAPI_SETWINDOWLONG($HWND, $IINDEX, $IVALUE)
  2656.     _WINAPI_SETLASTERROR(0)
  2657.     Local $SFUNCNAME = "SetWindowLongW"
  2658.     If @AutoItX64 Then $SFUNCNAME = "SetWindowLongPtrW"
  2659.     Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX, "long_ptr", $IVALUE)
  2660.     If @error Then Return SetError(@error, @extended, 0)
  2661.     Return $ARESULT[0]
  2662. EndFunc
  2663. Func _WINAPI_SETWINDOWPLACEMENT($HWND, $PWINDOWPLACEMENT)
  2664.     Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowPlacement", "hwnd", $HWND, "ptr", $PWINDOWPLACEMENT)
  2665.     If @error Then Return SetError(@error, @extended, False)
  2666.     Return $ARESULT[0]
  2667. EndFunc
  2668. Func _WINAPI_SETWINDOWPOS($HWND, $HAFTER, $IX, $IY, $ICX, $ICY, $IFLAGS)
  2669.     Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowPos", "hwnd", $HWND, "hwnd", $HAFTER, "int", $IX, "int", $IY, "int", $ICX, "int", $ICY, "uint", $IFLAGS)
  2670.     If @error Then Return SetError(@error, @extended, False)
  2671.     Return $ARESULT[0]
  2672. EndFunc
  2673. Func _WINAPI_SETWINDOWRGN($HWND, $HRGN, $BREDRAW = True)
  2674.     Local $ARESULT = DllCall("user32.dll", "int", "SetWindowRgn", "hwnd", $HWND, "handle", $HRGN, "bool", $BREDRAW)
  2675.     If @error Then Return SetError(@error, @extended, False)
  2676.     Return $ARESULT[0]
  2677. EndFunc
  2678. Func _WINAPI_SETWINDOWSHOOKEX($IDHOOK, $LPFN, $HMOD, $DWTHREADID = 0)
  2679.     Local $ARESULT = DllCall("user32.dll", "handle", "SetWindowsHookEx", "int", $IDHOOK, "ptr", $LPFN, "handle", $HMOD, "dword", $DWTHREADID)
  2680.     If @error Then Return SetError(@error, @extended, 0)
  2681.     Return $ARESULT[0]
  2682. EndFunc
  2683. Func _WINAPI_SETWINDOWTEXT($HWND, $STEXT)
  2684.     Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowTextW", "hwnd", $HWND, "wstr", $STEXT)
  2685.     If @error Then Return SetError(@error, @extended, False)
  2686.     Return $ARESULT[0]
  2687. EndFunc
  2688. Func _WINAPI_SHOWCURSOR($FSHOW)
  2689.     Local $ARESULT = DllCall("user32.dll", "int", "ShowCursor", "bool", $FSHOW)
  2690.     If @error Then Return SetError(@error, @extended, 0)
  2691.     Return $ARESULT[0]
  2692. EndFunc
  2693. Func _WINAPI_SHOWERROR($STEXT, $FEXIT = True)
  2694.     _WINAPI_MSGBOX(266256, "Error", $STEXT)
  2695.     If $FEXIT Then Exit
  2696. EndFunc
  2697. Func _WINAPI_SHOWMSG($STEXT)
  2698.     _WINAPI_MSGBOX(64 + 4096, "Information", $STEXT)
  2699. EndFunc
  2700. Func _WINAPI_SHOWWINDOW($HWND, $ICMDSHOW = 5)
  2701.     Local $ARESULT = DllCall("user32.dll", "bool", "ShowWindow", "hwnd", $HWND, "int", $ICMDSHOW)
  2702.     If @error Then Return SetError(@error, @extended, False)
  2703.     Return $ARESULT[0]
  2704. EndFunc
  2705. Func _WINAPI_STRINGFROMGUID($PGUID)
  2706.     Local $ARESULT = DllCall("ole32.dll", "int", "StringFromGUID2", "ptr", $PGUID, "wstr", "", "int", 40)
  2707.     If @error Then Return SetError(@error, @extended, "")
  2708.     Return SetExtended($ARESULT[0], $ARESULT[2])
  2709. EndFunc
  2710. Func _WINAPI_SUBLANGID($LGID)
  2711.     Return BitShift($LGID, 10)
  2712. EndFunc
  2713. Func _WINAPI_SYSTEMPARAMETERSINFO($IACTION, $IPARAM = 0, $VPARAM = 0, $IWININI = 0)
  2714.     Local $ARESULT = DllCall("user32.dll", "bool", "SystemParametersInfoW", "uint", $IACTION, "uint", $IPARAM, "ptr", $VPARAM, "uint", $IWININI)
  2715.     If @error Then Return SetError(@error, @extended, False)
  2716.     Return $ARESULT[0]
  2717. EndFunc
  2718. Func _WINAPI_TWIPSPERPIXELX()
  2719.     Local $LNGDC, $TWIPSPERPIXELX
  2720.     $LNGDC = _WINAPI_GETDC(0)
  2721.     $TWIPSPERPIXELX = 1440 / _WINAPI_GETDEVICECAPS($LNGDC, $__WINAPICONSTANT_LOGPIXELSX)
  2722.     _WINAPI_RELEASEDC(0, $LNGDC)
  2723.     Return $TWIPSPERPIXELX
  2724. EndFunc
  2725. Func _WINAPI_TWIPSPERPIXELY()
  2726.     Local $LNGDC, $TWIPSPERPIXELY
  2727.     $LNGDC = _WINAPI_GETDC(0)
  2728.     $TWIPSPERPIXELY = 1440 / _WINAPI_GETDEVICECAPS($LNGDC, $__WINAPICONSTANT_LOGPIXELSY)
  2729.     _WINAPI_RELEASEDC(0, $LNGDC)
  2730.     Return $TWIPSPERPIXELY
  2731. EndFunc
  2732. Func _WINAPI_UNHOOKWINDOWSHOOKEX($HHK)
  2733.     Local $ARESULT = DllCall("user32.dll", "bool", "UnhookWindowsHookEx", "handle", $HHK)
  2734.     If @error Then Return SetError(@error, @extended, False)
  2735.     Return $ARESULT[0]
  2736. EndFunc
  2737. Func _WINAPI_UPDATELAYEREDWINDOW($HWND, $HDCDEST, $PPTDEST, $PSIZE, $HDCSRCE, $PPTSRCE, $IRGB, $PBLEND, $IFLAGS)
  2738.     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)
  2739.     If @error Then Return SetError(@error, @extended, False)
  2740.     Return $ARESULT[0]
  2741. EndFunc
  2742. Func _WINAPI_UPDATEWINDOW($HWND)
  2743.     Local $ARESULT = DllCall("user32.dll", "bool", "UpdateWindow", "hwnd", $HWND)
  2744.     If @error Then Return SetError(@error, @extended, False)
  2745.     Return $ARESULT[0]
  2746. EndFunc
  2747. Func _WINAPI_WAITFORINPUTIDLE($HPROCESS, $ITIMEOUT = -1)
  2748.     Local $ARESULT = DllCall("user32.dll", "dword", "WaitForInputIdle", "handle", $HPROCESS, "dword", $ITIMEOUT)
  2749.     If @error Then Return SetError(@error, @extended, False)
  2750.     Return $ARESULT[0]
  2751. EndFunc
  2752. Func _WINAPI_WAITFORMULTIPLEOBJECTS($ICOUNT, $PHANDLES, $FWAITALL = False, $ITIMEOUT = -1)
  2753.     Local $ARESULT = DllCall("kernel32.dll", "INT", "WaitForMultipleObjects", "dword", $ICOUNT, "ptr", $PHANDLES, "bool", $FWAITALL, "dword", $ITIMEOUT)
  2754.     If @error Then Return SetError(@error, @extended, -1)
  2755.     Return $ARESULT[0]
  2756. EndFunc
  2757. Func _WINAPI_WAITFORSINGLEOBJECT($HHANDLE, $ITIMEOUT = -1)
  2758.     Local $ARESULT = DllCall("kernel32.dll", "INT", "WaitForSingleObject", "handle", $HHANDLE, "dword", $ITIMEOUT)
  2759.     If @error Then Return SetError(@error, @extended, -1)
  2760.     Return $ARESULT[0]
  2761. EndFunc
  2762. Func _WINAPI_WIDECHARTOMULTIBYTE($PUNICODE, $ICODEPAGE = 0, $BRETSTRING = True)
  2763.     Local $SUNICODETYPE = "ptr"
  2764.     If IsDllStruct($PUNICODE) Then
  2765.         $PUNICODE = DllStructGetPtr($PUNICODE)
  2766.     Else
  2767.         If Not IsPtr($PUNICODE) Then $SUNICODETYPE = "wstr"
  2768.     EndIf
  2769.     Local $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "ptr", 0, "int", 0, "ptr", 0, "ptr", 0)
  2770.     If @error Then Return SetError(@error, @extended, "")
  2771.     Local $TMULTIBYTE = DllStructCreate("char[" & $ARESULT[0] & "]")
  2772.     Local $PMULTIBYTE = DllStructGetPtr($TMULTIBYTE)
  2773.     $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "ptr", $PMULTIBYTE, "int", $ARESULT[0], "ptr", 0, "ptr", 0)
  2774.     If @error Then Return SetError(@error, @extended, "")
  2775.     If $BRETSTRING Then Return DllStructGetData($TMULTIBYTE, 1)
  2776.     Return $TMULTIBYTE
  2777. EndFunc
  2778. Func _WINAPI_WINDOWFROMPOINT(ByRef $TPOINT)
  2779.     Local $TPOINTCAST = DllStructCreate("int64", DllStructGetPtr($TPOINT))
  2780.     Local $ARESULT = DllCall("user32.dll", "hwnd", "WindowFromPoint", "int64", DllStructGetData($TPOINTCAST, 1))
  2781.     If @error Then Return SetError(@error, @extended, 0)
  2782.     Return $ARESULT[0]
  2783. EndFunc
  2784. Func _WINAPI_WRITECONSOLE($HCONSOLE, $STEXT)
  2785.     Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteConsoleW", "handle", $HCONSOLE, "wstr", $STEXT, "dword", StringLen($STEXT), "dword*", 0, "ptr", 0)
  2786.     If @error Then Return SetError(@error, @extended, False)
  2787.     Return $ARESULT[0]
  2788. EndFunc
  2789. Func _WINAPI_WRITEFILE($HFILE, $PBUFFER, $ITOWRITE, ByRef $IWRITTEN, $POVERLAPPED = 0)
  2790.     Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteFile", "handle", $HFILE, "ptr", $PBUFFER, "dword", $ITOWRITE, "dword*", 0, "ptr", $POVERLAPPED)
  2791.     If @error Then Return SetError(@error, @extended, False)
  2792.     $IWRITTEN = $ARESULT[4]
  2793.     Return $ARESULT[0]
  2794. EndFunc
  2795. Func _WINAPI_WRITEPROCESSMEMORY($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IWRITTEN, $SBUFFER = "ptr")
  2796.     Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, $SBUFFER, $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  2797.     If @error Then Return SetError(@error, @extended, False)
  2798.     $IWRITTEN = $ARESULT[5]
  2799.     Return $ARESULT[0]
  2800. EndFunc
  2801. Global Const $_UDF_GLOBALIDS_OFFSET = 2
  2802. Global Const $_UDF_GLOBALID_MAX_WIN = 16
  2803. Global Const $_UDF_STARTID = 10000
  2804. Global Const $_UDF_GLOBALID_MAX_IDS = 55535
  2805. Global Const $__UDFGUICONSTANT_WS_VISIBLE = 268435456
  2806. Global Const $__UDFGUICONSTANT_WS_CHILD = 1073741824
  2807. Global $_UDF_GLOBALIDS_USED[$_UDF_GLOBALID_MAX_WIN][$_UDF_GLOBALID_MAX_IDS + $_UDF_GLOBALIDS_OFFSET + 1]
  2808. Func __UDF_GETNEXTGLOBALID($HWND)
  2809.     Local $NCTRLID, $IUSEDINDEX = -1, $FALLUSED = True
  2810.     If Not WinExists($HWND) Then Return SetError(-1, -1, 0)
  2811.     For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  2812.         If $_UDF_GLOBALIDS_USED[$IINDEX][0] <> 0 Then
  2813.             If Not WinExists($_UDF_GLOBALIDS_USED[$IINDEX][0]) Then
  2814.                 For $X = 0 To UBound($_UDF_GLOBALIDS_USED, 2) - 1
  2815.                     $_UDF_GLOBALIDS_USED[$IINDEX][$X] = 0
  2816.                 Next
  2817.                 $_UDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID
  2818.                 $FALLUSED = False
  2819.             EndIf
  2820.         EndIf
  2821.     Next
  2822.     For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  2823.         If $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then
  2824.             $IUSEDINDEX = $IINDEX
  2825.             ExitLoop
  2826.         EndIf
  2827.     Next
  2828.     If $IUSEDINDEX = -1 Then
  2829.         For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  2830.             If $_UDF_GLOBALIDS_USED[$IINDEX][0] = 0 Then
  2831.                 $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND
  2832.                 $_UDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID
  2833.                 $FALLUSED = False
  2834.                 $IUSEDINDEX = $IINDEX
  2835.                 ExitLoop
  2836.             EndIf
  2837.         Next
  2838.     EndIf
  2839.     If $IUSEDINDEX = -1 And $FALLUSED Then Return SetError(16, 0, 0)
  2840.     If $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1] = $_UDF_STARTID + $_UDF_GLOBALID_MAX_IDS Then
  2841.         For $IIDINDEX = $_UDF_GLOBALIDS_OFFSET To UBound($_UDF_GLOBALIDS_USED, 2) - 1
  2842.             If $_UDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = 0 Then
  2843.                 $NCTRLID = ($IIDINDEX - $_UDF_GLOBALIDS_OFFSET) + 10000
  2844.                 $_UDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = $NCTRLID
  2845.                 Return $NCTRLID
  2846.             EndIf
  2847.         Next
  2848.         Return SetError(-1, $_UDF_GLOBALID_MAX_IDS, 0)
  2849.     EndIf
  2850.     $NCTRLID = $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1]
  2851.     $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1] += 1
  2852.     $_UDF_GLOBALIDS_USED[$IUSEDINDEX][($NCTRLID - 10000) + $_UDF_GLOBALIDS_OFFSET] = $NCTRLID
  2853.     Return $NCTRLID
  2854. EndFunc
  2855. Func __UDF_FREEGLOBALID($HWND, $IGLOBALID)
  2856.     If $IGLOBALID - $_UDF_STARTID < 0 Or $IGLOBALID - $_UDF_STARTID > $_UDF_GLOBALID_MAX_IDS Then Return SetError(-1, 0, False)
  2857.     For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  2858.         If $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then
  2859.             For $X = $_UDF_GLOBALIDS_OFFSET To UBound($_UDF_GLOBALIDS_USED, 2) - 1
  2860.                 If $_UDF_GLOBALIDS_USED[$IINDEX][$X] = $IGLOBALID Then
  2861.                     $_UDF_GLOBALIDS_USED[$IINDEX][$X] = 0
  2862.                     Return True
  2863.                 EndIf
  2864.             Next
  2865.             Return SetError(-3, 0, False)
  2866.         EndIf
  2867.     Next
  2868.     Return SetError(-2, 0, False)
  2869. EndFunc
  2870. Func __UDF_DEBUGPRINT($STEXT, $ILINE = @ScriptLineNumber, $ERR = @error, $EXT = @extended)
  2871.     ConsoleWrite("!===========================================================" & @CRLF & "+======================================================" & @CRLF & "-->Line(" & StringFormat("%04d", $ILINE) & "):" & @TAB & $STEXT & @CRLF & "+======================================================" & @CRLF)
  2872.     Return SetError($ERR, $EXT, 1)
  2873. EndFunc
  2874. Func __UDF_VALIDATECLASSNAME($HWND, $SCLASSNAMES)
  2875.     __UDF_DEBUGPRINT("This is for debugging only, set the debug variable to false before submitting")
  2876.     If _WINAPI_ISCLASSNAME($HWND, $SCLASSNAMES) Then Return True
  2877.     Local $SSEPARATOR = Opt("GUIDataSeparatorChar")
  2878.     $SCLASSNAMES = StringReplace($SCLASSNAMES, $SSEPARATOR, ",")
  2879.     __UDF_DEBUGPRINT("Invalid Class Type(s):" & @LF & @TAB & "Expecting Type(s): " & $SCLASSNAMES & @LF & @TAB & "Received Type : " & _WINAPI_GETCLASSNAME($HWND))
  2880.     Exit
  2881. EndFunc
  2882. Global $_LB_GHLASTWND
  2883. Global $DEBUG_LB = False
  2884. Global Const $__LISTBOXCONSTANT_CLASSNAME = "ListBox"
  2885. Global Const $__LISTBOXCONSTANT_CLASSNAMES = $__LISTBOXCONSTANT_CLASSNAME & "|TListbox"
  2886. Global Const $__LISTBOXCONSTANT_WS_TABSTOP = 65536
  2887. Global Const $__LISTBOXCONSTANT_DEFAULT_GUI_FONT = 17
  2888. Global Const $__LISTBOXCONSTANT_WM_SETREDRAW = 11
  2889. Global Const $__LISTBOXCONSTANT_WM_GETFONT = 49
  2890. Func _GUICTRLLISTBOX_ADDFILE($HWND, $SFILE)
  2891.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  2892.     If IsHWnd($HWND) Then
  2893.         Return _SENDMESSAGE($HWND, $LB_ADDFILE, 0, $SFILE, 0, "wparam", "wstr")
  2894.     Else
  2895.         Return GUICtrlSendMsg($HWND, $LB_ADDFILE, 0, $SFILE)
  2896.     EndIf
  2897. EndFunc
  2898. Func _GUICTRLLISTBOX_ADDSTRING($HWND, $STEXT)
  2899.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  2900.     If IsHWnd($HWND) Then
  2901.         Return _SENDMESSAGE($HWND, $LB_ADDSTRING, 0, $STEXT, 0, "wparam", "wstr")
  2902.     Else
  2903.         Return GUICtrlSendMsg($HWND, $LB_ADDSTRING, 0, $STEXT)
  2904.     EndIf
  2905. EndFunc
  2906. Func _GUICTRLLISTBOX_BEGINUPDATE($HWND)
  2907.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  2908.     If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  2909.     Return _SENDMESSAGE($HWND, $__LISTBOXCONSTANT_WM_SETREDRAW) = 0
  2910. EndFunc
  2911. Func _GUICTRLLISTBOX_CLICKITEM($HWND, $IINDEX, $SBUTTON = "left", $FMOVE = False, $ICLICKS = 1, $ISPEED = 0)
  2912.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  2913.     If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  2914.     Local $TRECT = _GUICTRLLISTBOX_GETITEMRECTEX($HWND, $IINDEX)
  2915.     Local $TPOINT = _WINAPI_POINTFROMRECT($TRECT)
  2916.     $TPOINT = _WINAPI_CLIENTTOSCREEN($HWND, $TPOINT)
  2917.     Local $IX, $IY
  2918.     _WINAPI_GETXYFROMPOINT($TPOINT, $IX, $IY)
  2919.     Local $IMODE = Opt("MouseCoordMode", 1)
  2920.     If Not $FMOVE Then
  2921.         Local $APOS = MouseGetPos()
  2922.         _WINAPI_SHOWCURSOR(False)
  2923.         MouseClick($SBUTTON, $IX, $IY, $ICLICKS, $ISPEED)
  2924.         MouseMove($APOS[0], $APOS[1], 0)
  2925.         _WINAPI_SHOWCURSOR(True)
  2926.     Else
  2927.         MouseClick($SBUTTON, $IX, $IY, $ICLICKS, $ISPEED)
  2928.     EndIf
  2929.     Opt("MouseCoordMode", $IMODE)
  2930. EndFunc
  2931. Func _GUICTRLLISTBOX_CREATE($HWND, $STEXT, $IX, $IY, $IWIDTH = 100, $IHEIGHT = 200, $ISTYLE = 11534338, $IEXSTYLE = 512)
  2932.     If Not IsHWnd($HWND) Then
  2933.         Return SetError(1, 0, 0)
  2934.     EndIf
  2935.     If Not IsString($STEXT) Then
  2936.         Return SetError(2, 0, 0)
  2937.     EndIf
  2938.     If $IWIDTH = -1 Then $IWIDTH = 100
  2939.     If $IHEIGHT = -1 Then $IHEIGHT = 200
  2940.     Local Const $WS_VSCROLL = 2097152, $WS_HSCROLL = 1048576, $WS_BORDER = 8388608
  2941.     If $ISTYLE = -1 Then $ISTYLE = BitOR($WS_BORDER, $WS_VSCROLL, $WS_HSCROLL, $LBS_SORT)
  2942.     If $IEXSTYLE = -1 Then $IEXSTYLE = 512
  2943.     $ISTYLE = BitOR($ISTYLE, $__UDFGUICONSTANT_WS_VISIBLE, $__LISTBOXCONSTANT_WS_TABSTOP, $__UDFGUICONSTANT_WS_CHILD, $LBS_NOTIFY)
  2944.     Local $NCTRLID = __UDF_GETNEXTGLOBALID($HWND)
  2945.     If @error Then Return SetError(@error, @extended, 0)
  2946.     Local $HLIST = _WINAPI_CREATEWINDOWEX($IEXSTYLE, $__LISTBOXCONSTANT_CLASSNAME, "", $ISTYLE, $IX, $IY, $IWIDTH, $IHEIGHT, $HWND, $NCTRLID)
  2947.     _WINAPI_SETFONT($HLIST, _WINAPI_GETSTOCKOBJECT($__LISTBOXCONSTANT_DEFAULT_GUI_FONT))
  2948.     If StringLen($STEXT) Then _GUICTRLLISTBOX_ADDSTRING($HLIST, $STEXT)
  2949.     Return $HLIST
  2950. EndFunc
  2951. Func _GUICTRLLISTBOX_DELETESTRING($HWND, $IINDEX)
  2952.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  2953.     If IsHWnd($HWND) Then
  2954.         Return _SENDMESSAGE($HWND, $LB_DELETESTRING, $IINDEX)
  2955.     Else
  2956.         Return GUICtrlSendMsg($HWND, $LB_DELETESTRING, $IINDEX, 0)
  2957.     EndIf
  2958. EndFunc
  2959. Func _GUICTRLLISTBOX_DESTROY(ByRef $HWND)
  2960.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  2961.     Local $DESTROYED = 0
  2962.     If IsHWnd($HWND) Then
  2963.         If _WINAPI_INPROCESS($HWND, $_LB_GHLASTWND) Then
  2964.             Local $NCTRLID = _WINAPI_GETDLGCTRLID($HWND)
  2965.             Local $HPARENT = _WINAPI_GETPARENT($HWND)
  2966.             $DESTROYED = _WINAPI_DESTROYWINDOW($HWND)
  2967.             Local $IRET = __UDF_FREEGLOBALID($HPARENT, $NCTRLID)
  2968.             If Not $IRET Then
  2969.             EndIf
  2970.         Else
  2971.             Return SetError(1, 1, False)
  2972.         EndIf
  2973.     Else
  2974.         $DESTROYED = GUICtrlDelete($HWND)
  2975.     EndIf
  2976.     If $DESTROYED Then $HWND = 0
  2977.     Return $DESTROYED <> 0
  2978. EndFunc
  2979. Func _GUICTRLLISTBOX_DIR($HWND, $SFILE, $IATTRIBUTES = 0, $FBRACKETS = True)
  2980.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  2981.     If BitAND($IATTRIBUTES, $DDL_DRIVES) = $DDL_DRIVES And Not $FBRACKETS Then
  2982.         Local $STEXT
  2983.         Local $GUI_NO_BRACKETS = GUICreate("no brackets")
  2984.         Local $LIST_NO_BRACKETS = GUICtrlCreateList("", 240, 40, 120, 120)
  2985.         Local $V_RET = GUICtrlSendMsg($LIST_NO_BRACKETS, $LB_DIR, $IATTRIBUTES, $SFILE)
  2986.         For $I = 0 To _GUICTRLLISTBOX_GETCOUNT($LIST_NO_BRACKETS) - 1
  2987.             $STEXT = _GUICTRLLISTBOX_GETTEXT($LIST_NO_BRACKETS, $I)
  2988.             $STEXT = StringReplace(StringReplace(StringReplace($STEXT, "[", ""), "]", ":"), "-", "")
  2989.             _GUICTRLLISTBOX_INSERTSTRING($HWND, $STEXT)
  2990.         Next
  2991.         GUIDelete($GUI_NO_BRACKETS)
  2992.         Return $V_RET
  2993.     Else
  2994.         If IsHWnd($HWND) Then
  2995.             Return _SENDMESSAGE($HWND, $LB_DIR, $IATTRIBUTES, $SFILE, 0, "wparam", "wstr")
  2996.         Else
  2997.             Return GUICtrlSendMsg($HWND, $LB_DIR, $IATTRIBUTES, $SFILE)
  2998.         EndIf
  2999.     EndIf
  3000. EndFunc
  3001. Func _GUICTRLLISTBOX_ENDUPDATE($HWND)
  3002.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3003.     If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3004.     Return _SENDMESSAGE($HWND, $__LISTBOXCONSTANT_WM_SETREDRAW, 1, 0) = 0
  3005. EndFunc
  3006. Func _GUICTRLLISTBOX_FINDSTRING($HWND, $STEXT, $FEXACT = False)
  3007.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3008.     If IsHWnd($HWND) Then
  3009.         IF ($FEXACT) Then
  3010.             Return _SENDMESSAGE($HWND, $LB_FINDSTRINGEXACT, -1, $STEXT, 0, "wparam", "wstr")
  3011.         Else
  3012.             Return _SENDMESSAGE($HWND, $LB_FINDSTRING, -1, $STEXT, 0, "wparam", "wstr")
  3013.         EndIf
  3014.     Else
  3015.         IF ($FEXACT) Then
  3016.             Return GUICtrlSendMsg($HWND, $LB_FINDSTRINGEXACT, -1, $STEXT)
  3017.         Else
  3018.             Return GUICtrlSendMsg($HWND, $LB_FINDSTRING, -1, $STEXT)
  3019.         EndIf
  3020.     EndIf
  3021. EndFunc
  3022. Func _GUICTRLLISTBOX_FINDINTEXT($HWND, $STEXT, $ISTART = -1, $FWRAPOK = True)
  3023.     Local $SLIST
  3024.     Local $ICOUNT = _GUICTRLLISTBOX_GETCOUNT($HWND)
  3025.     For $II = $ISTART + 1 To $ICOUNT - 1
  3026.         $SLIST = _GUICTRLLISTBOX_GETTEXT($HWND, $II)
  3027.         If StringInStr($SLIST, $STEXT) Then Return $II
  3028.     Next
  3029.     IF ($ISTART = -1) Or Not $FWRAPOK Then Return -1
  3030.     For $II = 0 To $ISTART - 1
  3031.         $SLIST = _GUICTRLLISTBOX_GETTEXT($HWND, $II)
  3032.         If StringInStr($SLIST, $STEXT) Then Return $II
  3033.     Next
  3034.     Return -1
  3035. EndFunc
  3036. Func _GUICTRLLISTBOX_GETANCHORINDEX($HWND)
  3037.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3038.     If IsHWnd($HWND) Then
  3039.         Return _SENDMESSAGE($HWND, $LB_GETANCHORINDEX)
  3040.     Else
  3041.         Return GUICtrlSendMsg($HWND, $LB_GETANCHORINDEX, 0, 0)
  3042.     EndIf
  3043. EndFunc
  3044. Func _GUICTRLLISTBOX_GETCARETINDEX($HWND)
  3045.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3046.     If IsHWnd($HWND) Then
  3047.         Return _SENDMESSAGE($HWND, $LB_GETCARETINDEX)
  3048.     Else
  3049.         Return GUICtrlSendMsg($HWND, $LB_GETCARETINDEX, 0, 0)
  3050.     EndIf
  3051. EndFunc
  3052. Func _GUICTRLLISTBOX_GETCOUNT($HWND)
  3053.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3054.     If IsHWnd($HWND) Then
  3055.         Return _SENDMESSAGE($HWND, $LB_GETCOUNT)
  3056.     Else
  3057.         Return GUICtrlSendMsg($HWND, $LB_GETCOUNT, 0, 0)
  3058.     EndIf
  3059. EndFunc
  3060. Func _GUICTRLLISTBOX_GETCURSEL($HWND)
  3061.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3062.     If IsHWnd($HWND) Then
  3063.         Return _SENDMESSAGE($HWND, $LB_GETCURSEL)
  3064.     Else
  3065.         Return GUICtrlSendMsg($HWND, $LB_GETCURSEL, 0, 0)
  3066.     EndIf
  3067. EndFunc
  3068. Func _GUICTRLLISTBOX_GETHORIZONTALEXTENT($HWND)
  3069.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3070.     If IsHWnd($HWND) Then
  3071.         Return _SENDMESSAGE($HWND, $LB_GETHORIZONTALEXTENT)
  3072.     Else
  3073.         Return GUICtrlSendMsg($HWND, $LB_GETHORIZONTALEXTENT, 0, 0)
  3074.     EndIf
  3075. EndFunc
  3076. Func _GUICTRLLISTBOX_GETITEMDATA($HWND, $IINDEX)
  3077.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3078.     If IsHWnd($HWND) Then
  3079.         Return _SENDMESSAGE($HWND, $LB_GETITEMDATA, $IINDEX)
  3080.     Else
  3081.         Return GUICtrlSendMsg($HWND, $LB_GETITEMDATA, $IINDEX, 0)
  3082.     EndIf
  3083. EndFunc
  3084. Func _GUICTRLLISTBOX_GETITEMHEIGHT($HWND)
  3085.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3086.     If IsHWnd($HWND) Then
  3087.         Return _SENDMESSAGE($HWND, $LB_GETITEMHEIGHT)
  3088.     Else
  3089.         Return GUICtrlSendMsg($HWND, $LB_GETITEMHEIGHT, 0, 0)
  3090.     EndIf
  3091. EndFunc
  3092. Func _GUICTRLLISTBOX_GETITEMRECT($HWND, $IINDEX)
  3093.     Local $ARECT[4]
  3094.     Local $TRECT = _GUICTRLLISTBOX_GETITEMRECTEX($HWND, $IINDEX)
  3095.     $ARECT[0] = DllStructGetData($TRECT, "Left")
  3096.     $ARECT[1] = DllStructGetData($TRECT, "Top")
  3097.     $ARECT[2] = DllStructGetData($TRECT, "Right")
  3098.     $ARECT[3] = DllStructGetData($TRECT, "Bottom")
  3099.     Return $ARECT
  3100. EndFunc
  3101. Func _GUICTRLLISTBOX_GETITEMRECTEX($HWND, $IINDEX)
  3102.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3103.     Local $TRECT = DllStructCreate($TAGRECT)
  3104.     If IsHWnd($HWND) Then
  3105.         _SENDMESSAGE($HWND, $LB_GETITEMRECT, $IINDEX, DllStructGetPtr($TRECT), 0, "wparam", "ptr")
  3106.     Else
  3107.         GUICtrlSendMsg($HWND, $LB_GETITEMRECT, $IINDEX, DllStructGetPtr($TRECT))
  3108.     EndIf
  3109.     Return $TRECT
  3110. EndFunc
  3111. Func _GUICTRLLISTBOX_GETLISTBOXINFO($HWND)
  3112.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3113.     If IsHWnd($HWND) Then
  3114.         Return _SENDMESSAGE($HWND, $LB_GETLISTBOXINFO)
  3115.     Else
  3116.         Return GUICtrlSendMsg($HWND, $LB_GETLISTBOXINFO, 0, 0)
  3117.     EndIf
  3118. EndFunc
  3119. Func _GUICTRLLISTBOX_GETLOCALE($HWND)
  3120.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3121.     If IsHWnd($HWND) Then
  3122.         Return _SENDMESSAGE($HWND, $LB_GETLOCALE)
  3123.     Else
  3124.         Return GUICtrlSendMsg($HWND, $LB_GETLOCALE, 0, 0)
  3125.     EndIf
  3126. EndFunc
  3127. Func _GUICTRLLISTBOX_GETLOCALECOUNTRY($HWND)
  3128.     Return _WINAPI_HIWORD(_GUICTRLLISTBOX_GETLOCALE($HWND))
  3129. EndFunc
  3130. Func _GUICTRLLISTBOX_GETLOCALELANG($HWND)
  3131.     Return _WINAPI_LOWORD(_GUICTRLLISTBOX_GETLOCALE($HWND))
  3132. EndFunc
  3133. Func _GUICTRLLISTBOX_GETLOCALEPRIMLANG($HWND)
  3134.     Return _WINAPI_PRIMARYLANGID(_GUICTRLLISTBOX_GETLOCALELANG($HWND))
  3135. EndFunc
  3136. Func _GUICTRLLISTBOX_GETLOCALESUBLANG($HWND)
  3137.     Return _WINAPI_SUBLANGID(_GUICTRLLISTBOX_GETLOCALELANG($HWND))
  3138. EndFunc
  3139. Func _GUICTRLLISTBOX_GETSEL($HWND, $IINDEX)
  3140.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3141.     If IsHWnd($HWND) Then
  3142.         Return _SENDMESSAGE($HWND, $LB_GETSEL, $IINDEX) <> 0
  3143.     Else
  3144.         Return GUICtrlSendMsg($HWND, $LB_GETSEL, $IINDEX, 0) <> 0
  3145.     EndIf
  3146. EndFunc
  3147. Func _GUICTRLLISTBOX_GETSELCOUNT($HWND)
  3148.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3149.     If IsHWnd($HWND) Then
  3150.         Return _SENDMESSAGE($HWND, $LB_GETSELCOUNT)
  3151.     Else
  3152.         Return GUICtrlSendMsg($HWND, $LB_GETSELCOUNT, 0, 0)
  3153.     EndIf
  3154. EndFunc
  3155. Func _GUICTRLLISTBOX_GETSELITEMS($HWND)
  3156.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3157.     Local $AARRAY[1] = [0]
  3158.     Local $ICOUNT = _GUICTRLLISTBOX_GETSELCOUNT($HWND)
  3159.     If $ICOUNT > 0 Then
  3160.         ReDim $AARRAY[$ICOUNT + 1]
  3161.         Local $TARRAY = DllStructCreate("int[" & $ICOUNT & "]")
  3162.         If IsHWnd($HWND) Then
  3163.             _SENDMESSAGE($HWND, $LB_GETSELITEMS, $ICOUNT, DllStructGetPtr($TARRAY), 0, "wparam", "ptr")
  3164.         Else
  3165.             GUICtrlSendMsg($HWND, $LB_GETSELITEMS, $ICOUNT, DllStructGetPtr($TARRAY))
  3166.         EndIf
  3167.         $AARRAY[0] = $ICOUNT
  3168.         For $II = 1 To $ICOUNT
  3169.             $AARRAY[$II] = DllStructGetData($TARRAY, 1, $II)
  3170.         Next
  3171.     EndIf
  3172.     Return $AARRAY
  3173. EndFunc
  3174. Func _GUICTRLLISTBOX_GETSELITEMSTEXT($HWND)
  3175.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3176.     Local $ATEXT[1] = [0], $ICOUNT = _GUICTRLLISTBOX_GETSELCOUNT($HWND)
  3177.     If $ICOUNT > 0 Then
  3178.         Local $AINDICES = _GUICTRLLISTBOX_GETSELITEMS($HWND)
  3179.         ReDim $ATEXT[UBound($AINDICES)]
  3180.         $ATEXT[0] = $AINDICES[0]
  3181.         For $I = 1 To $AINDICES[0]
  3182.             $ATEXT[$I] = _GUICTRLLISTBOX_GETTEXT($HWND, $AINDICES[$I])
  3183.         Next
  3184.     EndIf
  3185.     Return $ATEXT
  3186. EndFunc
  3187. Func _GUICTRLLISTBOX_GETTEXT($HWND, $IINDEX)
  3188.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3189.     Local $TTEXT = DllStructCreate("wchar Text[" & _GUICTRLLISTBOX_GETTEXTLEN($HWND, $IINDEX) + 1 & "]")
  3190.     If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3191.     _SENDMESSAGE($HWND, $LB_GETTEXT, $IINDEX, DllStructGetPtr($TTEXT), 0, "wparam", "ptr")
  3192.     Return DllStructGetData($TTEXT, "Text")
  3193. EndFunc
  3194. Func _GUICTRLLISTBOX_GETTEXTLEN($HWND, $IINDEX)
  3195.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3196.     If IsHWnd($HWND) Then
  3197.         Return _SENDMESSAGE($HWND, $LB_GETTEXTLEN, $IINDEX)
  3198.     Else
  3199.         Return GUICtrlSendMsg($HWND, $LB_GETTEXTLEN, $IINDEX, 0)
  3200.     EndIf
  3201. EndFunc
  3202. Func _GUICTRLLISTBOX_GETTOPINDEX($HWND)
  3203.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3204.     If IsHWnd($HWND) Then
  3205.         Return _SENDMESSAGE($HWND, $LB_GETTOPINDEX)
  3206.     Else
  3207.         Return GUICtrlSendMsg($HWND, $LB_GETTOPINDEX, 0, 0)
  3208.     EndIf
  3209. EndFunc
  3210. Func _GUICTRLLISTBOX_INITSTORAGE($HWND, $IITEMS, $IBYTES)
  3211.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3212.     If IsHWnd($HWND) Then
  3213.         Return _SENDMESSAGE($HWND, $LB_INITSTORAGE, $IITEMS, $IBYTES)
  3214.     Else
  3215.         Return GUICtrlSendMsg($HWND, $LB_INITSTORAGE, $IITEMS, $IBYTES)
  3216.     EndIf
  3217. EndFunc
  3218. Func _GUICTRLLISTBOX_INSERTSTRING($HWND, $STEXT, $IINDEX = -1)
  3219.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3220.     If IsHWnd($HWND) Then
  3221.         Return _SENDMESSAGE($HWND, $LB_INSERTSTRING, $IINDEX, $STEXT, 0, "wparam", "wstr")
  3222.     Else
  3223.         Return GUICtrlSendMsg($HWND, $LB_INSERTSTRING, $IINDEX, $STEXT)
  3224.     EndIf
  3225. EndFunc
  3226. Func _GUICTRLLISTBOX_ITEMFROMPOINT($HWND, $IX, $IY)
  3227.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3228.     Local $IRET
  3229.     If IsHWnd($HWND) Then
  3230.         $IRET = _SENDMESSAGE($HWND, $LB_ITEMFROMPOINT, 0, _WINAPI_MAKELONG($IX, $IY))
  3231.     Else
  3232.         $IRET = GUICtrlSendMsg($HWND, $LB_ITEMFROMPOINT, 0, _WINAPI_MAKELONG($IX, $IY))
  3233.     EndIf
  3234.     If _WINAPI_HIWORD($IRET) <> 0 Then $IRET = -1
  3235.     Return $IRET
  3236. EndFunc
  3237. Func _GUICTRLLISTBOX_REPLACESTRING($HWND, $IINDEX, $STEXT)
  3238.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3239.     IF (_GUICTRLLISTBOX_DELETESTRING($HWND, $IINDEX) == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
  3240.     IF (_GUICTRLLISTBOX_INSERTSTRING($HWND, $STEXT, $IINDEX) == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
  3241.     Return True
  3242. EndFunc
  3243. Func _GUICTRLLISTBOX_RESETCONTENT($HWND)
  3244.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3245.     If IsHWnd($HWND) Then
  3246.         _SENDMESSAGE($HWND, $LB_RESETCONTENT)
  3247.     Else
  3248.         GUICtrlSendMsg($HWND, $LB_RESETCONTENT, 0, 0)
  3249.     EndIf
  3250. EndFunc
  3251. Func _GUICTRLLISTBOX_SELECTSTRING($HWND, $STEXT, $IINDEX = -1)
  3252.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3253.     If IsHWnd($HWND) Then
  3254.         Return _SENDMESSAGE($HWND, $LB_SELECTSTRING, $IINDEX, $STEXT, 0, "wparam", "wstr")
  3255.     Else
  3256.         Return GUICtrlSendMsg($HWND, $LB_SELECTSTRING, $IINDEX, $STEXT)
  3257.     EndIf
  3258. EndFunc
  3259. Func _GUICTRLLISTBOX_SELITEMRANGE($HWND, $IFIRST, $ILAST, $FSELECT = True)
  3260.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3261.     If IsHWnd($HWND) Then
  3262.         Return _SENDMESSAGE($HWND, $LB_SELITEMRANGE, $FSELECT, _WINAPI_MAKELONG($IFIRST, $ILAST)) = 0
  3263.     Else
  3264.         Return GUICtrlSendMsg($HWND, $LB_SELITEMRANGE, $FSELECT, _WINAPI_MAKELONG($IFIRST, $ILAST)) = 0
  3265.     EndIf
  3266. EndFunc
  3267. Func _GUICTRLLISTBOX_SELITEMRANGEEX($HWND, $IFIRST, $ILAST)
  3268.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3269.     If IsHWnd($HWND) Then
  3270.         Return _SENDMESSAGE($HWND, $LB_SELITEMRANGEEX, $IFIRST, $ILAST) = 0
  3271.     Else
  3272.         Return GUICtrlSendMsg($HWND, $LB_SELITEMRANGEEX, $IFIRST, $ILAST) = 0
  3273.     EndIf
  3274. EndFunc
  3275. Func _GUICTRLLISTBOX_SETANCHORINDEX($HWND, $IINDEX)
  3276.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3277.     If IsHWnd($HWND) Then
  3278.         Return _SENDMESSAGE($HWND, $LB_SETANCHORINDEX, $IINDEX) = 0
  3279.     Else
  3280.         Return GUICtrlSendMsg($HWND, $LB_SETANCHORINDEX, $IINDEX, 0) = 0
  3281.     EndIf
  3282. EndFunc
  3283. Func _GUICTRLLISTBOX_SETCARETINDEX($HWND, $IINDEX, $FPARTIAL = False)
  3284.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3285.     If IsHWnd($HWND) Then
  3286.         Return _SENDMESSAGE($HWND, $LB_SETCARETINDEX, $IINDEX, $FPARTIAL) = 0
  3287.     Else
  3288.         Return GUICtrlSendMsg($HWND, $LB_SETCARETINDEX, $IINDEX, $FPARTIAL) = 0
  3289.     EndIf
  3290. EndFunc
  3291. Func _GUICTRLLISTBOX_SETCOLUMNWIDTH($HWND, $IWIDTH)
  3292.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3293.     If IsHWnd($HWND) Then
  3294.         _SENDMESSAGE($HWND, $LB_SETCOLUMNWIDTH, $IWIDTH)
  3295.     Else
  3296.         GUICtrlSendMsg($HWND, $LB_SETCOLUMNWIDTH, $IWIDTH, 0)
  3297.     EndIf
  3298. EndFunc
  3299. Func _GUICTRLLISTBOX_SETCURSEL($HWND, $IINDEX)
  3300.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3301.     If IsHWnd($HWND) Then
  3302.         Return _SENDMESSAGE($HWND, $LB_SETCURSEL, $IINDEX)
  3303.     Else
  3304.         Return GUICtrlSendMsg($HWND, $LB_SETCURSEL, $IINDEX, 0)
  3305.     EndIf
  3306. EndFunc
  3307. Func _GUICTRLLISTBOX_SETHORIZONTALEXTENT($HWND, $IWIDTH)
  3308.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3309.     If IsHWnd($HWND) Then
  3310.         _SENDMESSAGE($HWND, $LB_SETHORIZONTALEXTENT, $IWIDTH)
  3311.     Else
  3312.         GUICtrlSendMsg($HWND, $LB_SETHORIZONTALEXTENT, $IWIDTH, 0)
  3313.     EndIf
  3314. EndFunc
  3315. Func _GUICTRLLISTBOX_SETITEMDATA($HWND, $IINDEX, $IVALUE)
  3316.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3317.     If IsHWnd($HWND) Then
  3318.         Return _SENDMESSAGE($HWND, $LB_SETITEMDATA, $IINDEX, $IVALUE) <> -1
  3319.     Else
  3320.         Return GUICtrlSendMsg($HWND, $LB_SETITEMDATA, $IINDEX, $IVALUE) <> -1
  3321.     EndIf
  3322. EndFunc
  3323. Func _GUICTRLLISTBOX_SETITEMHEIGHT($HWND, $IHEIGHT, $IINDEX = 0)
  3324.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3325.     Local $IRET
  3326.     If IsHWnd($HWND) Then
  3327.         $IRET = _SENDMESSAGE($HWND, $LB_SETITEMHEIGHT, $IINDEX, $IHEIGHT)
  3328.         _WINAPI_INVALIDATERECT($HWND)
  3329.     Else
  3330.         $IRET = GUICtrlSendMsg($HWND, $LB_SETITEMHEIGHT, $IINDEX, $IHEIGHT)
  3331.         _WINAPI_INVALIDATERECT(GUICtrlGetHandle($HWND))
  3332.     EndIf
  3333.     Return $IRET <> -1
  3334. EndFunc
  3335. Func _GUICTRLLISTBOX_SETLOCALE($HWND, $ILOCAL)
  3336.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3337.     If IsHWnd($HWND) Then
  3338.         Return _SENDMESSAGE($HWND, $LB_SETLOCALE, $ILOCAL)
  3339.     Else
  3340.         Return GUICtrlSendMsg($HWND, $LB_SETLOCALE, $ILOCAL, 0)
  3341.     EndIf
  3342. EndFunc
  3343. Func _GUICTRLLISTBOX_SETSEL($HWND, $IINDEX = -1, $FSELECT = -1)
  3344.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3345.     Local $I_RET = True
  3346.     If IsHWnd($HWND) Then
  3347.         If $IINDEX == -1 Then
  3348.             For $IINDEX = 0 To _GUICTRLLISTBOX_GETCOUNT($HWND) - 1
  3349.                 $I_RET = _GUICTRLLISTBOX_GETSEL($HWND, $IINDEX)
  3350.                 IF ($I_RET == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
  3351.                 IF ($I_RET > 0) Then
  3352.                     $I_RET = _SENDMESSAGE($HWND, $LB_SETSEL, False, $IINDEX) <> -1
  3353.                 Else
  3354.                     $I_RET = _SENDMESSAGE($HWND, $LB_SETSEL, True, $IINDEX) <> -1
  3355.                 EndIf
  3356.                 IF ($I_RET == False) Then Return SetError($LB_ERR, $LB_ERR, False)
  3357.             Next
  3358.         ElseIf $FSELECT == -1 Then
  3359.             If _GUICTRLLISTBOX_GETSEL($HWND, $IINDEX) Then
  3360.                 Return _SENDMESSAGE($HWND, $LB_SETSEL, False, $IINDEX) <> -1
  3361.             Else
  3362.                 Return _SENDMESSAGE($HWND, $LB_SETSEL, True, $IINDEX) <> -1
  3363.             EndIf
  3364.         Else
  3365.             Return _SENDMESSAGE($HWND, $LB_SETSEL, $FSELECT, $IINDEX) <> -1
  3366.         EndIf
  3367.     Else
  3368.         If $IINDEX == -1 Then
  3369.             For $IINDEX = 0 To _GUICTRLLISTBOX_GETCOUNT($HWND) - 1
  3370.                 $I_RET = _GUICTRLLISTBOX_GETSEL($HWND, $IINDEX)
  3371.                 IF ($I_RET == $LB_ERR) Then Return SetError($LB_ERR, $LB_ERR, False)
  3372.                 IF ($I_RET > 0) Then
  3373.                     $I_RET = GUICtrlSendMsg($HWND, $LB_SETSEL, False, $IINDEX) <> -1
  3374.                 Else
  3375.                     $I_RET = GUICtrlSendMsg($HWND, $LB_SETSEL, True, $IINDEX) <> -1
  3376.                 EndIf
  3377.                 IF ($I_RET == False) Then Return SetError($LB_ERR, $LB_ERR, False)
  3378.             Next
  3379.         ElseIf $FSELECT == -1 Then
  3380.             If _GUICTRLLISTBOX_GETSEL($HWND, $IINDEX) Then
  3381.                 Return GUICtrlSendMsg($HWND, $LB_SETSEL, False, $IINDEX) <> -1
  3382.             Else
  3383.                 Return GUICtrlSendMsg($HWND, $LB_SETSEL, True, $IINDEX) <> -1
  3384.             EndIf
  3385.         Else
  3386.             Return GUICtrlSendMsg($HWND, $LB_SETSEL, $FSELECT, $IINDEX) <> -1
  3387.         EndIf
  3388.     EndIf
  3389.     Return $I_RET
  3390. EndFunc
  3391. Func _GUICTRLLISTBOX_SETTABSTOPS($HWND, $ATABSTOPS)
  3392.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3393.     Local $ICOUNT = $ATABSTOPS[0]
  3394.     Local $TTABSTOPS = DllStructCreate("int[" & $ICOUNT & "]")
  3395.     For $II = 1 To $ICOUNT
  3396.         DllStructSetData($TTABSTOPS, 1, $ATABSTOPS[$II], $II)
  3397.     Next
  3398.     If IsHWnd($HWND) Then
  3399.         Return _SENDMESSAGE($HWND, $LB_SETTABSTOPS, $ICOUNT, DllStructGetPtr($TTABSTOPS), 0, "wparam", "ptr") = 0
  3400.     Else
  3401.         Return GUICtrlSendMsg($HWND, $LB_SETTABSTOPS, $ICOUNT, DllStructGetPtr($TTABSTOPS)) = 0
  3402.     EndIf
  3403. EndFunc
  3404. Func _GUICTRLLISTBOX_SETTOPINDEX($HWND, $IINDEX)
  3405.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3406.     If IsHWnd($HWND) Then
  3407.         Return _SENDMESSAGE($HWND, $LB_SETTOPINDEX, $IINDEX) <> -1
  3408.     Else
  3409.         Return GUICtrlSendMsg($HWND, $LB_SETTOPINDEX, $IINDEX, 0) <> -1
  3410.     EndIf
  3411. EndFunc
  3412. Func _GUICTRLLISTBOX_SORT($HWND)
  3413.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3414.     Local $BAK = _GUICTRLLISTBOX_GETTEXT($HWND, 0)
  3415.     IF ($BAK == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  3416.     IF (_GUICTRLLISTBOX_DELETESTRING($HWND, 0) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  3417.     Return _GUICTRLLISTBOX_ADDSTRING($HWND, $BAK) <> -1
  3418. EndFunc
  3419. Func _GUICTRLLISTBOX_SWAPSTRING($HWND, $IINDEXA, $IINDEXB)
  3420.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3421.     Local $ITEMA = _GUICTRLLISTBOX_GETTEXT($HWND, $IINDEXA)
  3422.     Local $ITEMB = _GUICTRLLISTBOX_GETTEXT($HWND, $IINDEXB)
  3423.     IF (_GUICTRLLISTBOX_DELETESTRING($HWND, $IINDEXA) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  3424.     IF (_GUICTRLLISTBOX_INSERTSTRING($HWND, $ITEMB, $IINDEXA) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  3425.     IF (_GUICTRLLISTBOX_DELETESTRING($HWND, $IINDEXB) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  3426.     IF (_GUICTRLLISTBOX_INSERTSTRING($HWND, $ITEMA, $IINDEXB) == -1) Then Return SetError($LB_ERR, $LB_ERR, False)
  3427.     Return True
  3428. EndFunc
  3429. Func _GUICTRLLISTBOX_UPDATEHSCROLL($HWND)
  3430.     If $DEBUG_LB Then __UDF_VALIDATECLASSNAME($HWND, $__LISTBOXCONSTANT_CLASSNAMES)
  3431.     Local $HDC, $HFONT, $TSIZE, $STEXT
  3432.     Local $IMAX = 0
  3433.     If IsHWnd($HWND) Then
  3434.         $HFONT = _SENDMESSAGE($HWND, $__LISTBOXCONSTANT_WM_GETFONT)
  3435.         $HDC = _WINAPI_GETDC($HWND)
  3436.         _WINAPI_SELECTOBJECT($HDC, $HFONT)
  3437.         For $II = 0 To _GUICTRLLISTBOX_GETCOUNT($HWND) - 1
  3438.             $STEXT = _GUICTRLLISTBOX_GETTEXT($HWND, $II)
  3439.             $TSIZE = _WINAPI_GETTEXTEXTENTPOINT32($HDC, $STEXT & "W")
  3440.             If DllStructGetData($TSIZE, "X") > $IMAX Then
  3441.                 $IMAX = DllStructGetData($TSIZE, "X")
  3442.             EndIf
  3443.         Next
  3444.         _GUICTRLLISTBOX_SETHORIZONTALEXTENT($HWND, $IMAX)
  3445.         _WINAPI_SELECTOBJECT($HDC, $HFONT)
  3446.         _WINAPI_RELEASEDC($HWND, $HDC)
  3447.     Else
  3448.         $HFONT = GUICtrlSendMsg($HWND, $__LISTBOXCONSTANT_WM_GETFONT, 0, 0)
  3449.         Local $T_HWND = GUICtrlGetHandle($HWND)
  3450.         $HDC = _WINAPI_GETDC($T_HWND)
  3451.         _WINAPI_SELECTOBJECT($HDC, $HFONT)
  3452.         For $II = 0 To _GUICTRLLISTBOX_GETCOUNT($HWND) - 1
  3453.             $STEXT = _GUICTRLLISTBOX_GETTEXT($HWND, $II)
  3454.             $TSIZE = _WINAPI_GETTEXTEXTENTPOINT32($HDC, $STEXT & "W")
  3455.             If DllStructGetData($TSIZE, "X") > $IMAX Then
  3456.                 $IMAX = DllStructGetData($TSIZE, "X")
  3457.             EndIf
  3458.         Next
  3459.         _GUICTRLLISTBOX_SETHORIZONTALEXTENT($HWND, $IMAX)
  3460.         _WINAPI_SELECTOBJECT($HDC, $HFONT)
  3461.         _WINAPI_RELEASEDC($T_HWND, $HDC)
  3462.     EndIf
  3463. EndFunc
  3464. Global Const $WS_TILED = 0
  3465. Global Const $WS_OVERLAPPED = 0
  3466. Global Const $WS_MAXIMIZEBOX = 65536
  3467. Global Const $WS_MINIMIZEBOX = 131072
  3468. Global Const $WS_TABSTOP = 65536
  3469. Global Const $WS_GROUP = 131072
  3470. Global Const $WS_SIZEBOX = 262144
  3471. Global Const $WS_THICKFRAME = 262144
  3472. Global Const $WS_SYSMENU = 524288
  3473. Global Const $WS_HSCROLL = 1048576
  3474. Global Const $WS_VSCROLL = 2097152
  3475. Global Const $WS_DLGFRAME = 4194304
  3476. Global Const $WS_BORDER = 8388608
  3477. Global Const $WS_CAPTION = 12582912
  3478. Global Const $WS_OVERLAPPEDWINDOW = 13565952
  3479. Global Const $WS_TILEDWINDOW = 13565952
  3480. Global Const $WS_MAXIMIZE = 16777216
  3481. Global Const $WS_CLIPCHILDREN = 33554432
  3482. Global Const $WS_CLIPSIBLINGS = 67108864
  3483. Global Const $WS_DISABLED = 134217728
  3484. Global Const $WS_VISIBLE = 268435456
  3485. Global Const $WS_MINIMIZE = 536870912
  3486. Global Const $WS_CHILD = 1073741824
  3487. Global Const $WS_POPUP = -2147483648
  3488. Global Const $WS_POPUPWINDOW = -2138570752
  3489. Global Const $DS_MODALFRAME = 128
  3490. Global Const $DS_SETFOREGROUND = 512
  3491. Global Const $DS_CONTEXTHELP = 8192
  3492. Global Const $WS_EX_ACCEPTFILES = 16
  3493. Global Const $WS_EX_MDICHILD = 64
  3494. Global Const $WS_EX_APPWINDOW = 262144
  3495. Global Const $WS_EX_COMPOSITED = 33554432
  3496. Global Const $WS_EX_CLIENTEDGE = 512
  3497. Global Const $WS_EX_CONTEXTHELP = 1024
  3498. Global Const $WS_EX_DLGMODALFRAME = 1
  3499. Global Const $WS_EX_LEFTSCROLLBAR = 16384
  3500. Global Const $WS_EX_OVERLAPPEDWINDOW = 768
  3501. Global Const $WS_EX_RIGHT = 4096
  3502. Global Const $WS_EX_STATICEDGE = 131072
  3503. Global Const $WS_EX_TOOLWINDOW = 128
  3504. Global Const $WS_EX_TOPMOST = 8
  3505. Global Const $WS_EX_TRANSPARENT = 32
  3506. Global Const $WS_EX_WINDOWEDGE = 256
  3507. Global Const $WS_EX_LAYERED = 524288
  3508. Global Const $WS_EX_CONTROLPARENT = 65536
  3509. Global Const $WS_EX_LAYOUTRTL = 4194304
  3510. Global Const $WS_EX_RTLREADING = 8192
  3511. Global Const $WM_GETTEXTLENGTH = 14
  3512. Global Const $WM_GETTEXT = 13
  3513. Global Const $WM_SIZE = 5
  3514. Global Const $WM_SIZING = 532
  3515. Global Const $WM_USER = 1024
  3516. Global Const $WM_CREATE = 1
  3517. Global Const $WM_DESTROY = 2
  3518. Global Const $WM_MOVE = 3
  3519. Global Const $WM_ACTIVATE = 6
  3520. Global Const $WM_SETFOCUS = 7
  3521. Global Const $WM_KILLFOCUS = 8
  3522. Global Const $WM_ENABLE = 10
  3523. Global Const $WM_SETREDRAW = 11
  3524. Global Const $WM_SETTEXT = 12
  3525. Global Const $WM_PAINT = 15
  3526. Global Const $WM_CLOSE = 16
  3527. Global Const $WM_QUIT = 18
  3528. Global Const $WM_ERASEBKGND = 20
  3529. Global Const $WM_SYSCOLORCHANGE = 21
  3530. Global Const $WM_SHOWWINDOW = 24
  3531. Global Const $WM_WININICHANGE = 26
  3532. Global Const $WM_DEVMODECHANGE = 27
  3533. Global Const $WM_ACTIVATEAPP = 28
  3534. Global Const $WM_FONTCHANGE = 29
  3535. Global Const $WM_TIMECHANGE = 30
  3536. Global Const $WM_CANCELMODE = 31
  3537. Global Const $WM_SETCURSOR = 32
  3538. Global Const $WM_MOUSEACTIVATE = 33
  3539. Global Const $WM_CHILDACTIVATE = 34
  3540. Global Const $WM_QUEUESYNC = 35
  3541. Global Const $WM_GETMINMAXINFO = 36
  3542. Global Const $WM_PAINTICON = 38
  3543. Global Const $WM_ICONERASEBKGND = 39
  3544. Global Const $WM_NEXTDLGCTL = 40
  3545. Global Const $WM_SPOOLERSTATUS = 42
  3546. Global Const $WM_DRAWITEM = 43
  3547. Global Const $WM_MEASUREITEM = 44
  3548. Global Const $WM_DELETEITEM = 45
  3549. Global Const $WM_VKEYTOITEM = 46
  3550. Global Const $WM_CHARTOITEM = 47
  3551. Global Const $WM_SETFONT = 48
  3552. Global Const $WM_GETFONT = 49
  3553. Global Const $WM_SETHOTKEY = 50
  3554. Global Const $WM_GETHOTKEY = 51
  3555. Global Const $WM_QUERYDRAGICON = 55
  3556. Global Const $WM_COMPAREITEM = 57
  3557. Global Const $WM_GETOBJECT = 61
  3558. Global Const $WM_COMPACTING = 65
  3559. Global Const $WM_COMMNOTIFY = 68
  3560. Global Const $WM_WINDOWPOSCHANGING = 70
  3561. Global Const $WM_WINDOWPOSCHANGED = 71
  3562. Global Const $WM_POWER = 72
  3563. Global Const $WM_NOTIFY = 78
  3564. Global Const $WM_COPYDATA = 74
  3565. Global Const $WM_CANCELJOURNAL = 75
  3566. Global Const $WM_INPUTLANGCHANGEREQUEST = 80
  3567. Global Const $WM_INPUTLANGCHANGE = 81
  3568. Global Const $WM_TCARD = 82
  3569. Global Const $WM_HELP = 83
  3570. Global Const $WM_USERCHANGED = 84
  3571. Global Const $WM_NOTIFYFORMAT = 85
  3572. Global Const $WM_CUT = 768
  3573. Global Const $WM_COPY = 769
  3574. Global Const $WM_PASTE = 770
  3575. Global Const $WM_CLEAR = 771
  3576. Global Const $WM_UNDO = 772
  3577. Global Const $WM_CONTEXTMENU = 123
  3578. Global Const $WM_STYLECHANGING = 124
  3579. Global Const $WM_STYLECHANGED = 125
  3580. Global Const $WM_DISPLAYCHANGE = 126
  3581. Global Const $WM_GETICON = 127
  3582. Global Const $WM_SETICON = 128
  3583. Global Const $WM_NCCREATE = 129
  3584. Global Const $WM_NCDESTROY = 130
  3585. Global Const $WM_NCCALCSIZE = 131
  3586. Global Const $WM_NCHITTEST = 132
  3587. Global Const $WM_NCPAINT = 133
  3588. Global Const $WM_NCACTIVATE = 134
  3589. Global Const $WM_GETDLGCODE = 135
  3590. Global Const $WM_SYNCPAINT = 136
  3591. Global Const $WM_NCMOUSEMOVE = 160
  3592. Global Const $WM_NCLBUTTONDOWN = 161
  3593. Global Const $WM_NCLBUTTONUP = 162
  3594. Global Const $WM_NCLBUTTONDBLCLK = 163
  3595. Global Const $WM_NCRBUTTONDOWN = 164
  3596. Global Const $WM_NCRBUTTONUP = 165
  3597. Global Const $WM_NCRBUTTONDBLCLK = 166
  3598. Global Const $WM_NCMBUTTONDOWN = 167
  3599. Global Const $WM_NCMBUTTONUP = 168
  3600. Global Const $WM_NCMBUTTONDBLCLK = 169
  3601. Global Const $WM_KEYDOWN = 256
  3602. Global Const $WM_KEYUP = 257
  3603. Global Const $WM_CHAR = 258
  3604. Global Const $WM_DEADCHAR = 259
  3605. Global Const $WM_SYSKEYDOWN = 260
  3606. Global Const $WM_SYSKEYUP = 261
  3607. Global Const $WM_SYSCHAR = 262
  3608. Global Const $WM_SYSDEADCHAR = 263
  3609. Global Const $WM_INITDIALOG = 272
  3610. Global Const $WM_COMMAND = 273
  3611. Global Const $WM_SYSCOMMAND = 274
  3612. Global Const $WM_TIMER = 275
  3613. Global Const $WM_HSCROLL = 276
  3614. Global Const $WM_VSCROLL = 277
  3615. Global Const $WM_INITMENU = 278
  3616. Global Const $WM_INITMENUPOPUP = 279
  3617. Global Const $WM_MENUSELECT = 287
  3618. Global Const $WM_MENUCHAR = 288
  3619. Global Const $WM_ENTERIDLE = 289
  3620. Global Const $WM_MENURBUTTONUP = 290
  3621. Global Const $WM_MENUDRAG = 291
  3622. Global Const $WM_MENUGETOBJECT = 292
  3623. Global Const $WM_UNINITMENUPOPUP = 293
  3624. Global Const $WM_MENUCOMMAND = 294
  3625. Global Const $WM_CHANGEUISTATE = 295
  3626. Global Const $WM_UPDATEUISTATE = 296
  3627. Global Const $WM_QUERYUISTATE = 297
  3628. Global Const $WM_CTLCOLORMSGBOX = 306
  3629. Global Const $WM_CTLCOLOREDIT = 307
  3630. Global Const $WM_CTLCOLORLISTBOX = 308
  3631. Global Const $WM_CTLCOLORBTN = 309
  3632. Global Const $WM_CTLCOLORDLG = 310
  3633. Global Const $WM_CTLCOLORSCROLLBAR = 311
  3634. Global Const $WM_CTLCOLORSTATIC = 312
  3635. Global Const $WM_CTLCOLOR = 25
  3636. Global Const $MN_GETHMENU = 481
  3637. Global Const $NM_FIRST = 0
  3638. Global Const $NM_OUTOFMEMORY = $NM_FIRST - 1
  3639. Global Const $NM_CLICK = $NM_FIRST - 2
  3640. Global Const $NM_DBLCLK = $NM_FIRST - 3
  3641. Global Const $NM_RETURN = $NM_FIRST - 4
  3642. Global Const $NM_RCLICK = $NM_FIRST - 5
  3643. Global Const $NM_RDBLCLK = $NM_FIRST - 6
  3644. Global Const $NM_SETFOCUS = $NM_FIRST - 7
  3645. Global Const $NM_KILLFOCUS = $NM_FIRST - 8
  3646. Global Const $NM_CUSTOMDRAW = $NM_FIRST - 12
  3647. Global Const $NM_HOVER = $NM_FIRST - 13
  3648. Global Const $NM_NCHITTEST = $NM_FIRST - 14
  3649. Global Const $NM_KEYDOWN = $NM_FIRST - 15
  3650. Global Const $NM_RELEASEDCAPTURE = $NM_FIRST - 16
  3651. Global Const $NM_SETCURSOR = $NM_FIRST - 17
  3652. Global Const $NM_CHAR = $NM_FIRST - 18
  3653. Global Const $NM_TOOLTIPSCREATED = $NM_FIRST - 19
  3654. Global Const $NM_LDOWN = $NM_FIRST - 20
  3655. Global Const $NM_RDOWN = $NM_FIRST - 21
  3656. Global Const $NM_THEMECHANGED = $NM_FIRST - 22
  3657. Global Const $WM_MOUSEMOVE = 512
  3658. Global Const $WM_LBUTTONDOWN = 513
  3659. Global Const $WM_LBUTTONUP = 514
  3660. Global Const $WM_LBUTTONDBLCLK = 515
  3661. Global Const $WM_RBUTTONDOWN = 516
  3662. Global Const $WM_RBUTTONUP = 517
  3663. Global Const $WM_RBUTTONDBLCK = 518
  3664. Global Const $WM_MBUTTONDOWN = 519
  3665. Global Const $WM_MBUTTONUP = 520
  3666. Global Const $WM_MBUTTONDBLCK = 521
  3667. Global Const $WM_MOUSEWHEEL = 522
  3668. Global Const $WM_XBUTTONDOWN = 523
  3669. Global Const $WM_XBUTTONUP = 524
  3670. Global Const $WM_XBUTTONDBLCLK = 525
  3671. Global Const $WM_MOUSEHWHEEL = 526
  3672. Global Const $PS_SOLID = 0
  3673. Global Const $PS_DASH = 1
  3674. Global Const $PS_DOT = 2
  3675. Global Const $PS_DASHDOT = 3
  3676. Global Const $PS_DASHDOTDOT = 4
  3677. Global Const $PS_NULL = 5
  3678. Global Const $PS_INSIDEFRAME = 6
  3679. Global Const $LWA_ALPHA = 2
  3680. Global Const $LWA_COLORKEY = 1
  3681. Global Const $RGN_AND = 1
  3682. Global Const $RGN_OR = 2
  3683. Global Const $RGN_XOR = 3
  3684. Global Const $RGN_DIFF = 4
  3685. Global Const $RGN_COPY = 5
  3686. Global Const $ERRORREGION = 0
  3687. Global Const $NULLREGION = 1
  3688. Global Const $SIMPLEREGION = 2
  3689. Global Const $COMPLEXREGION = 3
  3690. Global Const $TRANSPARENT = 1
  3691. Global Const $OPAQUE = 2
  3692. Global Const $CCM_FIRST = 8192
  3693. Global Const $CCM_GETUNICODEFORMAT = ($CCM_FIRST + 6)
  3694. Global Const $CCM_SETUNICODEFORMAT = ($CCM_FIRST + 5)
  3695. Global Const $CCM_SETBKCOLOR = $CCM_FIRST + 1
  3696. Global Const $CCM_SETCOLORSCHEME = $CCM_FIRST + 2
  3697. Global Const $CCM_GETCOLORSCHEME = $CCM_FIRST + 3
  3698. Global Const $CCM_GETDROPTARGET = $CCM_FIRST + 4
  3699. Global Const $CCM_SETWINDOWTHEME = $CCM_FIRST + 11
  3700. Global Const $GA_PARENT = 1
  3701. Global Const $GA_ROOT = 2
  3702. Global Const $GA_ROOTOWNER = 3
  3703. Global Const $SM_CXSCREEN = 0
  3704. Global Const $SM_CYSCREEN = 1
  3705. Global Const $SM_CXVSCROLL = 2
  3706. Global Const $SM_CYHSCROLL = 3
  3707. Global Const $SM_CYCAPTION = 4
  3708. Global Const $SM_CXBORDER = 5
  3709. Global Const $SM_CYBORDER = 6
  3710. Global Const $SM_CXDLGFRAME = 7
  3711. Global Const $SM_CYDLGFRAME = 8
  3712. Global Const $SM_CYVTHUMB = 9
  3713. Global Const $SM_CXHTHUMB = 10
  3714. Global Const $SM_CXICON = 11
  3715. Global Const $SM_CYICON = 12
  3716. Global Const $SM_CXCURSOR = 13
  3717. Global Const $SM_CYCURSOR = 14
  3718. Global Const $SM_CYMENU = 15
  3719. Global Const $SM_CXFULLSCREEN = 16
  3720. Global Const $SM_CYFULLSCREEN = 17
  3721. Global Const $SM_CYKANJIWINDOW = 18
  3722. Global Const $SM_MOUSEPRESENT = 19
  3723. Global Const $SM_CYVSCROLL = 20
  3724. Global Const $SM_CXHSCROLL = 21
  3725. Global Const $SM_DEBUG = 22
  3726. Global Const $SM_SWAPBUTTON = 23
  3727. Global Const $SM_RESERVED1 = 24
  3728. Global Const $SM_RESERVED2 = 25
  3729. Global Const $SM_RESERVED3 = 26
  3730. Global Const $SM_RESERVED4 = 27
  3731. Global Const $SM_CXMIN = 28
  3732. Global Const $SM_CYMIN = 29
  3733. Global Const $SM_CXSIZE = 30
  3734. Global Const $SM_CYSIZE = 31
  3735. Global Const $SM_CXFRAME = 32
  3736. Global Const $SM_CYFRAME = 33
  3737. Global Const $SM_CXMINTRACK = 34
  3738. Global Const $SM_CYMINTRACK = 35
  3739. Global Const $SM_CXDOUBLECLK = 36
  3740. Global Const $SM_CYDOUBLECLK = 37
  3741. Global Const $SM_CXICONSPACING = 38
  3742. Global Const $SM_CYICONSPACING = 39
  3743. Global Const $SM_MENUDROPALIGNMENT = 40
  3744. Global Const $SM_PENWINDOWS = 41
  3745. Global Const $SM_DBCSENABLED = 42
  3746. Global Const $SM_CMOUSEBUTTONS = 43
  3747. Global Const $SM_SECURE = 44
  3748. Global Const $SM_CXEDGE = 45
  3749. Global Const $SM_CYEDGE = 46
  3750. Global Const $SM_CXMINSPACING = 47
  3751. Global Const $SM_CYMINSPACING = 48
  3752. Global Const $SM_CXSMICON = 49
  3753. Global Const $SM_CYSMICON = 50
  3754. Global Const $SM_CYSMCAPTION = 51
  3755. Global Const $SM_CXSMSIZE = 52
  3756. Global Const $SM_CYSMSIZE = 53
  3757. Global Const $SM_CXMENUSIZE = 54
  3758. Global Const $SM_CYMENUSIZE = 55
  3759. Global Const $SM_ARRANGE = 56
  3760. Global Const $SM_CXMINIMIZED = 57
  3761. Global Const $SM_CYMINIMIZED = 58
  3762. Global Const $SM_CXMAXTRACK = 59
  3763. Global Const $SM_CYMAXTRACK = 60
  3764. Global Const $SM_CXMAXIMIZED = 61
  3765. Global Const $SM_CYMAXIMIZED = 62
  3766. Global Const $SM_NETWORK = 63
  3767. Global Const $SM_CLEANBOOT = 67
  3768. Global Const $SM_CXDRAG = 68
  3769. Global Const $SM_CYDRAG = 69
  3770. Global Const $SM_SHOWSOUNDS = 70
  3771. Global Const $SM_CXMENUCHECK = 71
  3772. Global Const $SM_CYMENUCHECK = 72
  3773. Global Const $SM_SLOWMACHINE = 73
  3774. Global Const $SM_MIDEASTENABLED = 74
  3775. Global Const $SM_MOUSEWHEELPRESENT = 75
  3776. Global Const $SM_XVIRTUALSCREEN = 76
  3777. Global Const $SM_YVIRTUALSCREEN = 77
  3778. Global Const $SM_CXVIRTUALSCREEN = 78
  3779. Global Const $SM_CYVIRTUALSCREEN = 79
  3780. Global Const $SM_CMONITORS = 80
  3781. Global Const $SM_SAMEDISPLAYFORMAT = 81
  3782. Global Const $SM_IMMENABLED = 82
  3783. Global Const $SM_CXFOCUSBORDER = 83
  3784. Global Const $SM_CYFOCUSBORDER = 84
  3785. Global Const $SM_TABLETPC = 86
  3786. Global Const $SM_MEDIACENTER = 87
  3787. Global Const $SM_STARTER = 88
  3788. Global Const $SM_SERVERR2 = 89
  3789. Global Const $SM_CMETRICS = 90
  3790. Global Const $SM_REMOTESESSION = 4096
  3791. Global Const $SM_SHUTTINGDOWN = 8192
  3792. Global Const $SM_REMOTECONTROL = 8193
  3793. Global Const $SM_CARETBLINKINGENABLED = 8194
  3794. Global Const $BLACKNESS = 66
  3795. Global Const $CAPTUREBLT = 1073741824
  3796. Global Const $DSTINVERT = 5570569
  3797. Global Const $MERGECOPY = 12583114
  3798. Global Const $MERGEPAINT = 12255782
  3799. Global Const $NOMIRRORBITMAP = -2147483648
  3800. Global Const $NOTSRCCOPY = 3342344
  3801. Global Const $NOTSRCERASE = 1114278
  3802. Global Const $PATCOPY = 15728673
  3803. Global Const $PATINVERT = 5898313
  3804. Global Const $PATPAINT = 16452105
  3805. Global Const $SRCAND = 8913094
  3806. Global Const $SRCCOPY = 13369376
  3807. Global Const $SRCERASE = 4457256
  3808. Global Const $SRCINVERT = 6684742
  3809. Global Const $SRCPAINT = 15597702
  3810. Global Const $WHITENESS = 16711778
  3811. Global Const $DT_BOTTOM = 8
  3812. Global Const $DT_CALCRECT = 1024
  3813. Global Const $DT_CENTER = 1
  3814. Global Const $DT_EDITCONTROL = 8192
  3815. Global Const $DT_END_ELLIPSIS = 32768
  3816. Global Const $DT_EXPANDTABS = 64
  3817. Global Const $DT_EXTERNALLEADING = 512
  3818. Global Const $DT_HIDEPREFIX = 1048576
  3819. Global Const $DT_INTERNAL = 4096
  3820. Global Const $DT_LEFT = 0
  3821. Global Const $DT_MODIFYSTRING = 65536
  3822. Global Const $DT_NOCLIP = 256
  3823. Global Const $DT_NOFULLWIDTHCHARBREAK = 524288
  3824. Global Const $DT_NOPREFIX = 2048
  3825. Global Const $DT_PATH_ELLIPSIS = 16384
  3826. Global Const $DT_PREFIXONLY = 2097152
  3827. Global Const $DT_RIGHT = 2
  3828. Global Const $DT_RTLREADING = 131072
  3829. Global Const $DT_SINGLELINE = 32
  3830. Global Const $DT_TABSTOP = 128
  3831. Global Const $DT_TOP = 0
  3832. Global Const $DT_VCENTER = 4
  3833. Global Const $DT_WORDBREAK = 16
  3834. Global Const $DT_WORD_ELLIPSIS = 262144
  3835. Global Const $RDW_ERASE = 4
  3836. Global Const $RDW_FRAME = 1024
  3837. Global Const $RDW_INTERNALPAINT = 2
  3838. Global Const $RDW_INVALIDATE = 1
  3839. Global Const $RDW_NOERASE = 32
  3840. Global Const $RDW_NOFRAME = 2048
  3841. Global Const $RDW_NOINTERNALPAINT = 16
  3842. Global Const $RDW_VALIDATE = 8
  3843. Global Const $RDW_ERASENOW = 512
  3844. Global Const $RDW_UPDATENOW = 256
  3845. Global Const $RDW_ALLCHILDREN = 128
  3846. Global Const $RDW_NOCHILDREN = 64
  3847. Global Const $WM_RENDERFORMAT = 773
  3848. Global Const $WM_RENDERALLFORMATS = 774
  3849. Global Const $WM_DESTROYCLIPBOARD = 775
  3850. Global Const $WM_DRAWCLIPBOARD = 776
  3851. Global Const $WM_PAINTCLIPBOARD = 777
  3852. Global Const $WM_VSCROLLCLIPBOARD = 778
  3853. Global Const $WM_SIZECLIPBOARD = 779
  3854. Global Const $WM_ASKCBFORMATNAME = 780
  3855. Global Const $WM_CHANGECBCHAIN = 781
  3856. Global Const $WM_HSCROLLCLIPBOARD = 782
  3857. Global Const $HTERROR = -2
  3858. Global Const $HTTRANSPARENT = -1
  3859. Global Const $HTNOWHERE = 0
  3860. Global Const $HTCLIENT = 1
  3861. Global Const $HTCAPTION = 2
  3862. Global Const $HTSYSMENU = 3
  3863. Global Const $HTGROWBOX = 4
  3864. Global Const $HTSIZE = $HTGROWBOX
  3865. Global Const $HTMENU = 5
  3866. Global Const $HTHSCROLL = 6
  3867. Global Const $HTVSCROLL = 7
  3868. Global Const $HTMINBUTTON = 8
  3869. Global Const $HTMAXBUTTON = 9
  3870. Global Const $HTLEFT = 10
  3871. Global Const $HTRIGHT = 11
  3872. Global Const $HTTOP = 12
  3873. Global Const $HTTOPLEFT = 13
  3874. Global Const $HTTOPRIGHT = 14
  3875. Global Const $HTBOTTOM = 15
  3876. Global Const $HTBOTTOMLEFT = 16
  3877. Global Const $HTBOTTOMRIGHT = 17
  3878. Global Const $HTBORDER = 18
  3879. Global Const $HTREDUCE = $HTMINBUTTON
  3880. Global Const $HTZOOM = $HTMAXBUTTON
  3881. Global Const $HTSIZEFIRST = $HTLEFT
  3882. Global Const $HTSIZELAST = $HTBOTTOMRIGHT
  3883. Global Const $HTOBJECT = 19
  3884. Global Const $HTCLOSE = 20
  3885. Global Const $HTHELP = 21
  3886. Global Const $COLOR_SCROLLBAR = 0
  3887. Global Const $COLOR_BACKGROUND = 1
  3888. Global Const $COLOR_ACTIVECAPTION = 2
  3889. Global Const $COLOR_INACTIVECAPTION = 3
  3890. Global Const $COLOR_MENU = 4
  3891. Global Const $COLOR_WINDOW = 5
  3892. Global Const $COLOR_WINDOWFRAME = 6
  3893. Global Const $COLOR_MENUTEXT = 7
  3894. Global Const $COLOR_WINDOWTEXT = 8
  3895. Global Const $COLOR_CAPTIONTEXT = 9
  3896. Global Const $COLOR_ACTIVEBORDER = 10
  3897. Global Const $COLOR_INACTIVEBORDER = 11
  3898. Global Const $COLOR_APPWORKSPACE = 12
  3899. Global Const $COLOR_HIGHLIGHT = 13
  3900. Global Const $COLOR_HIGHLIGHTTEXT = 14
  3901. Global Const $COLOR_BTNFACE = 15
  3902. Global Const $COLOR_BTNSHADOW = 16
  3903. Global Const $COLOR_GRAYTEXT = 17
  3904. Global Const $COLOR_BTNTEXT = 18
  3905. Global Const $COLOR_INACTIVECAPTIONTEXT = 19
  3906. Global Const $COLOR_BTNHIGHLIGHT = 20
  3907. Global Const $COLOR_3DDKSHADOW = 21
  3908. Global Const $COLOR_3DLIGHT = 22
  3909. Global Const $COLOR_INFOTEXT = 23
  3910. Global Const $COLOR_INFOBK = 24
  3911. Global Const $COLOR_HOTLIGHT = 26
  3912. Global Const $COLOR_GRADIENTACTIVECAPTION = 27
  3913. Global Const $COLOR_GRADIENTINACTIVECAPTION = 28
  3914. Global Const $COLOR_MENUHILIGHT = 29
  3915. Global Const $COLOR_MENUBAR = 30
  3916. Global Const $COLOR_DESKTOP = 1
  3917. Global Const $COLOR_3DFACE = 15
  3918. Global Const $COLOR_3DSHADOW = 16
  3919. Global Const $COLOR_3DHIGHLIGHT = 20
  3920. Global Const $COLOR_3DHILIGHT = 20
  3921. Global Const $COLOR_BTNHILIGHT = 20
  3922. Global Const $HINST_COMMCTRL = -1
  3923. Global Const $IDB_STD_SMALL_COLOR = 0
  3924. Global Const $IDB_STD_LARGE_COLOR = 1
  3925. Global Const $IDB_VIEW_SMALL_COLOR = 4
  3926. Global Const $IDB_VIEW_LARGE_COLOR = 5
  3927. Global Const $IDB_HIST_SMALL_COLOR = 8
  3928. Global Const $IDB_HIST_LARGE_COLOR = 9
  3929. Global Const $STARTF_FORCEOFFFEEDBACK = 128
  3930. Global Const $STARTF_FORCEONFEEDBACK = 64
  3931. Global Const $STARTF_RUNFULLSCREEN = 32
  3932. Global Const $STARTF_USECOUNTCHARS = 8
  3933. Global Const $STARTF_USEFILLATTRIBUTE = 16
  3934. Global Const $STARTF_USEHOTKEY = 512
  3935. Global Const $STARTF_USEPOSITION = 4
  3936. Global Const $STARTF_USESHOWWINDOW = 1
  3937. Global Const $STARTF_USESIZE = 2
  3938. Global Const $STARTF_USESTDHANDLES = 256
  3939. Global Const $CDDS_PREPAINT = 1
  3940. Global Const $CDDS_POSTPAINT = 2
  3941. Global Const $CDDS_PREERASE = 3
  3942. Global Const $CDDS_POSTERASE = 4
  3943. Global Const $CDDS_ITEM = 65536
  3944. Global Const $CDDS_ITEMPREPAINT = 65537
  3945. Global Const $CDDS_ITEMPOSTPAINT = 65538
  3946. Global Const $CDDS_ITEMPREERASE = 65539
  3947. Global Const $CDDS_ITEMPOSTERASE = 65540
  3948. Global Const $CDDS_SUBITEM = 131072
  3949. Global Const $CDIS_SELECTED = 1
  3950. Global Const $CDIS_GRAYED = 2
  3951. Global Const $CDIS_DISABLED = 4
  3952. Global Const $CDIS_CHECKED = 8
  3953. Global Const $CDIS_FOCUS = 16
  3954. Global Const $CDIS_DEFAULT = 32
  3955. Global Const $CDIS_HOT = 64
  3956. Global Const $CDIS_MARKED = 128
  3957. Global Const $CDIS_INDETERMINATE = 256
  3958. Global Const $CDIS_SHOWKEYBOARDCUES = 512
  3959. Global Const $CDIS_NEARHOT = 1024
  3960. Global Const $CDIS_OTHERSIDEHOT = 2048
  3961. Global Const $CDIS_DROPHILITED = 4096
  3962. Global Const $CDRF_DODEFAULT = 0
  3963. Global Const $CDRF_NEWFONT = 2
  3964. Global Const $CDRF_SKIPDEFAULT = 4
  3965. Global Const $CDRF_NOTIFYPOSTPAINT = 16
  3966. Global Const $CDRF_NOTIFYITEMDRAW = 32
  3967. Global Const $CDRF_NOTIFYSUBITEMDRAW = 32
  3968. Global Const $CDRF_NOTIFYPOSTERASE = 64
  3969. Global Const $CDRF_DOERASE = 8
  3970. Global Const $CDRF_SKIPPOSTPAINT = 256
  3971. Global Const $GUI_SS_DEFAULT_GUI = BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU)
  3972. Global Const $SS_LEFT = 0
  3973. Global Const $SS_CENTER = 1
  3974. Global Const $SS_RIGHT = 2
  3975. Global Const $SS_ICON = 3
  3976. Global Const $SS_BLACKRECT = 4
  3977. Global Const $SS_GRAYRECT = 5
  3978. Global Const $SS_WHITERECT = 6
  3979. Global Const $SS_BLACKFRAME = 7
  3980. Global Const $SS_GRAYFRAME = 8
  3981. Global Const $SS_WHITEFRAME = 9
  3982. Global Const $SS_SIMPLE = 11
  3983. Global Const $SS_LEFTNOWORDWRAP = 12
  3984. Global Const $SS_BITMAP = 14
  3985. Global Const $SS_ETCHEDHORZ = 16
  3986. Global Const $SS_ETCHEDVERT = 17
  3987. Global Const $SS_ETCHEDFRAME = 18
  3988. Global Const $SS_NOPREFIX = 128
  3989. Global Const $SS_NOTIFY = 256
  3990. Global Const $SS_CENTERIMAGE = 512
  3991. Global Const $SS_RIGHTJUST = 1024
  3992. Global Const $SS_SUNKEN = 4096
  3993. Global Const $GUI_SS_DEFAULT_LABEL = 0
  3994. Global Const $GUI_SS_DEFAULT_GRAPHIC = 0
  3995. Global Const $GUI_SS_DEFAULT_ICON = $SS_NOTIFY
  3996. Global Const $GUI_SS_DEFAULT_PIC = $SS_NOTIFY
  3997. Global Const $FW_DONTCARE = 0
  3998. Global Const $FW_THIN = 100
  3999. Global Const $FW_EXTRALIGHT = 200
  4000. Global Const $FW_ULTRALIGHT = 200
  4001. Global Const $FW_LIGHT = 300
  4002. Global Const $FW_NORMAL = 400
  4003. Global Const $FW_REGULAR = 400
  4004. Global Const $FW_MEDIUM = 500
  4005. Global Const $FW_SEMIBOLD = 600
  4006. Global Const $FW_DEMIBOLD = 600
  4007. Global Const $FW_BOLD = 700
  4008. Global Const $FW_EXTRABOLD = 800
  4009. Global Const $FW_ULTRABOLD = 800
  4010. Global Const $FW_HEAVY = 900
  4011. Global Const $FW_BLACK = 900
  4012. Global Const $CF_EFFECTS = 256
  4013. Global Const $CF_PRINTERFONTS = 2
  4014. Global Const $CF_SCREENFONTS = 1
  4015. Global Const $CF_NOSCRIPTSEL = 8388608
  4016. Global Const $CF_INITTOLOGFONTSTRUCT = 64
  4017. Global Const $LOGPIXELSX = 88
  4018. Global Const $LOGPIXELSY = 90
  4019. Global Const $ANSI_CHARSET = 0
  4020. Global Const $BALTIC_CHARSET = 186
  4021. Global Const $CHINESEBIG5_CHARSET = 136
  4022. Global Const $DEFAULT_CHARSET = 1
  4023. Global Const $EASTEUROPE_CHARSET = 238
  4024. Global Const $GB2312_CHARSET = 134
  4025. Global Const $GREEK_CHARSET = 161
  4026. Global Const $HANGEUL_CHARSET = 129
  4027. Global Const $MAC_CHARSET = 77
  4028. Global Const $OEM_CHARSET = 255
  4029. Global Const $RUSSIAN_CHARSET = 204
  4030. Global Const $SHIFTJIS_CHARSET = 128
  4031. Global Const $SYMBOL_CHARSET = 2
  4032. Global Const $TURKISH_CHARSET = 162
  4033. Global Const $VIETNAMESE_CHARSET = 163
  4034. Global Const $OUT_CHARACTER_PRECIS = 2
  4035. Global Const $OUT_DEFAULT_PRECIS = 0
  4036. Global Const $OUT_DEVICE_PRECIS = 5
  4037. Global Const $OUT_OUTLINE_PRECIS = 8
  4038. Global Const $OUT_PS_ONLY_PRECIS = 10
  4039. Global Const $OUT_RASTER_PRECIS = 6
  4040. Global Const $OUT_STRING_PRECIS = 1
  4041. Global Const $OUT_STROKE_PRECIS = 3
  4042. Global Const $OUT_TT_ONLY_PRECIS = 7
  4043. Global Const $OUT_TT_PRECIS = 4
  4044. Global Const $CLIP_CHARACTER_PRECIS = 1
  4045. Global Const $CLIP_DEFAULT_PRECIS = 0
  4046. Global Const $CLIP_EMBEDDED = 128
  4047. Global Const $CLIP_LH_ANGLES = 16
  4048. Global Const $CLIP_MASK = 15
  4049. Global Const $CLIP_STROKE_PRECIS = 2
  4050. Global Const $CLIP_TT_ALWAYS = 32
  4051. Global Const $ANTIALIASED_QUALITY = 4
  4052. Global Const $DEFAULT_QUALITY = 0
  4053. Global Const $DRAFT_QUALITY = 1
  4054. Global Const $NONANTIALIASED_QUALITY = 3
  4055. Global Const $PROOF_QUALITY = 2
  4056. Global Const $DEFAULT_PITCH = 0
  4057. Global Const $FIXED_PITCH = 1
  4058. Global Const $VARIABLE_PITCH = 2
  4059. Global Const $FF_DECORATIVE = 80
  4060. Global Const $FF_DONTCARE = 0
  4061. Global Const $FF_MODERN = 48
  4062. Global Const $FF_ROMAN = 16
  4063. Global Const $FF_SCRIPT = 64
  4064. Global Const $FF_SWISS = 32
  4065. Global Const $__MISCCONSTANT_CC_ANYCOLOR = 256
  4066. Global Const $__MISCCONSTANT_CC_FULLOPEN = 2
  4067. Global Const $__MISCCONSTANT_CC_RGBINIT = 1
  4068. Global Const $TAGCHOOSECOLOR = "dword Size;hwnd hWndOwnder;handle hInstance;dword rgbResult;ptr CustColors;dword Flags;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName"
  4069. Global Const $TAGCHOOSEFONT = "dword Size;hwnd hWndOwner;handle hDC;ptr LogFont;int PointSize;dword Flags;dword rgbColors;lparam CustData;" & "ptr fnHook;ptr TemplateName;handle hInstance;ptr szStyle;word FontType;int SizeMin;int SizeMax"
  4070. Func _CHOOSECOLOR($IRETURNTYPE = 0, $ICOLORREF = 0, $IREFTYPE = 0, $HWNDOWNDER = 0)
  4071.     Local $CUSTCOLORS = "dword[16]"
  4072.     Local $TCHOOSE = DllStructCreate($TAGCHOOSECOLOR)
  4073.     Local $TCC = DllStructCreate($CUSTCOLORS)
  4074.     If $IREFTYPE = 1 Then
  4075.         $ICOLORREF = Int($ICOLORREF)
  4076.     ElseIf $IREFTYPE = 2 Then
  4077.         $ICOLORREF = Hex(String($ICOLORREF), 6)
  4078.         $ICOLORREF = "0x" & StringMid($ICOLORREF, 5, 2) & StringMid($ICOLORREF, 3, 2) & StringMid($ICOLORREF, 1, 2)
  4079.     EndIf
  4080.     DllStructSetData($TCHOOSE, "Size", DllStructGetSize($TCHOOSE))
  4081.     DllStructSetData($TCHOOSE, "hWndOwnder", $HWNDOWNDER)
  4082.     DllStructSetData($TCHOOSE, "rgbResult", $ICOLORREF)
  4083.     DllStructSetData($TCHOOSE, "CustColors", DllStructGetPtr($TCC))
  4084.     DllStructSetData($TCHOOSE, "Flags", BitOR($__MISCCONSTANT_CC_ANYCOLOR, $__MISCCONSTANT_CC_FULLOPEN, $__MISCCONSTANT_CC_RGBINIT))
  4085.     Local $ARESULT = DllCall("comdlg32.dll", "bool", "ChooseColor", "ptr", DllStructGetPtr($TCHOOSE))
  4086.     If @error Then Return SetError(@error, @extended, -1)
  4087.     If $ARESULT[0] = 0 Then Return SetError(-3, -3, -1)
  4088.     Local $COLOR_PICKED = DllStructGetData($TCHOOSE, "rgbResult")
  4089.     If $IRETURNTYPE = 1 Then
  4090.         Return "0x" & Hex(String($COLOR_PICKED), 6)
  4091.     ElseIf $IRETURNTYPE = 2 Then
  4092.         $COLOR_PICKED = Hex(String($COLOR_PICKED), 6)
  4093.         Return "0x" & StringMid($COLOR_PICKED, 5, 2) & StringMid($COLOR_PICKED, 3, 2) & StringMid($COLOR_PICKED, 1, 2)
  4094.     ElseIf $IRETURNTYPE = 0 Then
  4095.         Return $COLOR_PICKED
  4096.     Else
  4097.         Return SetError(-4, -4, -1)
  4098.     EndIf
  4099. EndFunc
  4100. Func _CHOOSEFONT($SFONTNAME = "Courier New", $IPOINTSIZE = 10, $ICOLORREF = 0, $IFONTWEIGHT = 0, $IITALIC = False, $IUNDERLINE = False, $ISTRIKETHRU = False, $HWNDOWNER = 0)
  4101.     Local $ITALIC = 0, $UNDERLINE = 0, $STRIKEOUT = 0
  4102.     Local $LNGDC = __MISC_GETDC(0)
  4103.     Local $LFHEIGHT = Round(($IPOINTSIZE * __MISC_GETDEVICECAPS($LNGDC, $LOGPIXELSX)) / 72, 0)
  4104.     __MISC_RELEASEDC(0, $LNGDC)
  4105.     Local $TCHOOSEFONT = DllStructCreate($TAGCHOOSEFONT)
  4106.     Local $TLOGFONT = DllStructCreate($TAGLOGFONT)
  4107.     DllStructSetData($TCHOOSEFONT, "Size", DllStructGetSize($TCHOOSEFONT))
  4108.     DllStructSetData($TCHOOSEFONT, "hWndOwner", $HWNDOWNER)
  4109.     DllStructSetData($TCHOOSEFONT, "LogFont", DllStructGetPtr($TLOGFONT))
  4110.     DllStructSetData($TCHOOSEFONT, "PointSize", $IPOINTSIZE)
  4111.     DllStructSetData($TCHOOSEFONT, "Flags", BitOR($CF_SCREENFONTS, $CF_PRINTERFONTS, $CF_EFFECTS, $CF_INITTOLOGFONTSTRUCT, $CF_NOSCRIPTSEL))
  4112.     DllStructSetData($TCHOOSEFONT, "rgbColors", $ICOLORREF)
  4113.     DllStructSetData($TCHOOSEFONT, "FontType", 0)
  4114.     DllStructSetData($TLOGFONT, "Height", $LFHEIGHT)
  4115.     DllStructSetData($TLOGFONT, "Weight", $IFONTWEIGHT)
  4116.     DllStructSetData($TLOGFONT, "Italic", $IITALIC)
  4117.     DllStructSetData($TLOGFONT, "Underline", $IUNDERLINE)
  4118.     DllStructSetData($TLOGFONT, "Strikeout", $ISTRIKETHRU)
  4119.     DllStructSetData($TLOGFONT, "FaceName", $SFONTNAME)
  4120.     Local $ARESULT = DllCall("comdlg32.dll", "bool", "ChooseFontW", "ptr", DllStructGetPtr($TCHOOSEFONT))
  4121.     If @error Then Return SetError(@error, @extended, -1)
  4122.     If $ARESULT[0] = 0 Then Return SetError(-3, -3, -1)
  4123.     Local $FONTNAME = DllStructGetData($TLOGFONT, "FaceName")
  4124.     If StringLen($FONTNAME) = 0 And StringLen($SFONTNAME) > 0 Then $FONTNAME = $SFONTNAME
  4125.     If DllStructGetData($TLOGFONT, "Italic") Then $ITALIC = 2
  4126.     If DllStructGetData($TLOGFONT, "Underline") Then $UNDERLINE = 4
  4127.     If DllStructGetData($TLOGFONT, "Strikeout") Then $STRIKEOUT = 8
  4128.     Local $ATTRIBUTES = BitOR($ITALIC, $UNDERLINE, $STRIKEOUT)
  4129.     Local $SIZE = DllStructGetData($TCHOOSEFONT, "PointSize") / 10
  4130.     Local $COLORREF = DllStructGetData($TCHOOSEFONT, "rgbColors")
  4131.     Local $WEIGHT = DllStructGetData($TLOGFONT, "Weight")
  4132.     Local $COLOR_PICKED = Hex(String($COLORREF), 6)
  4133.     Return StringSplit($ATTRIBUTES & "," & $FONTNAME & "," & $SIZE & "," & $WEIGHT & "," & $COLORREF & "," & "0x" & $COLOR_PICKED & "," & "0x" & StringMid($COLOR_PICKED, 5, 2) & StringMid($COLOR_PICKED, 3, 2) & StringMid($COLOR_PICKED, 1, 2), ",")
  4134. EndFunc
  4135. Func _CLIPPUTFILE($SFILE, $SSEPARATOR = "|")
  4136.     Local Const $GMEM_MOVEABLE = 2, $CF_HDROP = 15
  4137.     $SFILE &= $SSEPARATOR & $SSEPARATOR
  4138.     Local $NGLOBMEMSIZE = (StringLen($SFILE) + 20)
  4139.     Local $ARESULT = DllCall("user32.dll", "bool", "OpenClipboard", "hwnd", 0)
  4140.     If @error Or $ARESULT[0] = 0 Then Return SetError(1, _WINAPI_GETLASTERROR(), False)
  4141.     Local $IERROR = 0, $ILASTERROR = 0
  4142.     $ARESULT = DllCall("user32.dll", "bool", "EmptyClipboard")
  4143.     If @error Or Not $ARESULT[0] Then
  4144.         $IERROR = 2
  4145.         $ILASTERROR = _WINAPI_GETLASTERROR()
  4146.     Else
  4147.         $ARESULT = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", $GMEM_MOVEABLE, "ulong_ptr", $NGLOBMEMSIZE)
  4148.         If @error Or Not $ARESULT[0] Then
  4149.             $IERROR = 3
  4150.             $ILASTERROR = _WINAPI_GETLASTERROR()
  4151.         Else
  4152.             Local $HGLOBAL = $ARESULT[0]
  4153.             $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $HGLOBAL)
  4154.             If @error Or Not $ARESULT[0] Then
  4155.                 $IERROR = 4
  4156.                 $ILASTERROR = _WINAPI_GETLASTERROR()
  4157.             Else
  4158.                 Local $HLOCK = $ARESULT[0]
  4159.                 Local $DROPFILES = DllStructCreate("dword;ptr;int;int;int;char[" & StringLen($SFILE) + 1 & "]", $HLOCK)
  4160.                 If @error Then Return SetError(5, 6, False)
  4161.                 Local $TEMPSTRUCT = DllStructCreate("dword;ptr;int;int;int")
  4162.                 DllStructSetData($DROPFILES, 1, DllStructGetSize($TEMPSTRUCT))
  4163.                 DllStructSetData($DROPFILES, 2, 0)
  4164.                 DllStructSetData($DROPFILES, 3, 0)
  4165.                 DllStructSetData($DROPFILES, 4, 0)
  4166.                 DllStructSetData($DROPFILES, 5, 0)
  4167.                 DllStructSetData($DROPFILES, 6, $SFILE)
  4168.                 For $I = 1 To StringLen($SFILE)
  4169.                     If DllStructGetData($DROPFILES, 6, $I) = $SSEPARATOR Then DllStructSetData($DROPFILES, 6, Chr(0), $I)
  4170.                 Next
  4171.                 $ARESULT = DllCall("user32.dll", "handle", "SetClipboardData", "uint", $CF_HDROP, "handle", $HGLOBAL)
  4172.                 If @error Or Not $ARESULT[0] Then
  4173.                     $IERROR = 6
  4174.                     $ILASTERROR = _WINAPI_GETLASTERROR()
  4175.                 EndIf
  4176.                 $ARESULT = DllCall("kernel32.dll", "bool", "GlobalUnlock", "handle", $HGLOBAL)
  4177.                 IF (@error Or Not $ARESULT[0]) And Not $IERROR And _WINAPI_GETLASTERROR() Then
  4178.                     $IERROR = 8
  4179.                     $ILASTERROR = _WINAPI_GETLASTERROR()
  4180.                 EndIf
  4181.             EndIf
  4182.             $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $HGLOBAL)
  4183.             IF (@error Or Not $ARESULT[0]) And Not $IERROR Then
  4184.                 $IERROR = 9
  4185.                 $ILASTERROR = _WINAPI_GETLASTERROR()
  4186.             EndIf
  4187.         EndIf
  4188.     EndIf
  4189.     $ARESULT = DllCall("user32.dll", "bool", "CloseClipboard")
  4190.     IF (@error Or Not $ARESULT[0]) And Not $IERROR Then Return SetError(7, _WINAPI_GETLASTERROR(), False)
  4191.     If $IERROR Then Return SetError($IERROR, $ILASTERROR, False)
  4192.     Return True
  4193. EndFunc
  4194. Func _IIF($FTEST, $VTRUEVAL, $VFALSEVAL)
  4195.     If $FTEST Then
  4196.         Return $VTRUEVAL
  4197.     Else
  4198.         Return $VFALSEVAL
  4199.     EndIf
  4200. EndFunc
  4201. Func _MOUSETRAP($ILEFT = 0, $ITOP = 0, $IRIGHT = 0, $IBOTTOM = 0)
  4202.     Local $ARESULT
  4203.     If @NumParams == 0 Then
  4204.         $ARESULT = DllCall("user32.dll", "bool", "ClipCursor", "ptr", 0)
  4205.         If @error Or Not $ARESULT[0] Then Return SetError(1, _WINAPI_GETLASTERROR(), False)
  4206.     Else
  4207.         If @NumParams == 2 Then
  4208.             $IRIGHT = $ILEFT + 1
  4209.             $IBOTTOM = $ITOP + 1
  4210.         EndIf
  4211.         Local $TRECT = DllStructCreate($TAGRECT)
  4212.         DllStructSetData($TRECT, "Left", $ILEFT)
  4213.         DllStructSetData($TRECT, "Top", $ITOP)
  4214.         DllStructSetData($TRECT, "Right", $IRIGHT)
  4215.         DllStructSetData($TRECT, "Bottom", $IBOTTOM)
  4216.         $ARESULT = DllCall("user32.dll", "bool", "ClipCursor", "ptr", DllStructGetPtr($TRECT))
  4217.         If @error Or Not $ARESULT[0] Then Return SetError(2, _WINAPI_GETLASTERROR(), False)
  4218.     EndIf
  4219.     Return True
  4220. EndFunc
  4221. Func _SINGLETON($SOCCURENCENAME, $IFLAG = 0)
  4222.     Local Const $ERROR_ALREADY_EXISTS = 183
  4223.     Local Const $SECURITY_DESCRIPTOR_REVISION = 1
  4224.     Local $PSECURITYATTRIBUTES = 0
  4225.     If BitAND($IFLAG, 2) Then
  4226.         Local $TSECURITYDESCRIPTOR = DllStructCreate("dword[5]")
  4227.         Local $PSECURITYDESCRIPTOR = DllStructGetPtr($TSECURITYDESCRIPTOR)
  4228.         Local $ARET = DllCall("advapi32.dll", "bool", "InitializeSecurityDescriptor", "ptr", $PSECURITYDESCRIPTOR, "dword", $SECURITY_DESCRIPTOR_REVISION)
  4229.         If @error Then Return SetError(@error, @extended, 0)
  4230.         If $ARET[0] Then
  4231.             $ARET = DllCall("advapi32.dll", "bool", "SetSecurityDescriptorDacl", "ptr", $PSECURITYDESCRIPTOR, "bool", 1, "ptr", 0, "bool", 0)
  4232.             If @error Then Return SetError(@error, @extended, 0)
  4233.             If $ARET[0] Then
  4234.                 Local $STRUCTSECURITYATTRIBUTES = DllStructCreate($TAGSECURITY_ATTRIBUTES)
  4235.                 DllStructSetData($STRUCTSECURITYATTRIBUTES, 1, DllStructGetSize($STRUCTSECURITYATTRIBUTES))
  4236.                 DllStructSetData($STRUCTSECURITYATTRIBUTES, 2, $PSECURITYDESCRIPTOR)
  4237.                 DllStructSetData($STRUCTSECURITYATTRIBUTES, 3, 0)
  4238.                 $PSECURITYATTRIBUTES = DllStructGetPtr($STRUCTSECURITYATTRIBUTES)
  4239.             EndIf
  4240.         EndIf
  4241.     EndIf
  4242.     Local $HANDLE = DllCall("kernel32.dll", "handle", "CreateMutexW", "ptr", $PSECURITYATTRIBUTES, "bool", 1, "wstr", $SOCCURENCENAME)
  4243.     If @error Then Return SetError(@error, @extended, 0)
  4244.     Local $LASTERROR = DllCall("kernel32.dll", "dword", "GetLastError")
  4245.     If @error Then Return SetError(@error, @extended, 0)
  4246.     If $LASTERROR[0] = $ERROR_ALREADY_EXISTS Then
  4247.         If BitAND($IFLAG, 1) Then
  4248.             Return SetError($LASTERROR[0], $LASTERROR[0], 0)
  4249.         Else
  4250.             Exit -1
  4251.         EndIf
  4252.     EndIf
  4253.     Return $HANDLE[0]
  4254. EndFunc
  4255. Func _ISPRESSED($SHEXKEY, $VDLL = "user32.dll")
  4256.     Local $A_R = DllCall($VDLL, "short", "GetAsyncKeyState", "int", "0x" & $SHEXKEY)
  4257.     If @error Then Return SetError(@error, @extended, False)
  4258.     Return BitAND($A_R[0], 32768) <> 0
  4259. EndFunc
  4260. Func _VERSIONCOMPARE($SVERSION1, $SVERSION2)
  4261.     If $SVERSION1 = $SVERSION2 Then Return 0
  4262.     Local $SEP = "."
  4263.     If StringInStr($SVERSION1, $SEP) = 0 Then $SEP = ","
  4264.     Local $AVERSION1 = StringSplit($SVERSION1, $SEP)
  4265.     Local $AVERSION2 = StringSplit($SVERSION2, $SEP)
  4266.     If UBound($AVERSION1) <> UBound($AVERSION2) Or UBound($AVERSION1) = 0 Then
  4267.         SetExtended(1)
  4268.         If $SVERSION1 > $SVERSION2 Then
  4269.             Return 1
  4270.         ElseIf $SVERSION1 < $SVERSION2 Then
  4271.             Return -1
  4272.         EndIf
  4273.     Else
  4274.         For $I = 1 To UBound($AVERSION1) - 1
  4275.             If StringIsDigit($AVERSION1[$I]) And StringIsDigit($AVERSION2[$I]) Then
  4276.                 If Number($AVERSION1[$I]) > Number($AVERSION2[$I]) Then
  4277.                     Return 1
  4278.                 ElseIf Number($AVERSION1[$I]) < Number($AVERSION2[$I]) Then
  4279.                     Return -1
  4280.                 EndIf
  4281.             Else
  4282.                 SetExtended(1)
  4283.                 If $AVERSION1[$I] > $AVERSION2[$I] Then
  4284.                     Return 1
  4285.                 ElseIf $AVERSION1[$I] < $AVERSION2[$I] Then
  4286.                     Return -1
  4287.                 EndIf
  4288.             EndIf
  4289.         Next
  4290.     EndIf
  4291.     Return SetError(2, 0, 0)
  4292. EndFunc
  4293. Func __MISC_GETDC($HWND)
  4294.     Local $ARESULT = DllCall("User32.dll", "handle", "GetDC", "hwnd", $HWND)
  4295.     If @error Or Not $ARESULT[0] Then Return SetError(1, _WINAPI_GETLASTERROR(), 0)
  4296.     Return $ARESULT[0]
  4297. EndFunc
  4298. Func __MISC_GETDEVICECAPS($HDC, $IINDEX)
  4299.     Local $ARESULT = DllCall("GDI32.dll", "int", "GetDeviceCaps", "handle", $HDC, "int", $IINDEX)
  4300.     If @error Then Return SetError(@error, @extended, 0)
  4301.     Return $ARESULT[0]
  4302. EndFunc
  4303. Func __MISC_RELEASEDC($HWND, $HDC)
  4304.     Local $ARESULT = DllCall("User32.dll", "int", "ReleaseDC", "hwnd", $HWND, "handle", $HDC)
  4305.     If @error Then Return SetError(@error, @extended, False)
  4306.     Return $ARESULT[0] <> 0
  4307. EndFunc
  4308. Global $GAME = "Shaiya"
  4309. Global $FILE = "NPCEverywhere.ini"
  4310. Global $TITLE = "NPC Everywhere"
  4311. Global $EXE = "NPCEverywhere.exe"
  4312. Global $STATE = 0
  4313. Global $NAME, $ERROR, $ADD, $REMOVE, $OPEN, $FAVOURITES, $INPUT1, $INPUT2, $INPUT3, $INPUT4, $INPUT5, $ERROR1, $ERROR2
  4314. Global $SETTINGS, $SAVE, $OK, $CANCEL
  4315. If _SINGLETON("NPC EVERYWHERE PLUGIN", 1) = 0 Then
  4316.     MsgBox(0, "NPC Everywhere", "Plugin is started and running hidden!" & @CRLF & "It will be automatically exited when you close Shaiya." & @CRLF & "You can call it anytime while Shaiya window is active by pressing <INSERT> key.")
  4317.     Exit
  4318. EndIf
  4319. $CHOICE = MsgBox(4, $TITLE, "Is Shaiya started and ready to play?")
  4320. If $CHOICE = 7 Then Exit
  4321. If Not WinExists($GAME) Then
  4322.     MsgBox(0, $TITLE, "Shaiya process / window not found.")
  4323.     Exit
  4324. EndIf
  4325. Opt("GUIOnEventMode", 1)
  4326. Opt("GuiCloseOnESC", 0)
  4327. Global $STYLE1 = BitOR($WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_BORDER, $WS_CLIPSIBLINGS)
  4328. Global $STYLE2 = BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)
  4329. Global $PROCESSID = WinGetProcess($GAME)
  4330. Global $MEMORY = _MEMORYOPEN($PROCESSID)
  4331. Global $BASEADDRESS = "0x" & _MEMORYGETBASEADDRESS($MEMORY)
  4332. Select
  4333.     Case _MEMORYREAD($BASEADDRESS + 279112, $MEMORY, "UINT64") = 572776252871
  4334.         Global $CLIENT = 572776252871
  4335.         Global $CHANGE = 279112
  4336.         Global $A = 31368892
  4337.         Global $B = 4563056
  4338.         Global $C = 4563052
  4339.         Global $D = 4545576
  4340.         Global $E = 4545572
  4341.         Global $F = 4545568
  4342.         Global $G = 31370620
  4343.     Case _MEMORYREAD($BASEADDRESS + 281560, $MEMORY, "UINT64") = 573642376647
  4344.         Global $CLIENT = 573642376647
  4345.         Global $CHANGE = 281560
  4346.         Global $A = 31385264
  4347.         Global $B = 4579348
  4348.         Global $C = 4579344
  4349.         Global $D = 4558792
  4350.         Global $E = 4558788
  4351.         Global $F = 4558784
  4352.         Global $G = 31386992
  4353.     Case _MEMORYREAD($BASEADDRESS + 281272, $MEMORY, "UINT64") = 573394126279
  4354.         Global $CLIENT = 573394126279
  4355.         Global $CHANGE = 281272
  4356.         Global $A = 31381476
  4357.         Global $B = 4575560
  4358.         Global $C = 4575556
  4359.         Global $D = 4555004
  4360.         Global $E = 4555000
  4361.         Global $F = 4554996
  4362.         Global $G = 31383204
  4363.     Case _MEMORYREAD($BASEADDRESS + 279352, $MEMORY, "UINT64") = 573101573575
  4364.         Global $CLIENT = 573101573575
  4365.         Global $CHANGE = 279352
  4366.         Global $A = 31377012
  4367.         Global $B = 4571096
  4368.         Global $C = 4571092
  4369.         Global $D = 4550540
  4370.         Global $E = 4550536
  4371.         Global $F = 4550532
  4372.         Global $G = 31378740
  4373.     Case Else
  4374.         MsgBox(0, $TITLE, "Shaiya client currently not supported.")
  4375.         CLOSE()
  4376. EndSelect
  4377. For $COUNTER = 0 To 9 Step 1
  4378.     _MEMORYWRITE($BASEADDRESS + $CHANGE + $COUNTER, $MEMORY, 144, "BYTE")
  4379. Next
  4380. $PARENT = GUICreate("")
  4381. Global $MAIN = GUICreate("NPC Everywhere", 200, 300, -1, -1, $STYLE1, $STYLE2, $PARENT)
  4382. GUISetIcon($EXE, 5)
  4383. GUISetOnEvent($GUI_EVENT_CLOSE, "ShowHideClick")
  4384. Global $LIST = GUICtrlCreateList("", 0, 0, 200, 270, BitOR($LBS_NOINTEGRALHEIGHT, $LBS_DISABLENOSCROLL, $WS_VSCROLL))
  4385. $RESULT = IniReadSection($FILE, "NPC")
  4386. If IsArray($RESULT) Then
  4387.     For $COUNTER = 1 To $RESULT[0][0]
  4388.         GUICtrlSetData(-1, $RESULT[$COUNTER][0])
  4389.     Next
  4390. EndIf
  4391. Global $OPENBUTTON = GUICtrlCreateButton("Open", 80, 270, 40, 30, BitOR($BS_ICON, $WS_GROUP))
  4392. GUICtrlSetImage(-1, $EXE, -13, 0)
  4393. GUICtrlSetTip(-1, "Open")
  4394. GUICtrlSetOnEvent(-1, "OpenClick")
  4395. Global $ADDBUTTON = GUICtrlCreateButton("Add", 0, 270, 40, 30, BitOR($BS_ICON, $WS_GROUP))
  4396. GUICtrlSetImage(-1, $EXE, -6, 0)
  4397. GUICtrlSetTip(-1, "Add")
  4398. GUICtrlSetOnEvent(-1, "AddClick")
  4399. Global $REMOVEBUTTON = GUICtrlCreateButton("Remove", 40, 270, 40, 30, BitOR($BS_ICON, $WS_GROUP))
  4400. GUICtrlSetImage(-1, $EXE, -7, 0)
  4401. GUICtrlSetTip(-1, "Remove")
  4402. GUICtrlSetOnEvent(-1, "RemoveClick")
  4403. Global $FAVOURITSBUTTON = GUICtrlCreateButton("Favourits", 120, 270, 40, 30, BitOR($BS_ICON, $WS_GROUP))
  4404. GUICtrlSetImage(-1, $EXE, -10, 0)
  4405. GUICtrlSetTip(-1, "Favourits")
  4406. GUICtrlSetOnEvent(-1, "FavouritsClick")
  4407. Global $SETTINGSBUTTON = GUICtrlCreateButton("Settings", 160, 270, 40, 30, BitOR($BS_ICON, $WS_GROUP))
  4408. GUICtrlSetImage(-1, $EXE, -11, 0)
  4409. GUICtrlSetTip(-1, "Settings")
  4410. GUICtrlSetOnEvent(-1, "SettingsClick")
  4411. GUISetState(@SW_HIDE)
  4412. MsgBox(0, "NPC Everywhere", "Plugin is started and running hidden!" & @CRLF & "It will be automatically exited when you close Shaiya." & @CRLF & "You can call it anytime while Shaiya window is active by pressing <INSERT> key.")
  4413. While 1
  4414.     $POSMAIN = WinGetPos($TITLE)
  4415.     IF (WinActive($GAME) Or WinActive($TITLE)) And Not $STATE Then
  4416.         HotKeySet("{INSERT}", "SHOWHIDECLICK")
  4417.         $STATE = 1
  4418.     EndIf
  4419.     If NOT (WinActive($GAME) Or WinActive($TITLE)) And $STATE Then
  4420.         HotKeySet("{INSERT}")
  4421.         $STATE = 0
  4422.     EndIf
  4423.     If Not WinExists($GAME) Then CLOSE()
  4424.     Sleep(100)
  4425. WEnd
  4426. Func ADDCLICK()
  4427.     $POPED = POPED()
  4428.     If $POPED <> 1 Then
  4429.         GUISetState(@SW_DISABLE, $MAIN)
  4430.         Global $ADD = GUICreate("Add", 190, 70, $POSMAIN[0] + 5, $POSMAIN[1] + 115, $STYLE1, $STYLE2, $MAIN)
  4431.         GUISetIcon($EXE, -6)
  4432.         GUISetOnEvent($GUI_EVENT_CLOSE, "AddCancelClick")
  4433.         Global $MESSAGE = GUICtrlCreateLabel("Open a NPC in the game first!", 0, 10, 190, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
  4434.         Global $OK = GUICtrlCreateButton("Ok", 65, 40, 60, 20, BitOR($BS_ICON, $WS_GROUP))
  4435.         GUICtrlSetImage(-1, $EXE, -8, 0)
  4436.         GUICtrlSetTip(-1, "Ok")
  4437.         GUICtrlSetOnEvent(-1, "AddCancelClick")
  4438.         GUISetState(@SW_SHOW)
  4439.     Else
  4440.         GUISetState(@SW_DISABLE, $MAIN)
  4441.         Global $ADD = GUICreate("Add", 190, 100, $POSMAIN[0] + 5, $POSMAIN[1] + 100, $STYLE1, $STYLE2, $MAIN)
  4442.         GUISetIcon($EXE, -6)
  4443.         GUISetOnEvent($GUI_EVENT_CLOSE, "AddCancelClick")
  4444.         Global $ICON = GUICtrlCreateIcon("NPCEverywhare.exe", 12, 10, 14, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
  4445.         Global $MESSAGE = GUICtrlCreateLabel("Enter a label for the NPC", 30, 10, 150, 20, $SS_CENTERIMAGE)
  4446.         Global $NAME = GUICtrlCreateInput("", 10, 40, 170, 20)
  4447.         GUICtrlSetLimit(-1, 20)
  4448.         Global $ERROR = GUICtrlCreateLabel("Invalid...", 10, 40, 170, 20, $SS_CENTER)
  4449.         GUICtrlSetState(-1, $GUI_HIDE)
  4450.         Global $SAVE = GUICtrlCreateButton("Save", 30, 70, 60, 20, BitOR($BS_ICON, $WS_GROUP))
  4451.         GUICtrlSetImage(-1, $EXE, -8, 0)
  4452.         GUICtrlSetTip(-1, "Save")
  4453.         GUICtrlSetOnEvent(-1, "AddSaveClick")
  4454.         Global $CANCELL = GUICtrlCreateButton("Cancel", 100, 70, 60, 20, BitOR($BS_ICON, $WS_GROUP))
  4455.         GUICtrlSetImage(-1, $EXE, -9, 0)
  4456.         GUICtrlSetTip(-1, "Cancel")
  4457.         GUICtrlSetOnEvent(-1, "AddCancelClick")
  4458.         GUISetState(@SW_SHOW)
  4459.     EndIf
  4460. EndFunc
  4461. Func ADDSAVECLICK()
  4462.     If _GUICTRLLISTBOX_FINDSTRING($LIST, GUICtrlRead($NAME), True) = -1 Then
  4463.         $INVAL = VALUES()
  4464.         IniWrite($FILE, "NPC", GUICtrlRead($NAME), $INVAL)
  4465.         _GUICTRLLISTBOX_ADDSTRING($LIST, GUICtrlRead($NAME))
  4466.         GUISetState(@SW_ENABLE, $MAIN)
  4467.         GUIDelete($ADD)
  4468.     Else
  4469.         GUICtrlSetState($ERROR, $GUI_SHOW)
  4470.         Sleep(1000)
  4471.         GUICtrlSetState($ERROR, $GUI_HIDE)
  4472.     EndIf
  4473. EndFunc
  4474. Func ADDCANCELCLICK()
  4475.     GUISetState(@SW_ENABLE, $MAIN)
  4476.     GUIDelete($ADD)
  4477. EndFunc
  4478. Func REMOVECLICK()
  4479.     $INDEX = _GUICTRLLISTBOX_GETCURSEL($LIST)
  4480.     If $INDEX = -1 Then
  4481.         GUISetState(@SW_DISABLE, $MAIN)
  4482.         Global $REMOVE = GUICreate("Remove", 190, 70, $POSMAIN[0] + 5, $POSMAIN[1] + 115, $STYLE1, $STYLE2, $MAIN)
  4483.         GUISetIcon($EXE, -7)
  4484.         GUISetOnEvent($GUI_EVENT_CLOSE, "RemoveClose")
  4485.         Global $MESSAGE = GUICtrlCreateLabel("Select a NPC from the list first!", 0, 10, 190, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
  4486.         Global $OK = GUICtrlCreateButton("Ok", 65, 40, 60, 20, BitOR($BS_ICON, $WS_GROUP))
  4487.         GUICtrlSetImage(-1, $EXE, -8, 0)
  4488.         GUICtrlSetTip(-1, "Ok")
  4489.         GUICtrlSetOnEvent(-1, "RemoveClose")
  4490.         GUISetState(@SW_SHOW)
  4491.     Else
  4492.         $KEY = _GUICTRLLISTBOX_GETTEXT($LIST, $INDEX)
  4493.         IniDelete($FILE, "NPC", $KEY)
  4494.         _GUICTRLLISTBOX_DELETESTRING($LIST, $INDEX)
  4495.     EndIf
  4496. EndFunc
  4497. Func REMOVECLOSE()
  4498.     GUISetState(@SW_ENABLE, $MAIN)
  4499.     GUIDelete($REMOVE)
  4500. EndFunc
  4501. Func OPENCLICK()
  4502.     $INDEX = _GUICTRLLISTBOX_GETCURSEL($LIST)
  4503.     $POPED = POPED()
  4504.     If $INDEX = -1 Then
  4505.         GUISetState(@SW_DISABLE, $MAIN)
  4506.         Global $OPEN = GUICreate("Open", 190, 70, $POSMAIN[0] + 5, $POSMAIN[1] + 115, $STYLE1, $STYLE2, $MAIN)
  4507.         GUISetIcon($EXE, -13)
  4508.         GUISetOnEvent($GUI_EVENT_CLOSE, "OpenClose")
  4509.         Global $MESSAGE = GUICtrlCreateLabel("Select a NPC from the list first!", 0, 10, 190, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
  4510.         Global $OK = GUICtrlCreateButton("Ok", 65, 40, 60, 20, BitOR($BS_ICON, $WS_GROUP))
  4511.         GUICtrlSetImage(-1, $EXE, -8, 0)
  4512.         GUICtrlSetTip(-1, "Ok")
  4513.         GUICtrlSetOnEvent(-1, "OpenClose")
  4514.         GUISetState(@SW_SHOW)
  4515.     ElseIf $POPED <> 0 Then
  4516.         GUISetState(@SW_DISABLE, $MAIN)
  4517.         Global $OPEN = GUICreate("Open", 190, 70, $POSMAIN[0] + 5, $POSMAIN[1] + 115, $STYLE1, $STYLE2, $MAIN)
  4518.         GUISetIcon($EXE, -13)
  4519.         GUISetOnEvent($GUI_EVENT_CLOSE, "OpenClose")
  4520.         Global $MESSAGE = GUICtrlCreateLabel("Close the NPC in the game first!", 0, 10, 190, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
  4521.         Global $OK = GUICtrlCreateButton("Ok", 65, 40, 60, 20, BitOR($BS_ICON, $WS_GROUP))
  4522.         GUICtrlSetImage(-1, $EXE, -8, 0)
  4523.         GUICtrlSetTip(-1, "Ok")
  4524.         GUICtrlSetOnEvent(-1, "OpenClose")
  4525.         GUISetState(@SW_SHOW)
  4526.     ElseIf $POPED = 0 Then
  4527.         $KEY = _GUICTRLLISTBOX_GETTEXT($LIST, $INDEX)
  4528.         $OUTVAL = StringSplit(IniRead($FILE, "NPC", $KEY, "abc,0,0,0"), ",", 2)
  4529.         _MEMORYWRITE($BASEADDRESS + $A, $MEMORY, $OUTVAL[0], "CHAR[" & StringLen($OUTVAL[0]) & "]")
  4530.         _MEMORYWRITE($BASEADDRESS + $B, $MEMORY, $OUTVAL[1], "DWORD")
  4531.         _MEMORYWRITE($BASEADDRESS + $C, $MEMORY, $OUTVAL[2], "DWORD")
  4532.         _MEMORYWRITE($BASEADDRESS + $D, $MEMORY, $OUTVAL[3], "DWORD")
  4533.         _MEMORYWRITE($BASEADDRESS + $E, $MEMORY, $OUTVAL[3], "DWORD")
  4534.         _MEMORYWRITE($BASEADDRESS + $F, $MEMORY, 100, "DWORD")
  4535.         _MEMORYWRITE($BASEADDRESS + $G, $MEMORY, $OUTVAL[3], "DWORD")
  4536.         WinActivate($GAME)
  4537.     EndIf
  4538. EndFunc
  4539. Func OPENCLOSE()
  4540.     GUISetState(@SW_ENABLE, $MAIN)
  4541.     GUIDelete($OPEN)
  4542. EndFunc
  4543. Func FAVOURITSCLICK()
  4544.     $RESULT = IniReadSection($FILE, "FAV")
  4545.     If Not IsArray($RESULT) Then
  4546.         GUISetState(@SW_DISABLE, $MAIN)
  4547.         Global $FAVOURITES = GUICreate("Favourits", 190, 70, $POSMAIN[0] + 5, $POSMAIN[1] + 115, $STYLE1, $STYLE2, $MAIN)
  4548.         GUISetIcon($EXE, -10)
  4549.         GUISetOnEvent($GUI_EVENT_CLOSE, "FavouritesClose")
  4550.         Global $MESSAGE = GUICtrlCreateLabel("Compose your favourits list first!", 0, 10, 190, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
  4551.         Global $OK = GUICtrlCreateButton("Ok", 65, 40, 60, 20, BitOR($BS_ICON, $WS_GROUP))
  4552.         GUICtrlSetImage(-1, $EXE, -8, 0)
  4553.         GUICtrlSetTip(-1, "Ok")
  4554.         GUICtrlSetOnEvent(-1, "FavouritesClose")
  4555.         GUISetState(@SW_SHOW)
  4556.     Else
  4557.         GUISetState(@SW_HIDE, $MAIN)
  4558.         Global $FAVOURITES = GUICreate("Favourites", 150, 30, $POSMAIN[0], $POSMAIN[1], $STYLE1, $STYLE2, $MAIN)
  4559.         GUISetIcon($EXE, -10)
  4560.         GUISetOnEvent($GUI_EVENT_CLOSE, "FavouritesClose")
  4561.         Global $FAV1 = GUICtrlCreateButton("1", 0, 0, 30, 30, $WS_GROUP)
  4562.         GUICtrlSetOnEvent(-1, "Fav1Click")
  4563.         GUICtrlSetTip(-1, $RESULT[1][0])
  4564.         Global $FAV2 = GUICtrlCreateButton("2", 30, 0, 30, 30, $WS_GROUP)
  4565.         GUICtrlSetOnEvent(-1, "Fav2Click")
  4566.         GUICtrlSetTip(-1, $RESULT[2][0])
  4567.         Global $FAV3 = GUICtrlCreateButton("3", 60, 0, 30, 30, $WS_GROUP)
  4568.         GUICtrlSetOnEvent(-1, "Fav3Click")
  4569.         GUICtrlSetTip(-1, $RESULT[3][0])
  4570.         Global $FAV4 = GUICtrlCreateButton("4", 90, 0, 30, 30, $WS_GROUP)
  4571.         GUICtrlSetOnEvent(-1, "Fav4Click")
  4572.         GUICtrlSetTip(-1, $RESULT[4][0])
  4573.         Global $FAV5 = GUICtrlCreateButton("5", 120, 0, 30, 30, $WS_GROUP)
  4574.         GUICtrlSetOnEvent(-1, "Fav5Click")
  4575.         GUICtrlSetTip(-1, $RESULT[5][0])
  4576.         GUISetState(@SW_SHOW)
  4577.     EndIf
  4578. EndFunc
  4579. Func FAVOURITESCLOSE()
  4580.     GUISetState(@SW_SHOW, $MAIN)
  4581.     GUISetState(@SW_ENABLE, $MAIN)
  4582.     GUIDelete($FAVOURITES)
  4583. EndFunc
  4584. Func SETTINGSCLICK()
  4585.     GUISetState(@SW_DISABLE, $MAIN)
  4586.     Global $SETTINGS = GUICreate("Settings", 190, 260, $POSMAIN[0] + 5, $POSMAIN[1] + 20, $STYLE1, $STYLE2, $MAIN)
  4587.     GUISetIcon($EXE, -11)
  4588.     GUISetOnEvent($GUI_EVENT_CLOSE, "SettingsCancelClick")
  4589.     Global $ID = GUICtrlCreateGroup("Client", 5, 5, 180, 50)
  4590.     Global $ICON0 = GUICtrlCreateIcon($EXE, -5, 15, 29, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
  4591.     Global $LABEL1 = GUICtrlCreateLabel("ID: ", 35, 25, 20, 20, $SS_CENTERIMAGE)
  4592.     Global $LABEL2 = GUICtrlCreateLabel($CLIENT, 55, 25, 120, 20, BitOR($SS_RIGHT, $SS_CENTERIMAGE))
  4593.     GUICtrlCreateGroup("", -99, -99, 1, 1)
  4594.     Global $FAVS = GUICtrlCreateGroup("Favourits", 5, 65, 181, 151)
  4595.     Global $LABEL3 = GUICtrlCreateLabel("Enter your favourit NPC's labels :", 15, 85, 160, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
  4596.     Global $ICON1 = GUICtrlCreateIcon($EXE, -12, 15, 109, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
  4597.     Global $ICON2 = GUICtrlCreateIcon($EXE, -12, 15, 129, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
  4598.     Global $ICON3 = GUICtrlCreateIcon($EXE, -12, 15, 149, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
  4599.     Global $ICON4 = GUICtrlCreateIcon($EXE, -12, 15, 169, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
  4600.     Global $ICON5 = GUICtrlCreateIcon($EXE, -12, 15, 189, 16, 16, BitOR($SS_NOTIFY, $WS_GROUP))
  4601.     Global $LABEL4 = GUICtrlCreateLabel("1", 35, 105, 10, 20, $SS_CENTERIMAGE)
  4602.     Global $LABEL5 = GUICtrlCreateLabel("2", 35, 125, 10, 20, $SS_CENTERIMAGE)
  4603.     Global $LABEL6 = GUICtrlCreateLabel("5", 35, 185, 10, 20, $SS_CENTERIMAGE)
  4604.     Global $LABEL7 = GUICtrlCreateLabel("4", 35, 165, 10, 20, $SS_CENTERIMAGE)
  4605.     Global $LABEL8 = GUICtrlCreateLabel("3", 35, 145, 10, 20, $SS_CENTERIMAGE)
  4606.     Global $INPUT1 = GUICtrlCreateInput("", 45, 105, 130, 20)
  4607.     GUICtrlSetLimit(-1, 20)
  4608.     Global $INPUT2 = GUICtrlCreateInput("", 45, 125, 130, 20)
  4609.     GUICtrlSetLimit(-1, 20)
  4610.     Global $INPUT3 = GUICtrlCreateInput("", 45, 145, 130, 20)
  4611.     GUICtrlSetLimit(-1, 20)
  4612.     Global $INPUT4 = GUICtrlCreateInput("", 45, 165, 130, 20)
  4613.     GUICtrlSetLimit(-1, 20)
  4614.     Global $INPUT5 = GUICtrlCreateInput("", 45, 185, 130, 20)
  4615.     GUICtrlSetLimit(-1, 20)
  4616.     Global $ERROR1 = GUICtrlCreateLabel("Invalid...", 15, 85, 160, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
  4617.     GUICtrlSetState(-1, $GUI_HIDE)
  4618.     Global $ERROR2 = GUICtrlCreateLabel("Incomplete...", 15, 85, 160, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
  4619.     GUICtrlSetState(-1, $GUI_HIDE)
  4620.     $RESULT = IniReadSection($FILE, "FAV")
  4621.     If IsArray($RESULT) Then
  4622.         GUICtrlSetData($INPUT1, $RESULT[1][0])
  4623.         GUICtrlSetData($INPUT2, $RESULT[2][0])
  4624.         GUICtrlSetData($INPUT3, $RESULT[3][0])
  4625.         GUICtrlSetData($INPUT4, $RESULT[4][0])
  4626.         GUICtrlSetData($INPUT5, $RESULT[5][0])
  4627.     EndIf
  4628.     GUICtrlCreateGroup("", -99, -99, 1, 1)
  4629.     Global $SAVE = GUICtrlCreateButton("Save", 30, 230, 60, 20, BitOR($BS_ICON, $WS_GROUP))
  4630.     GUICtrlSetImage(-1, $EXE, -8, 0)
  4631.     GUICtrlSetTip(-1, "Save")
  4632.     GUICtrlSetOnEvent(-1, "SettingsSaveClick")
  4633.     Global $CANCEL = GUICtrlCreateButton("Cancel", 100, 230, 60, 20, BitOR($BS_ICON, $WS_GROUP))
  4634.     GUICtrlSetImage(-1, $EXE, -9, 0)
  4635.     GUICtrlSetTip(-1, "Cancel")
  4636.     GUICtrlSetOnEvent(-1, "SettingsCancelClick")
  4637.     GUISetState(@SW_SHOW)
  4638. EndFunc
  4639. Func SETTINGSSAVECLICK()
  4640.     $1 = GUICtrlRead($INPUT1)
  4641.     $2 = GUICtrlRead($INPUT2)
  4642.     $3 = GUICtrlRead($INPUT3)
  4643.     $4 = GUICtrlRead($INPUT4)
  4644.     $5 = GUICtrlRead($INPUT5)
  4645.     $11 = IniRead($FILE, "NPC", $1, "")
  4646.     $22 = IniRead($FILE, "NPC", $2, "")
  4647.     $33 = IniRead($FILE, "NPC", $3, "")
  4648.     $44 = IniRead($FILE, "NPC", $4, "")
  4649.     $55 = IniRead($FILE, "NPC", $5, "")
  4650.     Select
  4651.         Case $1 = "" Or $2 = "" Or $3 = "" Or $4 = "" Or $5 = ""
  4652.             GUICtrlSetState($ERROR2, $GUI_SHOW)
  4653.             Sleep(1000)
  4654.             GUICtrlSetState($ERROR2, $GUI_HIDE)
  4655.         Case $11 = "" Or $22 = "" Or $33 = "" Or $44 = "" Or $55 = ""
  4656.             GUICtrlSetState($ERROR1, $GUI_SHOW)
  4657.             Sleep(1000)
  4658.             GUICtrlSetState($ERROR1, $GUI_HIDE)
  4659.         Case Else
  4660.             IniWrite($FILE, "FAV", GUICtrlRead($INPUT1), IniRead($FILE, "NPC", GUICtrlRead($INPUT1), 0))
  4661.             IniWrite($FILE, "FAV", GUICtrlRead($INPUT2), IniRead($FILE, "NPC", GUICtrlRead($INPUT2), 0))
  4662.             IniWrite($FILE, "FAV", GUICtrlRead($INPUT3), IniRead($FILE, "NPC", GUICtrlRead($INPUT3), 0))
  4663.             IniWrite($FILE, "FAV", GUICtrlRead($INPUT4), IniRead($FILE, "NPC", GUICtrlRead($INPUT4), 0))
  4664.             IniWrite($FILE, "FAV", GUICtrlRead($INPUT5), IniRead($FILE, "NPC", GUICtrlRead($INPUT5), 0))
  4665.             GUISetState(@SW_ENABLE, $MAIN)
  4666.             GUIDelete($SETTINGS)
  4667.     EndSelect
  4668. EndFunc
  4669. Func SETTINGSCANCELCLICK()
  4670.     GUISetState(@SW_ENABLE, $MAIN)
  4671.     GUIDelete($SETTINGS)
  4672. EndFunc
  4673. Func SHOWHIDECLICK()
  4674.     If BitAND(WinGetState($TITLE), 2) Then
  4675.         GUISetState(@SW_HIDE, $MAIN)
  4676.         WinActivate($GAME)
  4677.     Else
  4678.         GUISetState(@SW_SHOW, $MAIN)
  4679.     EndIf
  4680. EndFunc
  4681. Func CLOSE()
  4682.     _MEMORYCLOSE($MEMORY)
  4683.     Exit
  4684. EndFunc
  4685. Func VALUES()
  4686.     $RET = ""
  4687.     $ADDRESS = "0x" & Hex($BASEADDRESS + $A)
  4688.     Do
  4689.         $BYTE = _MEMORYREAD($ADDRESS, $MEMORY, "BYTE")
  4690.         If $BYTE <> 0 Then $RET &= Chr($BYTE)
  4691.         $ADDRESS = "0x" & Hex($ADDRESS + 1)
  4692.     Until $BYTE = 0
  4693.     $RET &= ","
  4694.     $RET &= _MEMORYREAD($BASEADDRESS + $B, $MEMORY, "DWORD")
  4695.     $RET &= ","
  4696.     $RET &= _MEMORYREAD($BASEADDRESS + $C, $MEMORY, "DWORD")
  4697.     $RET &= ","
  4698.     $RET &= _MEMORYREAD($BASEADDRESS + $G, $MEMORY, "DWORD")
  4699.     Return $RET
  4700. EndFunc
  4701. Func POPED()
  4702.     $VALUE = _MEMORYREAD($BASEADDRESS + $F, $MEMORY, "DWORD")
  4703.     If $VALUE = 100 Then Return 1
  4704.     If $VALUE = 0 Then Return 0
  4705.     If $VALUE <> 100 And $VALUE <> 0 Then Return -1
  4706. EndFunc
  4707. Func FAV1CLICK()
  4708.     If Not POPED() Then
  4709.         $RESULT = IniReadSection($FILE, "FAV")
  4710.         If IsArray($RESULT) Then
  4711.             $KEY = $RESULT[1][0]
  4712.             $OUTVAL = StringSplit(IniRead($FILE, "NPC", $KEY, "abc,0,0,0"), ",", 2)
  4713.             _MEMORYWRITE($BASEADDRESS + $A, $MEMORY, $OUTVAL[0], "CHAR[" & StringLen($OUTVAL[0]) & "]")
  4714.             _MEMORYWRITE($BASEADDRESS + $B, $MEMORY, $OUTVAL[1], "DWORD")
  4715.             _MEMORYWRITE($BASEADDRESS + $C, $MEMORY, $OUTVAL[2], "DWORD")
  4716.             _MEMORYWRITE($BASEADDRESS + $D, $MEMORY, $OUTVAL[3], "DWORD")
  4717.             _MEMORYWRITE($BASEADDRESS + $E, $MEMORY, $OUTVAL[3], "DWORD")
  4718.             _MEMORYWRITE($BASEADDRESS + $F, $MEMORY, 100, "DWORD")
  4719.             _MEMORYWRITE($BASEADDRESS + $G, $MEMORY, $OUTVAL[3], "DWORD")
  4720.         EndIf
  4721.     EndIf
  4722.     WinActivate($GAME)
  4723. EndFunc
  4724. Func FAV2CLICK()
  4725.     If Not POPED() Then
  4726.         $RESULT = IniReadSection($FILE, "FAV")
  4727.         If IsArray($RESULT) Then
  4728.             $KEY = $RESULT[2][0]
  4729.             $OUTVAL = StringSplit(IniRead($FILE, "NPC", $KEY, "abc,0,0,0"), ",", 2)
  4730.             _MEMORYWRITE($BASEADDRESS + $A, $MEMORY, $OUTVAL[0], "CHAR[" & StringLen($OUTVAL[0]) & "]")
  4731.             _MEMORYWRITE($BASEADDRESS + $B, $MEMORY, $OUTVAL[1], "DWORD")
  4732.             _MEMORYWRITE($BASEADDRESS + $C, $MEMORY, $OUTVAL[2], "DWORD")
  4733.             _MEMORYWRITE($BASEADDRESS + $D, $MEMORY, $OUTVAL[3], "DWORD")
  4734.             _MEMORYWRITE($BASEADDRESS + $E, $MEMORY, $OUTVAL[3], "DWORD")
  4735.             _MEMORYWRITE($BASEADDRESS + $F, $MEMORY, 100, "DWORD")
  4736.             _MEMORYWRITE($BASEADDRESS + $G, $MEMORY, $OUTVAL[3], "DWORD")
  4737.         EndIf
  4738.     EndIf
  4739.     WinActivate($GAME)
  4740. EndFunc
  4741. Func FAV3CLICK()
  4742.     If Not POPED() Then
  4743.         $RESULT = IniReadSection($FILE, "FAV")
  4744.         If IsArray($RESULT) Then
  4745.             $KEY = $RESULT[3][0]
  4746.             $OUTVAL = StringSplit(IniRead($FILE, "NPC", $KEY, "abc,0,0,0"), ",", 2)
  4747.             _MEMORYWRITE($BASEADDRESS + $A, $MEMORY, $OUTVAL[0], "CHAR[" & StringLen($OUTVAL[0]) & "]")
  4748.             _MEMORYWRITE($BASEADDRESS + $B, $MEMORY, $OUTVAL[1], "DWORD")
  4749.             _MEMORYWRITE($BASEADDRESS + $C, $MEMORY, $OUTVAL[2], "DWORD")
  4750.             _MEMORYWRITE($BASEADDRESS + $D, $MEMORY, $OUTVAL[3], "DWORD")
  4751.             _MEMORYWRITE($BASEADDRESS + $E, $MEMORY, $OUTVAL[3], "DWORD")
  4752.             _MEMORYWRITE($BASEADDRESS + $F, $MEMORY, 100, "DWORD")
  4753.             _MEMORYWRITE($BASEADDRESS + $G, $MEMORY, $OUTVAL[3], "DWORD")
  4754.         EndIf
  4755.     EndIf
  4756.     WinActivate($GAME)
  4757. EndFunc
  4758. Func FAV4CLICK()
  4759.     If Not POPED() Then
  4760.         $RESULT = IniReadSection($FILE, "FAV")
  4761.         If IsArray($RESULT) Then
  4762.             $KEY = $RESULT[4][0]
  4763.             $OUTVAL = StringSplit(IniRead($FILE, "NPC", $KEY, "abc,0,0,0"), ",", 2)
  4764.             _MEMORYWRITE($BASEADDRESS + $A, $MEMORY, $OUTVAL[0], "CHAR[" & StringLen($OUTVAL[0]) & "]")
  4765.             _MEMORYWRITE($BASEADDRESS + $B, $MEMORY, $OUTVAL[1], "DWORD")
  4766.             _MEMORYWRITE($BASEADDRESS + $C, $MEMORY, $OUTVAL[2], "DWORD")
  4767.             _MEMORYWRITE($BASEADDRESS + $D, $MEMORY, $OUTVAL[3], "DWORD")
  4768.             _MEMORYWRITE($BASEADDRESS + $E, $MEMORY, $OUTVAL[3], "DWORD")
  4769.             _MEMORYWRITE($BASEADDRESS + $F, $MEMORY, 100, "DWORD")
  4770.             _MEMORYWRITE($BASEADDRESS + $G, $MEMORY, $OUTVAL[3], "DWORD")
  4771.         EndIf
  4772.     EndIf
  4773.     WinActivate($GAME)
  4774. EndFunc
  4775. Func FAV5CLICK()
  4776.     If Not POPED() Then
  4777.         $RESULT = IniReadSection($FILE, "FAV")
  4778.         If IsArray($RESULT) Then
  4779.             $KEY = $RESULT[5][0]
  4780.             $OUTVAL = StringSplit(IniRead($FILE, "NPC", $KEY, "abc,0,0,0"), ",", 2)
  4781.             _MEMORYWRITE($BASEADDRESS + $A, $MEMORY, $OUTVAL[0], "CHAR[" & StringLen($OUTVAL[0]) & "]")
  4782.             _MEMORYWRITE($BASEADDRESS + $B, $MEMORY, $OUTVAL[1], "DWORD")
  4783.             _MEMORYWRITE($BASEADDRESS + $C, $MEMORY, $OUTVAL[2], "DWORD")
  4784.             _MEMORYWRITE($BASEADDRESS + $D, $MEMORY, $OUTVAL[3], "DWORD")
  4785.             _MEMORYWRITE($BASEADDRESS + $E, $MEMORY, $OUTVAL[3], "DWORD")
  4786.             _MEMORYWRITE($BASEADDRESS + $F, $MEMORY, 100, "DWORD")
  4787.             _MEMORYWRITE($BASEADDRESS + $G, $MEMORY, $OUTVAL[3], "DWORD")
  4788.         EndIf
  4789.     EndIf
  4790.     WinActivate($GAME)
  4791. EndFunc
  4792.  
  4793. ; DeTokenise by myAut2Exe >The Open Source AutoIT/AutoHotKey script decompiler< 2.10 build(151)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement