Advertisement
Guest User

Untitled

a guest
Jun 19th, 2017
1,131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 257.33 KB | None | 0 0
  1. #Region
  2. #AutoIt3Wrapper_Version=beta
  3. #AutoIt3Wrapper_Outfile=..\Binary\SipCore.exe
  4. #AutoIt3Wrapper_res_requestedExecutionLevel=requireAdministrator
  5. #AutoIt3Wrapper_Add_Constants=n
  6. #EndRegion
  7. Global Const $FC_NOOVERWRITE = 0
  8. Global Const $FC_OVERWRITE = 1
  9. Global Const $FT_MODIFIED = 0
  10. Global Const $FT_CREATED = 1
  11. Global Const $FT_ACCESSED = 2
  12. Global Const $FO_READ = 0
  13. Global Const $FO_APPEND = 1
  14. Global Const $FO_OVERWRITE = 2
  15. Global Const $FO_BINARY = 16
  16. Global Const $FO_UNICODE = 32
  17. Global Const $FO_UTF16_LE = 32
  18. Global Const $FO_UTF16_BE = 64
  19. Global Const $FO_UTF8 = 128
  20. Global Const $FO_UTF8_NOBOM = 256
  21. Global Const $EOF = -1
  22. Global Const $FD_FILEMUSTEXIST = 1
  23. Global Const $FD_PATHMUSTEXIST = 2
  24. Global Const $FD_MULTISELECT = 4
  25. Global Const $FD_PROMPTCREATENEW = 8
  26. Global Const $FD_PROMPTOVERWRITE = 16
  27. Global Const $CREATE_NEW = 1
  28. Global Const $CREATE_ALWAYS = 2
  29. Global Const $OPEN_EXISTING = 3
  30. Global Const $OPEN_ALWAYS = 4
  31. Global Const $TRUNCATE_EXISTING = 5
  32. Global Const $INVALID_SET_FILE_POINTER = -1
  33. Global Const $FILE_BEGIN = 0
  34. Global Const $FILE_CURRENT = 1
  35. Global Const $FILE_END = 2
  36. Global Const $FILE_ATTRIBUTE_READONLY = 1
  37. Global Const $FILE_ATTRIBUTE_HIDDEN = 2
  38. Global Const $FILE_ATTRIBUTE_SYSTEM = 4
  39. Global Const $FILE_ATTRIBUTE_DIRECTORY = 16
  40. Global Const $FILE_ATTRIBUTE_ARCHIVE = 32
  41. Global Const $FILE_ATTRIBUTE_DEVICE = 64
  42. Global Const $FILE_ATTRIBUTE_NORMAL = 128
  43. Global Const $FILE_ATTRIBUTE_TEMPORARY = 256
  44. Global Const $FILE_ATTRIBUTE_SPARSE_FILE = 512
  45. Global Const $FILE_ATTRIBUTE_REPARSE_POINT = 1024
  46. Global Const $FILE_ATTRIBUTE_COMPRESSED = 2048
  47. Global Const $FILE_ATTRIBUTE_OFFLINE = 4096
  48. Global Const $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
  49. Global Const $FILE_ATTRIBUTE_ENCRYPTED = 16384
  50. Global Const $FILE_SHARE_READ = 1
  51. Global Const $FILE_SHARE_WRITE = 2
  52. Global Const $FILE_SHARE_DELETE = 4
  53. Global Const $GENERIC_ALL = 268435456
  54. Global Const $GENERIC_EXECUTE = 536870912
  55. Global Const $GENERIC_WRITE = 1073741824
  56. Global Const $GENERIC_READ = -2147483648
  57. Func _FILECOUNTLINES($SFILEPATH)
  58. Local $HFILE = FileOpen($SFILEPATH, $FO_READ)
  59. If $HFILE = -1 Then Return SetError(1, 0, 0)
  60. Local $SFILECONTENT = StringStripWS(FileRead($HFILE), 2)
  61. FileClose($HFILE)
  62. Local $ATMP
  63. If StringInStr($SFILECONTENT, @LF) Then
  64. $ATMP = StringSplit(StringStripCR($SFILECONTENT), @LF)
  65. ElseIf StringInStr($SFILECONTENT, @CR) Then
  66. $ATMP = StringSplit($SFILECONTENT, @CR)
  67. Else
  68. If StringLen($SFILECONTENT) Then
  69. Return 1
  70. Else
  71. Return SetError(2, 0, 0)
  72. EndIf
  73. EndIf
  74. Return $ATMP[0]
  75. EndFunc
  76. Func _FILECREATE($SFILEPATH)
  77. Local $HOPENFILE = FileOpen($SFILEPATH, $FO_OVERWRITE)
  78. If $HOPENFILE = -1 Then Return SetError(1, 0, 0)
  79. Local $HWRITEFILE = FileWrite($HOPENFILE, "")
  80. FileClose($HOPENFILE)
  81. If $HWRITEFILE = -1 Then Return SetError(2, 0, 0)
  82. Return 1
  83. EndFunc
  84. Func _FILELISTTOARRAY($SPATH, $SFILTER = "*", $IFLAG = 0)
  85. Local $HSEARCH, $SFILE, $SFILELIST, $SDELIM = "|"
  86. $SPATH = StringRegExpReplace($SPATH, "[\\/]+\z", "") & "\"
  87. If Not FileExists($SPATH) Then Return SetError(1, 1, "")
  88. If StringRegExp($SFILTER, "[\\/:><\|]|(?s)\A\s*\z") Then Return SetError(2, 2, "")
  89. If NOT ($IFLAG = 0 Or $IFLAG = 1 Or $IFLAG = 2) Then Return SetError(3, 3, "")
  90. $HSEARCH = FileFindFirstFile($SPATH & $SFILTER)
  91. If @error Then Return SetError(4, 4, "")
  92. While 1
  93. $SFILE = FileFindNextFile($HSEARCH)
  94. If @error Then ExitLoop
  95. IF ($IFLAG + @extended = 2) Then ContinueLoop
  96. $SFILELIST &= $SDELIM & $SFILE
  97. WEnd
  98. FileClose($HSEARCH)
  99. If Not $SFILELIST Then Return SetError(4, 4, "")
  100. Return StringSplit(StringTrimLeft($SFILELIST, 1), "|")
  101. EndFunc
  102. Func _FILEPRINT($S_FILE, $I_SHOW = @SW_HIDE)
  103. Local $A_RET = DllCall("shell32.dll", "int", "ShellExecuteW", "hwnd", 0, "wstr", "print", "wstr", $S_FILE, "wstr", "", "wstr", "", "int", $I_SHOW)
  104. If @error Then Return SetError(@error, @extended, 0)
  105. If $A_RET[0] <= 32 Then Return SetError(10, $A_RET[0], 0)
  106. Return 1
  107. EndFunc
  108. Func _FILEREADTOARRAY($SFILEPATH, ByRef $AARRAY)
  109. Local $HFILE = FileOpen($SFILEPATH, $FO_READ)
  110. If $HFILE = -1 Then Return SetError(1, 0, 0)
  111. Local $AFILE = FileRead($HFILE, FileGetSize($SFILEPATH))
  112. If StringRight($AFILE, 1) = @LF Then $AFILE = StringTrimRight($AFILE, 1)
  113. If StringRight($AFILE, 1) = @CR Then $AFILE = StringTrimRight($AFILE, 1)
  114. FileClose($HFILE)
  115. If StringInStr($AFILE, @LF) Then
  116. $AARRAY = StringSplit(StringStripCR($AFILE), @LF)
  117. ElseIf StringInStr($AFILE, @CR) Then
  118. $AARRAY = StringSplit($AFILE, @CR)
  119. Else
  120. If StringLen($AFILE) Then
  121. Dim $AARRAY[2] = [1, $AFILE]
  122. Else
  123. Return SetError(2, 0, 0)
  124. EndIf
  125. EndIf
  126. Return 1
  127. EndFunc
  128. Func _FILEWRITEFROMARRAY($FILE, $A_ARRAY, $I_BASE = 0, $I_UBOUND = 0)
  129. If Not IsArray($A_ARRAY) Then Return SetError(2, 0, 0)
  130. Local $LAST = UBound($A_ARRAY) - 1
  131. If $I_UBOUND < 1 Or $I_UBOUND > $LAST Then $I_UBOUND = $LAST
  132. If $I_BASE < 0 Or $I_BASE > $LAST Then $I_BASE = 0
  133. Local $HFILE
  134. If IsString($FILE) Then
  135. $HFILE = FileOpen($FILE, $FO_OVERWRITE)
  136. Else
  137. $HFILE = $FILE
  138. EndIf
  139. If $HFILE = -1 Then Return SetError(1, 0, 0)
  140. Local $ERRORSAV = 0
  141. For $X = $I_BASE To $I_UBOUND
  142. If FileWrite($HFILE, $A_ARRAY[$X] & @CRLF) = 0 Then
  143. $ERRORSAV = 3
  144. ExitLoop
  145. EndIf
  146. Next
  147. If IsString($FILE) Then FileClose($HFILE)
  148. If $ERRORSAV Then Return SetError($ERRORSAV, 0, 0)
  149. Return 1
  150. EndFunc
  151. Func _FILEWRITELOG($SLOGPATH, $SLOGMSG, $IFLAG = -1)
  152. Local $IOPENMODE = $FO_APPEND
  153. Local $SDATENOW = @YEAR & "-" & @MON & "-" & @MDAY
  154. Local $STIMENOW = @HOUR & ":" & @MIN & ":" & @SEC
  155. Local $SMSG = $SDATENOW & " " & $STIMENOW & " : " & $SLOGMSG
  156. If $IFLAG <> -1 Then
  157. $SMSG &= @CRLF & FileRead($SLOGPATH)
  158. $IOPENMODE = $FO_OVERWRITE
  159. EndIf
  160. Local $HOPENFILE = FileOpen($SLOGPATH, $IOPENMODE)
  161. If $HOPENFILE = -1 Then Return SetError(1, 0, 0)
  162. Local $IWRITEFILE = FileWriteLine($HOPENFILE, $SMSG)
  163. Local $IRET = FileClose($HOPENFILE)
  164. If $IWRITEFILE = -1 Then Return SetError(2, $IRET, 0)
  165. Return $IRET
  166. EndFunc
  167. Func _FILEWRITETOLINE($SFILE, $ILINE, $STEXT, $FOVERWRITE = 0)
  168. If $ILINE <= 0 Then Return SetError(4, 0, 0)
  169. If Not IsString($STEXT) Then
  170. $STEXT = String($STEXT)
  171. If $STEXT = "" Then Return SetError(6, 0, 0)
  172. EndIf
  173. If $FOVERWRITE <> 0 And $FOVERWRITE <> 1 Then Return SetError(5, 0, 0)
  174. If Not FileExists($SFILE) Then Return SetError(2, 0, 0)
  175. Local $SREAD_FILE = FileRead($SFILE)
  176. Local $ASPLIT_FILE = StringSplit(StringStripCR($SREAD_FILE), @LF)
  177. If UBound($ASPLIT_FILE) < $ILINE Then Return SetError(1, 0, 0)
  178. Local $HFILE = FileOpen($SFILE, $FO_OVERWRITE)
  179. If $HFILE = -1 Then Return SetError(3, 0, 0)
  180. $SREAD_FILE = ""
  181. For $I = 1 To $ASPLIT_FILE[0]
  182. If $I = $ILINE Then
  183. If $FOVERWRITE = 1 Then
  184. If $STEXT <> "" Then $SREAD_FILE &= $STEXT & @CRLF
  185. Else
  186. $SREAD_FILE &= $STEXT & @CRLF & $ASPLIT_FILE[$I] & @CRLF
  187. EndIf
  188. ElseIf $I < $ASPLIT_FILE[0] Then
  189. $SREAD_FILE &= $ASPLIT_FILE[$I] & @CRLF
  190. ElseIf $I = $ASPLIT_FILE[0] Then
  191. $SREAD_FILE &= $ASPLIT_FILE[$I]
  192. EndIf
  193. Next
  194. FileWrite($HFILE, $SREAD_FILE)
  195. FileClose($HFILE)
  196. Return 1
  197. EndFunc
  198. Func _PATHFULL($SRELATIVEPATH, $SBASEPATH = @WorkingDir)
  199. If Not $SRELATIVEPATH Or $SRELATIVEPATH = "." Then Return $SBASEPATH
  200. Local $SFULLPATH = StringReplace($SRELATIVEPATH, "/", "\")
  201. Local Const $SFULLPATHCONST = $SFULLPATH
  202. Local $SPATH
  203. Local $BROOTONLY = StringLeft($SFULLPATH, 1) = "\" And StringMid($SFULLPATH, 2, 1) <> "\"
  204. For $I = 1 To 2
  205. $SPATH = StringLeft($SFULLPATH, 2)
  206. If $SPATH = "\\" Then
  207. $SFULLPATH = StringTrimLeft($SFULLPATH, 2)
  208. Local $NSERVERLEN = StringInStr($SFULLPATH, "\") - 1
  209. $SPATH = "\\" & StringLeft($SFULLPATH, $NSERVERLEN)
  210. $SFULLPATH = StringTrimLeft($SFULLPATH, $NSERVERLEN)
  211. ExitLoop
  212. ElseIf StringRight($SPATH, 1) = ":" Then
  213. $SFULLPATH = StringTrimLeft($SFULLPATH, 2)
  214. ExitLoop
  215. Else
  216. $SFULLPATH = $SBASEPATH & "\" & $SFULLPATH
  217. EndIf
  218. Next
  219. If $I = 3 Then Return ""
  220. If StringLeft($SFULLPATH, 1) <> "\" Then
  221. If StringLeft($SFULLPATHCONST, 2) = StringLeft($SBASEPATH, 2) Then
  222. $SFULLPATH = $SBASEPATH & "\" & $SFULLPATH
  223. Else
  224. $SFULLPATH = "\" & $SFULLPATH
  225. EndIf
  226. EndIf
  227. Local $ATEMP = StringSplit($SFULLPATH, "\")
  228. Local $APATHPARTS[$ATEMP[0]], $J = 0
  229. For $I = 2 To $ATEMP[0]
  230. If $ATEMP[$I] = ".." Then
  231. If $J Then $J -= 1
  232. ElseIf NOT ($ATEMP[$I] = "" And $I <> $ATEMP[0]) And $ATEMP[$I] <> "." Then
  233. $APATHPARTS[$J] = $ATEMP[$I]
  234. $J += 1
  235. EndIf
  236. Next
  237. $SFULLPATH = $SPATH
  238. If Not $BROOTONLY Then
  239. For $I = 0 To $J - 1
  240. $SFULLPATH &= "\" & $APATHPARTS[$I]
  241. Next
  242. Else
  243. $SFULLPATH &= $SFULLPATHCONST
  244. If StringInStr($SFULLPATH, "..") Then $SFULLPATH = _PATHFULL($SFULLPATH)
  245. EndIf
  246. While StringInStr($SFULLPATH, ".\")
  247. $SFULLPATH = StringReplace($SFULLPATH, ".\", "\")
  248. WEnd
  249. Return $SFULLPATH
  250. EndFunc
  251. Func _PATHGETRELATIVE($SFROM, $STO)
  252. If StringRight($SFROM, 1) <> "\" Then $SFROM &= "\"
  253. If StringRight($STO, 1) <> "\" Then $STO &= "\"
  254. If $SFROM = $STO Then Return SetError(1, 0, StringTrimRight($STO, 1))
  255. Local $ASFROM = StringSplit($SFROM, "\")
  256. Local $ASTO = StringSplit($STO, "\")
  257. If $ASFROM[1] <> $ASTO[1] Then Return SetError(2, 0, StringTrimRight($STO, 1))
  258. Local $I = 2
  259. Local $IDIFF = 1
  260. While 1
  261. If $ASFROM[$I] <> $ASTO[$I] Then
  262. $IDIFF = $I
  263. ExitLoop
  264. EndIf
  265. $I += 1
  266. WEnd
  267. $I = 1
  268. Local $SRELPATH = ""
  269. For $J = 1 To $ASTO[0]
  270. If $I >= $IDIFF Then
  271. $SRELPATH &= "\" & $ASTO[$I]
  272. EndIf
  273. $I += 1
  274. Next
  275. $SRELPATH = StringTrimLeft($SRELPATH, 1)
  276. $I = 1
  277. For $J = 1 To $ASFROM[0]
  278. If $I > $IDIFF Then
  279. $SRELPATH = "..\" & $SRELPATH
  280. EndIf
  281. $I += 1
  282. Next
  283. If StringRight($SRELPATH, 1) == "\" Then $SRELPATH = StringTrimRight($SRELPATH, 1)
  284. Return $SRELPATH
  285. EndFunc
  286. Func _PATHMAKE($SZDRIVE, $SZDIR, $SZFNAME, $SZEXT)
  287. If StringLen($SZDRIVE) Then
  288. If NOT (StringLeft($SZDRIVE, 2) = "\\") Then $SZDRIVE = StringLeft($SZDRIVE, 1) & ":"
  289. EndIf
  290. If StringLen($SZDIR) Then
  291. If NOT (StringRight($SZDIR, 1) = "\") And NOT (StringRight($SZDIR, 1) = "/") Then $SZDIR = $SZDIR & "\"
  292. EndIf
  293. If StringLen($SZEXT) Then
  294. If NOT (StringLeft($SZEXT, 1) = ".") Then $SZEXT = "." & $SZEXT
  295. EndIf
  296. Return $SZDRIVE & $SZDIR & $SZFNAME & $SZEXT
  297. EndFunc
  298. Func _PATHSPLIT($SZPATH, ByRef $SZDRIVE, ByRef $SZDIR, ByRef $SZFNAME, ByRef $SZEXT)
  299. Local $DRIVE = ""
  300. Local $DIR = ""
  301. Local $FNAME = ""
  302. Local $EXT = ""
  303. Local $POS
  304. Local $ARRAY[5]
  305. $ARRAY[0] = $SZPATH
  306. If StringMid($SZPATH, 2, 1) = ":" Then
  307. $DRIVE = StringLeft($SZPATH, 2)
  308. $SZPATH = StringTrimLeft($SZPATH, 2)
  309. ElseIf StringLeft($SZPATH, 2) = "\\" Then
  310. $SZPATH = StringTrimLeft($SZPATH, 2)
  311. $POS = StringInStr($SZPATH, "\")
  312. If $POS = 0 Then $POS = StringInStr($SZPATH, "/")
  313. If $POS = 0 Then
  314. $DRIVE = "\\" & $SZPATH
  315. $SZPATH = ""
  316. Else
  317. $DRIVE = "\\" & StringLeft($SZPATH, $POS - 1)
  318. $SZPATH = StringTrimLeft($SZPATH, $POS - 1)
  319. EndIf
  320. EndIf
  321. Local $NPOSFORWARD = StringInStr($SZPATH, "/", 0, -1)
  322. Local $NPOSBACKWARD = StringInStr($SZPATH, "\", 0, -1)
  323. If $NPOSFORWARD >= $NPOSBACKWARD Then
  324. $POS = $NPOSFORWARD
  325. Else
  326. $POS = $NPOSBACKWARD
  327. EndIf
  328. $DIR = StringLeft($SZPATH, $POS)
  329. $FNAME = StringRight($SZPATH, StringLen($SZPATH) - $POS)
  330. If StringLen($DIR) = 0 Then $FNAME = $SZPATH
  331. $POS = StringInStr($FNAME, ".", 0, -1)
  332. If $POS Then
  333. $EXT = StringRight($FNAME, StringLen($FNAME) - ($POS - 1))
  334. $FNAME = StringLeft($FNAME, $POS - 1)
  335. EndIf
  336. $SZDRIVE = $DRIVE
  337. $SZDIR = $DIR
  338. $SZFNAME = $FNAME
  339. $SZEXT = $EXT
  340. $ARRAY[1] = $DRIVE
  341. $ARRAY[2] = $DIR
  342. $ARRAY[3] = $FNAME
  343. $ARRAY[4] = $EXT
  344. Return $ARRAY
  345. EndFunc
  346. Func _REPLACESTRINGINFILE($SZFILENAME, $SZSEARCHSTRING, $SZREPLACESTRING, $FCASENESS = 0, $FOCCURANCE = 1)
  347. Local $IRETVAL = 0
  348. Local $NCOUNT, $SENDSWITH
  349. If StringInStr(FileGetAttrib($SZFILENAME), "R") Then Return SetError(6, 0, -1)
  350. Local $HFILE = FileOpen($SZFILENAME, $FO_READ)
  351. If $HFILE = -1 Then Return SetError(1, 0, -1)
  352. Local $S_TOTFILE = FileRead($HFILE, FileGetSize($SZFILENAME))
  353. If StringRight($S_TOTFILE, 2) = @CRLF Then
  354. $SENDSWITH = @CRLF
  355. ElseIf StringRight($S_TOTFILE, 1) = @CR Then
  356. $SENDSWITH = @CR
  357. ElseIf StringRight($S_TOTFILE, 1) = @LF Then
  358. $SENDSWITH = @LF
  359. Else
  360. $SENDSWITH = ""
  361. EndIf
  362. Local $AFILELINES = StringSplit(StringStripCR($S_TOTFILE), @LF)
  363. FileClose($HFILE)
  364. Local $HWRITEHANDLE = FileOpen($SZFILENAME, $FO_OVERWRITE)
  365. If $HWRITEHANDLE = -1 Then Return SetError(2, 0, -1)
  366. For $NCOUNT = 1 To $AFILELINES[0]
  367. If StringInStr($AFILELINES[$NCOUNT], $SZSEARCHSTRING, $FCASENESS) Then
  368. $AFILELINES[$NCOUNT] = StringReplace($AFILELINES[$NCOUNT], $SZSEARCHSTRING, $SZREPLACESTRING, 1 - $FOCCURANCE, $FCASENESS)
  369. $IRETVAL = $IRETVAL + 1
  370. If $FOCCURANCE = 0 Then
  371. $IRETVAL = 1
  372. ExitLoop
  373. EndIf
  374. EndIf
  375. Next
  376. For $NCOUNT = 1 To $AFILELINES[0] - 1
  377. If FileWriteLine($HWRITEHANDLE, $AFILELINES[$NCOUNT]) = 0 Then
  378. FileClose($HWRITEHANDLE)
  379. Return SetError(3, 0, -1)
  380. EndIf
  381. Next
  382. If $AFILELINES[$NCOUNT] <> "" Then FileWrite($HWRITEHANDLE, $AFILELINES[$NCOUNT] & $SENDSWITH)
  383. FileClose($HWRITEHANDLE)
  384. Return $IRETVAL
  385. EndFunc
  386. Func _TEMPFILE($S_DIRECTORYNAME = @TempDir, $S_FILEPREFIX = "~", $S_FILEEXTENSION = ".tmp", $I_RANDOMLENGTH = 7)
  387. If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @TempDir
  388. If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @ScriptDir
  389. If StringRight($S_DIRECTORYNAME, 1) <> "\" Then $S_DIRECTORYNAME = $S_DIRECTORYNAME & "\"
  390. Local $S_TEMPNAME
  391. Do
  392. $S_TEMPNAME = ""
  393. While StringLen($S_TEMPNAME) < $I_RANDOMLENGTH
  394. $S_TEMPNAME = $S_TEMPNAME & Chr(Random(97, 122, 1))
  395. WEnd
  396. $S_TEMPNAME = $S_DIRECTORYNAME & $S_FILEPREFIX & $S_TEMPNAME & $S_FILEEXTENSION
  397. Until Not FileExists($S_TEMPNAME)
  398. Return $S_TEMPNAME
  399. EndFunc
  400. Func _HEXTOSTRING($STRHEX)
  401. If StringLeft($STRHEX, 2) = "0x" Then Return BinaryToString($STRHEX)
  402. Return BinaryToString("0x" & $STRHEX)
  403. EndFunc
  404. Func _STRINGBETWEEN($S_STRING, $S_START, $S_END, $V_CASE = -1)
  405. Local $S_CASE = ""
  406. If $V_CASE = Default Or $V_CASE = -1 Then $S_CASE = "(?i)"
  407. Local $S_PATTERN_ESCAPE = "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)"
  408. $S_START = StringRegExpReplace($S_START, $S_PATTERN_ESCAPE, "\\$1")
  409. $S_END = StringRegExpReplace($S_END, $S_PATTERN_ESCAPE, "\\$1")
  410. If $S_START = "" Then $S_START = "\A"
  411. If $S_END = "" Then $S_END = "\z"
  412. Local $A_RET = StringRegExp($S_STRING, "(?s)" & $S_CASE & $S_START & "(.*?)" & $S_END, 3)
  413. If @error Then Return SetError(1, 0, 0)
  414. Return $A_RET
  415. EndFunc
  416. Func _STRINGENCRYPT($I_ENCRYPT, $S_ENCRYPTTEXT, $S_ENCRYPTPASSWORD, $I_ENCRYPTLEVEL = 1)
  417. If $I_ENCRYPT <> 0 And $I_ENCRYPT <> 1 Then
  418. SetError(1, 0, "")
  419. ElseIf $S_ENCRYPTTEXT = "" Or $S_ENCRYPTPASSWORD = "" Then
  420. SetError(1, 0, "")
  421. Else
  422. If Number($I_ENCRYPTLEVEL) <= 0 Or Int($I_ENCRYPTLEVEL) <> $I_ENCRYPTLEVEL Then $I_ENCRYPTLEVEL = 1
  423. Local $V_ENCRYPTMODIFIED
  424. Local $I_ENCRYPTCOUNTH
  425. Local $I_ENCRYPTCOUNTG
  426. Local $V_ENCRYPTSWAP
  427. Local $AV_ENCRYPTBOX[256][2]
  428. Local $I_ENCRYPTCOUNTA
  429. Local $I_ENCRYPTCOUNTB
  430. Local $I_ENCRYPTCOUNTC
  431. Local $I_ENCRYPTCOUNTD
  432. Local $I_ENCRYPTCOUNTE
  433. Local $V_ENCRYPTCIPHER
  434. Local $V_ENCRYPTCIPHERBY
  435. If $I_ENCRYPT = 1 Then
  436. For $I_ENCRYPTCOUNTF = 0 To $I_ENCRYPTLEVEL Step 1
  437. $I_ENCRYPTCOUNTG = ""
  438. $I_ENCRYPTCOUNTH = ""
  439. $V_ENCRYPTMODIFIED = ""
  440. For $I_ENCRYPTCOUNTG = 1 To StringLen($S_ENCRYPTTEXT)
  441. If $I_ENCRYPTCOUNTH = StringLen($S_ENCRYPTPASSWORD) Then
  442. $I_ENCRYPTCOUNTH = 1
  443. Else
  444. $I_ENCRYPTCOUNTH += 1
  445. EndIf
  446. $V_ENCRYPTMODIFIED = $V_ENCRYPTMODIFIED & Chr(BitXOR(Asc(StringMid($S_ENCRYPTTEXT, $I_ENCRYPTCOUNTG, 1)), Asc(StringMid($S_ENCRYPTPASSWORD, $I_ENCRYPTCOUNTH, 1)), 255))
  447. Next
  448. $S_ENCRYPTTEXT = $V_ENCRYPTMODIFIED
  449. $I_ENCRYPTCOUNTA = ""
  450. $I_ENCRYPTCOUNTB = 0
  451. $I_ENCRYPTCOUNTC = ""
  452. $I_ENCRYPTCOUNTD = ""
  453. $I_ENCRYPTCOUNTE = ""
  454. $V_ENCRYPTCIPHERBY = ""
  455. $V_ENCRYPTCIPHER = ""
  456. $V_ENCRYPTSWAP = ""
  457. $AV_ENCRYPTBOX = ""
  458. Local $AV_ENCRYPTBOX[256][2]
  459. For $I_ENCRYPTCOUNTA = 0 To 255
  460. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1] = Asc(StringMid($S_ENCRYPTPASSWORD, Mod($I_ENCRYPTCOUNTA, StringLen($S_ENCRYPTPASSWORD)) + 1, 1))
  461. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] = $I_ENCRYPTCOUNTA
  462. Next
  463. For $I_ENCRYPTCOUNTA = 0 To 255
  464. $I_ENCRYPTCOUNTB = Mod(($I_ENCRYPTCOUNTB + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1]), 256)
  465. $V_ENCRYPTSWAP = $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]
  466. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] = $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0]
  467. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0] = $V_ENCRYPTSWAP
  468. Next
  469. For $I_ENCRYPTCOUNTA = 1 To StringLen($S_ENCRYPTTEXT)
  470. $I_ENCRYPTCOUNTC = Mod(($I_ENCRYPTCOUNTC + 1), 256)
  471. $I_ENCRYPTCOUNTD = Mod(($I_ENCRYPTCOUNTD + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0]), 256)
  472. $I_ENCRYPTCOUNTE = $AV_ENCRYPTBOX[Mod(($AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0] + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTD][0]), 256)][0]
  473. $V_ENCRYPTCIPHERBY = BitXOR(Asc(StringMid($S_ENCRYPTTEXT, $I_ENCRYPTCOUNTA, 1)), $I_ENCRYPTCOUNTE)
  474. $V_ENCRYPTCIPHER &= Hex($V_ENCRYPTCIPHERBY, 2)
  475. Next
  476. $S_ENCRYPTTEXT = $V_ENCRYPTCIPHER
  477. Next
  478. Else
  479. For $I_ENCRYPTCOUNTF = 0 To $I_ENCRYPTLEVEL Step 1
  480. $I_ENCRYPTCOUNTB = 0
  481. $I_ENCRYPTCOUNTC = ""
  482. $I_ENCRYPTCOUNTD = ""
  483. $I_ENCRYPTCOUNTE = ""
  484. $V_ENCRYPTCIPHERBY = ""
  485. $V_ENCRYPTCIPHER = ""
  486. $V_ENCRYPTSWAP = ""
  487. $AV_ENCRYPTBOX = ""
  488. Local $AV_ENCRYPTBOX[256][2]
  489. For $I_ENCRYPTCOUNTA = 0 To 255
  490. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1] = Asc(StringMid($S_ENCRYPTPASSWORD, Mod($I_ENCRYPTCOUNTA, StringLen($S_ENCRYPTPASSWORD)) + 1, 1))
  491. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] = $I_ENCRYPTCOUNTA
  492. Next
  493. For $I_ENCRYPTCOUNTA = 0 To 255
  494. $I_ENCRYPTCOUNTB = Mod(($I_ENCRYPTCOUNTB + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1]), 256)
  495. $V_ENCRYPTSWAP = $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]
  496. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] = $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0]
  497. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0] = $V_ENCRYPTSWAP
  498. Next
  499. For $I_ENCRYPTCOUNTA = 1 To StringLen($S_ENCRYPTTEXT) Step 2
  500. $I_ENCRYPTCOUNTC = Mod(($I_ENCRYPTCOUNTC + 1), 256)
  501. $I_ENCRYPTCOUNTD = Mod(($I_ENCRYPTCOUNTD + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0]), 256)
  502. $I_ENCRYPTCOUNTE = $AV_ENCRYPTBOX[Mod(($AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0] + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTD][0]), 256)][0]
  503. $V_ENCRYPTCIPHERBY = BitXOR(Dec(StringMid($S_ENCRYPTTEXT, $I_ENCRYPTCOUNTA, 2)), $I_ENCRYPTCOUNTE)
  504. $V_ENCRYPTCIPHER = $V_ENCRYPTCIPHER & Chr($V_ENCRYPTCIPHERBY)
  505. Next
  506. $S_ENCRYPTTEXT = $V_ENCRYPTCIPHER
  507. $I_ENCRYPTCOUNTG = ""
  508. $I_ENCRYPTCOUNTH = ""
  509. $V_ENCRYPTMODIFIED = ""
  510. For $I_ENCRYPTCOUNTG = 1 To StringLen($S_ENCRYPTTEXT)
  511. If $I_ENCRYPTCOUNTH = StringLen($S_ENCRYPTPASSWORD) Then
  512. $I_ENCRYPTCOUNTH = 1
  513. Else
  514. $I_ENCRYPTCOUNTH += 1
  515. EndIf
  516. $V_ENCRYPTMODIFIED &= Chr(BitXOR(Asc(StringMid($S_ENCRYPTTEXT, $I_ENCRYPTCOUNTG, 1)), Asc(StringMid($S_ENCRYPTPASSWORD, $I_ENCRYPTCOUNTH, 1)), 255))
  517. Next
  518. $S_ENCRYPTTEXT = $V_ENCRYPTMODIFIED
  519. Next
  520. EndIf
  521. Return $S_ENCRYPTTEXT
  522. EndIf
  523. EndFunc
  524. Func _STRINGEXPLODE($SSTRING, $SDELIMITER, $ILIMIT = 0)
  525. If $ILIMIT > 0 Then
  526. $SSTRING = StringReplace($SSTRING, $SDELIMITER, Chr(0), $ILIMIT)
  527. $SDELIMITER = Chr(0)
  528. ElseIf $ILIMIT < 0 Then
  529. Local $IINDEX = StringInStr($SSTRING, $SDELIMITER, 0, $ILIMIT)
  530. If $IINDEX Then
  531. $SSTRING = StringLeft($SSTRING, $IINDEX - 1)
  532. EndIf
  533. EndIf
  534. Return StringSplit($SSTRING, $SDELIMITER, 3)
  535. EndFunc
  536. Func _STRINGINSERT($S_STRING, $S_INSERTSTRING, $I_POSITION)
  537. Local $I_LENGTH, $S_START, $S_END
  538. If $S_STRING = "" OR (Not IsString($S_STRING)) Then
  539. Return SetError(1, 0, $S_STRING)
  540. ElseIf $S_INSERTSTRING = "" OR (Not IsString($S_STRING)) Then
  541. Return SetError(2, 0, $S_STRING)
  542. Else
  543. $I_LENGTH = StringLen($S_STRING)
  544. IF (Abs($I_POSITION) > $I_LENGTH) OR (Not IsInt($I_POSITION)) Then
  545. Return SetError(3, 0, $S_STRING)
  546. EndIf
  547. EndIf
  548. If $I_POSITION = 0 Then
  549. Return $S_INSERTSTRING & $S_STRING
  550. ElseIf $I_POSITION > 0 Then
  551. $S_START = StringLeft($S_STRING, $I_POSITION)
  552. $S_END = StringRight($S_STRING, $I_LENGTH - $I_POSITION)
  553. Return $S_START & $S_INSERTSTRING & $S_END
  554. ElseIf $I_POSITION < 0 Then
  555. $S_START = StringLeft($S_STRING, Abs($I_LENGTH + $I_POSITION))
  556. $S_END = StringRight($S_STRING, Abs($I_POSITION))
  557. Return $S_START & $S_INSERTSTRING & $S_END
  558. EndIf
  559. EndFunc
  560. Func _STRINGPROPER($S_STRING)
  561. Local $IX = 0
  562. Local $CAPNEXT = 1
  563. Local $S_NSTR = ""
  564. Local $S_CURCHAR
  565. For $IX = 1 To StringLen($S_STRING)
  566. $S_CURCHAR = StringMid($S_STRING, $IX, 1)
  567. Select
  568. Case $CAPNEXT = 1
  569. If StringRegExp($S_CURCHAR, "[a-zA-ZÀ-ÿšœžŸ]") Then
  570. $S_CURCHAR = StringUpper($S_CURCHAR)
  571. $CAPNEXT = 0
  572. EndIf
  573. Case Not StringRegExp($S_CURCHAR, "[a-zA-ZÀ-ÿšœžŸ]")
  574. $CAPNEXT = 1
  575. Case Else
  576. $S_CURCHAR = StringLower($S_CURCHAR)
  577. EndSelect
  578. $S_NSTR &= $S_CURCHAR
  579. Next
  580. Return $S_NSTR
  581. EndFunc
  582. Func _STRINGREPEAT($SSTRING, $IREPEATCOUNT)
  583. Local $SRESULT
  584. Select
  585. Case Not StringIsInt($IREPEATCOUNT)
  586. SetError(1)
  587. Return ""
  588. Case StringLen($SSTRING) < 1
  589. SetError(1)
  590. Return ""
  591. Case $IREPEATCOUNT <= 0
  592. SetError(1)
  593. Return ""
  594. Case Else
  595. For $ICOUNT = 1 To $IREPEATCOUNT
  596. $SRESULT &= $SSTRING
  597. Next
  598. Return $SRESULT
  599. EndSelect
  600. EndFunc
  601. Func _STRINGREVERSE($S_STRING)
  602. Local $I_LEN = StringLen($S_STRING)
  603. If $I_LEN < 1 Then Return SetError(1, 0, "")
  604. Local $T_CHARS = DllStructCreate("char[" & $I_LEN + 1 & "]")
  605. DllStructSetData($T_CHARS, 1, $S_STRING)
  606. Local $A_REV = DllCall("msvcrt.dll", "ptr:cdecl", "_strrev", "ptr", DllStructGetPtr($T_CHARS))
  607. If @error Or $A_REV[0] = 0 Then Return SetError(2, 0, "")
  608. Return DllStructGetData($T_CHARS, 1)
  609. EndFunc
  610. Func _STRINGTOHEX($STRCHAR)
  611. Return Hex(StringToBinary($STRCHAR))
  612. EndFunc
  613. Global Const $FW_DONTCARE = 0
  614. Global Const $FW_THIN = 100
  615. Global Const $FW_EXTRALIGHT = 200
  616. Global Const $FW_ULTRALIGHT = 200
  617. Global Const $FW_LIGHT = 300
  618. Global Const $FW_NORMAL = 400
  619. Global Const $FW_REGULAR = 400
  620. Global Const $FW_MEDIUM = 500
  621. Global Const $FW_SEMIBOLD = 600
  622. Global Const $FW_DEMIBOLD = 600
  623. Global Const $FW_BOLD = 700
  624. Global Const $FW_EXTRABOLD = 800
  625. Global Const $FW_ULTRABOLD = 800
  626. Global Const $FW_HEAVY = 900
  627. Global Const $FW_BLACK = 900
  628. Global Const $CF_EFFECTS = 256
  629. Global Const $CF_PRINTERFONTS = 2
  630. Global Const $CF_SCREENFONTS = 1
  631. Global Const $CF_NOSCRIPTSEL = 8388608
  632. Global Const $CF_INITTOLOGFONTSTRUCT = 64
  633. Global Const $LOGPIXELSX = 88
  634. Global Const $LOGPIXELSY = 90
  635. Global Const $ANSI_CHARSET = 0
  636. Global Const $BALTIC_CHARSET = 186
  637. Global Const $CHINESEBIG5_CHARSET = 136
  638. Global Const $DEFAULT_CHARSET = 1
  639. Global Const $EASTEUROPE_CHARSET = 238
  640. Global Const $GB2312_CHARSET = 134
  641. Global Const $GREEK_CHARSET = 161
  642. Global Const $HANGEUL_CHARSET = 129
  643. Global Const $MAC_CHARSET = 77
  644. Global Const $OEM_CHARSET = 255
  645. Global Const $RUSSIAN_CHARSET = 204
  646. Global Const $SHIFTJIS_CHARSET = 128
  647. Global Const $SYMBOL_CHARSET = 2
  648. Global Const $TURKISH_CHARSET = 162
  649. Global Const $VIETNAMESE_CHARSET = 163
  650. Global Const $OUT_CHARACTER_PRECIS = 2
  651. Global Const $OUT_DEFAULT_PRECIS = 0
  652. Global Const $OUT_DEVICE_PRECIS = 5
  653. Global Const $OUT_OUTLINE_PRECIS = 8
  654. Global Const $OUT_PS_ONLY_PRECIS = 10
  655. Global Const $OUT_RASTER_PRECIS = 6
  656. Global Const $OUT_STRING_PRECIS = 1
  657. Global Const $OUT_STROKE_PRECIS = 3
  658. Global Const $OUT_TT_ONLY_PRECIS = 7
  659. Global Const $OUT_TT_PRECIS = 4
  660. Global Const $CLIP_CHARACTER_PRECIS = 1
  661. Global Const $CLIP_DEFAULT_PRECIS = 0
  662. Global Const $CLIP_EMBEDDED = 128
  663. Global Const $CLIP_LH_ANGLES = 16
  664. Global Const $CLIP_MASK = 15
  665. Global Const $CLIP_STROKE_PRECIS = 2
  666. Global Const $CLIP_TT_ALWAYS = 32
  667. Global Const $ANTIALIASED_QUALITY = 4
  668. Global Const $DEFAULT_QUALITY = 0
  669. Global Const $DRAFT_QUALITY = 1
  670. Global Const $NONANTIALIASED_QUALITY = 3
  671. Global Const $PROOF_QUALITY = 2
  672. Global Const $DEFAULT_PITCH = 0
  673. Global Const $FIXED_PITCH = 1
  674. Global Const $VARIABLE_PITCH = 2
  675. Global Const $FF_DECORATIVE = 80
  676. Global Const $FF_DONTCARE = 0
  677. Global Const $FF_MODERN = 48
  678. Global Const $FF_ROMAN = 16
  679. Global Const $FF_SCRIPT = 64
  680. Global Const $FF_SWISS = 32
  681. Global Const $TAGPOINT = "long X;long Y"
  682. Global Const $TAGRECT = "long Left;long Top;long Right;long Bottom"
  683. Global Const $TAGSIZE = "long X;long Y"
  684. Global Const $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight"
  685. Global Const $TAGFILETIME = "dword Lo;dword Hi"
  686. Global Const $TAGSYSTEMTIME = "word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds"
  687. Global Const $TAGTIME_ZONE_INFORMATION = "long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias"
  688. Global Const $TAGNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;INT Code"
  689. Global Const $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param"
  690. Global Const $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;ptr szText"
  691. Global Const $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;ptr szText;int Why"
  692. Global Const $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param"
  693. 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"
  694. Global Const $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TAGSYSTEMTIME
  695. Global Const $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TAGSYSTEMTIME & ";ptr pDisplay;wchar Display[64]"
  696. Global Const $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;long SizeX;long SizeY"
  697. Global Const $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TAGSYSTEMTIME
  698. Global Const $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TAGSYSTEMTIME & ";dword Flags"
  699. 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"
  700. Global Const $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved"
  701. Global Const $TAGGDIPENCODERPARAM = "byte GUID[16];dword Count;dword Type;ptr Values"
  702. Global Const $TAGGDIPENCODERPARAMS = "dword Count;byte Params[0]"
  703. Global Const $TAGGDIPRECTF = "float X;float Y;float Width;float Height"
  704. Global Const $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs"
  705. Global Const $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc"
  706. 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"
  707. Global Const $TAGGDIPPENCODERPARAMS = "dword Count;byte Params[0]"
  708. 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"
  709. Global Const $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam"
  710. Global Const $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT
  711. Global Const $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem"
  712. Global Const $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1"
  713. Global Const $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value"
  714. Global Const $TAGLVFINDINFO = "uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction"
  715. Global Const $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem"
  716. 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"
  717. Global Const $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "long ActionX;long ActionY;lparam Param"
  718. 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"
  719. Global Const $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM
  720. Global Const $TAGNMLVFINDITEM = $TAGNMHDR & ";" & $TAGLVFINDINFO
  721. Global Const $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam"
  722. Global Const $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags"
  723. Global Const $TAGNMLVKEYDOWN = $TAGNMHDR & ";align 1;word VKey;uint Flags"
  724. Global Const $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY"
  725. Global Const $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TAGSYSTEMTIME
  726. 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"
  727. 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"
  728. 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"
  729. Global Const $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TAGSYSTEMTIME & ";int DayState;ptr pDayState"
  730. 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"
  731. Global Const $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result"
  732. Global Const $TAGNMTCKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags"
  733. Global Const $TAGTVITEM = "uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param"
  734. Global Const $TAGTVITEMEX = $TAGTVITEM & ";int Integral"
  735. 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"
  736. 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"
  737. Global Const $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM
  738. Global Const $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam"
  739. Global Const $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item"
  740. Global Const $TAGNMTVKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags"
  741. Global Const $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo"
  742. Global Const $TAGTOKEN_PRIVILEGES = "dword Count;int64 LUID;dword Attributes"
  743. Global Const $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT
  744. Global Const $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData"
  745. 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"
  746. 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"
  747. Global Const $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak"
  748. Global Const $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;" & "long ActualLeft;long ActualTop;long ActualRight;long ActualBottom"
  749. Global Const $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;laram lParam"
  750. Global Const $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM"
  751. Global Const $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;long CLeft;long CTop;long CRight;long CBottom;" & "long BLeft;long BTop;long BRight;long BBottom"
  752. Global Const $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow"
  753. 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
  754. Global Const $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags"
  755. Global Const $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;align;dword_ptr Param;int_ptr String"
  756. Global Const $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax"
  757. Global Const $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider"
  758. Global Const $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;dword Offset;dword OffsetHigh;handle hEvent"
  759. 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"
  760. 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"
  761. Global Const $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format"
  762. Global Const $TAGGUID = "dword Data1;word Data2;word Data3;byte Data4[8]"
  763. Global Const $TAGWINDOWPLACEMENT = "uint length; uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]"
  764. Global Const $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags"
  765. Global Const $TAGSCROLLINFO = "uint cbSize;uint fMask;int nMin;int nMax;uint nPage;int nPos;int nTrackPos"
  766. Global Const $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]"
  767. 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]"
  768. Global Const $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo"
  769. Global Const $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID"
  770. 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"
  771. Global Const $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle"
  772. 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]"
  773. Func _WINAPI_GETLASTERROR($CURERR = @error, $CUREXT = @extended)
  774. Local $ARESULT = DllCall("kernel32.dll", "dword", "GetLastError")
  775. Return SetError($CURERR, $CUREXT, $ARESULT[0])
  776. EndFunc
  777. Func _WINAPI_SETLASTERROR($IERRCODE, $CURERR = @error, $CUREXT = @extended)
  778. DllCall("kernel32.dll", "none", "SetLastError", "dword", $IERRCODE)
  779. Return SetError($CURERR, $CUREXT)
  780. EndFunc
  781. Global Const $__MISCCONSTANT_CC_ANYCOLOR = 256
  782. Global Const $__MISCCONSTANT_CC_FULLOPEN = 2
  783. Global Const $__MISCCONSTANT_CC_RGBINIT = 1
  784. Global Const $TAGCHOOSECOLOR = "dword Size;hwnd hWndOwnder;handle hInstance;dword rgbResult;ptr CustColors;dword Flags;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName"
  785. 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"
  786. Func _CHOOSECOLOR($IRETURNTYPE = 0, $ICOLORREF = 0, $IREFTYPE = 0, $HWNDOWNDER = 0)
  787. Local $CUSTCOLORS = "dword[16]"
  788. Local $TCHOOSE = DllStructCreate($TAGCHOOSECOLOR)
  789. Local $TCC = DllStructCreate($CUSTCOLORS)
  790. If $IREFTYPE = 1 Then
  791. $ICOLORREF = Int($ICOLORREF)
  792. ElseIf $IREFTYPE = 2 Then
  793. $ICOLORREF = Hex(String($ICOLORREF), 6)
  794. $ICOLORREF = "0x" & StringMid($ICOLORREF, 5, 2) & StringMid($ICOLORREF, 3, 2) & StringMid($ICOLORREF, 1, 2)
  795. EndIf
  796. DllStructSetData($TCHOOSE, "Size", DllStructGetSize($TCHOOSE))
  797. DllStructSetData($TCHOOSE, "hWndOwnder", $HWNDOWNDER)
  798. DllStructSetData($TCHOOSE, "rgbResult", $ICOLORREF)
  799. DllStructSetData($TCHOOSE, "CustColors", DllStructGetPtr($TCC))
  800. DllStructSetData($TCHOOSE, "Flags", BitOR($__MISCCONSTANT_CC_ANYCOLOR, $__MISCCONSTANT_CC_FULLOPEN, $__MISCCONSTANT_CC_RGBINIT))
  801. Local $ARESULT = DllCall("comdlg32.dll", "bool", "ChooseColor", "ptr", DllStructGetPtr($TCHOOSE))
  802. If @error Then Return SetError(@error, @extended, -1)
  803. If $ARESULT[0] = 0 Then Return SetError(-3, -3, -1)
  804. Local $COLOR_PICKED = DllStructGetData($TCHOOSE, "rgbResult")
  805. If $IRETURNTYPE = 1 Then
  806. Return "0x" & Hex(String($COLOR_PICKED), 6)
  807. ElseIf $IRETURNTYPE = 2 Then
  808. $COLOR_PICKED = Hex(String($COLOR_PICKED), 6)
  809. Return "0x" & StringMid($COLOR_PICKED, 5, 2) & StringMid($COLOR_PICKED, 3, 2) & StringMid($COLOR_PICKED, 1, 2)
  810. ElseIf $IRETURNTYPE = 0 Then
  811. Return $COLOR_PICKED
  812. Else
  813. Return SetError(-4, -4, -1)
  814. EndIf
  815. EndFunc
  816. Func _CHOOSEFONT($SFONTNAME = "Courier New", $IPOINTSIZE = 10, $ICOLORREF = 0, $IFONTWEIGHT = 0, $IITALIC = False, $IUNDERLINE = False, $ISTRIKETHRU = False, $HWNDOWNER = 0)
  817. Local $ITALIC = 0, $UNDERLINE = 0, $STRIKEOUT = 0
  818. Local $LNGDC = __MISC_GETDC(0)
  819. Local $LFHEIGHT = Round(($IPOINTSIZE * __MISC_GETDEVICECAPS($LNGDC, $LOGPIXELSX)) / 72, 0)
  820. __MISC_RELEASEDC(0, $LNGDC)
  821. Local $TCHOOSEFONT = DllStructCreate($TAGCHOOSEFONT)
  822. Local $TLOGFONT = DllStructCreate($TAGLOGFONT)
  823. DllStructSetData($TCHOOSEFONT, "Size", DllStructGetSize($TCHOOSEFONT))
  824. DllStructSetData($TCHOOSEFONT, "hWndOwner", $HWNDOWNER)
  825. DllStructSetData($TCHOOSEFONT, "LogFont", DllStructGetPtr($TLOGFONT))
  826. DllStructSetData($TCHOOSEFONT, "PointSize", $IPOINTSIZE)
  827. DllStructSetData($TCHOOSEFONT, "Flags", BitOR($CF_SCREENFONTS, $CF_PRINTERFONTS, $CF_EFFECTS, $CF_INITTOLOGFONTSTRUCT, $CF_NOSCRIPTSEL))
  828. DllStructSetData($TCHOOSEFONT, "rgbColors", $ICOLORREF)
  829. DllStructSetData($TCHOOSEFONT, "FontType", 0)
  830. DllStructSetData($TLOGFONT, "Height", $LFHEIGHT)
  831. DllStructSetData($TLOGFONT, "Weight", $IFONTWEIGHT)
  832. DllStructSetData($TLOGFONT, "Italic", $IITALIC)
  833. DllStructSetData($TLOGFONT, "Underline", $IUNDERLINE)
  834. DllStructSetData($TLOGFONT, "Strikeout", $ISTRIKETHRU)
  835. DllStructSetData($TLOGFONT, "FaceName", $SFONTNAME)
  836. Local $ARESULT = DllCall("comdlg32.dll", "bool", "ChooseFontW", "ptr", DllStructGetPtr($TCHOOSEFONT))
  837. If @error Then Return SetError(@error, @extended, -1)
  838. If $ARESULT[0] = 0 Then Return SetError(-3, -3, -1)
  839. Local $FONTNAME = DllStructGetData($TLOGFONT, "FaceName")
  840. If StringLen($FONTNAME) = 0 And StringLen($SFONTNAME) > 0 Then $FONTNAME = $SFONTNAME
  841. If DllStructGetData($TLOGFONT, "Italic") Then $ITALIC = 2
  842. If DllStructGetData($TLOGFONT, "Underline") Then $UNDERLINE = 4
  843. If DllStructGetData($TLOGFONT, "Strikeout") Then $STRIKEOUT = 8
  844. Local $ATTRIBUTES = BitOR($ITALIC, $UNDERLINE, $STRIKEOUT)
  845. Local $SIZE = DllStructGetData($TCHOOSEFONT, "PointSize") / 10
  846. Local $COLORREF = DllStructGetData($TCHOOSEFONT, "rgbColors")
  847. Local $WEIGHT = DllStructGetData($TLOGFONT, "Weight")
  848. Local $COLOR_PICKED = Hex(String($COLORREF), 6)
  849. 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), ",")
  850. EndFunc
  851. Func _CLIPPUTFILE($SFILE, $SSEPARATOR = "|")
  852. Local Const $GMEM_MOVEABLE = 2, $CF_HDROP = 15
  853. $SFILE &= $SSEPARATOR & $SSEPARATOR
  854. Local $NGLOBMEMSIZE = (StringLen($SFILE) + 20)
  855. Local $ARESULT = DllCall("user32.dll", "bool", "OpenClipboard", "hwnd", 0)
  856. If @error Or $ARESULT[0] = 0 Then Return SetError(1, _WINAPI_GETLASTERROR(), False)
  857. Local $IERROR = 0, $ILASTERROR = 0
  858. $ARESULT = DllCall("user32.dll", "bool", "EmptyClipboard")
  859. If @error Or Not $ARESULT[0] Then
  860. $IERROR = 2
  861. $ILASTERROR = _WINAPI_GETLASTERROR()
  862. Else
  863. $ARESULT = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", $GMEM_MOVEABLE, "ulong_ptr", $NGLOBMEMSIZE)
  864. If @error Or Not $ARESULT[0] Then
  865. $IERROR = 3
  866. $ILASTERROR = _WINAPI_GETLASTERROR()
  867. Else
  868. Local $HGLOBAL = $ARESULT[0]
  869. $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $HGLOBAL)
  870. If @error Or Not $ARESULT[0] Then
  871. $IERROR = 4
  872. $ILASTERROR = _WINAPI_GETLASTERROR()
  873. Else
  874. Local $HLOCK = $ARESULT[0]
  875. Local $DROPFILES = DllStructCreate("dword;ptr;int;int;int;char[" & StringLen($SFILE) + 1 & "]", $HLOCK)
  876. If @error Then Return SetError(5, 6, False)
  877. Local $TEMPSTRUCT = DllStructCreate("dword;ptr;int;int;int")
  878. DllStructSetData($DROPFILES, 1, DllStructGetSize($TEMPSTRUCT))
  879. DllStructSetData($DROPFILES, 2, 0)
  880. DllStructSetData($DROPFILES, 3, 0)
  881. DllStructSetData($DROPFILES, 4, 0)
  882. DllStructSetData($DROPFILES, 5, 0)
  883. DllStructSetData($DROPFILES, 6, $SFILE)
  884. For $I = 1 To StringLen($SFILE)
  885. If DllStructGetData($DROPFILES, 6, $I) = $SSEPARATOR Then DllStructSetData($DROPFILES, 6, Chr(0), $I)
  886. Next
  887. $ARESULT = DllCall("user32.dll", "handle", "SetClipboardData", "uint", $CF_HDROP, "handle", $HGLOBAL)
  888. If @error Or Not $ARESULT[0] Then
  889. $IERROR = 6
  890. $ILASTERROR = _WINAPI_GETLASTERROR()
  891. EndIf
  892. $ARESULT = DllCall("kernel32.dll", "bool", "GlobalUnlock", "handle", $HGLOBAL)
  893. IF (@error Or Not $ARESULT[0]) And Not $IERROR And _WINAPI_GETLASTERROR() Then
  894. $IERROR = 8
  895. $ILASTERROR = _WINAPI_GETLASTERROR()
  896. EndIf
  897. EndIf
  898. $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $HGLOBAL)
  899. IF (@error Or Not $ARESULT[0]) And Not $IERROR Then
  900. $IERROR = 9
  901. $ILASTERROR = _WINAPI_GETLASTERROR()
  902. EndIf
  903. EndIf
  904. EndIf
  905. $ARESULT = DllCall("user32.dll", "bool", "CloseClipboard")
  906. IF (@error Or Not $ARESULT[0]) And Not $IERROR Then Return SetError(7, _WINAPI_GETLASTERROR(), False)
  907. If $IERROR Then Return SetError($IERROR, $ILASTERROR, False)
  908. Return True
  909. EndFunc
  910. Func _IIF($FTEST, $VTRUEVAL, $VFALSEVAL)
  911. If $FTEST Then
  912. Return $VTRUEVAL
  913. Else
  914. Return $VFALSEVAL
  915. EndIf
  916. EndFunc
  917. Func _MOUSETRAP($ILEFT = 0, $ITOP = 0, $IRIGHT = 0, $IBOTTOM = 0)
  918. Local $ARESULT
  919. If @NumParams == 0 Then
  920. $ARESULT = DllCall("user32.dll", "bool", "ClipCursor", "ptr", 0)
  921. If @error Or Not $ARESULT[0] Then Return SetError(1, _WINAPI_GETLASTERROR(), False)
  922. Else
  923. If @NumParams == 2 Then
  924. $IRIGHT = $ILEFT + 1
  925. $IBOTTOM = $ITOP + 1
  926. EndIf
  927. Local $TRECT = DllStructCreate($TAGRECT)
  928. DllStructSetData($TRECT, "Left", $ILEFT)
  929. DllStructSetData($TRECT, "Top", $ITOP)
  930. DllStructSetData($TRECT, "Right", $IRIGHT)
  931. DllStructSetData($TRECT, "Bottom", $IBOTTOM)
  932. $ARESULT = DllCall("user32.dll", "bool", "ClipCursor", "ptr", DllStructGetPtr($TRECT))
  933. If @error Or Not $ARESULT[0] Then Return SetError(2, _WINAPI_GETLASTERROR(), False)
  934. EndIf
  935. Return True
  936. EndFunc
  937. Func _SINGLETON($SOCCURENCENAME, $IFLAG = 0)
  938. Local Const $ERROR_ALREADY_EXISTS = 183
  939. Local Const $SECURITY_DESCRIPTOR_REVISION = 1
  940. Local $PSECURITYATTRIBUTES = 0
  941. If BitAND($IFLAG, 2) Then
  942. Local $TSECURITYDESCRIPTOR = DllStructCreate("dword[5]")
  943. Local $PSECURITYDESCRIPTOR = DllStructGetPtr($TSECURITYDESCRIPTOR)
  944. Local $ARET = DllCall("advapi32.dll", "bool", "InitializeSecurityDescriptor", "ptr", $PSECURITYDESCRIPTOR, "dword", $SECURITY_DESCRIPTOR_REVISION)
  945. If @error Then Return SetError(@error, @extended, 0)
  946. If $ARET[0] Then
  947. $ARET = DllCall("advapi32.dll", "bool", "SetSecurityDescriptorDacl", "ptr", $PSECURITYDESCRIPTOR, "bool", 1, "ptr", 0, "bool", 0)
  948. If @error Then Return SetError(@error, @extended, 0)
  949. If $ARET[0] Then
  950. Local $STRUCTSECURITYATTRIBUTES = DllStructCreate($TAGSECURITY_ATTRIBUTES)
  951. DllStructSetData($STRUCTSECURITYATTRIBUTES, 1, DllStructGetSize($STRUCTSECURITYATTRIBUTES))
  952. DllStructSetData($STRUCTSECURITYATTRIBUTES, 2, $PSECURITYDESCRIPTOR)
  953. DllStructSetData($STRUCTSECURITYATTRIBUTES, 3, 0)
  954. $PSECURITYATTRIBUTES = DllStructGetPtr($STRUCTSECURITYATTRIBUTES)
  955. EndIf
  956. EndIf
  957. EndIf
  958. Local $HANDLE = DllCall("kernel32.dll", "handle", "CreateMutexW", "ptr", $PSECURITYATTRIBUTES, "bool", 1, "wstr", $SOCCURENCENAME)
  959. If @error Then Return SetError(@error, @extended, 0)
  960. Local $LASTERROR = DllCall("kernel32.dll", "dword", "GetLastError")
  961. If @error Then Return SetError(@error, @extended, 0)
  962. If $LASTERROR[0] = $ERROR_ALREADY_EXISTS Then
  963. If BitAND($IFLAG, 1) Then
  964. Return SetError($LASTERROR[0], $LASTERROR[0], 0)
  965. Else
  966. Exit -1
  967. EndIf
  968. EndIf
  969. Return $HANDLE[0]
  970. EndFunc
  971. Func _ISPRESSED($SHEXKEY, $VDLL = "user32.dll")
  972. Local $A_R = DllCall($VDLL, "short", "GetAsyncKeyState", "int", "0x" & $SHEXKEY)
  973. If @error Then Return SetError(@error, @extended, False)
  974. Return BitAND($A_R[0], 32768) <> 0
  975. EndFunc
  976. Func _VERSIONCOMPARE($SVERSION1, $SVERSION2)
  977. If $SVERSION1 = $SVERSION2 Then Return 0
  978. Local $SEP = "."
  979. If StringInStr($SVERSION1, $SEP) = 0 Then $SEP = ","
  980. Local $AVERSION1 = StringSplit($SVERSION1, $SEP)
  981. Local $AVERSION2 = StringSplit($SVERSION2, $SEP)
  982. If UBound($AVERSION1) <> UBound($AVERSION2) Or UBound($AVERSION1) = 0 Then
  983. SetExtended(1)
  984. If $SVERSION1 > $SVERSION2 Then
  985. Return 1
  986. ElseIf $SVERSION1 < $SVERSION2 Then
  987. Return -1
  988. EndIf
  989. Else
  990. For $I = 1 To UBound($AVERSION1) - 1
  991. If StringIsDigit($AVERSION1[$I]) And StringIsDigit($AVERSION2[$I]) Then
  992. If Number($AVERSION1[$I]) > Number($AVERSION2[$I]) Then
  993. Return 1
  994. ElseIf Number($AVERSION1[$I]) < Number($AVERSION2[$I]) Then
  995. Return -1
  996. EndIf
  997. Else
  998. SetExtended(1)
  999. If $AVERSION1[$I] > $AVERSION2[$I] Then
  1000. Return 1
  1001. ElseIf $AVERSION1[$I] < $AVERSION2[$I] Then
  1002. Return -1
  1003. EndIf
  1004. EndIf
  1005. Next
  1006. EndIf
  1007. Return SetError(2, 0, 0)
  1008. EndFunc
  1009. Func __MISC_GETDC($HWND)
  1010. Local $ARESULT = DllCall("User32.dll", "handle", "GetDC", "hwnd", $HWND)
  1011. If @error Or Not $ARESULT[0] Then Return SetError(1, _WINAPI_GETLASTERROR(), 0)
  1012. Return $ARESULT[0]
  1013. EndFunc
  1014. Func __MISC_GETDEVICECAPS($HDC, $IINDEX)
  1015. Local $ARESULT = DllCall("GDI32.dll", "int", "GetDeviceCaps", "handle", $HDC, "int", $IINDEX)
  1016. If @error Then Return SetError(@error, @extended, 0)
  1017. Return $ARESULT[0]
  1018. EndFunc
  1019. Func __MISC_RELEASEDC($HWND, $HDC)
  1020. Local $ARESULT = DllCall("User32.dll", "int", "ReleaseDC", "hwnd", $HWND, "handle", $HDC)
  1021. If @error Then Return SetError(@error, @extended, False)
  1022. Return $ARESULT[0] <> 0
  1023. EndFunc
  1024. Global Const $PROCESS_TERMINATE = 1
  1025. Global Const $PROCESS_CREATE_THREAD = 2
  1026. Global Const $PROCESS_SET_SESSIONID = 4
  1027. Global Const $PROCESS_VM_OPERATION = 8
  1028. Global Const $PROCESS_VM_READ = 16
  1029. Global Const $PROCESS_VM_WRITE = 32
  1030. Global Const $PROCESS_DUP_HANDLE = 64
  1031. Global Const $PROCESS_CREATE_PROCESS = 128
  1032. Global Const $PROCESS_SET_QUOTA = 256
  1033. Global Const $PROCESS_SET_INFORMATION = 512
  1034. Global Const $PROCESS_QUERY_INFORMATION = 1024
  1035. Global Const $PROCESS_SUSPEND_RESUME = 2048
  1036. Global Const $PROCESS_ALL_ACCESS = 2035711
  1037. Global Const $DDL_ARCHIVE = 32
  1038. Global Const $DDL_DIRECTORY = 16
  1039. Global Const $DDL_DRIVES = 16384
  1040. Global Const $DDL_EXCLUSIVE = 32768
  1041. Global Const $DDL_HIDDEN = 2
  1042. Global Const $DDL_READONLY = 1
  1043. Global Const $DDL_READWRITE = 0
  1044. Global Const $DDL_SYSTEM = 4
  1045. Global Const $COLOR_AQUA = 65535
  1046. Global Const $COLOR_BLACK = 0
  1047. Global Const $COLOR_BLUE = 255
  1048. Global Const $COLOR_CREAM = 16776176
  1049. Global Const $COLOR_FUCHSIA = 16711935
  1050. Global Const $COLOR_GRAY = 8421504
  1051. Global Const $COLOR_GREEN = 32768
  1052. Global Const $COLOR_LIME = 65280
  1053. Global Const $COLOR_MAROON = 9116770
  1054. Global Const $COLOR_MEDBLUE = 708
  1055. Global Const $COLOR_MEDGRAY = 10526884
  1056. Global Const $COLOR_MONEYGREEN = 12639424
  1057. Global Const $COLOR_NAVY = 128
  1058. Global Const $COLOR_OLIVE = 8421376
  1059. Global Const $COLOR_PURPLE = 8388736
  1060. Global Const $COLOR_RED = 16711680
  1061. Global Const $COLOR_SILVER = 12632256
  1062. Global Const $COLOR_SKYBLUE = 10930928
  1063. Global Const $COLOR_TEAL = 32896
  1064. Global Const $COLOR_WHITE = 16777215
  1065. Global Const $COLOR_YELLOW = 16776960
  1066. Global Const $CLR_NONE = -1
  1067. Global Const $CLR_DEFAULT = -16777216
  1068. Global Const $CLR_AQUA = 16776960
  1069. Global Const $CLR_BLACK = 0
  1070. Global Const $CLR_BLUE = 16711680
  1071. Global Const $CLR_CREAM = 15793151
  1072. Global Const $CLR_FUCHSIA = 16711935
  1073. Global Const $CLR_GRAY = 8421504
  1074. Global Const $CLR_GREEN = 32768
  1075. Global Const $CLR_LIME = 65280
  1076. Global Const $CLR_MAROON = 6429835
  1077. Global Const $CLR_MEDBLUE = 12845568
  1078. Global Const $CLR_MEDGRAY = 10789024
  1079. Global Const $CLR_MONEYGREEN = 12639424
  1080. Global Const $CLR_NAVY = 8388608
  1081. Global Const $CLR_OLIVE = 32896
  1082. Global Const $CLR_PURPLE = 8388736
  1083. Global Const $CLR_RED = 255
  1084. Global Const $CLR_SILVER = 12632256
  1085. Global Const $CLR_SKYBLUE = 15780518
  1086. Global Const $CLR_TEAL = 8421376
  1087. Global Const $CLR_WHITE = 16777215
  1088. Global Const $CLR_YELLOW = 65535
  1089. Global Const $CC_ANYCOLOR = 256
  1090. Global Const $CC_FULLOPEN = 2
  1091. Global Const $CC_RGBINIT = 1
  1092. Global Const $OPT_COORDSRELATIVE = 0
  1093. Global Const $OPT_COORDSABSOLUTE = 1
  1094. Global Const $OPT_COORDSCLIENT = 2
  1095. Global Const $OPT_ERRORSILENT = 0
  1096. Global Const $OPT_ERRORFATAL = 1
  1097. Global Const $OPT_CAPSNOSTORE = 0
  1098. Global Const $OPT_CAPSSTORE = 1
  1099. Global Const $OPT_MATCHSTART = 1
  1100. Global Const $OPT_MATCHANY = 2
  1101. Global Const $OPT_MATCHEXACT = 3
  1102. Global Const $OPT_MATCHADVANCED = 4
  1103. Global Const $CCS_TOP = 1
  1104. Global Const $CCS_NOMOVEY = 2
  1105. Global Const $CCS_BOTTOM = 3
  1106. Global Const $CCS_NORESIZE = 4
  1107. Global Const $CCS_NOPARENTALIGN = 8
  1108. Global Const $CCS_NOHILITE = 16
  1109. Global Const $CCS_ADJUSTABLE = 32
  1110. Global Const $CCS_NODIVIDER = 64
  1111. Global Const $CCS_VERT = 128
  1112. Global Const $CCS_LEFT = 129
  1113. Global Const $CCS_NOMOVEX = 130
  1114. Global Const $CCS_RIGHT = 131
  1115. Global Const $DI_MASK = 1
  1116. Global Const $DI_IMAGE = 2
  1117. Global Const $DI_NORMAL = 3
  1118. Global Const $DI_COMPAT = 4
  1119. Global Const $DI_DEFAULTSIZE = 8
  1120. Global Const $DI_NOMIRROR = 16
  1121. Global Const $DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1
  1122. Global Const $DISPLAY_DEVICE_MULTI_DRIVER = 2
  1123. Global Const $DISPLAY_DEVICE_PRIMARY_DEVICE = 4
  1124. Global Const $DISPLAY_DEVICE_MIRRORING_DRIVER = 8
  1125. Global Const $DISPLAY_DEVICE_VGA_COMPATIBLE = 16
  1126. Global Const $DISPLAY_DEVICE_REMOVABLE = 32
  1127. Global Const $DISPLAY_DEVICE_DISCONNECT = 33554432
  1128. Global Const $DISPLAY_DEVICE_REMOTE = 67108864
  1129. Global Const $DISPLAY_DEVICE_MODESPRUNED = 134217728
  1130. Global Const $FLASHW_CAPTION = 1
  1131. Global Const $FLASHW_TRAY = 2
  1132. Global Const $FLASHW_TIMER = 4
  1133. Global Const $FLASHW_TIMERNOFG = 12
  1134. Global Const $FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
  1135. Global Const $FORMAT_MESSAGE_IGNORE_INSERTS = 512
  1136. Global Const $FORMAT_MESSAGE_FROM_STRING = 1024
  1137. Global Const $FORMAT_MESSAGE_FROM_HMODULE = 2048
  1138. Global Const $FORMAT_MESSAGE_FROM_SYSTEM = 4096
  1139. Global Const $FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192
  1140. Global Const $GW_HWNDFIRST = 0
  1141. Global Const $GW_HWNDLAST = 1
  1142. Global Const $GW_HWNDNEXT = 2
  1143. Global Const $GW_HWNDPREV = 3
  1144. Global Const $GW_OWNER = 4
  1145. Global Const $GW_CHILD = 5
  1146. Global Const $GWL_WNDPROC = -4
  1147. Global Const $GWL_HINSTANCE = -6
  1148. Global Const $GWL_HWNDPARENT = -8
  1149. Global Const $GWL_ID = -12
  1150. Global Const $GWL_STYLE = -16
  1151. Global Const $GWL_EXSTYLE = -20
  1152. Global Const $GWL_USERDATA = -21
  1153. Global Const $STD_CUT = 0
  1154. Global Const $STD_COPY = 1
  1155. Global Const $STD_PASTE = 2
  1156. Global Const $STD_UNDO = 3
  1157. Global Const $STD_REDOW = 4
  1158. Global Const $STD_DELETE = 5
  1159. Global Const $STD_FILENEW = 6
  1160. Global Const $STD_FILEOPEN = 7
  1161. Global Const $STD_FILESAVE = 8
  1162. Global Const $STD_PRINTPRE = 9
  1163. Global Const $STD_PROPERTIES = 10
  1164. Global Const $STD_HELP = 11
  1165. Global Const $STD_FIND = 12
  1166. Global Const $STD_REPLACE = 13
  1167. Global Const $STD_PRINT = 14
  1168. Global Const $LR_DEFAULTCOLOR = 0
  1169. Global Const $LR_MONOCHROME = 1
  1170. Global Const $LR_COLOR = 2
  1171. Global Const $LR_COPYRETURNORG = 4
  1172. Global Const $LR_COPYDELETEORG = 8
  1173. Global Const $LR_LOADFROMFILE = 16
  1174. Global Const $LR_LOADTRANSPARENT = 32
  1175. Global Const $LR_DEFAULTSIZE = 64
  1176. Global Const $LR_VGACOLOR = 128
  1177. Global Const $LR_LOADMAP3DCOLORS = 4096
  1178. Global Const $LR_CREATEDIBSECTION = 8192
  1179. Global Const $LR_COPYFROMRESOURCE = 16384
  1180. Global Const $LR_SHARED = 32768
  1181. Global Const $IMAGE_BITMAP = 0
  1182. Global Const $IMAGE_ICON = 1
  1183. Global Const $IMAGE_CURSOR = 2
  1184. Global Const $KB_SENDSPECIAL = 0
  1185. Global Const $KB_SENDRAW = 1
  1186. Global Const $KB_CAPSOFF = 0
  1187. Global Const $KB_CAPSON = 1
  1188. Global Const $DONT_RESOLVE_DLL_REFERENCES = 1
  1189. Global Const $LOAD_LIBRARY_AS_DATAFILE = 2
  1190. Global Const $LOAD_WITH_ALTERED_SEARCH_PATH = 8
  1191. Global Const $OBJID_WINDOW = 0
  1192. Global Const $OBJID_TITLEBAR = -2
  1193. Global Const $OBJID_SIZEGRIP = -7
  1194. Global Const $OBJID_CARET = -8
  1195. Global Const $OBJID_CURSOR = -9
  1196. Global Const $OBJID_ALERT = -10
  1197. Global Const $OBJID_SOUND = -11
  1198. Global Const $VK_DOWN = 40
  1199. Global Const $VK_END = 35
  1200. Global Const $VK_HOME = 36
  1201. Global Const $VK_LEFT = 37
  1202. Global Const $VK_NEXT = 34
  1203. Global Const $VK_PRIOR = 33
  1204. Global Const $VK_RIGHT = 39
  1205. Global Const $VK_UP = 38
  1206. Global Const $MB_OK = 0
  1207. Global Const $MB_OKCANCEL = 1
  1208. Global Const $MB_ABORTRETRYIGNORE = 2
  1209. Global Const $MB_YESNOCANCEL = 3
  1210. Global Const $MB_YESNO = 4
  1211. Global Const $MB_RETRYCANCEL = 5
  1212. Global Const $MB_ICONHAND = 16
  1213. Global Const $MB_ICONQUESTION = 32
  1214. Global Const $MB_ICONEXCLAMATION = 48
  1215. Global Const $MB_ICONASTERISK = 64
  1216. Global Const $MB_DEFBUTTON1 = 0
  1217. Global Const $MB_DEFBUTTON2 = 256
  1218. Global Const $MB_DEFBUTTON3 = 512
  1219. Global Const $MB_APPLMODAL = 0
  1220. Global Const $MB_SYSTEMMODAL = 4096
  1221. Global Const $MB_TASKMODAL = 8192
  1222. Global Const $MB_TOPMOST = 262144
  1223. Global Const $MB_RIGHTJUSTIFIED = 524288
  1224. Global Const $IDTIMEOUT = -1
  1225. Global Const $IDOK = 1
  1226. Global Const $IDCANCEL = 2
  1227. Global Const $IDABORT = 3
  1228. Global Const $IDRETRY = 4
  1229. Global Const $IDIGNORE = 5
  1230. Global Const $IDYES = 6
  1231. Global Const $IDNO = 7
  1232. Global Const $IDTRYAGAIN = 10
  1233. Global Const $IDCONTINUE = 11
  1234. Global Const $DLG_NOTITLE = 1
  1235. Global Const $DLG_NOTONTOP = 2
  1236. Global Const $DLG_TEXTLEFT = 4
  1237. Global Const $DLG_TEXTRIGHT = 8
  1238. Global Const $DLG_MOVEABLE = 16
  1239. Global Const $DLG_TEXTVCENTER = 32
  1240. Global Const $TIP_ICONNONE = 0
  1241. Global Const $TIP_ICONASTERISK = 1
  1242. Global Const $TIP_ICONEXCLAMATION = 2
  1243. Global Const $TIP_ICONHAND = 3
  1244. Global Const $TIP_NOSOUND = 16
  1245. Global Const $IDC_UNKNOWN = 0
  1246. Global Const $IDC_APPSTARTING = 1
  1247. Global Const $IDC_ARROW = 2
  1248. Global Const $IDC_CROSS = 3
  1249. Global Const $IDC_HAND = 32649
  1250. Global Const $IDC_HELP = 4
  1251. Global Const $IDC_IBEAM = 5
  1252. Global Const $IDC_ICON = 6
  1253. Global Const $IDC_NO = 7
  1254. Global Const $IDC_SIZE = 8
  1255. Global Const $IDC_SIZEALL = 9
  1256. Global Const $IDC_SIZENESW = 10
  1257. Global Const $IDC_SIZENS = 11
  1258. Global Const $IDC_SIZENWSE = 12
  1259. Global Const $IDC_SIZEWE = 13
  1260. Global Const $IDC_UPARROW = 14
  1261. Global Const $IDC_WAIT = 15
  1262. Global Const $IDI_APPLICATION = 32512
  1263. Global Const $IDI_ASTERISK = 32516
  1264. Global Const $IDI_EXCLAMATION = 32515
  1265. Global Const $IDI_HAND = 32513
  1266. Global Const $IDI_QUESTION = 32514
  1267. Global Const $IDI_WINLOGO = 32517
  1268. Global Const $SD_LOGOFF = 0
  1269. Global Const $SD_SHUTDOWN = 1
  1270. Global Const $SD_REBOOT = 2
  1271. Global Const $SD_FORCE = 4
  1272. Global Const $SD_POWERDOWN = 8
  1273. Global Const $STR_NOCASESENSE = 0
  1274. Global Const $STR_CASESENSE = 1
  1275. Global Const $STR_STRIPLEADING = 1
  1276. Global Const $STR_STRIPTRAILING = 2
  1277. Global Const $STR_STRIPSPACES = 4
  1278. Global Const $STR_STRIPALL = 8
  1279. Global Const $TRAY_ITEM_EXIT = 3
  1280. Global Const $TRAY_ITEM_PAUSE = 4
  1281. Global Const $TRAY_ITEM_FIRST = 7
  1282. Global Const $TRAY_CHECKED = 1
  1283. Global Const $TRAY_UNCHECKED = 4
  1284. Global Const $TRAY_ENABLE = 64
  1285. Global Const $TRAY_DISABLE = 128
  1286. Global Const $TRAY_FOCUS = 256
  1287. Global Const $TRAY_DEFAULT = 512
  1288. Global Const $TRAY_EVENT_SHOWICON = -3
  1289. Global Const $TRAY_EVENT_HIDEICON = -4
  1290. Global Const $TRAY_EVENT_FLASHICON = -5
  1291. Global Const $TRAY_EVENT_NOFLASHICON = -6
  1292. Global Const $TRAY_EVENT_PRIMARYDOWN = -7
  1293. Global Const $TRAY_EVENT_PRIMARYUP = -8
  1294. Global Const $TRAY_EVENT_SECONDARYDOWN = -9
  1295. Global Const $TRAY_EVENT_SECONDARYUP = -10
  1296. Global Const $TRAY_EVENT_MOUSEOVER = -11
  1297. Global Const $TRAY_EVENT_MOUSEOUT = -12
  1298. Global Const $TRAY_EVENT_PRIMARYDOUBLE = -13
  1299. Global Const $TRAY_EVENT_SECONDARYDOUBLE = -14
  1300. Global Const $STDIN_CHILD = 1
  1301. Global Const $STDOUT_CHILD = 2
  1302. Global Const $STDERR_CHILD = 4
  1303. Global Const $STDERR_MERGED = 8
  1304. Global Const $STDIO_INHERIT_PARENT = 16
  1305. Global Const $RUN_CREATE_NEW_CONSOLE = 65536
  1306. Global Const $MOUSEEVENTF_ABSOLUTE = 32768
  1307. Global Const $MOUSEEVENTF_MOVE = 1
  1308. Global Const $MOUSEEVENTF_LEFTDOWN = 2
  1309. Global Const $MOUSEEVENTF_LEFTUP = 4
  1310. Global Const $MOUSEEVENTF_RIGHTDOWN = 8
  1311. Global Const $MOUSEEVENTF_RIGHTUP = 16
  1312. Global Const $MOUSEEVENTF_MIDDLEDOWN = 32
  1313. Global Const $MOUSEEVENTF_MIDDLEUP = 64
  1314. Global Const $MOUSEEVENTF_WHEEL = 2048
  1315. Global Const $MOUSEEVENTF_XDOWN = 128
  1316. Global Const $MOUSEEVENTF_XUP = 256
  1317. Global Const $REG_NONE = 0
  1318. Global Const $REG_SZ = 1
  1319. Global Const $REG_EXPAND_SZ = 2
  1320. Global Const $REG_BINARY = 3
  1321. Global Const $REG_DWORD = 4
  1322. Global Const $REG_DWORD_BIG_ENDIAN = 5
  1323. Global Const $REG_LINK = 6
  1324. Global Const $REG_MULTI_SZ = 7
  1325. Global Const $REG_RESOURCE_LIST = 8
  1326. Global Const $REG_FULL_RESOURCE_DESCRIPTOR = 9
  1327. Global Const $REG_RESOURCE_REQUIREMENTS_LIST = 10
  1328. Global Const $HWND_BOTTOM = 1
  1329. Global Const $HWND_NOTOPMOST = -2
  1330. Global Const $HWND_TOP = 0
  1331. Global Const $HWND_TOPMOST = -1
  1332. Global Const $SWP_NOSIZE = 1
  1333. Global Const $SWP_NOMOVE = 2
  1334. Global Const $SWP_NOZORDER = 4
  1335. Global Const $SWP_NOREDRAW = 8
  1336. Global Const $SWP_NOACTIVATE = 16
  1337. Global Const $SWP_FRAMECHANGED = 32
  1338. Global Const $SWP_DRAWFRAME = 32
  1339. Global Const $SWP_SHOWWINDOW = 64
  1340. Global Const $SWP_HIDEWINDOW = 128
  1341. Global Const $SWP_NOCOPYBITS = 256
  1342. Global Const $SWP_NOOWNERZORDER = 512
  1343. Global Const $SWP_NOREPOSITION = 512
  1344. Global Const $SWP_NOSENDCHANGING = 1024
  1345. Global Const $SWP_DEFERERASE = 8192
  1346. Global Const $SWP_ASYNCWINDOWPOS = 16384
  1347. Global Const $LANG_AFRIKAANS = 54
  1348. Global Const $LANG_ALBANIAN = 28
  1349. Global Const $LANG_ARABIC = 1
  1350. Global Const $LANG_ARMENIAN = 43
  1351. Global Const $LANG_ASSAMESE = 77
  1352. Global Const $LANG_AZERI = 44
  1353. Global Const $LANG_BASQUE = 45
  1354. Global Const $LANG_BELARUSIAN = 35
  1355. Global Const $LANG_BENGALI = 69
  1356. Global Const $LANG_BULGARIAN = 2
  1357. Global Const $LANG_CATALAN = 3
  1358. Global Const $LANG_CHINESE = 4
  1359. Global Const $LANG_CROATIAN = 26
  1360. Global Const $LANG_CZECH = 5
  1361. Global Const $LANG_DANISH = 6
  1362. Global Const $LANG_DUTCH = 19
  1363. Global Const $LANG_ENGLISH = 9
  1364. Global Const $LANG_ESTONIAN = 37
  1365. Global Const $LANG_FAEROESE = 56
  1366. Global Const $LANG_FARSI = 41
  1367. Global Const $LANG_FINNISH = 11
  1368. Global Const $LANG_FRENCH = 156
  1369. Global Const $LANG_GEORGIAN = 55
  1370. Global Const $LANG_GERMAN = 7
  1371. Global Const $LANG_GREEK = 8
  1372. Global Const $LANG_GUJARATI = 71
  1373. Global Const $LANG_HEBREW = 13
  1374. Global Const $LANG_HINDI = 57
  1375. Global Const $LANG_HUNGARIAN = 14
  1376. Global Const $LANG_ICELANDIC = 15
  1377. Global Const $LANG_INDONESIAN = 33
  1378. Global Const $LANG_ITALIAN = 16
  1379. Global Const $LANG_JAPANESE = 17
  1380. Global Const $LANG_KANNADA = 75
  1381. Global Const $LANG_KASHMIRI = 96
  1382. Global Const $LANG_KAZAK = 63
  1383. Global Const $LANG_KONKANI = 87
  1384. Global Const $LANG_KOREAN = 18
  1385. Global Const $LANG_LATVIAN = 38
  1386. Global Const $LANG_LITHUANIAN = 39
  1387. Global Const $LANG_MACEDONIAN = 47
  1388. Global Const $LANG_MALAY = 62
  1389. Global Const $LANG_MALAYALAM = 76
  1390. Global Const $LANG_MANIPURI = 88
  1391. Global Const $LANG_MARATHI = 78
  1392. Global Const $LANG_NEPALI = 97
  1393. Global Const $LANG_NEUTRAL = 0
  1394. Global Const $LANG_NORWEGIAN = 20
  1395. Global Const $LANG_ORIYA = 72
  1396. Global Const $LANG_POLISH = 21
  1397. Global Const $LANG_PORTUGUESE = 22
  1398. Global Const $LANG_PUNJABI = 70
  1399. Global Const $LANG_ROMANIAN = 24
  1400. Global Const $LANG_RUSSIAN = 25
  1401. Global Const $LANG_SANSKRIT = 79
  1402. Global Const $LANG_SERBIAN = 26
  1403. Global Const $LANG_SINDHI = 89
  1404. Global Const $LANG_SLOVAK = 27
  1405. Global Const $LANG_SLOVENIAN = 36
  1406. Global Const $LANG_SPANISH = 10
  1407. Global Const $LANG_SWAHILI = 65
  1408. Global Const $LANG_SWEDISH = 29
  1409. Global Const $LANG_TAMIL = 73
  1410. Global Const $LANG_TATAR = 68
  1411. Global Const $LANG_TELUGU = 74
  1412. Global Const $LANG_THAI = 30
  1413. Global Const $LANG_TURKISH = 31
  1414. Global Const $LANG_UKRAINIAN = 34
  1415. Global Const $LANG_URDU = 32
  1416. Global Const $LANG_UZBEK = 67
  1417. Global Const $LANG_VIETNAMESE = 42
  1418. Global Const $SUBLANG_ARABIC_ALGERIA = 5
  1419. Global Const $SUBLANG_ARABIC_BAHRAIN = 15
  1420. Global Const $SUBLANG_ARABIC_EGYPT = 3
  1421. Global Const $SUBLANG_ARABIC_IRAQ = 2
  1422. Global Const $SUBLANG_ARABIC_JORDAN = 11
  1423. Global Const $SUBLANG_ARABIC_KUWAIT = 13
  1424. Global Const $SUBLANG_ARABIC_LEBANON = 12
  1425. Global Const $SUBLANG_ARABIC_LIBYA = 4
  1426. Global Const $SUBLANG_ARABIC_MOROCCO = 6
  1427. Global Const $SUBLANG_ARABIC_OMAN = 8
  1428. Global Const $SUBLANG_ARABIC_QATAR = 16
  1429. Global Const $SUBLANG_ARABIC_SAUDI_ARABIA = 1
  1430. Global Const $SUBLANG_ARABIC_SYRIA = 10
  1431. Global Const $SUBLANG_ARABIC_TUNISIA = 7
  1432. Global Const $SUBLANG_ARABIC_UAE = 14
  1433. Global Const $SUBLANG_ARABIC_YEMEN = 9
  1434. Global Const $SUBLANG_AZERI_CYRILLIC = 2
  1435. Global Const $SUBLANG_AZERI_LATIN = 1
  1436. Global Const $SUBLANG_CHINESE_HONGKONG = 3
  1437. Global Const $SUBLANG_CHINESE_MACAU = 5
  1438. Global Const $SUBLANG_CHINESE_SIMPLIFIED = 2
  1439. Global Const $SUBLANG_CHINESE_SINGAPORE = 4
  1440. Global Const $SUBLANG_CHINESE_TRADITIONAL = 1
  1441. Global Const $SUBLANG_DEFAULT = 1
  1442. Global Const $SUBLANG_DUTCH = 1
  1443. Global Const $SUBLANG_DUTCH_BELGIAN = 2
  1444. Global Const $SUBLANG_ENGLISH_AUS = 3
  1445. Global Const $SUBLANG_ENGLISH_BELIZE = 10
  1446. Global Const $SUBLANG_ENGLISH_CAN = 4
  1447. Global Const $SUBLANG_ENGLISH_CARIBBEAN = 9
  1448. Global Const $SUBLANG_ENGLISH_EIRE = 6
  1449. Global Const $SUBLANG_ENGLISH_JAMAICA = 8
  1450. Global Const $SUBLANG_ENGLISH_NZ = 5
  1451. Global Const $SUBLANG_ENGLISH_PHILIPPINES = 13
  1452. Global Const $SUBLANG_ENGLISH_SOUTH_AFRICA = 7
  1453. Global Const $SUBLANG_ENGLISH_TRINIDAD = 11
  1454. Global Const $SUBLANG_ENGLISH_UK = 2
  1455. Global Const $SUBLANG_ENGLISH_US = 1
  1456. Global Const $SUBLANG_ENGLISH_ZIMBABWE = 12
  1457. Global Const $SUBLANG_FRENCH = 1
  1458. Global Const $SUBLANG_FRENCH_BELGIAN = 2
  1459. Global Const $SUBLANG_FRENCH_CANADIAN = 3
  1460. Global Const $SUBLANG_FRENCH_LUXEMBOURG = 5
  1461. Global Const $SUBLANG_FRENCH_MONACO = 6
  1462. Global Const $SUBLANG_FRENCH_SWISS = 4
  1463. Global Const $SUBLANG_GERMAN = 1
  1464. Global Const $SUBLANG_GERMAN_AUSTRIAN = 3
  1465. Global Const $SUBLANG_GERMAN_LIECHTENSTEIN = 5
  1466. Global Const $SUBLANG_GERMAN_LUXEMBOURG = 4
  1467. Global Const $SUBLANG_GERMAN_SWISS = 2
  1468. Global Const $SUBLANG_ITALIAN = 1
  1469. Global Const $SUBLANG_ITALIAN_SWISS = 2
  1470. Global Const $SUBLANG_KASHMIRI_INDIA = 2
  1471. Global Const $SUBLANG_KOREAN = 1
  1472. Global Const $SUBLANG_LITHUANIAN = 1
  1473. Global Const $SUBLANG_MALAY_BRUNEI_DARUSSALAM = 2
  1474. Global Const $SUBLANG_MALAY_MALAYSIA = 1
  1475. Global Const $SUBLANG_NEPALI_INDIA = 2
  1476. Global Const $SUBLANG_NEUTRAL = 0
  1477. Global Const $SUBLANG_NORWEGIAN_BOKMAL = 1
  1478. Global Const $SUBLANG_NORWEGIAN_NYNORSK = 2
  1479. Global Const $SUBLANG_PORTUGUESE = 2
  1480. Global Const $SUBLANG_PORTUGUESE_BRAZILIAN = 1
  1481. Global Const $SUBLANG_SERBIAN_CYRILLIC = 3
  1482. Global Const $SUBLANG_SERBIAN_LATIN = 2
  1483. Global Const $SUBLANG_SPANISH = 1
  1484. Global Const $SUBLANG_SPANISH_ARGENTINA = 11
  1485. Global Const $SUBLANG_SPANISH_BOLIVIA = 16
  1486. Global Const $SUBLANG_SPANISH_CHILE = 13
  1487. Global Const $SUBLANG_SPANISH_COLOMBIA = 9
  1488. Global Const $SUBLANG_SPANISH_COSTA_RICA = 5
  1489. Global Const $SUBLANG_SPANISH_DOMINICAN_REPUBLIC = 7
  1490. Global Const $SUBLANG_SPANISH_ECUADOR = 12
  1491. Global Const $SUBLANG_SPANISH_EL_SALVADOR = 17
  1492. Global Const $SUBLANG_SPANISH_GUATEMALA = 4
  1493. Global Const $SUBLANG_SPANISH_HONDURAS = 18
  1494. Global Const $SUBLANG_SPANISH_MEXICAN = 2
  1495. Global Const $SUBLANG_SPANISH_MODERN = 3
  1496. Global Const $SUBLANG_SPANISH_NICARAGUA = 19
  1497. Global Const $SUBLANG_SPANISH_PANAMA = 6
  1498. Global Const $SUBLANG_SPANISH_PARAGUAY = 15
  1499. Global Const $SUBLANG_SPANISH_PERU = 10
  1500. Global Const $SUBLANG_SPANISH_PUERTO_RICO = 20
  1501. Global Const $SUBLANG_SPANISH_URUGUAY = 14
  1502. Global Const $SUBLANG_SPANISH_VENEZUELA = 8
  1503. Global Const $SUBLANG_SWEDISH = 1
  1504. Global Const $SUBLANG_SWEDISH_FINLAND = 2
  1505. Global Const $SUBLANG_SYS_DEFAULT = 2
  1506. Global Const $SUBLANG_URDU_INDIA = 2
  1507. Global Const $SUBLANG_URDU_PAKISTAN = 1
  1508. Global Const $SUBLANG_UZBEK_CYRILLIC = 2
  1509. Global Const $SORT_DEFAULT = 0
  1510. Global Const $SORT_JAPANESE_XJIS = 0
  1511. Global Const $SORT_JAPANESE_UNICODE = 1
  1512. Global Const $SORT_CHINESE_BIG5 = 0
  1513. Global Const $SORT_CHINESE_PRCP = 0
  1514. Global Const $SORT_CHINESE_UNICODE = 1
  1515. Global Const $SORT_CHINESE_PRC = 2
  1516. Global Const $SORT_KOREAN_KSC = 0
  1517. Global Const $SORT_KOREAN_UNICODE = 1
  1518. Global Const $SORT_GERMAN_PHONE_BOOK = 1
  1519. Global Const $SORT_HUNGARIAN_DEFAULT = 0
  1520. Global Const $SORT_HUNGARIAN_TECHNICAL = 1
  1521. Global Const $SORT_GEORGIAN_TRADITIONAL = 0
  1522. Global Const $SORT_GEORGIAN_MODERN = 1
  1523. Global Const $ERROR_NO_TOKEN = 1008
  1524. Global Const $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
  1525. Global Const $SE_AUDIT_NAME = "SeAuditPrivilege"
  1526. Global Const $SE_BACKUP_NAME = "SeBackupPrivilege"
  1527. Global Const $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
  1528. Global Const $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
  1529. Global Const $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
  1530. Global Const $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
  1531. Global Const $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
  1532. Global Const $SE_DEBUG_NAME = "SeDebugPrivilege"
  1533. Global Const $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
  1534. Global Const $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
  1535. Global Const $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
  1536. Global Const $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
  1537. Global Const $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
  1538. Global Const $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
  1539. Global Const $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
  1540. Global Const $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
  1541. Global Const $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
  1542. Global Const $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
  1543. Global Const $SE_RESTORE_NAME = "SeRestorePrivilege"
  1544. Global Const $SE_SECURITY_NAME = "SeSecurityPrivilege"
  1545. Global Const $SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
  1546. Global Const $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
  1547. Global Const $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
  1548. Global Const $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
  1549. Global Const $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
  1550. Global Const $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
  1551. Global Const $SE_TCB_NAME = "SeTcbPrivilege"
  1552. Global Const $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
  1553. Global Const $SE_UNDOCK_NAME = "SeUndockPrivilege"
  1554. Global Const $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1
  1555. Global Const $SE_PRIVILEGE_ENABLED = 2
  1556. Global Const $SE_PRIVILEGE_REMOVED = 4
  1557. Global Const $SE_PRIVILEGE_USED_FOR_ACCESS = -2147483648
  1558. Global Const $TOKENUSER = 1
  1559. Global Const $TOKENGROUPS = 2
  1560. Global Const $TOKENPRIVILEGES = 3
  1561. Global Const $TOKENOWNER = 4
  1562. Global Const $TOKENPRIMARYGROUP = 5
  1563. Global Const $TOKENDEFAULTDACL = 6
  1564. Global Const $TOKENSOURCE = 7
  1565. Global Const $TOKENTYPE = 8
  1566. Global Const $TOKENIMPERSONATIONLEVEL = 9
  1567. Global Const $TOKENSTATISTICS = 10
  1568. Global Const $TOKENRESTRICTEDSIDS = 11
  1569. Global Const $TOKENSESSIONID = 12
  1570. Global Const $TOKENGROUPSANDPRIVILEGES = 13
  1571. Global Const $TOKENSESSIONREFERENCE = 14
  1572. Global Const $TOKENSANDBOXINERT = 15
  1573. Global Const $TOKENAUDITPOLICY = 16
  1574. Global Const $TOKENORIGIN = 17
  1575. Global Const $TOKENELEVATIONTYPE = 18
  1576. Global Const $TOKENLINKEDTOKEN = 19
  1577. Global Const $TOKENELEVATION = 20
  1578. Global Const $TOKENHASRESTRICTIONS = 21
  1579. Global Const $TOKENACCESSINFORMATION = 22
  1580. Global Const $TOKENVIRTUALIZATIONALLOWED = 23
  1581. Global Const $TOKENVIRTUALIZATIONENABLED = 24
  1582. Global Const $TOKENINTEGRITYLEVEL = 25
  1583. Global Const $TOKENUIACCESS = 26
  1584. Global Const $TOKENMANDATORYPOLICY = 27
  1585. Global Const $TOKENLOGONSID = 28
  1586. Global Const $TOKEN_ASSIGN_PRIMARY = 1
  1587. Global Const $TOKEN_DUPLICATE = 2
  1588. Global Const $TOKEN_IMPERSONATE = 4
  1589. Global Const $TOKEN_QUERY = 8
  1590. Global Const $TOKEN_QUERY_SOURCE = 16
  1591. Global Const $TOKEN_ADJUST_PRIVILEGES = 32
  1592. Global Const $TOKEN_ADJUST_GROUPS = 64
  1593. Global Const $TOKEN_ADJUST_DEFAULT = 128
  1594. Global Const $TOKEN_ADJUST_SESSIONID = 256
  1595. Func _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN, $FDISABLEALL, $PNEWSTATE, $IBUFFERLEN, $PPREVSTATE = 0, $PREQUIRED = 0)
  1596. Local $ARESULT = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $HTOKEN, "bool", $FDISABLEALL, "ptr", $PNEWSTATE, "dword", $IBUFFERLEN, "ptr", $PPREVSTATE, "ptr", $PREQUIRED)
  1597. If @error Then Return SetError(@error, @extended, False)
  1598. Return $ARESULT[0]
  1599. EndFunc
  1600. Func _SECURITY__GETACCOUNTSID($SACCOUNT, $SSYSTEM = "")
  1601. Local $AACCT = _SECURITY__LOOKUPACCOUNTNAME($SACCOUNT, $SSYSTEM)
  1602. If @error Then Return SetError(@error, 0, 0)
  1603. Return _SECURITY__STRINGSIDTOSID($AACCT[0])
  1604. EndFunc
  1605. Func _SECURITY__GETLENGTHSID($PSID)
  1606. If Not _SECURITY__ISVALIDSID($PSID) Then Return SetError(-1, 0, 0)
  1607. Local $ARESULT = DllCall("advapi32.dll", "dword", "GetLengthSid", "ptr", $PSID)
  1608. If @error Then Return SetError(@error, @extended, 0)
  1609. Return $ARESULT[0]
  1610. EndFunc
  1611. Func _SECURITY__GETTOKENINFORMATION($HTOKEN, $ICLASS)
  1612. Local $ARESULT = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "ptr", 0, "dword", 0, "dword*", 0)
  1613. If @error Then Return SetError(@error, @extended, 0)
  1614. If Not $ARESULT[0] Then Return 0
  1615. Local $TBUFFER = DllStructCreate("byte[" & $ARESULT[5] & "]")
  1616. Local $PBUFFER = DllStructGetPtr($TBUFFER)
  1617. $ARESULT = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "ptr", $PBUFFER, "dword", $ARESULT[5], "dword*", 0)
  1618. If @error Then Return SetError(@error, @extended, 0)
  1619. If Not $ARESULT[0] Then Return 0
  1620. Return $TBUFFER
  1621. EndFunc
  1622. Func _SECURITY__IMPERSONATESELF($ILEVEL = 2)
  1623. Local $ARESULT = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $ILEVEL)
  1624. If @error Then Return SetError(@error, @extended, False)
  1625. Return $ARESULT[0]
  1626. EndFunc
  1627. Func _SECURITY__ISVALIDSID($PSID)
  1628. Local $ARESULT = DllCall("advapi32.dll", "bool", "IsValidSid", "ptr", $PSID)
  1629. If @error Then Return SetError(@error, @extended, False)
  1630. Return $ARESULT[0]
  1631. EndFunc
  1632. Func _SECURITY__LOOKUPACCOUNTNAME($SACCOUNT, $SSYSTEM = "")
  1633. Local $TDATA = DllStructCreate("byte SID[256]")
  1634. Local $PSID = DllStructGetPtr($TDATA, "SID")
  1635. Local $ARESULT = DllCall("advapi32.dll", "bool", "LookupAccountNameW", "wstr", $SSYSTEM, "wstr", $SACCOUNT, "ptr", $PSID, "dword*", 256, "wstr", "", "dword*", 256, "int*", 0)
  1636. If @error Then Return SetError(@error, @extended, 0)
  1637. If Not $ARESULT[0] Then Return 0
  1638. Local $AACCT[3]
  1639. $AACCT[0] = _SECURITY__SIDTOSTRINGSID($PSID)
  1640. $AACCT[1] = $ARESULT[5]
  1641. $AACCT[2] = $ARESULT[7]
  1642. Return $AACCT
  1643. EndFunc
  1644. Func _SECURITY__LOOKUPACCOUNTSID($VSID)
  1645. Local $PSID, $AACCT[3]
  1646. If IsString($VSID) Then
  1647. Local $TSID = _SECURITY__STRINGSIDTOSID($VSID)
  1648. $PSID = DllStructGetPtr($TSID)
  1649. Else
  1650. $PSID = $VSID
  1651. EndIf
  1652. If Not _SECURITY__ISVALIDSID($PSID) Then Return SetError(-1, 0, 0)
  1653. Local $ARESULT = DllCall("advapi32.dll", "bool", "LookupAccountSidW", "ptr", 0, "ptr", $PSID, "wstr", "", "dword*", 256, "wstr", "", "dword*", 256, "int*", 0)
  1654. If @error Then Return SetError(@error, @extended, 0)
  1655. If Not $ARESULT[0] Then Return 0
  1656. Local $AACCT[3]
  1657. $AACCT[0] = $ARESULT[3]
  1658. $AACCT[1] = $ARESULT[5]
  1659. $AACCT[2] = $ARESULT[7]
  1660. Return $AACCT
  1661. EndFunc
  1662. Func _SECURITY__LOOKUPPRIVILEGEVALUE($SSYSTEM, $SNAME)
  1663. Local $ARESULT = DllCall("advapi32.dll", "int", "LookupPrivilegeValueW", "wstr", $SSYSTEM, "wstr", $SNAME, "int64*", 0)
  1664. If @error Then Return SetError(@error, @extended, 0)
  1665. Return SetError(0, $ARESULT[0], $ARESULT[3])
  1666. EndFunc
  1667. Func _SECURITY__OPENPROCESSTOKEN($HPROCESS, $IACCESS)
  1668. Local $ARESULT = DllCall("advapi32.dll", "int", "OpenProcessToken", "handle", $HPROCESS, "dword", $IACCESS, "ptr", 0)
  1669. If @error Then Return SetError(@error, @extended, 0)
  1670. Return SetError(0, $ARESULT[0], $ARESULT[3])
  1671. EndFunc
  1672. Func _SECURITY__OPENTHREADTOKEN($IACCESS, $HTHREAD = 0, $FOPENASSELF = False)
  1673. If $HTHREAD = 0 Then $HTHREAD = DllCall("kernel32.dll", "handle", "GetCurrentThread")
  1674. If @error Then Return SetError(@error, @extended, 0)
  1675. Local $ARESULT = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $HTHREAD[0], "dword", $IACCESS, "int", $FOPENASSELF, "ptr*", 0)
  1676. If @error Then Return SetError(@error, @extended, 0)
  1677. Return SetError(0, $ARESULT[0], $ARESULT[4])
  1678. EndFunc
  1679. Func _SECURITY__OPENTHREADTOKENEX($IACCESS, $HTHREAD = 0, $FOPENASSELF = False)
  1680. Local $HTOKEN = _SECURITY__OPENTHREADTOKEN($IACCESS, $HTHREAD, $FOPENASSELF)
  1681. If $HTOKEN = 0 Then
  1682. If _WINAPI_GETLASTERROR() <> $ERROR_NO_TOKEN Then Return SetError(-3, _WINAPI_GETLASTERROR(), 0)
  1683. If Not _SECURITY__IMPERSONATESELF() Then Return SetError(-1, _WINAPI_GETLASTERROR(), 0)
  1684. $HTOKEN = _SECURITY__OPENTHREADTOKEN($IACCESS, $HTHREAD, $FOPENASSELF)
  1685. If $HTOKEN = 0 Then Return SetError(-2, _WINAPI_GETLASTERROR(), 0)
  1686. EndIf
  1687. Return $HTOKEN
  1688. EndFunc
  1689. Func _SECURITY__SETPRIVILEGE($HTOKEN, $SPRIVILEGE, $FENABLE)
  1690. Local $ILUID = _SECURITY__LOOKUPPRIVILEGEVALUE("", $SPRIVILEGE)
  1691. If $ILUID = 0 Then Return SetError(-1, 0, False)
  1692. Local $TCURRSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
  1693. Local $PCURRSTATE = DllStructGetPtr($TCURRSTATE)
  1694. Local $ICURRSTATE = DllStructGetSize($TCURRSTATE)
  1695. Local $TPREVSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
  1696. Local $PPREVSTATE = DllStructGetPtr($TPREVSTATE)
  1697. Local $IPREVSTATE = DllStructGetSize($TPREVSTATE)
  1698. Local $TREQUIRED = DllStructCreate("int Data")
  1699. Local $PREQUIRED = DllStructGetPtr($TREQUIRED)
  1700. DllStructSetData($TCURRSTATE, "Count", 1)
  1701. DllStructSetData($TCURRSTATE, "LUID", $ILUID)
  1702. If Not _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN, False, $PCURRSTATE, $ICURRSTATE, $PPREVSTATE, $PREQUIRED) Then Return SetError(-2, @error, False)
  1703. DllStructSetData($TPREVSTATE, "Count", 1)
  1704. DllStructSetData($TPREVSTATE, "LUID", $ILUID)
  1705. Local $IATTRIBUTES = DllStructGetData($TPREVSTATE, "Attributes")
  1706. If $FENABLE Then
  1707. $IATTRIBUTES = BitOR($IATTRIBUTES, $SE_PRIVILEGE_ENABLED)
  1708. Else
  1709. $IATTRIBUTES = BitAND($IATTRIBUTES, BitNOT($SE_PRIVILEGE_ENABLED))
  1710. EndIf
  1711. DllStructSetData($TPREVSTATE, "Attributes", $IATTRIBUTES)
  1712. If Not _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN, False, $PPREVSTATE, $IPREVSTATE, $PCURRSTATE, $PREQUIRED) Then Return SetError(-3, @error, False)
  1713. Return True
  1714. EndFunc
  1715. Func _SECURITY__SIDTOSTRINGSID($PSID)
  1716. If Not _SECURITY__ISVALIDSID($PSID) Then Return SetError(-1, 0, "")
  1717. Local $ARESULT = DllCall("advapi32.dll", "int", "ConvertSidToStringSidW", "ptr", $PSID, "ptr*", 0)
  1718. If @error Then Return SetError(@error, @extended, "")
  1719. If Not $ARESULT[0] Then Return ""
  1720. Local $TBUFFER = DllStructCreate("wchar Text[256]", $ARESULT[2])
  1721. Local $SSID = DllStructGetData($TBUFFER, "Text")
  1722. DllCall("Kernel32.dll", "ptr", "LocalFree", "ptr", $ARESULT[2])
  1723. Return $SSID
  1724. EndFunc
  1725. Func _SECURITY__SIDTYPESTR($ITYPE)
  1726. Switch $ITYPE
  1727. Case 1
  1728. Return "User"
  1729. Case 2
  1730. Return "Group"
  1731. Case 3
  1732. Return "Domain"
  1733. Case 4
  1734. Return "Alias"
  1735. Case 5
  1736. Return "Well Known Group"
  1737. Case 6
  1738. Return "Deleted Account"
  1739. Case 7
  1740. Return "Invalid"
  1741. Case 8
  1742. Return "Invalid"
  1743. Case 9
  1744. Return "Computer"
  1745. Case Else
  1746. Return "Unknown SID Type"
  1747. EndSwitch
  1748. EndFunc
  1749. Func _SECURITY__STRINGSIDTOSID($SSID)
  1750. Local $ARESULT = DllCall("advapi32.dll", "bool", "ConvertStringSidToSidW", "wstr", $SSID, "ptr*", 0)
  1751. If @error Then Return SetError(@error, @extended, 0)
  1752. If Not $ARESULT[0] Then Return 0
  1753. Local $ISIZE = _SECURITY__GETLENGTHSID($ARESULT[2])
  1754. Local $TBUFFER = DllStructCreate("byte Data[" & $ISIZE & "]", $ARESULT[2])
  1755. Local $TSID = DllStructCreate("byte Data[" & $ISIZE & "]")
  1756. DllStructSetData($TSID, "Data", DllStructGetData($TBUFFER, "Data"))
  1757. DllCall("kernel32.dll", "ptr", "LocalFree", "ptr", $ARESULT[2])
  1758. Return $TSID
  1759. EndFunc
  1760. Func _SENDMESSAGE($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
  1761. Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageW", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
  1762. If @error Then Return SetError(@error, @extended, "")
  1763. If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN]
  1764. Return $ARESULT
  1765. EndFunc
  1766. Func _SENDMESSAGEA($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
  1767. Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageA", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
  1768. If @error Then Return SetError(@error, @extended, "")
  1769. If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN]
  1770. Return $ARESULT
  1771. EndFunc
  1772. Global $__GAINPROCESS_WINAPI[64][2] = [[0, 0]]
  1773. Global $__GAWINLIST_WINAPI[64][2] = [[0, 0]]
  1774. Global Const $__WINAPICONSTANT_WM_SETFONT = 48
  1775. Global Const $__WINAPICONSTANT_FW_NORMAL = 400
  1776. Global Const $__WINAPICONSTANT_DEFAULT_CHARSET = 1
  1777. Global Const $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0
  1778. Global Const $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0
  1779. Global Const $__WINAPICONSTANT_DEFAULT_QUALITY = 0
  1780. Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
  1781. Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM = 4096
  1782. Global Const $__WINAPICONSTANT_LOGPIXELSX = 88
  1783. Global Const $__WINAPICONSTANT_LOGPIXELSY = 90
  1784. Global Const $HGDI_ERROR = Ptr(-1)
  1785. Global Const $INVALID_HANDLE_VALUE = Ptr(-1)
  1786. Global Const $CLR_INVALID = -1
  1787. Global Const $__WINAPICONSTANT_FLASHW_CAPTION = 1
  1788. Global Const $__WINAPICONSTANT_FLASHW_TRAY = 2
  1789. Global Const $__WINAPICONSTANT_FLASHW_TIMER = 4
  1790. Global Const $__WINAPICONSTANT_FLASHW_TIMERNOFG = 12
  1791. Global Const $__WINAPICONSTANT_GW_HWNDNEXT = 2
  1792. Global Const $__WINAPICONSTANT_GW_CHILD = 5
  1793. Global Const $__WINAPICONSTANT_DI_MASK = 1
  1794. Global Const $__WINAPICONSTANT_DI_IMAGE = 2
  1795. Global Const $__WINAPICONSTANT_DI_NORMAL = 3
  1796. Global Const $__WINAPICONSTANT_DI_COMPAT = 4
  1797. Global Const $__WINAPICONSTANT_DI_DEFAULTSIZE = 8
  1798. Global Const $__WINAPICONSTANT_DI_NOMIRROR = 16
  1799. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1
  1800. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE = 4
  1801. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER = 8
  1802. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE = 16
  1803. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE = 32
  1804. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED = 134217728
  1805. Global Const $NULL_BRUSH = 5
  1806. Global Const $NULL_PEN = 8
  1807. Global Const $BLACK_BRUSH = 4
  1808. Global Const $DKGRAY_BRUSH = 3
  1809. Global Const $DC_BRUSH = 18
  1810. Global Const $GRAY_BRUSH = 2
  1811. Global Const $HOLLOW_BRUSH = $NULL_BRUSH
  1812. Global Const $LTGRAY_BRUSH = 1
  1813. Global Const $WHITE_BRUSH = 0
  1814. Global Const $BLACK_PEN = 7
  1815. Global Const $DC_PEN = 19
  1816. Global Const $WHITE_PEN = 6
  1817. Global Const $ANSI_FIXED_FONT = 11
  1818. Global Const $ANSI_VAR_FONT = 12
  1819. Global Const $DEVICE_DEFAULT_FONT = 14
  1820. Global Const $DEFAULT_GUI_FONT = 17
  1821. Global Const $OEM_FIXED_FONT = 10
  1822. Global Const $SYSTEM_FONT = 13
  1823. Global Const $SYSTEM_FIXED_FONT = 16
  1824. Global Const $DEFAULT_PALETTE = 15
  1825. Global Const $MB_PRECOMPOSED = 1
  1826. Global Const $MB_COMPOSITE = 2
  1827. Global Const $MB_USEGLYPHCHARS = 4
  1828. Global Const $ULW_ALPHA = 2
  1829. Global Const $ULW_COLORKEY = 1
  1830. Global Const $ULW_OPAQUE = 4
  1831. Global Const $WH_CALLWNDPROC = 4
  1832. Global Const $WH_CALLWNDPROCRET = 12
  1833. Global Const $WH_CBT = 5
  1834. Global Const $WH_DEBUG = 9
  1835. Global Const $WH_FOREGROUNDIDLE = 11
  1836. Global Const $WH_GETMESSAGE = 3
  1837. Global Const $WH_JOURNALPLAYBACK = 1
  1838. Global Const $WH_JOURNALRECORD = 0
  1839. Global Const $WH_KEYBOARD = 2
  1840. Global Const $WH_KEYBOARD_LL = 13
  1841. Global Const $WH_MOUSE = 7
  1842. Global Const $WH_MOUSE_LL = 14
  1843. Global Const $WH_MSGFILTER = -1
  1844. Global Const $WH_SHELL = 10
  1845. Global Const $WH_SYSMSGFILTER = 6
  1846. Global Const $WPF_ASYNCWINDOWPLACEMENT = 4
  1847. Global Const $WPF_RESTORETOMAXIMIZED = 2
  1848. Global Const $WPF_SETMINPOSITION = 1
  1849. Global Const $KF_EXTENDED = 256
  1850. Global Const $KF_ALTDOWN = 8192
  1851. Global Const $KF_UP = 32768
  1852. Global Const $LLKHF_EXTENDED = BitShift($KF_EXTENDED, 8)
  1853. Global Const $LLKHF_INJECTED = 16
  1854. Global Const $LLKHF_ALTDOWN = BitShift($KF_ALTDOWN, 8)
  1855. Global Const $LLKHF_UP = BitShift($KF_UP, 8)
  1856. Global Const $OFN_ALLOWMULTISELECT = 512
  1857. Global Const $OFN_CREATEPROMPT = 8192
  1858. Global Const $OFN_DONTADDTORECENT = 33554432
  1859. Global Const $OFN_ENABLEHOOK = 32
  1860. Global Const $OFN_ENABLEINCLUDENOTIFY = 4194304
  1861. Global Const $OFN_ENABLESIZING = 8388608
  1862. Global Const $OFN_ENABLETEMPLATE = 64
  1863. Global Const $OFN_ENABLETEMPLATEHANDLE = 128
  1864. Global Const $OFN_EXPLORER = 524288
  1865. Global Const $OFN_EXTENSIONDIFFERENT = 1024
  1866. Global Const $OFN_FILEMUSTEXIST = 4096
  1867. Global Const $OFN_FORCESHOWHIDDEN = 268435456
  1868. Global Const $OFN_HIDEREADONLY = 4
  1869. Global Const $OFN_LONGNAMES = 2097152
  1870. Global Const $OFN_NOCHANGEDIR = 8
  1871. Global Const $OFN_NODEREFERENCELINKS = 1048576
  1872. Global Const $OFN_NOLONGNAMES = 262144
  1873. Global Const $OFN_NONETWORKBUTTON = 131072
  1874. Global Const $OFN_NOREADONLYRETURN = 32768
  1875. Global Const $OFN_NOTESTFILECREATE = 65536
  1876. Global Const $OFN_NOVALIDATE = 256
  1877. Global Const $OFN_OVERWRITEPROMPT = 2
  1878. Global Const $OFN_PATHMUSTEXIST = 2048
  1879. Global Const $OFN_READONLY = 1
  1880. Global Const $OFN_SHAREAWARE = 16384
  1881. Global Const $OFN_SHOWHELP = 16
  1882. Global Const $OFN_EX_NOPLACESBAR = 1
  1883. Global Const $TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & $TAGPOINT
  1884. Global Const $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]"
  1885. Global Const $TAGFLASHWINFO = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut"
  1886. Global Const $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
  1887. Global Const $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"
  1888. Func _WINAPI_ATTACHCONSOLE($IPROCESSID = -1)
  1889. Local $ARESULT = DllCall("kernel32.dll", "bool", "AttachConsole", "dword", $IPROCESSID)
  1890. If @error Then Return SetError(@error, @extended, False)
  1891. Return $ARESULT[0]
  1892. EndFunc
  1893. Func _WINAPI_ATTACHTHREADINPUT($IATTACH, $IATTACHTO, $FATTACH)
  1894. Local $ARESULT = DllCall("user32.dll", "bool", "AttachThreadInput", "dword", $IATTACH, "dword", $IATTACHTO, "bool", $FATTACH)
  1895. If @error Then Return SetError(@error, @extended, False)
  1896. Return $ARESULT[0]
  1897. EndFunc
  1898. Func _WINAPI_BEEP($IFREQ = 500, $IDURATION = 1000)
  1899. Local $ARESULT = DllCall("kernel32.dll", "bool", "Beep", "dword", $IFREQ, "dword", $IDURATION)
  1900. If @error Then Return SetError(@error, @extended, False)
  1901. Return $ARESULT[0]
  1902. EndFunc
  1903. Func _WINAPI_BITBLT($HDESTDC, $IXDEST, $IYDEST, $IWIDTH, $IHEIGHT, $HSRCDC, $IXSRC, $IYSRC, $IROP)
  1904. 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)
  1905. If @error Then Return SetError(@error, @extended, False)
  1906. Return $ARESULT[0]
  1907. EndFunc
  1908. Func _WINAPI_CALLNEXTHOOKEX($HHK, $ICODE, $WPARAM, $LPARAM)
  1909. Local $ARESULT = DllCall("user32.dll", "lresult", "CallNextHookEx", "handle", $HHK, "int", $ICODE, "wparam", $WPARAM, "lparam", $LPARAM)
  1910. If @error Then Return SetError(@error, @extended, -1)
  1911. Return $ARESULT[0]
  1912. EndFunc
  1913. Func _WINAPI_CALLWINDOWPROC($LPPREVWNDFUNC, $HWND, $MSG, $WPARAM, $LPARAM)
  1914. Local $ARESULT = DllCall("user32.dll", "lresult", "CallWindowProc", "ptr", $LPPREVWNDFUNC, "hwnd", $HWND, "uint", $MSG, "wparam", $WPARAM, "lparam", $LPARAM)
  1915. If @error Then Return SetError(@error, @extended, -1)
  1916. Return $ARESULT[0]
  1917. EndFunc
  1918. Func _WINAPI_CLIENTTOSCREEN($HWND, ByRef $TPOINT)
  1919. Local $PPOINT = DllStructGetPtr($TPOINT)
  1920. DllCall("user32.dll", "bool", "ClientToScreen", "hwnd", $HWND, "ptr", $PPOINT)
  1921. Return SetError(@error, @extended, $TPOINT)
  1922. EndFunc
  1923. Func _WINAPI_CLOSEHANDLE($HOBJECT)
  1924. Local $ARESULT = DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HOBJECT)
  1925. If @error Then Return SetError(@error, @extended, False)
  1926. Return $ARESULT[0]
  1927. EndFunc
  1928. Func _WINAPI_COMBINERGN($HRGNDEST, $HRGNSRC1, $HRGNSRC2, $ICOMBINEMODE)
  1929. Local $ARESULT = DllCall("gdi32.dll", "int", "CombineRgn", "handle", $HRGNDEST, "handle", $HRGNSRC1, "handle", $HRGNSRC2, "int", $ICOMBINEMODE)
  1930. If @error Then Return SetError(@error, @extended, 0)
  1931. Return $ARESULT[0]
  1932. EndFunc
  1933. Func _WINAPI_COMMDLGEXTENDEDERROR()
  1934. Local Const $CDERR_DIALOGFAILURE = 65535
  1935. Local Const $CDERR_FINDRESFAILURE = 6
  1936. Local Const $CDERR_INITIALIZATION = 2
  1937. Local Const $CDERR_LOADRESFAILURE = 7
  1938. Local Const $CDERR_LOADSTRFAILURE = 5
  1939. Local Const $CDERR_LOCKRESFAILURE = 8
  1940. Local Const $CDERR_MEMALLOCFAILURE = 9
  1941. Local Const $CDERR_MEMLOCKFAILURE = 10
  1942. Local Const $CDERR_NOHINSTANCE = 4
  1943. Local Const $CDERR_NOHOOK = 11
  1944. Local Const $CDERR_NOTEMPLATE = 3
  1945. Local Const $CDERR_REGISTERMSGFAIL = 12
  1946. Local Const $CDERR_STRUCTSIZE = 1
  1947. Local Const $FNERR_BUFFERTOOSMALL = 12291
  1948. Local Const $FNERR_INVALIDFILENAME = 12290
  1949. Local Const $FNERR_SUBCLASSFAILURE = 12289
  1950. Local $ARESULT = DllCall("comdlg32.dll", "dword", "CommDlgExtendedError")
  1951. If @error Then Return SetError(@error, @extended, 0)
  1952. Switch $ARESULT[0]
  1953. Case $CDERR_DIALOGFAILURE
  1954. 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.")
  1955. Case $CDERR_FINDRESFAILURE
  1956. Return SetError($ARESULT[0], 0, "The common dialog box function failed to find a specified resource.")
  1957. Case $CDERR_INITIALIZATION
  1958. Return SetError($ARESULT[0], 0, "The common dialog box function failed during initialization." & @LF & "This error often occurs when sufficient memory is not available.")
  1959. Case $CDERR_LOADRESFAILURE
  1960. Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified resource.")
  1961. Case $CDERR_LOADSTRFAILURE
  1962. Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified string.")
  1963. Case $CDERR_LOCKRESFAILURE
  1964. Return SetError($ARESULT[0], 0, "The common dialog box function failed to lock a specified resource.")
  1965. Case $CDERR_MEMALLOCFAILURE
  1966. Return SetError($ARESULT[0], 0, "The common dialog box function was unable to allocate memory for internal structures.")
  1967. Case $CDERR_MEMLOCKFAILURE
  1968. Return SetError($ARESULT[0], 0, "The common dialog box function was unable to lock the memory associated with a handle.")
  1969. Case $CDERR_NOHINSTANCE
  1970. 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.")
  1971. Case $CDERR_NOHOOK
  1972. 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.")
  1973. Case $CDERR_NOTEMPLATE
  1974. 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.")
  1975. Case $CDERR_REGISTERMSGFAIL
  1976. Return SetError($ARESULT[0], 0, "The RegisterWindowMessage function returned an error code when it was called by the common dialog box function.")
  1977. Case $CDERR_STRUCTSIZE
  1978. Return SetError($ARESULT[0], 0, "The lStructSize member of the initialization structure for the corresponding common dialog box is invalid")
  1979. Case $FNERR_BUFFERTOOSMALL
  1980. 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.")
  1981. Case $FNERR_INVALIDFILENAME
  1982. Return SetError($ARESULT[0], 0, "A file name is invalid.")
  1983. Case $FNERR_SUBCLASSFAILURE
  1984. Return SetError($ARESULT[0], 0, "An attempt to subclass a list box failed because sufficient memory was not available.")
  1985. EndSwitch
  1986. Return Hex($ARESULT[0])
  1987. EndFunc
  1988. Func _WINAPI_COPYICON($HICON)
  1989. Local $ARESULT = DllCall("user32.dll", "handle", "CopyIcon", "handle", $HICON)
  1990. If @error Then Return SetError(@error, @extended, 0)
  1991. Return $ARESULT[0]
  1992. EndFunc
  1993. Func _WINAPI_CREATEBITMAP($IWIDTH, $IHEIGHT, $IPLANES = 1, $IBITSPERPEL = 1, $PBITS = 0)
  1994. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateBitmap", "int", $IWIDTH, "int", $IHEIGHT, "uint", $IPLANES, "uint", $IBITSPERPEL, "ptr", $PBITS)
  1995. If @error Then Return SetError(@error, @extended, 0)
  1996. Return $ARESULT[0]
  1997. EndFunc
  1998. Func _WINAPI_CREATECOMPATIBLEBITMAP($HDC, $IWIDTH, $IHEIGHT)
  1999. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleBitmap", "handle", $HDC, "int", $IWIDTH, "int", $IHEIGHT)
  2000. If @error Then Return SetError(@error, @extended, 0)
  2001. Return $ARESULT[0]
  2002. EndFunc
  2003. Func _WINAPI_CREATECOMPATIBLEDC($HDC)
  2004. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $HDC)
  2005. If @error Then Return SetError(@error, @extended, 0)
  2006. Return $ARESULT[0]
  2007. EndFunc
  2008. Func _WINAPI_CREATEEVENT($PATTRIBUTES = 0, $FMANUALRESET = True, $FINITIALSTATE = True, $SNAME = "")
  2009. Local $SNAMETYPE = "wstr"
  2010. If $SNAME = "" Then
  2011. $SNAME = 0
  2012. $SNAMETYPE = "ptr"
  2013. EndIf
  2014. Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateEventW", "ptr", $PATTRIBUTES, "bool", $FMANUALRESET, "bool", $FINITIALSTATE, $SNAMETYPE, $SNAME)
  2015. If @error Then Return SetError(@error, @extended, 0)
  2016. Return $ARESULT[0]
  2017. EndFunc
  2018. Func _WINAPI_CREATEFILE($SFILENAME, $ICREATION, $IACCESS = 4, $ISHARE = 0, $IATTRIBUTES = 0, $PSECURITY = 0)
  2019. Local $IDA = 0, $ISM = 0, $ICD = 0, $IFA = 0
  2020. If BitAND($IACCESS, 1) <> 0 Then $IDA = BitOR($IDA, $GENERIC_EXECUTE)
  2021. If BitAND($IACCESS, 2) <> 0 Then $IDA = BitOR($IDA, $GENERIC_READ)
  2022. If BitAND($IACCESS, 4) <> 0 Then $IDA = BitOR($IDA, $GENERIC_WRITE)
  2023. If BitAND($ISHARE, 1) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_DELETE)
  2024. If BitAND($ISHARE, 2) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_READ)
  2025. If BitAND($ISHARE, 4) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_WRITE)
  2026. Switch $ICREATION
  2027. Case 0
  2028. $ICD = $CREATE_NEW
  2029. Case 1
  2030. $ICD = $CREATE_ALWAYS
  2031. Case 2
  2032. $ICD = $OPEN_EXISTING
  2033. Case 3
  2034. $ICD = $OPEN_ALWAYS
  2035. Case 4
  2036. $ICD = $TRUNCATE_EXISTING
  2037. EndSwitch
  2038. If BitAND($IATTRIBUTES, 1) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_ARCHIVE)
  2039. If BitAND($IATTRIBUTES, 2) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_HIDDEN)
  2040. If BitAND($IATTRIBUTES, 4) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_READONLY)
  2041. If BitAND($IATTRIBUTES, 8) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_SYSTEM)
  2042. Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateFileW", "wstr", $SFILENAME, "dword", $IDA, "dword", $ISM, "ptr", $PSECURITY, "dword", $ICD, "dword", $IFA, "ptr", 0)
  2043. If @error Or $ARESULT[0] = Ptr(-1) Then Return SetError(@error, @extended, 0)
  2044. Return $ARESULT[0]
  2045. EndFunc
  2046. 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")
  2047. 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)
  2048. If @error Then Return SetError(@error, @extended, 0)
  2049. Return $ARESULT[0]
  2050. EndFunc
  2051. Func _WINAPI_CREATEFONTINDIRECT($TLOGFONT)
  2052. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateFontIndirectW", "ptr", DllStructGetPtr($TLOGFONT))
  2053. If @error Then Return SetError(@error, @extended, 0)
  2054. Return $ARESULT[0]
  2055. EndFunc
  2056. Func _WINAPI_CREATEPEN($IPENSTYLE, $IWIDTH, $NCOLOR)
  2057. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreatePen", "int", $IPENSTYLE, "int", $IWIDTH, "dword", $NCOLOR)
  2058. If @error Then Return SetError(@error, @extended, 0)
  2059. Return $ARESULT[0]
  2060. EndFunc
  2061. Func _WINAPI_CREATEPROCESS($SAPPNAME, $SCOMMAND, $PSECURITY, $PTHREAD, $FINHERIT, $IFLAGS, $PENVIRON, $SDIR, $PSTARTUPINFO, $PPROCESS)
  2062. Local $PCOMMAND = 0
  2063. Local $SAPPNAMETYPE = "wstr", $SDIRTYPE = "wstr"
  2064. If $SAPPNAME = "" Then
  2065. $SAPPNAMETYPE = "ptr"
  2066. $SAPPNAME = 0
  2067. EndIf
  2068. If $SCOMMAND <> "" Then
  2069. Local $TCOMMAND = DllStructCreate("wchar Text[" & 260 + 1 & "]")
  2070. $PCOMMAND = DllStructGetPtr($TCOMMAND)
  2071. DllStructSetData($TCOMMAND, "Text", $SCOMMAND)
  2072. EndIf
  2073. If $SDIR = "" Then
  2074. $SDIRTYPE = "ptr"
  2075. $SDIR = 0
  2076. EndIf
  2077. 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)
  2078. If @error Then Return SetError(@error, @extended, False)
  2079. Return $ARESULT[0]
  2080. EndFunc
  2081. Func _WINAPI_CREATERECTRGN($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT)
  2082. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT)
  2083. If @error Then Return SetError(@error, @extended, 0)
  2084. Return $ARESULT[0]
  2085. EndFunc
  2086. Func _WINAPI_CREATEROUNDRECTRGN($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT, $IWIDTHELLIPSE, $IHEIGHTELLIPSE)
  2087. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRoundRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT, "int", $IWIDTHELLIPSE, "int", $IHEIGHTELLIPSE)
  2088. If @error Then Return SetError(@error, @extended, 0)
  2089. Return $ARESULT[0]
  2090. EndFunc
  2091. Func _WINAPI_CREATESOLIDBITMAP($HWND, $ICOLOR, $IWIDTH, $IHEIGHT, $BRGB = 1)
  2092. Local $HDC = _WINAPI_GETDC($HWND)
  2093. Local $HDESTDC = _WINAPI_CREATECOMPATIBLEDC($HDC)
  2094. Local $HBITMAP = _WINAPI_CREATECOMPATIBLEBITMAP($HDC, $IWIDTH, $IHEIGHT)
  2095. Local $HOLD = _WINAPI_SELECTOBJECT($HDESTDC, $HBITMAP)
  2096. Local $TRECT = DllStructCreate($TAGRECT)
  2097. DllStructSetData($TRECT, 1, 0)
  2098. DllStructSetData($TRECT, 2, 0)
  2099. DllStructSetData($TRECT, 3, $IWIDTH)
  2100. DllStructSetData($TRECT, 4, $IHEIGHT)
  2101. If $BRGB Then
  2102. $ICOLOR = BitOR(BitAND($ICOLOR, 65280), BitShift(BitAND($ICOLOR, 255), -16), BitShift(BitAND($ICOLOR, 16711680), 16))
  2103. EndIf
  2104. Local $HBRUSH = _WINAPI_CREATESOLIDBRUSH($ICOLOR)
  2105. _WINAPI_FILLRECT($HDESTDC, DllStructGetPtr($TRECT), $HBRUSH)
  2106. If @error Then
  2107. _WINAPI_DELETEOBJECT($HBITMAP)
  2108. $HBITMAP = 0
  2109. EndIf
  2110. _WINAPI_DELETEOBJECT($HBRUSH)
  2111. _WINAPI_RELEASEDC($HWND, $HDC)
  2112. _WINAPI_SELECTOBJECT($HDESTDC, $HOLD)
  2113. _WINAPI_DELETEDC($HDESTDC)
  2114. If Not $HBITMAP Then Return SetError(1, 0, 0)
  2115. Return $HBITMAP
  2116. EndFunc
  2117. Func _WINAPI_CREATESOLIDBRUSH($NCOLOR)
  2118. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateSolidBrush", "dword", $NCOLOR)
  2119. If @error Then Return SetError(@error, @extended, 0)
  2120. Return $ARESULT[0]
  2121. EndFunc
  2122. Func _WINAPI_CREATEWINDOWEX($IEXSTYLE, $SCLASS, $SNAME, $ISTYLE, $IX, $IY, $IWIDTH, $IHEIGHT, $HPARENT, $HMENU = 0, $HINSTANCE = 0, $PPARAM = 0)
  2123. If $HINSTANCE = 0 Then $HINSTANCE = _WINAPI_GETMODULEHANDLE("")
  2124. 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)
  2125. If @error Then Return SetError(@error, @extended, 0)
  2126. Return $ARESULT[0]
  2127. EndFunc
  2128. Func _WINAPI_DEFWINDOWPROC($HWND, $IMSG, $IWPARAM, $ILPARAM)
  2129. Local $ARESULT = DllCall("user32.dll", "lresult", "DefWindowProc", "hwnd", $HWND, "uint", $IMSG, "wparam", $IWPARAM, "lparam", $ILPARAM)
  2130. If @error Then Return SetError(@error, @extended, 0)
  2131. Return $ARESULT[0]
  2132. EndFunc
  2133. Func _WINAPI_DELETEDC($HDC)
  2134. Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $HDC)
  2135. If @error Then Return SetError(@error, @extended, False)
  2136. Return $ARESULT[0]
  2137. EndFunc
  2138. Func _WINAPI_DELETEOBJECT($HOBJECT)
  2139. Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $HOBJECT)
  2140. If @error Then Return SetError(@error, @extended, False)
  2141. Return $ARESULT[0]
  2142. EndFunc
  2143. Func _WINAPI_DESTROYICON($HICON)
  2144. Local $ARESULT = DllCall("user32.dll", "bool", "DestroyIcon", "handle", $HICON)
  2145. If @error Then Return SetError(@error, @extended, False)
  2146. Return $ARESULT[0]
  2147. EndFunc
  2148. Func _WINAPI_DESTROYWINDOW($HWND)
  2149. Local $ARESULT = DllCall("user32.dll", "bool", "DestroyWindow", "hwnd", $HWND)
  2150. If @error Then Return SetError(@error, @extended, False)
  2151. Return $ARESULT[0]
  2152. EndFunc
  2153. Func _WINAPI_DRAWEDGE($HDC, $PTRRECT, $NEDGETYPE, $GRFFLAGS)
  2154. Local $ARESULT = DllCall("user32.dll", "bool", "DrawEdge", "handle", $HDC, "ptr", $PTRRECT, "uint", $NEDGETYPE, "uint", $GRFFLAGS)
  2155. If @error Then Return SetError(@error, @extended, False)
  2156. Return $ARESULT[0]
  2157. EndFunc
  2158. Func _WINAPI_DRAWFRAMECONTROL($HDC, $PTRRECT, $NTYPE, $NSTATE)
  2159. Local $ARESULT = DllCall("user32.dll", "bool", "DrawFrameControl", "handle", $HDC, "ptr", $PTRRECT, "uint", $NTYPE, "uint", $NSTATE)
  2160. If @error Then Return SetError(@error, @extended, False)
  2161. Return $ARESULT[0]
  2162. EndFunc
  2163. Func _WINAPI_DRAWICON($HDC, $IX, $IY, $HICON)
  2164. Local $ARESULT = DllCall("user32.dll", "bool", "DrawIcon", "handle", $HDC, "int", $IX, "int", $IY, "handle", $HICON)
  2165. If @error Then Return SetError(@error, @extended, False)
  2166. Return $ARESULT[0]
  2167. EndFunc
  2168. Func _WINAPI_DRAWICONEX($HDC, $IX, $IY, $HICON, $IWIDTH = 0, $IHEIGHT = 0, $ISTEP = 0, $HBRUSH = 0, $IFLAGS = 3)
  2169. Local $IOPTIONS
  2170. Switch $IFLAGS
  2171. Case 1
  2172. $IOPTIONS = $__WINAPICONSTANT_DI_MASK
  2173. Case 2
  2174. $IOPTIONS = $__WINAPICONSTANT_DI_IMAGE
  2175. Case 3
  2176. $IOPTIONS = $__WINAPICONSTANT_DI_NORMAL
  2177. Case 4
  2178. $IOPTIONS = $__WINAPICONSTANT_DI_COMPAT
  2179. Case 5
  2180. $IOPTIONS = $__WINAPICONSTANT_DI_DEFAULTSIZE
  2181. Case Else
  2182. $IOPTIONS = $__WINAPICONSTANT_DI_NOMIRROR
  2183. EndSwitch
  2184. 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)
  2185. If @error Then Return SetError(@error, @extended, False)
  2186. Return $ARESULT[0]
  2187. EndFunc
  2188. Func _WINAPI_DRAWLINE($HDC, $IX1, $IY1, $IX2, $IY2)
  2189. _WINAPI_MOVETO($HDC, $IX1, $IY1)
  2190. If @error Then Return SetError(@error, @extended, False)
  2191. _WINAPI_LINETO($HDC, $IX2, $IY2)
  2192. If @error Then Return SetError(@error, @extended, False)
  2193. Return True
  2194. EndFunc
  2195. Func _WINAPI_DRAWTEXT($HDC, $STEXT, ByRef $TRECT, $IFLAGS)
  2196. Local $ARESULT = DllCall("user32.dll", "int", "DrawTextW", "handle", $HDC, "wstr", $STEXT, "int", -1, "ptr", DllStructGetPtr($TRECT), "uint", $IFLAGS)
  2197. If @error Then Return SetError(@error, @extended, 0)
  2198. Return $ARESULT[0]
  2199. EndFunc
  2200. Func _WINAPI_ENABLEWINDOW($HWND, $FENABLE = True)
  2201. Local $ARESULT = DllCall("user32.dll", "bool", "EnableWindow", "hwnd", $HWND, "bool", $FENABLE)
  2202. If @error Then Return SetError(@error, @extended, False)
  2203. Return $ARESULT[0]
  2204. EndFunc
  2205. Func _WINAPI_ENUMDISPLAYDEVICES($SDEVICE, $IDEVNUM)
  2206. Local $PNAME = 0, $IFLAGS = 0, $ADEVICE[5]
  2207. If $SDEVICE <> "" Then
  2208. Local $TNAME = DllStructCreate("wchar Text[" & StringLen($SDEVICE) + 1 & "]")
  2209. $PNAME = DllStructGetPtr($TNAME)
  2210. DllStructSetData($TNAME, "Text", $SDEVICE)
  2211. EndIf
  2212. Local $TDEVICE = DllStructCreate($TAGDISPLAY_DEVICE)
  2213. Local $PDEVICE = DllStructGetPtr($TDEVICE)
  2214. Local $IDEVICE = DllStructGetSize($TDEVICE)
  2215. DllStructSetData($TDEVICE, "Size", $IDEVICE)
  2216. DllCall("user32.dll", "bool", "EnumDisplayDevicesW", "ptr", $PNAME, "dword", $IDEVNUM, "ptr", $PDEVICE, "dword", 1)
  2217. If @error Then Return SetError(@error, @extended, 0)
  2218. Local $IN = DllStructGetData($TDEVICE, "Flags")
  2219. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) <> 0 Then $IFLAGS = BitOR($IFLAGS, 1)
  2220. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 2)
  2221. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER) <> 0 Then $IFLAGS = BitOR($IFLAGS, 4)
  2222. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 8)
  2223. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 16)
  2224. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED) <> 0 Then $IFLAGS = BitOR($IFLAGS, 32)
  2225. $ADEVICE[0] = True
  2226. $ADEVICE[1] = DllStructGetData($TDEVICE, "Name")
  2227. $ADEVICE[2] = DllStructGetData($TDEVICE, "String")
  2228. $ADEVICE[3] = $IFLAGS
  2229. $ADEVICE[4] = DllStructGetData($TDEVICE, "ID")
  2230. Return $ADEVICE
  2231. EndFunc
  2232. Func _WINAPI_ENUMWINDOWS($FVISIBLE = True, $HWND = Default)
  2233. __WINAPI_ENUMWINDOWSINIT()
  2234. If $HWND = Default Then $HWND = _WINAPI_GETDESKTOPWINDOW()
  2235. __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE)
  2236. Return $__GAWINLIST_WINAPI
  2237. EndFunc
  2238. Func __WINAPI_ENUMWINDOWSADD($HWND, $SCLASS = "")
  2239. If $SCLASS = "" Then $SCLASS = _WINAPI_GETCLASSNAME($HWND)
  2240. $__GAWINLIST_WINAPI[0][0] += 1
  2241. Local $ICOUNT = $__GAWINLIST_WINAPI[0][0]
  2242. If $ICOUNT >= $__GAWINLIST_WINAPI[0][1] Then
  2243. ReDim $__GAWINLIST_WINAPI[$ICOUNT + 64][2]
  2244. $__GAWINLIST_WINAPI[0][1] += 64
  2245. EndIf
  2246. $__GAWINLIST_WINAPI[$ICOUNT][0] = $HWND
  2247. $__GAWINLIST_WINAPI[$ICOUNT][1] = $SCLASS
  2248. EndFunc
  2249. Func __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE = True)
  2250. $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_CHILD)
  2251. While $HWND <> 0
  2252. IF (Not $FVISIBLE) Or _WINAPI_ISWINDOWVISIBLE($HWND) Then
  2253. __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE)
  2254. __WINAPI_ENUMWINDOWSADD($HWND)
  2255. EndIf
  2256. $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
  2257. WEnd
  2258. EndFunc
  2259. Func __WINAPI_ENUMWINDOWSINIT()
  2260. ReDim $__GAWINLIST_WINAPI[64][2]
  2261. $__GAWINLIST_WINAPI[0][0] = 0
  2262. $__GAWINLIST_WINAPI[0][1] = 64
  2263. EndFunc
  2264. Func _WINAPI_ENUMWINDOWSPOPUP()
  2265. __WINAPI_ENUMWINDOWSINIT()
  2266. Local $HWND = _WINAPI_GETWINDOW(_WINAPI_GETDESKTOPWINDOW(), $__WINAPICONSTANT_GW_CHILD)
  2267. Local $SCLASS
  2268. While $HWND <> 0
  2269. If _WINAPI_ISWINDOWVISIBLE($HWND) Then
  2270. $SCLASS = _WINAPI_GETCLASSNAME($HWND)
  2271. If $SCLASS = "#32768" Then
  2272. __WINAPI_ENUMWINDOWSADD($HWND)
  2273. ElseIf $SCLASS = "ToolbarWindow32" Then
  2274. __WINAPI_ENUMWINDOWSADD($HWND)
  2275. ElseIf $SCLASS = "ToolTips_Class32" Then
  2276. __WINAPI_ENUMWINDOWSADD($HWND)
  2277. ElseIf $SCLASS = "BaseBar" Then
  2278. __WINAPI_ENUMWINDOWSCHILD($HWND)
  2279. EndIf
  2280. EndIf
  2281. $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
  2282. WEnd
  2283. Return $__GAWINLIST_WINAPI
  2284. EndFunc
  2285. Func _WINAPI_ENUMWINDOWSTOP()
  2286. __WINAPI_ENUMWINDOWSINIT()
  2287. Local $HWND = _WINAPI_GETWINDOW(_WINAPI_GETDESKTOPWINDOW(), $__WINAPICONSTANT_GW_CHILD)
  2288. While $HWND <> 0
  2289. If _WINAPI_ISWINDOWVISIBLE($HWND) Then __WINAPI_ENUMWINDOWSADD($HWND)
  2290. $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
  2291. WEnd
  2292. Return $__GAWINLIST_WINAPI
  2293. EndFunc
  2294. Func _WINAPI_EXPANDENVIRONMENTSTRINGS($SSTRING)
  2295. Local $ARESULT = DllCall("kernel32.dll", "dword", "ExpandEnvironmentStringsW", "wstr", $SSTRING, "wstr", "", "dword", 4096)
  2296. If @error Then Return SetError(@error, @extended, "")
  2297. Return $ARESULT[2]
  2298. EndFunc
  2299. Func _WINAPI_EXTRACTICONEX($SFILE, $IINDEX, $PLARGE, $PSMALL, $IICONS)
  2300. Local $ARESULT = DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $SFILE, "int", $IINDEX, "handle", $PLARGE, "handle", $PSMALL, "uint", $IICONS)
  2301. If @error Then Return SetError(@error, @extended, 0)
  2302. Return $ARESULT[0]
  2303. EndFunc
  2304. Func _WINAPI_FATALAPPEXIT($SMESSAGE)
  2305. DllCall("kernel32.dll", "none", "FatalAppExitW", "uint", 0, "wstr", $SMESSAGE)
  2306. If @error Then Return SetError(@error, @extended)
  2307. EndFunc
  2308. Func _WINAPI_FILLRECT($HDC, $PTRRECT, $HBRUSH)
  2309. Local $ARESULT
  2310. If IsPtr($HBRUSH) Then
  2311. $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "ptr", $PTRRECT, "handle", $HBRUSH)
  2312. Else
  2313. $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "ptr", $PTRRECT, "dword", $HBRUSH)
  2314. EndIf
  2315. If @error Then Return SetError(@error, @extended, False)
  2316. Return $ARESULT[0]
  2317. EndFunc
  2318. Func _WINAPI_FINDEXECUTABLE($SFILENAME, $SDIRECTORY = "")
  2319. Local $ARESULT = DllCall("shell32.dll", "INT", "FindExecutableW", "wstr", $SFILENAME, "wstr", $SDIRECTORY, "wstr", "")
  2320. If @error Then Return SetError(@error, @extended, 0)
  2321. Return SetExtended($ARESULT[0], $ARESULT[3])
  2322. EndFunc
  2323. Func _WINAPI_FINDWINDOW($SCLASSNAME, $SWINDOWNAME)
  2324. Local $ARESULT = DllCall("user32.dll", "hwnd", "FindWindowW", "wstr", $SCLASSNAME, "wstr", $SWINDOWNAME)
  2325. If @error Then Return SetError(@error, @extended, 0)
  2326. Return $ARESULT[0]
  2327. EndFunc
  2328. Func _WINAPI_FLASHWINDOW($HWND, $FINVERT = True)
  2329. Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindow", "hwnd", $HWND, "bool", $FINVERT)
  2330. If @error Then Return SetError(@error, @extended, False)
  2331. Return $ARESULT[0]
  2332. EndFunc
  2333. Func _WINAPI_FLASHWINDOWEX($HWND, $IFLAGS = 3, $ICOUNT = 3, $ITIMEOUT = 0)
  2334. Local $TFLASH = DllStructCreate($TAGFLASHWINFO)
  2335. Local $PFLASH = DllStructGetPtr($TFLASH)
  2336. Local $IFLASH = DllStructGetSize($TFLASH)
  2337. Local $IMODE = 0
  2338. If BitAND($IFLAGS, 1) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_CAPTION)
  2339. If BitAND($IFLAGS, 2) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TRAY)
  2340. If BitAND($IFLAGS, 4) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMER)
  2341. If BitAND($IFLAGS, 8) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMERNOFG)
  2342. DllStructSetData($TFLASH, "Size", $IFLASH)
  2343. DllStructSetData($TFLASH, "hWnd", $HWND)
  2344. DllStructSetData($TFLASH, "Flags", $IMODE)
  2345. DllStructSetData($TFLASH, "Count", $ICOUNT)
  2346. DllStructSetData($TFLASH, "Timeout", $ITIMEOUT)
  2347. Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindowEx", "ptr", $PFLASH)
  2348. If @error Then Return SetError(@error, @extended, False)
  2349. Return $ARESULT[0]
  2350. EndFunc
  2351. Func _WINAPI_FLOATTOINT($NFLOAT)
  2352. Local $TFLOAT = DllStructCreate("float")
  2353. Local $TINT = DllStructCreate("int", DllStructGetPtr($TFLOAT))
  2354. DllStructSetData($TFLOAT, 1, $NFLOAT)
  2355. Return DllStructGetData($TINT, 1)
  2356. EndFunc
  2357. Func _WINAPI_FLUSHFILEBUFFERS($HFILE)
  2358. Local $ARESULT = DllCall("kernel32.dll", "bool", "FlushFileBuffers", "handle", $HFILE)
  2359. If @error Then Return SetError(@error, @extended, False)
  2360. Return $ARESULT[0]
  2361. EndFunc
  2362. Func _WINAPI_FORMATMESSAGE($IFLAGS, $PSOURCE, $IMESSAGEID, $ILANGUAGEID, ByRef $PBUFFER, $ISIZE, $VARGUMENTS)
  2363. Local $SBUFFERTYPE = "ptr"
  2364. If IsString($PBUFFER) Then $SBUFFERTYPE = "wstr"
  2365. Local $ARESULT = DllCall("Kernel32.dll", "dword", "FormatMessageW", "dword", $IFLAGS, "ptr", $PSOURCE, "dword", $IMESSAGEID, "dword", $ILANGUAGEID, $SBUFFERTYPE, $PBUFFER, "dword", $ISIZE, "ptr", $VARGUMENTS)
  2366. If @error Then Return SetError(@error, @extended, 0)
  2367. If $SBUFFERTYPE = "wstr" Then $PBUFFER = $ARESULT[5]
  2368. Return $ARESULT[0]
  2369. EndFunc
  2370. Func _WINAPI_FRAMERECT($HDC, $PTRRECT, $HBRUSH)
  2371. Local $ARESULT = DllCall("user32.dll", "int", "FrameRect", "handle", $HDC, "ptr", $PTRRECT, "handle", $HBRUSH)
  2372. If @error Then Return SetError(@error, @extended, False)
  2373. Return $ARESULT[0]
  2374. EndFunc
  2375. Func _WINAPI_FREELIBRARY($HMODULE)
  2376. Local $ARESULT = DllCall("kernel32.dll", "bool", "FreeLibrary", "handle", $HMODULE)
  2377. If @error Then Return SetError(@error, @extended, False)
  2378. Return $ARESULT[0]
  2379. EndFunc
  2380. Func _WINAPI_GETANCESTOR($HWND, $IFLAGS = 1)
  2381. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetAncestor", "hwnd", $HWND, "uint", $IFLAGS)
  2382. If @error Then Return SetError(@error, @extended, 0)
  2383. Return $ARESULT[0]
  2384. EndFunc
  2385. Func _WINAPI_GETASYNCKEYSTATE($IKEY)
  2386. Local $ARESULT = DllCall("user32.dll", "short", "GetAsyncKeyState", "int", $IKEY)
  2387. If @error Then Return SetError(@error, @extended, 0)
  2388. Return $ARESULT[0]
  2389. EndFunc
  2390. Func _WINAPI_GETBKMODE($HDC)
  2391. Local $ARESULT = DllCall("gdi32.dll", "int", "GetBkMode", "handle", $HDC)
  2392. If @error Then Return SetError(@error, @extended, 0)
  2393. Return $ARESULT[0]
  2394. EndFunc
  2395. Func _WINAPI_GETCLASSNAME($HWND)
  2396. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  2397. Local $ARESULT = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $HWND, "wstr", "", "int", 4096)
  2398. If @error Then Return SetError(@error, @extended, False)
  2399. Return SetExtended($ARESULT[0], $ARESULT[2])
  2400. EndFunc
  2401. Func _WINAPI_GETCLIENTHEIGHT($HWND)
  2402. Local $TRECT = _WINAPI_GETCLIENTRECT($HWND)
  2403. If @error Then Return SetError(@error, @extended, 0)
  2404. Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top")
  2405. EndFunc
  2406. Func _WINAPI_GETCLIENTWIDTH($HWND)
  2407. Local $TRECT = _WINAPI_GETCLIENTRECT($HWND)
  2408. If @error Then Return SetError(@error, @extended, 0)
  2409. Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left")
  2410. EndFunc
  2411. Func _WINAPI_GETCLIENTRECT($HWND)
  2412. Local $TRECT = DllStructCreate($TAGRECT)
  2413. DllCall("user32.dll", "bool", "GetClientRect", "hwnd", $HWND, "ptr", DllStructGetPtr($TRECT))
  2414. If @error Then Return SetError(@error, @extended, 0)
  2415. Return $TRECT
  2416. EndFunc
  2417. Func _WINAPI_GETCURRENTPROCESS()
  2418. Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentProcess")
  2419. If @error Then Return SetError(@error, @extended, 0)
  2420. Return $ARESULT[0]
  2421. EndFunc
  2422. Func _WINAPI_GETCURRENTPROCESSID()
  2423. Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentProcessId")
  2424. If @error Then Return SetError(@error, @extended, 0)
  2425. Return $ARESULT[0]
  2426. EndFunc
  2427. Func _WINAPI_GETCURRENTTHREAD()
  2428. Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentThread")
  2429. If @error Then Return SetError(@error, @extended, 0)
  2430. Return $ARESULT[0]
  2431. EndFunc
  2432. Func _WINAPI_GETCURRENTTHREADID()
  2433. Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentThreadId")
  2434. If @error Then Return SetError(@error, @extended, 0)
  2435. Return $ARESULT[0]
  2436. EndFunc
  2437. Func _WINAPI_GETCURSORINFO()
  2438. Local $TCURSOR = DllStructCreate($TAGCURSORINFO)
  2439. Local $ICURSOR = DllStructGetSize($TCURSOR)
  2440. DllStructSetData($TCURSOR, "Size", $ICURSOR)
  2441. DllCall("user32.dll", "bool", "GetCursorInfo", "ptr", DllStructGetPtr($TCURSOR))
  2442. If @error Then Return SetError(@error, @extended, 0)
  2443. Local $ACURSOR[5]
  2444. $ACURSOR[0] = True
  2445. $ACURSOR[1] = DllStructGetData($TCURSOR, "Flags") <> 0
  2446. $ACURSOR[2] = DllStructGetData($TCURSOR, "hCursor")
  2447. $ACURSOR[3] = DllStructGetData($TCURSOR, "X")
  2448. $ACURSOR[4] = DllStructGetData($TCURSOR, "Y")
  2449. Return $ACURSOR
  2450. EndFunc
  2451. Func _WINAPI_GETDC($HWND)
  2452. Local $ARESULT = DllCall("user32.dll", "handle", "GetDC", "hwnd", $HWND)
  2453. If @error Then Return SetError(@error, @extended, 0)
  2454. Return $ARESULT[0]
  2455. EndFunc
  2456. Func _WINAPI_GETDESKTOPWINDOW()
  2457. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDesktopWindow")
  2458. If @error Then Return SetError(@error, @extended, 0)
  2459. Return $ARESULT[0]
  2460. EndFunc
  2461. Func _WINAPI_GETDEVICECAPS($HDC, $IINDEX)
  2462. Local $ARESULT = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $HDC, "int", $IINDEX)
  2463. If @error Then Return SetError(@error, @extended, 0)
  2464. Return $ARESULT[0]
  2465. EndFunc
  2466. Func _WINAPI_GETDIBITS($HDC, $HBMP, $ISTARTSCAN, $ISCANLINES, $PBITS, $PBI, $IUSAGE)
  2467. Local $ARESULT = DllCall("gdi32.dll", "int", "GetDIBits", "handle", $HDC, "handle", $HBMP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "ptr", $PBITS, "ptr", $PBI, "uint", $IUSAGE)
  2468. If @error Then Return SetError(@error, @extended, False)
  2469. Return $ARESULT[0]
  2470. EndFunc
  2471. Func _WINAPI_GETDLGCTRLID($HWND)
  2472. Local $ARESULT = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $HWND)
  2473. If @error Then Return SetError(@error, @extended, 0)
  2474. Return $ARESULT[0]
  2475. EndFunc
  2476. Func _WINAPI_GETDLGITEM($HWND, $IITEMID)
  2477. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDlgItem", "hwnd", $HWND, "int", $IITEMID)
  2478. If @error Then Return SetError(@error, @extended, 0)
  2479. Return $ARESULT[0]
  2480. EndFunc
  2481. Func _WINAPI_GETFOCUS()
  2482. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetFocus")
  2483. If @error Then Return SetError(@error, @extended, 0)
  2484. Return $ARESULT[0]
  2485. EndFunc
  2486. Func _WINAPI_GETFOREGROUNDWINDOW()
  2487. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetForegroundWindow")
  2488. If @error Then Return SetError(@error, @extended, 0)
  2489. Return $ARESULT[0]
  2490. EndFunc
  2491. Func _WINAPI_GETGUIRESOURCES($IFLAG = 0, $HPROCESS = -1)
  2492. If $HPROCESS = -1 Then $HPROCESS = _WINAPI_GETCURRENTPROCESS()
  2493. Local $ARESULT = DllCall("user32.dll", "dword", "GetGuiResources", "handle", $HPROCESS, "dword", $IFLAG)
  2494. If @error Then Return SetError(@error, @extended, 0)
  2495. Return $ARESULT[0]
  2496. EndFunc
  2497. Func _WINAPI_GETICONINFO($HICON)
  2498. Local $TINFO = DllStructCreate($TAGICONINFO)
  2499. DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HICON, "ptr", DllStructGetPtr($TINFO))
  2500. If @error Then Return SetError(@error, @extended, 0)
  2501. Local $AICON[6]
  2502. $AICON[0] = True
  2503. $AICON[1] = DllStructGetData($TINFO, "Icon") <> 0
  2504. $AICON[2] = DllStructGetData($TINFO, "XHotSpot")
  2505. $AICON[3] = DllStructGetData($TINFO, "YHotSpot")
  2506. $AICON[4] = DllStructGetData($TINFO, "hMask")
  2507. $AICON[5] = DllStructGetData($TINFO, "hColor")
  2508. Return $AICON
  2509. EndFunc
  2510. Func _WINAPI_GETFILESIZEEX($HFILE)
  2511. Local $ARESULT = DllCall("kernel32.dll", "bool", "GetFileSizeEx", "handle", $HFILE, "int64*", 0)
  2512. If @error Then Return SetError(@error, @extended, 0)
  2513. Return $ARESULT[2]
  2514. EndFunc
  2515. Func _WINAPI_GETLASTERRORMESSAGE()
  2516. Local $TBUFFERPTR = DllStructCreate("ptr")
  2517. Local $PBUFFERPTR = DllStructGetPtr($TBUFFERPTR)
  2518. Local $NCOUNT = _WINAPI_FORMATMESSAGE(BitOR($__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER, $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM), 0, _WINAPI_GETLASTERROR(), 0, $PBUFFERPTR, 0, 0)
  2519. If @error Then Return SetError(@error, 0, "")
  2520. Local $STEXT = ""
  2521. Local $PBUFFER = DllStructGetData($TBUFFERPTR, 1)
  2522. If $PBUFFER Then
  2523. If $NCOUNT > 0 Then
  2524. Local $TBUFFER = DllStructCreate("wchar[" & ($NCOUNT + 1) & "]", $PBUFFER)
  2525. $STEXT = DllStructGetData($TBUFFER, 1)
  2526. EndIf
  2527. _WINAPI_LOCALFREE($PBUFFER)
  2528. EndIf
  2529. Return $STEXT
  2530. EndFunc
  2531. Func _WINAPI_GETLAYEREDWINDOWATTRIBUTES($HWND, ByRef $I_TRANSCOLOR, ByRef $TRANSPARENCY, $ASCOLORREF = False)
  2532. $I_TRANSCOLOR = -1
  2533. $TRANSPARENCY = -1
  2534. Local $ARESULT = DllCall("user32.dll", "bool", "GetLayeredWindowAttributes", "hwnd", $HWND, "dword*", $I_TRANSCOLOR, "byte*", $TRANSPARENCY, "dword*", 0)
  2535. If @error Then Return SetError(@error, @extended, 0)
  2536. If Not $ASCOLORREF Then
  2537. $ARESULT[2] = Hex(String($ARESULT[2]), 6)
  2538. $ARESULT[2] = "0x" & StringMid($ARESULT[2], 5, 2) & StringMid($ARESULT[2], 3, 2) & StringMid($ARESULT[2], 1, 2)
  2539. EndIf
  2540. $I_TRANSCOLOR = $ARESULT[2]
  2541. $TRANSPARENCY = $ARESULT[3]
  2542. Return $ARESULT[4]
  2543. EndFunc
  2544. Func _WINAPI_GETMODULEHANDLE($SMODULENAME)
  2545. Local $SMODULENAMETYPE = "wstr"
  2546. If $SMODULENAME = "" Then
  2547. $SMODULENAME = 0
  2548. $SMODULENAMETYPE = "ptr"
  2549. EndIf
  2550. Local $ARESULT = DllCall("kernel32.dll", "handle", "GetModuleHandleW", $SMODULENAMETYPE, $SMODULENAME)
  2551. If @error Then Return SetError(@error, @extended, 0)
  2552. Return $ARESULT[0]
  2553. EndFunc
  2554. Func _WINAPI_GETMOUSEPOS($FTOCLIENT = False, $HWND = 0)
  2555. Local $IMODE = Opt("MouseCoordMode", 1)
  2556. Local $APOS = MouseGetPos()
  2557. Opt("MouseCoordMode", $IMODE)
  2558. Local $TPOINT = DllStructCreate($TAGPOINT)
  2559. DllStructSetData($TPOINT, "X", $APOS[0])
  2560. DllStructSetData($TPOINT, "Y", $APOS[1])
  2561. If $FTOCLIENT Then
  2562. _WINAPI_SCREENTOCLIENT($HWND, $TPOINT)
  2563. If @error Then Return SetError(@error, @extended, 0)
  2564. EndIf
  2565. Return $TPOINT
  2566. EndFunc
  2567. Func _WINAPI_GETMOUSEPOSX($FTOCLIENT = False, $HWND = 0)
  2568. Local $TPOINT = _WINAPI_GETMOUSEPOS($FTOCLIENT, $HWND)
  2569. If @error Then Return SetError(@error, @extended, 0)
  2570. Return DllStructGetData($TPOINT, "X")
  2571. EndFunc
  2572. Func _WINAPI_GETMOUSEPOSY($FTOCLIENT = False, $HWND = 0)
  2573. Local $TPOINT = _WINAPI_GETMOUSEPOS($FTOCLIENT, $HWND)
  2574. If @error Then Return SetError(@error, @extended, 0)
  2575. Return DllStructGetData($TPOINT, "Y")
  2576. EndFunc
  2577. Func _WINAPI_GETOBJECT($HOBJECT, $ISIZE, $POBJECT)
  2578. Local $ARESULT = DllCall("gdi32.dll", "int", "GetObject", "handle", $HOBJECT, "int", $ISIZE, "ptr", $POBJECT)
  2579. If @error Then Return SetError(@error, @extended, 0)
  2580. Return $ARESULT[0]
  2581. EndFunc
  2582. Func _WINAPI_GETOPENFILENAME($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0)
  2583. Local $IPATHLEN = 4096
  2584. Local $INULLS = 0
  2585. Local $TOFN = DllStructCreate($TAGOPENFILENAME)
  2586. Local $AFILES[1] = [0]
  2587. Local $IFLAG = $IFLAGS
  2588. Local $ASFLINES = StringSplit($SFILTER, "|")
  2589. Local $ASFILTER[$ASFLINES[0] * 2 + 1]
  2590. Local $ISTART, $IFINAL, $STFILTER
  2591. $ASFILTER[0] = $ASFLINES[0] * 2
  2592. For $I = 1 To $ASFLINES[0]
  2593. $ISTART = StringInStr($ASFLINES[$I], "(", 0, 1)
  2594. $IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1)
  2595. $ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3)
  2596. $ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3)
  2597. $STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];"
  2598. Next
  2599. Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]")
  2600. Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]")
  2601. Local $TFILTER = DllStructCreate($STFILTER & "wchar")
  2602. Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]")
  2603. Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]")
  2604. For $I = 1 To $ASFILTER[0]
  2605. DllStructSetData($TFILTER, $I, $ASFILTER[$I])
  2606. Next
  2607. DllStructSetData($TTITLE, "Title", $STITLE)
  2608. DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR)
  2609. DllStructSetData($TPATH, "Path", $SDEFAULTFILE)
  2610. DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT)
  2611. DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN))
  2612. DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER)
  2613. DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER))
  2614. DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX)
  2615. DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH))
  2616. DllStructSetData($TOFN, "nMaxFile", $IPATHLEN)
  2617. DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR))
  2618. DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE))
  2619. DllStructSetData($TOFN, "Flags", $IFLAG)
  2620. DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN))
  2621. DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX)
  2622. DllCall("comdlg32.dll", "bool", "GetOpenFileNameW", "ptr", DllStructGetPtr($TOFN))
  2623. If @error Then Return SetError(@error, @extended, $AFILES)
  2624. If BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT And BitAND($IFLAGS, $OFN_EXPLORER) = $OFN_EXPLORER Then
  2625. For $X = 1 To $IPATHLEN
  2626. If DllStructGetData($TPATH, "Path", $X) = Chr(0) Then
  2627. DllStructSetData($TPATH, "Path", "|", $X)
  2628. $INULLS += 1
  2629. Else
  2630. $INULLS = 0
  2631. EndIf
  2632. If $INULLS = 2 Then ExitLoop
  2633. Next
  2634. DllStructSetData($TPATH, "Path", Chr(0), $X - 1)
  2635. $AFILES = StringSplit(DllStructGetData($TPATH, "Path"), "|")
  2636. If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2637. Return StringSplit(DllStructGetData($TPATH, "Path"), "|")
  2638. ElseIf BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT Then
  2639. $AFILES = StringSplit(DllStructGetData($TPATH, "Path"), " ")
  2640. If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2641. Return StringSplit(StringReplace(DllStructGetData($TPATH, "Path"), " ", "|"), "|")
  2642. Else
  2643. Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2644. EndIf
  2645. EndFunc
  2646. Func _WINAPI_GETOVERLAPPEDRESULT($HFILE, $POVERLAPPED, ByRef $IBYTES, $FWAIT = False)
  2647. Local $ARESULT = DllCall("kernel32.dll", "bool", "GetOverlappedResult", "handle", $HFILE, "ptr", $POVERLAPPED, "dword*", 0, "bool", $FWAIT)
  2648. If @error Then Return SetError(@error, @extended, False)
  2649. $IBYTES = $ARESULT[3]
  2650. Return $ARESULT[0]
  2651. EndFunc
  2652. Func _WINAPI_GETPARENT($HWND)
  2653. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $HWND)
  2654. If @error Then Return SetError(@error, @extended, 0)
  2655. Return $ARESULT[0]
  2656. EndFunc
  2657. Func _WINAPI_GETPROCESSAFFINITYMASK($HPROCESS)
  2658. Local $ARESULT = DllCall("kernel32.dll", "bool", "GetProcessAffinityMask", "handle", $HPROCESS, "dword_ptr*", 0, "dword_ptr*", 0)
  2659. If @error Then Return SetError(@error, @extended, 0)
  2660. Local $AMASK[3]
  2661. $AMASK[0] = True
  2662. $AMASK[1] = $ARESULT[2]
  2663. $AMASK[2] = $ARESULT[3]
  2664. Return $AMASK
  2665. EndFunc
  2666. Func _WINAPI_GETSAVEFILENAME($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0)
  2667. Local $IPATHLEN = 4096
  2668. Local $TOFN = DllStructCreate($TAGOPENFILENAME)
  2669. Local $AFILES[1] = [0]
  2670. Local $IFLAG = $IFLAGS
  2671. Local $ASFLINES = StringSplit($SFILTER, "|")
  2672. Local $ASFILTER[$ASFLINES[0] * 2 + 1]
  2673. Local $ISTART, $IFINAL, $STFILTER
  2674. $ASFILTER[0] = $ASFLINES[0] * 2
  2675. For $I = 1 To $ASFLINES[0]
  2676. $ISTART = StringInStr($ASFLINES[$I], "(", 0, 1)
  2677. $IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1)
  2678. $ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3)
  2679. $ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3)
  2680. $STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];"
  2681. Next
  2682. Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]")
  2683. Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]")
  2684. Local $TFILTER = DllStructCreate($STFILTER & "wchar")
  2685. Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]")
  2686. Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]")
  2687. For $I = 1 To $ASFILTER[0]
  2688. DllStructSetData($TFILTER, $I, $ASFILTER[$I])
  2689. Next
  2690. DllStructSetData($TTITLE, "Title", $STITLE)
  2691. DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR)
  2692. DllStructSetData($TPATH, "Path", $SDEFAULTFILE)
  2693. DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT)
  2694. DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN))
  2695. DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER)
  2696. DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER))
  2697. DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX)
  2698. DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH))
  2699. DllStructSetData($TOFN, "nMaxFile", $IPATHLEN)
  2700. DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR))
  2701. DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE))
  2702. DllStructSetData($TOFN, "Flags", $IFLAG)
  2703. DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN))
  2704. DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX)
  2705. DllCall("comdlg32.dll", "bool", "GetSaveFileNameW", "ptr", DllStructGetPtr($TOFN))
  2706. If @error Then Return SetError(@error, @extended, $AFILES)
  2707. Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2708. EndFunc
  2709. Func _WINAPI_GETSTOCKOBJECT($IOBJECT)
  2710. Local $ARESULT = DllCall("gdi32.dll", "handle", "GetStockObject", "int", $IOBJECT)
  2711. If @error Then Return SetError(@error, @extended, 0)
  2712. Return $ARESULT[0]
  2713. EndFunc
  2714. Func _WINAPI_GETSTDHANDLE($ISTDHANDLE)
  2715. If $ISTDHANDLE < 0 Or $ISTDHANDLE > 2 Then Return SetError(2, 0, -1)
  2716. Local Const $AHANDLE[3] = [-10, -11, -12]
  2717. Local $ARESULT = DllCall("kernel32.dll", "handle", "GetStdHandle", "dword", $AHANDLE[$ISTDHANDLE])
  2718. If @error Then Return SetError(@error, @extended, -1)
  2719. Return $ARESULT[0]
  2720. EndFunc
  2721. Func _WINAPI_GETSYSCOLOR($IINDEX)
  2722. Local $ARESULT = DllCall("user32.dll", "dword", "GetSysColor", "int", $IINDEX)
  2723. If @error Then Return SetError(@error, @extended, 0)
  2724. Return $ARESULT[0]
  2725. EndFunc
  2726. Func _WINAPI_GETSYSCOLORBRUSH($IINDEX)
  2727. Local $ARESULT = DllCall("user32.dll", "handle", "GetSysColorBrush", "int", $IINDEX)
  2728. If @error Then Return SetError(@error, @extended, 0)
  2729. Return $ARESULT[0]
  2730. EndFunc
  2731. Func _WINAPI_GETSYSTEMMETRICS($IINDEX)
  2732. Local $ARESULT = DllCall("user32.dll", "int", "GetSystemMetrics", "int", $IINDEX)
  2733. If @error Then Return SetError(@error, @extended, 0)
  2734. Return $ARESULT[0]
  2735. EndFunc
  2736. Func _WINAPI_GETTEXTEXTENTPOINT32($HDC, $STEXT)
  2737. Local $TSIZE = DllStructCreate($TAGSIZE)
  2738. Local $ISIZE = StringLen($STEXT)
  2739. DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $HDC, "wstr", $STEXT, "int", $ISIZE, "ptr", DllStructGetPtr($TSIZE))
  2740. If @error Then Return SetError(@error, @extended, 0)
  2741. Return $TSIZE
  2742. EndFunc
  2743. Func _WINAPI_GETWINDOW($HWND, $ICMD)
  2744. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetWindow", "hwnd", $HWND, "uint", $ICMD)
  2745. If @error Then Return SetError(@error, @extended, 0)
  2746. Return $ARESULT[0]
  2747. EndFunc
  2748. Func _WINAPI_GETWINDOWDC($HWND)
  2749. Local $ARESULT = DllCall("user32.dll", "handle", "GetWindowDC", "hwnd", $HWND)
  2750. If @error Then Return SetError(@error, @extended, 0)
  2751. Return $ARESULT[0]
  2752. EndFunc
  2753. Func _WINAPI_GETWINDOWHEIGHT($HWND)
  2754. Local $TRECT = _WINAPI_GETWINDOWRECT($HWND)
  2755. If @error Then Return SetError(@error, @extended, 0)
  2756. Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top")
  2757. EndFunc
  2758. Func _WINAPI_GETWINDOWLONG($HWND, $IINDEX)
  2759. Local $SFUNCNAME = "GetWindowLongW"
  2760. If @AutoItX64 Then $SFUNCNAME = "GetWindowLongPtrW"
  2761. Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX)
  2762. If @error Then Return SetError(@error, @extended, 0)
  2763. Return $ARESULT[0]
  2764. EndFunc
  2765. Func _WINAPI_GETWINDOWPLACEMENT($HWND)
  2766. Local $TWINDOWPLACEMENT = DllStructCreate($TAGWINDOWPLACEMENT)
  2767. DllStructSetData($TWINDOWPLACEMENT, "length", DllStructGetSize($TWINDOWPLACEMENT))
  2768. Local $PWINDOWPLACEMENT = DllStructGetPtr($TWINDOWPLACEMENT)
  2769. DllCall("user32.dll", "bool", "GetWindowPlacement", "hwnd", $HWND, "ptr", $PWINDOWPLACEMENT)
  2770. If @error Then Return SetError(@error, @extended, 0)
  2771. Return $TWINDOWPLACEMENT
  2772. EndFunc
  2773. Func _WINAPI_GETWINDOWRECT($HWND)
  2774. Local $TRECT = DllStructCreate($TAGRECT)
  2775. DllCall("user32.dll", "bool", "GetWindowRect", "hwnd", $HWND, "ptr", DllStructGetPtr($TRECT))
  2776. If @error Then Return SetError(@error, @extended, 0)
  2777. Return $TRECT
  2778. EndFunc
  2779. Func _WINAPI_GETWINDOWRGN($HWND, $HRGN)
  2780. Local $ARESULT = DllCall("user32.dll", "int", "GetWindowRgn", "hwnd", $HWND, "handle", $HRGN)
  2781. If @error Then Return SetError(@error, @extended, 0)
  2782. Return $ARESULT[0]
  2783. EndFunc
  2784. Func _WINAPI_GETWINDOWTEXT($HWND)
  2785. Local $ARESULT = DllCall("user32.dll", "int", "GetWindowTextW", "hwnd", $HWND, "wstr", "", "int", 4096)
  2786. If @error Then Return SetError(@error, @extended, "")
  2787. Return SetExtended($ARESULT[0], $ARESULT[2])
  2788. EndFunc
  2789. Func _WINAPI_GETWINDOWTHREADPROCESSID($HWND, ByRef $IPID)
  2790. Local $ARESULT = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0)
  2791. If @error Then Return SetError(@error, @extended, 0)
  2792. $IPID = $ARESULT[2]
  2793. Return $ARESULT[0]
  2794. EndFunc
  2795. Func _WINAPI_GETWINDOWWIDTH($HWND)
  2796. Local $TRECT = _WINAPI_GETWINDOWRECT($HWND)
  2797. If @error Then Return SetError(@error, @extended, 0)
  2798. Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left")
  2799. EndFunc
  2800. Func _WINAPI_GETXYFROMPOINT(ByRef $TPOINT, ByRef $IX, ByRef $IY)
  2801. $IX = DllStructGetData($TPOINT, "X")
  2802. $IY = DllStructGetData($TPOINT, "Y")
  2803. EndFunc
  2804. Func _WINAPI_GLOBALMEMORYSTATUS()
  2805. Local $TMEM = DllStructCreate($TAGMEMORYSTATUSEX)
  2806. Local $PMEM = DllStructGetPtr($TMEM)
  2807. Local $IMEM = DllStructGetSize($TMEM)
  2808. DllStructSetData($TMEM, 1, $IMEM)
  2809. DllCall("kernel32.dll", "none", "GlobalMemoryStatusEx", "ptr", $PMEM)
  2810. If @error Then Return SetError(@error, @extended, 0)
  2811. Local $AMEM[7]
  2812. $AMEM[0] = DllStructGetData($TMEM, 2)
  2813. $AMEM[1] = DllStructGetData($TMEM, 3)
  2814. $AMEM[2] = DllStructGetData($TMEM, 4)
  2815. $AMEM[3] = DllStructGetData($TMEM, 5)
  2816. $AMEM[4] = DllStructGetData($TMEM, 6)
  2817. $AMEM[5] = DllStructGetData($TMEM, 7)
  2818. $AMEM[6] = DllStructGetData($TMEM, 8)
  2819. Return $AMEM
  2820. EndFunc
  2821. Func _WINAPI_GUIDFROMSTRING($SGUID)
  2822. Local $TGUID = DllStructCreate($TAGGUID)
  2823. _WINAPI_GUIDFROMSTRINGEX($SGUID, DllStructGetPtr($TGUID))
  2824. If @error Then Return SetError(@error, @extended, 0)
  2825. Return $TGUID
  2826. EndFunc
  2827. Func _WINAPI_GUIDFROMSTRINGEX($SGUID, $PGUID)
  2828. Local $ARESULT = DllCall("ole32.dll", "long", "CLSIDFromString", "wstr", $SGUID, "ptr", $PGUID)
  2829. If @error Then Return SetError(@error, @extended, False)
  2830. Return $ARESULT[0]
  2831. EndFunc
  2832. Func _WINAPI_HIWORD($ILONG)
  2833. Return BitShift($ILONG, 16)
  2834. EndFunc
  2835. Func _WINAPI_INPROCESS($HWND, ByRef $HLASTWND)
  2836. If $HWND = $HLASTWND Then Return True
  2837. For $II = $__GAINPROCESS_WINAPI[0][0] To 1 Step -1
  2838. If $HWND = $__GAINPROCESS_WINAPI[$II][0] Then
  2839. If $__GAINPROCESS_WINAPI[$II][1] Then
  2840. $HLASTWND = $HWND
  2841. Return True
  2842. Else
  2843. Return False
  2844. EndIf
  2845. EndIf
  2846. Next
  2847. Local $IPROCESSID
  2848. _WINAPI_GETWINDOWTHREADPROCESSID($HWND, $IPROCESSID)
  2849. Local $ICOUNT = $__GAINPROCESS_WINAPI[0][0] + 1
  2850. If $ICOUNT >= 64 Then $ICOUNT = 1
  2851. $__GAINPROCESS_WINAPI[0][0] = $ICOUNT
  2852. $__GAINPROCESS_WINAPI[$ICOUNT][0] = $HWND
  2853. $__GAINPROCESS_WINAPI[$ICOUNT][1] = ($IPROCESSID = @AutoItPID)
  2854. Return $__GAINPROCESS_WINAPI[$ICOUNT][1]
  2855. EndFunc
  2856. Func _WINAPI_INTTOFLOAT($IINT)
  2857. Local $TINT = DllStructCreate("int")
  2858. Local $TFLOAT = DllStructCreate("float", DllStructGetPtr($TINT))
  2859. DllStructSetData($TINT, 1, $IINT)
  2860. Return DllStructGetData($TFLOAT, 1)
  2861. EndFunc
  2862. Func _WINAPI_ISCLASSNAME($HWND, $SCLASSNAME)
  2863. Local $SSEPARATOR = Opt("GUIDataSeparatorChar")
  2864. Local $ACLASSNAME = StringSplit($SCLASSNAME, $SSEPARATOR)
  2865. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  2866. Local $SCLASSCHECK = _WINAPI_GETCLASSNAME($HWND)
  2867. For $X = 1 To UBound($ACLASSNAME) - 1
  2868. If StringUpper(StringMid($SCLASSCHECK, 1, StringLen($ACLASSNAME[$X]))) = StringUpper($ACLASSNAME[$X]) Then Return True
  2869. Next
  2870. Return False
  2871. EndFunc
  2872. Func _WINAPI_ISWINDOW($HWND)
  2873. Local $ARESULT = DllCall("user32.dll", "bool", "IsWindow", "hwnd", $HWND)
  2874. If @error Then Return SetError(@error, @extended, 0)
  2875. Return $ARESULT[0]
  2876. EndFunc
  2877. Func _WINAPI_ISWINDOWVISIBLE($HWND)
  2878. Local $ARESULT = DllCall("user32.dll", "bool", "IsWindowVisible", "hwnd", $HWND)
  2879. If @error Then Return SetError(@error, @extended, 0)
  2880. Return $ARESULT[0]
  2881. EndFunc
  2882. Func _WINAPI_INVALIDATERECT($HWND, $TRECT = 0, $FERASE = True)
  2883. Local $PRECT = 0
  2884. If IsDllStruct($TRECT) Then $PRECT = DllStructGetPtr($TRECT)
  2885. Local $ARESULT = DllCall("user32.dll", "bool", "InvalidateRect", "hwnd", $HWND, "ptr", $PRECT, "bool", $FERASE)
  2886. If @error Then Return SetError(@error, @extended, False)
  2887. Return $ARESULT[0]
  2888. EndFunc
  2889. Func _WINAPI_LINETO($HDC, $IX, $IY)
  2890. Local $ARESULT = DllCall("gdi32.dll", "bool", "LineTo", "handle", $HDC, "int", $IX, "int", $IY)
  2891. If @error Then Return SetError(@error, @extended, False)
  2892. Return $ARESULT[0]
  2893. EndFunc
  2894. Func _WINAPI_LOADBITMAP($HINSTANCE, $SBITMAP)
  2895. Local $SBITMAPTYPE = "int"
  2896. If IsString($SBITMAP) Then $SBITMAPTYPE = "wstr"
  2897. Local $ARESULT = DllCall("user32.dll", "handle", "LoadBitmapW", "handle", $HINSTANCE, $SBITMAPTYPE, $SBITMAP)
  2898. If @error Then Return SetError(@error, @extended, 0)
  2899. Return $ARESULT[0]
  2900. EndFunc
  2901. Func _WINAPI_LOADIMAGE($HINSTANCE, $SIMAGE, $ITYPE, $IXDESIRED, $IYDESIRED, $ILOAD)
  2902. Local $ARESULT, $SIMAGETYPE = "int"
  2903. If IsString($SIMAGE) Then $SIMAGETYPE = "wstr"
  2904. $ARESULT = DllCall("user32.dll", "handle", "LoadImageW", "handle", $HINSTANCE, $SIMAGETYPE, $SIMAGE, "uint", $ITYPE, "int", $IXDESIRED, "int", $IYDESIRED, "uint", $ILOAD)
  2905. If @error Then Return SetError(@error, @extended, 0)
  2906. Return $ARESULT[0]
  2907. EndFunc
  2908. Func _WINAPI_LOADLIBRARY($SFILENAME)
  2909. Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryW", "wstr", $SFILENAME)
  2910. If @error Then Return SetError(@error, @extended, 0)
  2911. Return $ARESULT[0]
  2912. EndFunc
  2913. Func _WINAPI_LOADLIBRARYEX($SFILENAME, $IFLAGS = 0)
  2914. Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryExW", "wstr", $SFILENAME, "ptr", 0, "dword", $IFLAGS)
  2915. If @error Then Return SetError(@error, @extended, 0)
  2916. Return $ARESULT[0]
  2917. EndFunc
  2918. Func _WINAPI_LOADSHELL32ICON($IICONID)
  2919. Local $TICONS = DllStructCreate("ptr Data")
  2920. Local $PICONS = DllStructGetPtr($TICONS)
  2921. Local $IICONS = _WINAPI_EXTRACTICONEX("shell32.dll", $IICONID, 0, $PICONS, 1)
  2922. If @error Then Return SetError(@error, @extended, 0)
  2923. If $IICONS <= 0 Then Return SetError(1, 0, 0)
  2924. Return DllStructGetData($TICONS, "Data")
  2925. EndFunc
  2926. Func _WINAPI_LOADSTRING($HINSTANCE, $ISTRINGID)
  2927. Local $ARESULT = DllCall("user32.dll", "int", "LoadStringW", "handle", $HINSTANCE, "uint", $ISTRINGID, "wstr", "", "int", 4096)
  2928. If @error Then Return SetError(@error, @extended, "")
  2929. Return SetExtended($ARESULT[0], $ARESULT[3])
  2930. EndFunc
  2931. Func _WINAPI_LOCALFREE($HMEM)
  2932. Local $ARESULT = DllCall("kernel32.dll", "handle", "LocalFree", "handle", $HMEM)
  2933. If @error Then Return SetError(@error, @extended, False)
  2934. Return $ARESULT[0]
  2935. EndFunc
  2936. Func _WINAPI_LOWORD($ILONG)
  2937. Return BitAND($ILONG, 65535)
  2938. EndFunc
  2939. Func _WINAPI_MAKELANGID($LGIDPRIMARY, $LGIDSUB)
  2940. Return BitOR(BitShift($LGIDSUB, -10), $LGIDPRIMARY)
  2941. EndFunc
  2942. Func _WINAPI_MAKELCID($LGID, $SRTID)
  2943. Return BitOR(BitShift($SRTID, -16), $LGID)
  2944. EndFunc
  2945. Func _WINAPI_MAKELONG($ILO, $IHI)
  2946. Return BitOR(BitShift($IHI, -16), BitAND($ILO, 65535))
  2947. EndFunc
  2948. Func _WINAPI_MAKEQWORD($LODWORD, $HIDWORD)
  2949. Local $TINT64 = DllStructCreate("uint64")
  2950. Local $TDWORDS = DllStructCreate("dword;dword", DllStructGetPtr($TINT64))
  2951. DllStructSetData($TDWORDS, 1, $LODWORD)
  2952. DllStructSetData($TDWORDS, 2, $HIDWORD)
  2953. Return DllStructGetData($TINT64, 1)
  2954. EndFunc
  2955. Func _WINAPI_MESSAGEBEEP($ITYPE = 1)
  2956. Local $ISOUND
  2957. Switch $ITYPE
  2958. Case 1
  2959. $ISOUND = 0
  2960. Case 2
  2961. $ISOUND = 16
  2962. Case 3
  2963. $ISOUND = 32
  2964. Case 4
  2965. $ISOUND = 48
  2966. Case 5
  2967. $ISOUND = 64
  2968. Case Else
  2969. $ISOUND = -1
  2970. EndSwitch
  2971. Local $ARESULT = DllCall("user32.dll", "bool", "MessageBeep", "uint", $ISOUND)
  2972. If @error Then Return SetError(@error, @extended, False)
  2973. Return $ARESULT[0]
  2974. EndFunc
  2975. Func _WINAPI_MSGBOX($IFLAGS, $STITLE, $STEXT)
  2976. BlockInput(0)
  2977. MsgBox($IFLAGS, $STITLE, $STEXT & " ")
  2978. EndFunc
  2979. Func _WINAPI_MOUSE_EVENT($IFLAGS, $IX = 0, $IY = 0, $IDATA = 0, $IEXTRAINFO = 0)
  2980. DllCall("user32.dll", "none", "mouse_event", "dword", $IFLAGS, "dword", $IX, "dword", $IY, "dword", $IDATA, "ulong_ptr", $IEXTRAINFO)
  2981. If @error Then Return SetError(@error, @extended)
  2982. EndFunc
  2983. Func _WINAPI_MOVETO($HDC, $IX, $IY)
  2984. Local $ARESULT = DllCall("gdi32.dll", "bool", "MoveToEx", "handle", $HDC, "int", $IX, "int", $IY, "ptr", 0)
  2985. If @error Then Return SetError(@error, @extended, False)
  2986. Return $ARESULT[0]
  2987. EndFunc
  2988. Func _WINAPI_MOVEWINDOW($HWND, $IX, $IY, $IWIDTH, $IHEIGHT, $FREPAINT = True)
  2989. Local $ARESULT = DllCall("user32.dll", "bool", "MoveWindow", "hwnd", $HWND, "int", $IX, "int", $IY, "int", $IWIDTH, "int", $IHEIGHT, "bool", $FREPAINT)
  2990. If @error Then Return SetError(@error, @extended, False)
  2991. Return $ARESULT[0]
  2992. EndFunc
  2993. Func _WINAPI_MULDIV($INUMBER, $INUMERATOR, $IDENOMINATOR)
  2994. Local $ARESULT = DllCall("kernel32.dll", "int", "MulDiv", "int", $INUMBER, "int", $INUMERATOR, "int", $IDENOMINATOR)
  2995. If @error Then Return SetError(@error, @extended, -1)
  2996. Return $ARESULT[0]
  2997. EndFunc
  2998. Func _WINAPI_MULTIBYTETOWIDECHAR($STEXT, $ICODEPAGE = 0, $IFLAGS = 0, $BRETSTRING = False)
  2999. Local $STEXTTYPE = "ptr", $PTEXT = $STEXT
  3000. If IsDllStruct($STEXT) Then
  3001. $PTEXT = DllStructGetPtr($STEXT)
  3002. Else
  3003. If Not IsPtr($STEXT) Then $STEXTTYPE = "STR"
  3004. EndIf
  3005. Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $PTEXT, "int", -1, "ptr", 0, "int", 0)
  3006. If @error Then Return SetError(@error, @extended, 0)
  3007. Local $IOUT = $ARESULT[0]
  3008. Local $TOUT = DllStructCreate("wchar[" & $IOUT & "]")
  3009. Local $POUT = DllStructGetPtr($TOUT)
  3010. $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $PTEXT, "int", -1, "ptr", $POUT, "int", $IOUT)
  3011. If @error Then Return SetError(@error, @extended, 0)
  3012. If $BRETSTRING Then Return DllStructGetData($TOUT, 1)
  3013. Return $TOUT
  3014. EndFunc
  3015. Func _WINAPI_MULTIBYTETOWIDECHAREX($STEXT, $PTEXT, $ICODEPAGE = 0, $IFLAGS = 0)
  3016. Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, "STR", $STEXT, "int", -1, "ptr", $PTEXT, "int", (StringLen($STEXT) + 1) * 2)
  3017. If @error Then Return SetError(@error, @extended, False)
  3018. Return $ARESULT[0]
  3019. EndFunc
  3020. Func _WINAPI_OPENPROCESS($IACCESS, $FINHERIT, $IPROCESSID, $FDEBUGPRIV = False)
  3021. Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  3022. If @error Then Return SetError(@error, @extended, 0)
  3023. If $ARESULT[0] Then Return $ARESULT[0]
  3024. If Not $FDEBUGPRIV Then Return 0
  3025. Local $HTOKEN = _SECURITY__OPENTHREADTOKENEX(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
  3026. If @error Then Return SetError(@error, @extended, 0)
  3027. _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", True)
  3028. Local $IERROR = @error
  3029. Local $ILASTERROR = @extended
  3030. Local $IRET = 0
  3031. If Not @error Then
  3032. $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  3033. $IERROR = @error
  3034. $ILASTERROR = @extended
  3035. If $ARESULT[0] Then $IRET = $ARESULT[0]
  3036. _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", False)
  3037. If @error Then
  3038. $IERROR = @error
  3039. $ILASTERROR = @extended
  3040. EndIf
  3041. EndIf
  3042. _WINAPI_CLOSEHANDLE($HTOKEN)
  3043. Return SetError($IERROR, $ILASTERROR, $IRET)
  3044. EndFunc
  3045. Func __WINAPI_PARSEFILEDIALOGPATH($SPATH)
  3046. Local $AFILES[3]
  3047. $AFILES[0] = 2
  3048. Local $STEMP = StringMid($SPATH, 1, StringInStr($SPATH, "\", 0, -1) - 1)
  3049. $AFILES[1] = $STEMP
  3050. $AFILES[2] = StringMid($SPATH, StringInStr($SPATH, "\", 0, -1) + 1)
  3051. Return $AFILES
  3052. EndFunc
  3053. Func _WINAPI_PATHFINDONPATH(Const $SZFILE, $AEXTRAPATHS = "", Const $SZPATHDELIMITER = @LF)
  3054. Local $IEXTRACOUNT = 0
  3055. If IsString($AEXTRAPATHS) Then
  3056. If StringLen($AEXTRAPATHS) Then
  3057. $AEXTRAPATHS = StringSplit($AEXTRAPATHS, $SZPATHDELIMITER, 1 + 2)
  3058. $IEXTRACOUNT = UBound($AEXTRAPATHS, 1)
  3059. EndIf
  3060. ElseIf IsArray($AEXTRAPATHS) Then
  3061. $IEXTRACOUNT = UBound($AEXTRAPATHS)
  3062. EndIf
  3063. Local $TPATHS, $TPATHPTRS
  3064. If $IEXTRACOUNT Then
  3065. Local $SZSTRUCT = ""
  3066. For $PATH In $AEXTRAPATHS
  3067. $SZSTRUCT &= "wchar[" & StringLen($PATH) + 1 & "];"
  3068. Next
  3069. $TPATHS = DllStructCreate($SZSTRUCT)
  3070. $TPATHPTRS = DllStructCreate("ptr[" & $IEXTRACOUNT + 1 & "]")
  3071. For $I = 1 To $IEXTRACOUNT
  3072. DllStructSetData($TPATHS, $I, $AEXTRAPATHS[$I - 1])
  3073. DllStructSetData($TPATHPTRS, 1, DllStructGetPtr($TPATHS, $I), $I)
  3074. Next
  3075. DllStructSetData($TPATHPTRS, 1, Ptr(0), $IEXTRACOUNT + 1)
  3076. EndIf
  3077. Local $ARESULT = DllCall("shlwapi.dll", "bool", "PathFindOnPathW", "wstr", $SZFILE, "ptr", DllStructGetPtr($TPATHPTRS))
  3078. If @error Then Return SetError(@error, @extended, False)
  3079. If $ARESULT[0] = 0 Then Return SetError(1, 0, $SZFILE)
  3080. Return $ARESULT[1]
  3081. EndFunc
  3082. Func _WINAPI_POINTFROMRECT(ByRef $TRECT, $FCENTER = True)
  3083. Local $IX1 = DllStructGetData($TRECT, "Left")
  3084. Local $IY1 = DllStructGetData($TRECT, "Top")
  3085. Local $IX2 = DllStructGetData($TRECT, "Right")
  3086. Local $IY2 = DllStructGetData($TRECT, "Bottom")
  3087. If $FCENTER Then
  3088. $IX1 = $IX1 + (($IX2 - $IX1) / 2)
  3089. $IY1 = $IY1 + (($IY2 - $IY1) / 2)
  3090. EndIf
  3091. Local $TPOINT = DllStructCreate($TAGPOINT)
  3092. DllStructSetData($TPOINT, "X", $IX1)
  3093. DllStructSetData($TPOINT, "Y", $IY1)
  3094. Return $TPOINT
  3095. EndFunc
  3096. Func _WINAPI_POSTMESSAGE($HWND, $IMSG, $IWPARAM, $ILPARAM)
  3097. Local $ARESULT = DllCall("user32.dll", "bool", "PostMessage", "hwnd", $HWND, "uint", $IMSG, "wparam", $IWPARAM, "lparam", $ILPARAM)
  3098. If @error Then Return SetError(@error, @extended, False)
  3099. Return $ARESULT[0]
  3100. EndFunc
  3101. Func _WINAPI_PRIMARYLANGID($LGID)
  3102. Return BitAND($LGID, 1023)
  3103. EndFunc
  3104. Func _WINAPI_PTINRECT(ByRef $TRECT, ByRef $TPOINT)
  3105. Local $IX = DllStructGetData($TPOINT, "X")
  3106. Local $IY = DllStructGetData($TPOINT, "Y")
  3107. Local $ARESULT = DllCall("user32.dll", "bool", "PtInRect", "ptr", DllStructGetPtr($TRECT), "long", $IX, "long", $IY)
  3108. If @error Then Return SetError(@error, @extended, False)
  3109. Return $ARESULT[0]
  3110. EndFunc
  3111. Func _WINAPI_READFILE($HFILE, $PBUFFER, $ITOREAD, ByRef $IREAD, $POVERLAPPED = 0)
  3112. Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadFile", "handle", $HFILE, "ptr", $PBUFFER, "dword", $ITOREAD, "dword*", 0, "ptr", $POVERLAPPED)
  3113. If @error Then Return SetError(@error, @extended, False)
  3114. $IREAD = $ARESULT[4]
  3115. Return $ARESULT[0]
  3116. EndFunc
  3117. Func _WINAPI_READPROCESSMEMORY($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IREAD)
  3118. Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, "ptr", $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  3119. If @error Then Return SetError(@error, @extended, False)
  3120. $IREAD = $ARESULT[5]
  3121. Return $ARESULT[0]
  3122. EndFunc
  3123. Func _WINAPI_RECTISEMPTY(ByRef $TRECT)
  3124. RETURN (DllStructGetData($TRECT, "Left") = 0) AND (DllStructGetData($TRECT, "Top") = 0) AND (DllStructGetData($TRECT, "Right") = 0) AND (DllStructGetData($TRECT, "Bottom") = 0)
  3125. EndFunc
  3126. Func _WINAPI_REDRAWWINDOW($HWND, $TRECT = 0, $HREGION = 0, $IFLAGS = 5)
  3127. Local $PRECT = 0
  3128. If $TRECT <> 0 Then $PRECT = DllStructGetPtr($TRECT)
  3129. Local $ARESULT = DllCall("user32.dll", "bool", "RedrawWindow", "hwnd", $HWND, "ptr", $PRECT, "handle", $HREGION, "uint", $IFLAGS)
  3130. If @error Then Return SetError(@error, @extended, False)
  3131. Return $ARESULT[0]
  3132. EndFunc
  3133. Func _WINAPI_REGISTERWINDOWMESSAGE($SMESSAGE)
  3134. Local $ARESULT = DllCall("user32.dll", "uint", "RegisterWindowMessageW", "wstr", $SMESSAGE)
  3135. If @error Then Return SetError(@error, @extended, 0)
  3136. Return $ARESULT[0]
  3137. EndFunc
  3138. Func _WINAPI_RELEASECAPTURE()
  3139. Local $ARESULT = DllCall("user32.dll", "bool", "ReleaseCapture")
  3140. If @error Then Return SetError(@error, @extended, False)
  3141. Return $ARESULT[0]
  3142. EndFunc
  3143. Func _WINAPI_RELEASEDC($HWND, $HDC)
  3144. Local $ARESULT = DllCall("user32.dll", "int", "ReleaseDC", "hwnd", $HWND, "handle", $HDC)
  3145. If @error Then Return SetError(@error, @extended, False)
  3146. Return $ARESULT[0]
  3147. EndFunc
  3148. Func _WINAPI_SCREENTOCLIENT($HWND, ByRef $TPOINT)
  3149. Local $ARESULT = DllCall("user32.dll", "bool", "ScreenToClient", "hwnd", $HWND, "ptr", DllStructGetPtr($TPOINT))
  3150. If @error Then Return SetError(@error, @extended, False)
  3151. Return $ARESULT[0]
  3152. EndFunc
  3153. Func _WINAPI_SELECTOBJECT($HDC, $HGDIOBJ)
  3154. Local $ARESULT = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HDC, "handle", $HGDIOBJ)
  3155. If @error Then Return SetError(@error, @extended, False)
  3156. Return $ARESULT[0]
  3157. EndFunc
  3158. Func _WINAPI_SETBKCOLOR($HDC, $ICOLOR)
  3159. Local $ARESULT = DllCall("gdi32.dll", "INT", "SetBkColor", "handle", $HDC, "dword", $ICOLOR)
  3160. If @error Then Return SetError(@error, @extended, -1)
  3161. Return $ARESULT[0]
  3162. EndFunc
  3163. Func _WINAPI_SETBKMODE($HDC, $IBKMODE)
  3164. Local $ARESULT = DllCall("gdi32.dll", "int", "SetBkMode", "handle", $HDC, "int", $IBKMODE)
  3165. If @error Then Return SetError(@error, @extended, 0)
  3166. Return $ARESULT[0]
  3167. EndFunc
  3168. Func _WINAPI_SETCAPTURE($HWND)
  3169. Local $ARESULT = DllCall("user32.dll", "hwnd", "SetCapture", "hwnd", $HWND)
  3170. If @error Then Return SetError(@error, @extended, 0)
  3171. Return $ARESULT[0]
  3172. EndFunc
  3173. Func _WINAPI_SETCURSOR($HCURSOR)
  3174. Local $ARESULT = DllCall("user32.dll", "handle", "SetCursor", "handle", $HCURSOR)
  3175. If @error Then Return SetError(@error, @extended, 0)
  3176. Return $ARESULT[0]
  3177. EndFunc
  3178. Func _WINAPI_SETDEFAULTPRINTER($SPRINTER)
  3179. Local $ARESULT = DllCall("winspool.drv", "bool", "SetDefaultPrinterW", "wstr", $SPRINTER)
  3180. If @error Then Return SetError(@error, @extended, False)
  3181. Return $ARESULT[0]
  3182. EndFunc
  3183. Func _WINAPI_SETDIBITS($HDC, $HBMP, $ISTARTSCAN, $ISCANLINES, $PBITS, $PBMI, $ICOLORUSE = 0)
  3184. Local $ARESULT = DllCall("gdi32.dll", "int", "SetDIBits", "handle", $HDC, "handle", $HBMP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "ptr", $PBITS, "ptr", $PBMI, "uint", $ICOLORUSE)
  3185. If @error Then Return SetError(@error, @extended, False)
  3186. Return $ARESULT[0]
  3187. EndFunc
  3188. Func _WINAPI_SETENDOFFILE($HFILE)
  3189. Local $ARESULT = DllCall("kernel32.dll", "bool", "SetEndOfFile", "handle", $HFILE)
  3190. If @error Then Return SetError(@error, @extended, False)
  3191. Return $ARESULT[0]
  3192. EndFunc
  3193. Func _WINAPI_SETEVENT($HEVENT)
  3194. Local $ARESULT = DllCall("kernel32.dll", "bool", "SetEvent", "handle", $HEVENT)
  3195. If @error Then Return SetError(@error, @extended, False)
  3196. Return $ARESULT[0]
  3197. EndFunc
  3198. Func _WINAPI_SETFILEPOINTER($HFILE, $IPOS, $IMETHOD = 0)
  3199. Local $ARESULT = DllCall("kernel32.dll", "INT", "SetFilePointer", "handle", $HFILE, "long", $IPOS, "ptr", 0, "long", $IMETHOD)
  3200. If @error Then Return SetError(@error, @extended, -1)
  3201. Return $ARESULT[0]
  3202. EndFunc
  3203. Func _WINAPI_SETFOCUS($HWND)
  3204. Local $ARESULT = DllCall("user32.dll", "hwnd", "SetFocus", "hwnd", $HWND)
  3205. If @error Then Return SetError(@error, @extended, 0)
  3206. Return $ARESULT[0]
  3207. EndFunc
  3208. Func _WINAPI_SETFONT($HWND, $HFONT, $FREDRAW = True)
  3209. _SENDMESSAGE($HWND, $__WINAPICONSTANT_WM_SETFONT, $HFONT, $FREDRAW, 0, "hwnd")
  3210. EndFunc
  3211. Func _WINAPI_SETHANDLEINFORMATION($HOBJECT, $IMASK, $IFLAGS)
  3212. Local $ARESULT = DllCall("kernel32.dll", "bool", "SetHandleInformation", "handle", $HOBJECT, "dword", $IMASK, "dword", $IFLAGS)
  3213. If @error Then Return SetError(@error, @extended, False)
  3214. Return $ARESULT[0]
  3215. EndFunc
  3216. Func _WINAPI_SETLAYEREDWINDOWATTRIBUTES($HWND, $I_TRANSCOLOR, $TRANSPARENCY = 255, $DWFLAGS = 3, $ISCOLORREF = False)
  3217. If $DWFLAGS = Default Or $DWFLAGS = "" Or $DWFLAGS < 0 Then $DWFLAGS = 3
  3218. If Not $ISCOLORREF Then
  3219. $I_TRANSCOLOR = Hex(String($I_TRANSCOLOR), 6)
  3220. $I_TRANSCOLOR = Execute("0x00" & StringMid($I_TRANSCOLOR, 5, 2) & StringMid($I_TRANSCOLOR, 3, 2) & StringMid($I_TRANSCOLOR, 1, 2))
  3221. EndIf
  3222. Local $ARESULT = DllCall("user32.dll", "bool", "SetLayeredWindowAttributes", "hwnd", $HWND, "dword", $I_TRANSCOLOR, "byte", $TRANSPARENCY, "dword", $DWFLAGS)
  3223. If @error Then Return SetError(@error, @extended, False)
  3224. Return $ARESULT[0]
  3225. EndFunc
  3226. Func _WINAPI_SETPARENT($HWNDCHILD, $HWNDPARENT)
  3227. Local $ARESULT = DllCall("user32.dll", "hwnd", "SetParent", "hwnd", $HWNDCHILD, "hwnd", $HWNDPARENT)
  3228. If @error Then Return SetError(@error, @extended, 0)
  3229. Return $ARESULT[0]
  3230. EndFunc
  3231. Func _WINAPI_SETPROCESSAFFINITYMASK($HPROCESS, $IMASK)
  3232. Local $ARESULT = DllCall("kernel32.dll", "bool", "SetProcessAffinityMask", "handle", $HPROCESS, "ulong_ptr", $IMASK)
  3233. If @error Then Return SetError(@error, @extended, False)
  3234. Return $ARESULT[0]
  3235. EndFunc
  3236. Func _WINAPI_SETSYSCOLORS($VELEMENTS, $VCOLORS)
  3237. Local $ISEARRAY = IsArray($VELEMENTS), $ISCARRAY = IsArray($VCOLORS)
  3238. Local $IELEMENTNUM
  3239. If Not $ISCARRAY And Not $ISEARRAY Then
  3240. $IELEMENTNUM = 1
  3241. ElseIf $ISCARRAY Or $ISEARRAY Then
  3242. If Not $ISCARRAY Or Not $ISEARRAY Then Return SetError(-1, -1, False)
  3243. If UBound($VELEMENTS) <> UBound($VCOLORS) Then Return SetError(-1, -1, False)
  3244. $IELEMENTNUM = UBound($VELEMENTS)
  3245. EndIf
  3246. Local $TELEMENTS = DllStructCreate("int Element[" & $IELEMENTNUM & "]")
  3247. Local $TCOLORS = DllStructCreate("dword NewColor[" & $IELEMENTNUM & "]")
  3248. Local $PELEMENTS = DllStructGetPtr($TELEMENTS)
  3249. Local $PCOLORS = DllStructGetPtr($TCOLORS)
  3250. If Not $ISEARRAY Then
  3251. DllStructSetData($TELEMENTS, "Element", $VELEMENTS, 1)
  3252. Else
  3253. For $X = 0 To $IELEMENTNUM - 1
  3254. DllStructSetData($TELEMENTS, "Element", $VELEMENTS[$X], $X + 1)
  3255. Next
  3256. EndIf
  3257. If Not $ISCARRAY Then
  3258. DllStructSetData($TCOLORS, "NewColor", $VCOLORS, 1)
  3259. Else
  3260. For $X = 0 To $IELEMENTNUM - 1
  3261. DllStructSetData($TCOLORS, "NewColor", $VCOLORS[$X], $X + 1)
  3262. Next
  3263. EndIf
  3264. Local $ARESULT = DllCall("user32.dll", "bool", "SetSysColors", "int", $IELEMENTNUM, "ptr", $PELEMENTS, "ptr", $PCOLORS)
  3265. If @error Then Return SetError(@error, @extended, False)
  3266. Return $ARESULT[0]
  3267. EndFunc
  3268. Func _WINAPI_SETTEXTCOLOR($HDC, $ICOLOR)
  3269. Local $ARESULT = DllCall("gdi32.dll", "INT", "SetTextColor", "handle", $HDC, "dword", $ICOLOR)
  3270. If @error Then Return SetError(@error, @extended, -1)
  3271. Return $ARESULT[0]
  3272. EndFunc
  3273. Func _WINAPI_SETWINDOWLONG($HWND, $IINDEX, $IVALUE)
  3274. _WINAPI_SETLASTERROR(0)
  3275. Local $SFUNCNAME = "SetWindowLongW"
  3276. If @AutoItX64 Then $SFUNCNAME = "SetWindowLongPtrW"
  3277. Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX, "long_ptr", $IVALUE)
  3278. If @error Then Return SetError(@error, @extended, 0)
  3279. Return $ARESULT[0]
  3280. EndFunc
  3281. Func _WINAPI_SETWINDOWPLACEMENT($HWND, $PWINDOWPLACEMENT)
  3282. Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowPlacement", "hwnd", $HWND, "ptr", $PWINDOWPLACEMENT)
  3283. If @error Then Return SetError(@error, @extended, False)
  3284. Return $ARESULT[0]
  3285. EndFunc
  3286. Func _WINAPI_SETWINDOWPOS($HWND, $HAFTER, $IX, $IY, $ICX, $ICY, $IFLAGS)
  3287. Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowPos", "hwnd", $HWND, "hwnd", $HAFTER, "int", $IX, "int", $IY, "int", $ICX, "int", $ICY, "uint", $IFLAGS)
  3288. If @error Then Return SetError(@error, @extended, False)
  3289. Return $ARESULT[0]
  3290. EndFunc
  3291. Func _WINAPI_SETWINDOWRGN($HWND, $HRGN, $BREDRAW = True)
  3292. Local $ARESULT = DllCall("user32.dll", "int", "SetWindowRgn", "hwnd", $HWND, "handle", $HRGN, "bool", $BREDRAW)
  3293. If @error Then Return SetError(@error, @extended, False)
  3294. Return $ARESULT[0]
  3295. EndFunc
  3296. Func _WINAPI_SETWINDOWSHOOKEX($IDHOOK, $LPFN, $HMOD, $DWTHREADID = 0)
  3297. Local $ARESULT = DllCall("user32.dll", "handle", "SetWindowsHookEx", "int", $IDHOOK, "ptr", $LPFN, "handle", $HMOD, "dword", $DWTHREADID)
  3298. If @error Then Return SetError(@error, @extended, 0)
  3299. Return $ARESULT[0]
  3300. EndFunc
  3301. Func _WINAPI_SETWINDOWTEXT($HWND, $STEXT)
  3302. Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowTextW", "hwnd", $HWND, "wstr", $STEXT)
  3303. If @error Then Return SetError(@error, @extended, False)
  3304. Return $ARESULT[0]
  3305. EndFunc
  3306. Func _WINAPI_SHOWCURSOR($FSHOW)
  3307. Local $ARESULT = DllCall("user32.dll", "int", "ShowCursor", "bool", $FSHOW)
  3308. If @error Then Return SetError(@error, @extended, 0)
  3309. Return $ARESULT[0]
  3310. EndFunc
  3311. Func _WINAPI_SHOWERROR($STEXT, $FEXIT = True)
  3312. _WINAPI_MSGBOX(266256, "Error", $STEXT)
  3313. If $FEXIT Then Exit
  3314. EndFunc
  3315. Func _WINAPI_SHOWMSG($STEXT)
  3316. _WINAPI_MSGBOX(64 + 4096, "Information", $STEXT)
  3317. EndFunc
  3318. Func _WINAPI_SHOWWINDOW($HWND, $ICMDSHOW = 5)
  3319. Local $ARESULT = DllCall("user32.dll", "bool", "ShowWindow", "hwnd", $HWND, "int", $ICMDSHOW)
  3320. If @error Then Return SetError(@error, @extended, False)
  3321. Return $ARESULT[0]
  3322. EndFunc
  3323. Func _WINAPI_STRINGFROMGUID($PGUID)
  3324. Local $ARESULT = DllCall("ole32.dll", "int", "StringFromGUID2", "ptr", $PGUID, "wstr", "", "int", 40)
  3325. If @error Then Return SetError(@error, @extended, "")
  3326. Return SetExtended($ARESULT[0], $ARESULT[2])
  3327. EndFunc
  3328. Func _WINAPI_SUBLANGID($LGID)
  3329. Return BitShift($LGID, 10)
  3330. EndFunc
  3331. Func _WINAPI_SYSTEMPARAMETERSINFO($IACTION, $IPARAM = 0, $VPARAM = 0, $IWININI = 0)
  3332. Local $ARESULT = DllCall("user32.dll", "bool", "SystemParametersInfoW", "uint", $IACTION, "uint", $IPARAM, "ptr", $VPARAM, "uint", $IWININI)
  3333. If @error Then Return SetError(@error, @extended, False)
  3334. Return $ARESULT[0]
  3335. EndFunc
  3336. Func _WINAPI_TWIPSPERPIXELX()
  3337. Local $LNGDC, $TWIPSPERPIXELX
  3338. $LNGDC = _WINAPI_GETDC(0)
  3339. $TWIPSPERPIXELX = 1440 / _WINAPI_GETDEVICECAPS($LNGDC, $__WINAPICONSTANT_LOGPIXELSX)
  3340. _WINAPI_RELEASEDC(0, $LNGDC)
  3341. Return $TWIPSPERPIXELX
  3342. EndFunc
  3343. Func _WINAPI_TWIPSPERPIXELY()
  3344. Local $LNGDC, $TWIPSPERPIXELY
  3345. $LNGDC = _WINAPI_GETDC(0)
  3346. $TWIPSPERPIXELY = 1440 / _WINAPI_GETDEVICECAPS($LNGDC, $__WINAPICONSTANT_LOGPIXELSY)
  3347. _WINAPI_RELEASEDC(0, $LNGDC)
  3348. Return $TWIPSPERPIXELY
  3349. EndFunc
  3350. Func _WINAPI_UNHOOKWINDOWSHOOKEX($HHK)
  3351. Local $ARESULT = DllCall("user32.dll", "bool", "UnhookWindowsHookEx", "handle", $HHK)
  3352. If @error Then Return SetError(@error, @extended, False)
  3353. Return $ARESULT[0]
  3354. EndFunc
  3355. Func _WINAPI_UPDATELAYEREDWINDOW($HWND, $HDCDEST, $PPTDEST, $PSIZE, $HDCSRCE, $PPTSRCE, $IRGB, $PBLEND, $IFLAGS)
  3356. 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)
  3357. If @error Then Return SetError(@error, @extended, False)
  3358. Return $ARESULT[0]
  3359. EndFunc
  3360. Func _WINAPI_UPDATEWINDOW($HWND)
  3361. Local $ARESULT = DllCall("user32.dll", "bool", "UpdateWindow", "hwnd", $HWND)
  3362. If @error Then Return SetError(@error, @extended, False)
  3363. Return $ARESULT[0]
  3364. EndFunc
  3365. Func _WINAPI_WAITFORINPUTIDLE($HPROCESS, $ITIMEOUT = -1)
  3366. Local $ARESULT = DllCall("user32.dll", "dword", "WaitForInputIdle", "handle", $HPROCESS, "dword", $ITIMEOUT)
  3367. If @error Then Return SetError(@error, @extended, False)
  3368. Return $ARESULT[0]
  3369. EndFunc
  3370. Func _WINAPI_WAITFORMULTIPLEOBJECTS($ICOUNT, $PHANDLES, $FWAITALL = False, $ITIMEOUT = -1)
  3371. Local $ARESULT = DllCall("kernel32.dll", "INT", "WaitForMultipleObjects", "dword", $ICOUNT, "ptr", $PHANDLES, "bool", $FWAITALL, "dword", $ITIMEOUT)
  3372. If @error Then Return SetError(@error, @extended, -1)
  3373. Return $ARESULT[0]
  3374. EndFunc
  3375. Func _WINAPI_WAITFORSINGLEOBJECT($HHANDLE, $ITIMEOUT = -1)
  3376. Local $ARESULT = DllCall("kernel32.dll", "INT", "WaitForSingleObject", "handle", $HHANDLE, "dword", $ITIMEOUT)
  3377. If @error Then Return SetError(@error, @extended, -1)
  3378. Return $ARESULT[0]
  3379. EndFunc
  3380. Func _WINAPI_WIDECHARTOMULTIBYTE($PUNICODE, $ICODEPAGE = 0, $BRETSTRING = True)
  3381. Local $SUNICODETYPE = "ptr"
  3382. If IsDllStruct($PUNICODE) Then
  3383. $PUNICODE = DllStructGetPtr($PUNICODE)
  3384. Else
  3385. If Not IsPtr($PUNICODE) Then $SUNICODETYPE = "wstr"
  3386. EndIf
  3387. Local $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "ptr", 0, "int", 0, "ptr", 0, "ptr", 0)
  3388. If @error Then Return SetError(@error, @extended, "")
  3389. Local $TMULTIBYTE = DllStructCreate("char[" & $ARESULT[0] & "]")
  3390. Local $PMULTIBYTE = DllStructGetPtr($TMULTIBYTE)
  3391. $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "ptr", $PMULTIBYTE, "int", $ARESULT[0], "ptr", 0, "ptr", 0)
  3392. If @error Then Return SetError(@error, @extended, "")
  3393. If $BRETSTRING Then Return DllStructGetData($TMULTIBYTE, 1)
  3394. Return $TMULTIBYTE
  3395. EndFunc
  3396. Func _WINAPI_WINDOWFROMPOINT(ByRef $TPOINT)
  3397. Local $TPOINTCAST = DllStructCreate("int64", DllStructGetPtr($TPOINT))
  3398. Local $ARESULT = DllCall("user32.dll", "hwnd", "WindowFromPoint", "int64", DllStructGetData($TPOINTCAST, 1))
  3399. If @error Then Return SetError(@error, @extended, 0)
  3400. Return $ARESULT[0]
  3401. EndFunc
  3402. Func _WINAPI_WRITECONSOLE($HCONSOLE, $STEXT)
  3403. Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteConsoleW", "handle", $HCONSOLE, "wstr", $STEXT, "dword", StringLen($STEXT), "dword*", 0, "ptr", 0)
  3404. If @error Then Return SetError(@error, @extended, False)
  3405. Return $ARESULT[0]
  3406. EndFunc
  3407. Func _WINAPI_WRITEFILE($HFILE, $PBUFFER, $ITOWRITE, ByRef $IWRITTEN, $POVERLAPPED = 0)
  3408. Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteFile", "handle", $HFILE, "ptr", $PBUFFER, "dword", $ITOWRITE, "dword*", 0, "ptr", $POVERLAPPED)
  3409. If @error Then Return SetError(@error, @extended, False)
  3410. $IWRITTEN = $ARESULT[4]
  3411. Return $ARESULT[0]
  3412. EndFunc
  3413. Func _WINAPI_WRITEPROCESSMEMORY($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IWRITTEN, $SBUFFER = "ptr")
  3414. Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, $SBUFFER, $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  3415. If @error Then Return SetError(@error, @extended, False)
  3416. $IWRITTEN = $ARESULT[5]
  3417. Return $ARESULT[0]
  3418. EndFunc
  3419. Global Const $ES_LEFT = 0
  3420. Global Const $ES_CENTER = 1
  3421. Global Const $ES_RIGHT = 2
  3422. Global Const $ES_MULTILINE = 4
  3423. Global Const $ES_UPPERCASE = 8
  3424. Global Const $ES_LOWERCASE = 16
  3425. Global Const $ES_PASSWORD = 32
  3426. Global Const $ES_AUTOVSCROLL = 64
  3427. Global Const $ES_AUTOHSCROLL = 128
  3428. Global Const $ES_NOHIDESEL = 256
  3429. Global Const $ES_OEMCONVERT = 1024
  3430. Global Const $ES_READONLY = 2048
  3431. Global Const $ES_WANTRETURN = 4096
  3432. Global Const $ES_NUMBER = 8192
  3433. Global Const $EC_ERR = -1
  3434. Global Const $ECM_FIRST = 5376
  3435. Global Const $EM_CANUNDO = 198
  3436. Global Const $EM_CHARFROMPOS = 215
  3437. Global Const $EM_EMPTYUNDOBUFFER = 205
  3438. Global Const $EM_FMTLINES = 200
  3439. Global Const $EM_GETCUEBANNER = ($ECM_FIRST + 2)
  3440. Global Const $EM_GETFIRSTVISIBLELINE = 206
  3441. Global Const $EM_GETHANDLE = 189
  3442. Global Const $EM_GETIMESTATUS = 217
  3443. Global Const $EM_GETLIMITTEXT = 213
  3444. Global Const $EM_GETLINE = 196
  3445. Global Const $EM_GETLINECOUNT = 186
  3446. Global Const $EM_GETMARGINS = 212
  3447. Global Const $EM_GETMODIFY = 184
  3448. Global Const $EM_GETPASSWORDCHAR = 210
  3449. Global Const $EM_GETRECT = 178
  3450. Global Const $EM_GETSEL = 176
  3451. Global Const $EM_GETTHUMB = 190
  3452. Global Const $EM_GETWORDBREAKPROC = 209
  3453. Global Const $EM_HIDEBALLOONTIP = ($ECM_FIRST + 4)
  3454. Global Const $EM_LIMITTEXT = 197
  3455. Global Const $EM_LINEFROMCHAR = 201
  3456. Global Const $EM_LINEINDEX = 187
  3457. Global Const $EM_LINELENGTH = 193
  3458. Global Const $EM_LINESCROLL = 182
  3459. Global Const $EM_POSFROMCHAR = 214
  3460. Global Const $EM_REPLACESEL = 194
  3461. Global Const $EM_SCROLL = 181
  3462. Global Const $EM_SCROLLCARET = 183
  3463. Global Const $EM_SETCUEBANNER = ($ECM_FIRST + 1)
  3464. Global Const $EM_SETHANDLE = 188
  3465. Global Const $EM_SETIMESTATUS = 216
  3466. Global Const $EM_SETLIMITTEXT = $EM_LIMITTEXT
  3467. Global Const $EM_SETMARGINS = 211
  3468. Global Const $EM_SETMODIFY = 185
  3469. Global Const $EM_SETPASSWORDCHAR = 204
  3470. Global Const $EM_SETREADONLY = 207
  3471. Global Const $EM_SETRECT = 179
  3472. Global Const $EM_SETRECTNP = 180
  3473. Global Const $EM_SETSEL = 177
  3474. Global Const $EM_SETTABSTOPS = 203
  3475. Global Const $EM_SETWORDBREAKPROC = 208
  3476. Global Const $EM_SHOWBALLOONTIP = ($ECM_FIRST + 3)
  3477. Global Const $EM_UNDO = 199
  3478. Global Const $EC_LEFTMARGIN = 1
  3479. Global Const $EC_RIGHTMARGIN = 2
  3480. Global Const $EC_USEFONTINFO = 65535
  3481. Global Const $EMSIS_COMPOSITIONSTRING = 1
  3482. Global Const $EIMES_GETCOMPSTRATONCE = 1
  3483. Global Const $EIMES_CANCELCOMPSTRINFOCUS = 2
  3484. Global Const $EIMES_COMPLETECOMPSTRKILLFOCUS = 4
  3485. Global Const $EN_ALIGN_LTR_EC = 1792
  3486. Global Const $EN_ALIGN_RTL_EC = 1793
  3487. Global Const $EN_CHANGE = 768
  3488. Global Const $EN_ERRSPACE = 1280
  3489. Global Const $EN_HSCROLL = 1537
  3490. Global Const $EN_KILLFOCUS = 512
  3491. Global Const $EN_MAXTEXT = 1281
  3492. Global Const $EN_SETFOCUS = 256
  3493. Global Const $EN_UPDATE = 1024
  3494. Global Const $EN_VSCROLL = 1538
  3495. Global Const $TTI_NONE = 0
  3496. Global Const $TTI_INFO = 1
  3497. Global Const $TTI_WARNING = 2
  3498. Global Const $TTI_ERROR = 3
  3499. Global Const $TTI_INFO_LARGE = 4
  3500. Global Const $TTI_WARNING_LARGE = 5
  3501. Global Const $TTI_ERROR_LARGE = 6
  3502. Global Const $__EDITCONSTANT_WS_VSCROLL = 2097152
  3503. Global Const $__EDITCONSTANT_WS_HSCROLL = 1048576
  3504. Global Const $GUI_SS_DEFAULT_EDIT = BitOR($ES_WANTRETURN, $__EDITCONSTANT_WS_VSCROLL, $__EDITCONSTANT_WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL)
  3505. Global Const $GUI_SS_DEFAULT_INPUT = BitOR($ES_LEFT, $ES_AUTOHSCROLL)
  3506. Global Const $SBARS_SIZEGRIP = 256
  3507. Global Const $SBT_TOOLTIPS = 2048
  3508. Global Const $SBARS_TOOLTIPS = 2048
  3509. Global Const $SBT_SUNKEN = 0
  3510. Global Const $SBT_NOBORDERS = 256
  3511. Global Const $SBT_POPOUT = 512
  3512. Global Const $SBT_RTLREADING = 1024
  3513. Global Const $SBT_NOTABPARSING = 2048
  3514. Global Const $SBT_OWNERDRAW = 4096
  3515. Global Const $__STATUSBARCONSTANT_WM_USER = 1024
  3516. Global Const $SB_GETBORDERS = ($__STATUSBARCONSTANT_WM_USER + 7)
  3517. Global Const $SB_GETICON = ($__STATUSBARCONSTANT_WM_USER + 20)
  3518. Global Const $SB_GETPARTS = ($__STATUSBARCONSTANT_WM_USER + 6)
  3519. Global Const $SB_GETRECT = ($__STATUSBARCONSTANT_WM_USER + 10)
  3520. Global Const $SB_GETTEXTA = ($__STATUSBARCONSTANT_WM_USER + 2)
  3521. Global Const $SB_GETTEXTW = ($__STATUSBARCONSTANT_WM_USER + 13)
  3522. Global Const $SB_GETTEXT = $SB_GETTEXTA
  3523. Global Const $SB_GETTEXTLENGTHA = ($__STATUSBARCONSTANT_WM_USER + 3)
  3524. Global Const $SB_GETTEXTLENGTHW = ($__STATUSBARCONSTANT_WM_USER + 12)
  3525. Global Const $SB_GETTEXTLENGTH = $SB_GETTEXTLENGTHA
  3526. Global Const $SB_GETTIPTEXTA = ($__STATUSBARCONSTANT_WM_USER + 18)
  3527. Global Const $SB_GETTIPTEXTW = ($__STATUSBARCONSTANT_WM_USER + 19)
  3528. Global Const $SB_GETUNICODEFORMAT = 8192 + 6
  3529. Global Const $SB_ISSIMPLE = ($__STATUSBARCONSTANT_WM_USER + 14)
  3530. Global Const $SB_SETBKCOLOR = 8192 + 1
  3531. Global Const $SB_SETICON = ($__STATUSBARCONSTANT_WM_USER + 15)
  3532. Global Const $SB_SETMINHEIGHT = ($__STATUSBARCONSTANT_WM_USER + 8)
  3533. Global Const $SB_SETPARTS = ($__STATUSBARCONSTANT_WM_USER + 4)
  3534. Global Const $SB_SETTEXTA = ($__STATUSBARCONSTANT_WM_USER + 1)
  3535. Global Const $SB_SETTEXTW = ($__STATUSBARCONSTANT_WM_USER + 11)
  3536. Global Const $SB_SETTEXT = $SB_SETTEXTA
  3537. Global Const $SB_SETTIPTEXTA = ($__STATUSBARCONSTANT_WM_USER + 16)
  3538. Global Const $SB_SETTIPTEXTW = ($__STATUSBARCONSTANT_WM_USER + 17)
  3539. Global Const $SB_SETUNICODEFORMAT = 8192 + 5
  3540. Global Const $SB_SIMPLE = ($__STATUSBARCONSTANT_WM_USER + 9)
  3541. Global Const $SB_SIMPLEID = 255
  3542. Global Const $SBN_FIRST = -880
  3543. Global Const $SBN_SIMPLEMODECHANGE = $SBN_FIRST - 0
  3544. Global Const $GMEM_FIXED = 0
  3545. Global Const $GMEM_MOVEABLE = 2
  3546. Global Const $GMEM_NOCOMPACT = 16
  3547. Global Const $GMEM_NODISCARD = 32
  3548. Global Const $GMEM_ZEROINIT = 64
  3549. Global Const $GMEM_MODIFY = 128
  3550. Global Const $GMEM_DISCARDABLE = 256
  3551. Global Const $GMEM_NOT_BANKED = 4096
  3552. Global Const $GMEM_SHARE = 8192
  3553. Global Const $GMEM_DDESHARE = 8192
  3554. Global Const $GMEM_NOTIFY = 16384
  3555. Global Const $GMEM_LOWER = 4096
  3556. Global Const $GMEM_VALID_FLAGS = 32626
  3557. Global Const $GMEM_INVALID_HANDLE = 32768
  3558. Global Const $GPTR = $GMEM_FIXED + $GMEM_ZEROINIT
  3559. Global Const $GHND = $GMEM_MOVEABLE + $GMEM_ZEROINIT
  3560. Global Const $MEM_COMMIT = 4096
  3561. Global Const $MEM_RESERVE = 8192
  3562. Global Const $MEM_TOP_DOWN = 1048576
  3563. Global Const $MEM_SHARED = 134217728
  3564. Global Const $PAGE_NOACCESS = 1
  3565. Global Const $PAGE_READONLY = 2
  3566. Global Const $PAGE_READWRITE = 4
  3567. Global Const $PAGE_EXECUTE = 16
  3568. Global Const $PAGE_EXECUTE_READ = 32
  3569. Global Const $PAGE_EXECUTE_READWRITE = 64
  3570. Global Const $PAGE_GUARD = 256
  3571. Global Const $PAGE_NOCACHE = 512
  3572. Global Const $MEM_DECOMMIT = 16384
  3573. Global Const $MEM_RELEASE = 32768
  3574. Global Const $TAGMEMMAP = "handle hProc;ulong_ptr Size;ptr Mem"
  3575. Func _MEMFREE(ByRef $TMEMMAP)
  3576. Local $PMEMORY = DllStructGetData($TMEMMAP, "Mem")
  3577. Local $HPROCESS = DllStructGetData($TMEMMAP, "hProc")
  3578. Local $BRESULT = _MEMVIRTUALFREEEX($HPROCESS, $PMEMORY, 0, $MEM_RELEASE)
  3579. DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HPROCESS)
  3580. If @error Then Return SetError(@error, @extended, False)
  3581. Return $BRESULT
  3582. EndFunc
  3583. Func _MEMGLOBALALLOC($IBYTES, $IFLAGS = 0)
  3584. Local $ARESULT = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", $IFLAGS, "ulong_ptr", $IBYTES)
  3585. If @error Then Return SetError(@error, @extended, 0)
  3586. Return $ARESULT[0]
  3587. EndFunc
  3588. Func _MEMGLOBALFREE($HMEM)
  3589. Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $HMEM)
  3590. If @error Then Return SetError(@error, @extended, False)
  3591. Return $ARESULT[0]
  3592. EndFunc
  3593. Func _MEMGLOBALLOCK($HMEM)
  3594. Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $HMEM)
  3595. If @error Then Return SetError(@error, @extended, 0)
  3596. Return $ARESULT[0]
  3597. EndFunc
  3598. Func _MEMGLOBALSIZE($HMEM)
  3599. Local $ARESULT = DllCall("kernel32.dll", "ulong_ptr", "GlobalSize", "handle", $HMEM)
  3600. If @error Then Return SetError(@error, @extended, 0)
  3601. Return $ARESULT[0]
  3602. EndFunc
  3603. Func _MEMGLOBALUNLOCK($HMEM)
  3604. Local $ARESULT = DllCall("kernel32.dll", "bool", "GlobalUnlock", "handle", $HMEM)
  3605. If @error Then Return SetError(@error, @extended, 0)
  3606. Return $ARESULT[0]
  3607. EndFunc
  3608. Func _MEMINIT($HWND, $ISIZE, ByRef $TMEMMAP)
  3609. Local $ARESULT = DllCall("User32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0)
  3610. If @error Then Return SetError(@error, @extended, 0)
  3611. Local $IPROCESSID = $ARESULT[2]
  3612. If $IPROCESSID = 0 Then Return SetError(1, 0, 0)
  3613. Local $IACCESS = BitOR($PROCESS_VM_OPERATION, $PROCESS_VM_READ, $PROCESS_VM_WRITE)
  3614. Local $HPROCESS = __MEM_OPENPROCESS($IACCESS, False, $IPROCESSID, True)
  3615. Local $IALLOC = BitOR($MEM_RESERVE, $MEM_COMMIT)
  3616. Local $PMEMORY = _MEMVIRTUALALLOCEX($HPROCESS, 0, $ISIZE, $IALLOC, $PAGE_READWRITE)
  3617. If $PMEMORY = 0 Then Return SetError(2, 0, 0)
  3618. $TMEMMAP = DllStructCreate($TAGMEMMAP)
  3619. DllStructSetData($TMEMMAP, "hProc", $HPROCESS)
  3620. DllStructSetData($TMEMMAP, "Size", $ISIZE)
  3621. DllStructSetData($TMEMMAP, "Mem", $PMEMORY)
  3622. Return $PMEMORY
  3623. EndFunc
  3624. Func _MEMMOVEMEMORY($PSOURCE, $PDEST, $ILENGTH)
  3625. DllCall("kernel32.dll", "none", "RtlMoveMemory", "ptr", $PDEST, "ptr", $PSOURCE, "ulong_ptr", $ILENGTH)
  3626. If @error Then Return SetError(@error, @extended)
  3627. EndFunc
  3628. Func _MEMREAD(ByRef $TMEMMAP, $PSRCE, $PDEST, $ISIZE)
  3629. Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PSRCE, "ptr", $PDEST, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  3630. If @error Then Return SetError(@error, @extended, False)
  3631. Return $ARESULT[0]
  3632. EndFunc
  3633. Func _MEMWRITE(ByRef $TMEMMAP, $PSRCE, $PDEST = 0, $ISIZE = 0, $SSRCE = "ptr")
  3634. If $PDEST = 0 Then $PDEST = DllStructGetData($TMEMMAP, "Mem")
  3635. If $ISIZE = 0 Then $ISIZE = DllStructGetData($TMEMMAP, "Size")
  3636. Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PDEST, $SSRCE, $PSRCE, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  3637. If @error Then Return SetError(@error, @extended, False)
  3638. Return $ARESULT[0]
  3639. EndFunc
  3640. Func _MEMVIRTUALALLOC($PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT)
  3641. Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT)
  3642. If @error Then Return SetError(@error, @extended, 0)
  3643. Return $ARESULT[0]
  3644. EndFunc
  3645. Func _MEMVIRTUALALLOCEX($HPROCESS, $PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT)
  3646. Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAllocEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT)
  3647. If @error Then Return SetError(@error, @extended, 0)
  3648. Return $ARESULT[0]
  3649. EndFunc
  3650. Func _MEMVIRTUALFREE($PADDRESS, $ISIZE, $IFREETYPE)
  3651. Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE)
  3652. If @error Then Return SetError(@error, @extended, False)
  3653. Return $ARESULT[0]
  3654. EndFunc
  3655. Func _MEMVIRTUALFREEEX($HPROCESS, $PADDRESS, $ISIZE, $IFREETYPE)
  3656. Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFreeEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE)
  3657. If @error Then Return SetError(@error, @extended, False)
  3658. Return $ARESULT[0]
  3659. EndFunc
  3660. Func __MEM_OPENPROCESS($IACCESS, $FINHERIT, $IPROCESSID, $FDEBUGPRIV = False)
  3661. Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  3662. If @error Then Return SetError(@error, @extended, 0)
  3663. If $ARESULT[0] Then Return $ARESULT[0]
  3664. If Not $FDEBUGPRIV Then Return 0
  3665. Local $HTOKEN = _SECURITY__OPENTHREADTOKENEX(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
  3666. If @error Then Return SetError(@error, @extended, 0)
  3667. _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", True)
  3668. Local $IERROR = @error
  3669. Local $ILASTERROR = @extended
  3670. Local $IRET = 0
  3671. If Not @error Then
  3672. $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  3673. $IERROR = @error
  3674. $ILASTERROR = @extended
  3675. If $ARESULT[0] Then $IRET = $ARESULT[0]
  3676. _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", False)
  3677. If @error Then
  3678. $IERROR = @error
  3679. $ILASTERROR = @extended
  3680. EndIf
  3681. EndIf
  3682. DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HTOKEN)
  3683. Return SetError($IERROR, $ILASTERROR, $IRET)
  3684. EndFunc
  3685. Global Const $_UDF_GLOBALIDS_OFFSET = 2
  3686. Global Const $_UDF_GLOBALID_MAX_WIN = 16
  3687. Global Const $_UDF_STARTID = 10000
  3688. Global Const $_UDF_GLOBALID_MAX_IDS = 55535
  3689. Global Const $__UDFGUICONSTANT_WS_VISIBLE = 268435456
  3690. Global Const $__UDFGUICONSTANT_WS_CHILD = 1073741824
  3691. Global $_UDF_GLOBALIDS_USED[$_UDF_GLOBALID_MAX_WIN][$_UDF_GLOBALID_MAX_IDS + $_UDF_GLOBALIDS_OFFSET + 1]
  3692. Func __UDF_GETNEXTGLOBALID($HWND)
  3693. Local $NCTRLID, $IUSEDINDEX = -1, $FALLUSED = True
  3694. If Not WinExists($HWND) Then Return SetError(-1, -1, 0)
  3695. For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  3696. If $_UDF_GLOBALIDS_USED[$IINDEX][0] <> 0 Then
  3697. If Not WinExists($_UDF_GLOBALIDS_USED[$IINDEX][0]) Then
  3698. For $X = 0 To UBound($_UDF_GLOBALIDS_USED, 2) - 1
  3699. $_UDF_GLOBALIDS_USED[$IINDEX][$X] = 0
  3700. Next
  3701. $_UDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID
  3702. $FALLUSED = False
  3703. EndIf
  3704. EndIf
  3705. Next
  3706. For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  3707. If $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then
  3708. $IUSEDINDEX = $IINDEX
  3709. ExitLoop
  3710. EndIf
  3711. Next
  3712. If $IUSEDINDEX = -1 Then
  3713. For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  3714. If $_UDF_GLOBALIDS_USED[$IINDEX][0] = 0 Then
  3715. $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND
  3716. $_UDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID
  3717. $FALLUSED = False
  3718. $IUSEDINDEX = $IINDEX
  3719. ExitLoop
  3720. EndIf
  3721. Next
  3722. EndIf
  3723. If $IUSEDINDEX = -1 And $FALLUSED Then Return SetError(16, 0, 0)
  3724. If $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1] = $_UDF_STARTID + $_UDF_GLOBALID_MAX_IDS Then
  3725. For $IIDINDEX = $_UDF_GLOBALIDS_OFFSET To UBound($_UDF_GLOBALIDS_USED, 2) - 1
  3726. If $_UDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = 0 Then
  3727. $NCTRLID = ($IIDINDEX - $_UDF_GLOBALIDS_OFFSET) + 10000
  3728. $_UDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = $NCTRLID
  3729. Return $NCTRLID
  3730. EndIf
  3731. Next
  3732. Return SetError(-1, $_UDF_GLOBALID_MAX_IDS, 0)
  3733. EndIf
  3734. $NCTRLID = $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1]
  3735. $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1] += 1
  3736. $_UDF_GLOBALIDS_USED[$IUSEDINDEX][($NCTRLID - 10000) + $_UDF_GLOBALIDS_OFFSET] = $NCTRLID
  3737. Return $NCTRLID
  3738. EndFunc
  3739. Func __UDF_FREEGLOBALID($HWND, $IGLOBALID)
  3740. If $IGLOBALID - $_UDF_STARTID < 0 Or $IGLOBALID - $_UDF_STARTID > $_UDF_GLOBALID_MAX_IDS Then Return SetError(-1, 0, False)
  3741. For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  3742. If $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then
  3743. For $X = $_UDF_GLOBALIDS_OFFSET To UBound($_UDF_GLOBALIDS_USED, 2) - 1
  3744. If $_UDF_GLOBALIDS_USED[$IINDEX][$X] = $IGLOBALID Then
  3745. $_UDF_GLOBALIDS_USED[$IINDEX][$X] = 0
  3746. Return True
  3747. EndIf
  3748. Next
  3749. Return SetError(-3, 0, False)
  3750. EndIf
  3751. Next
  3752. Return SetError(-2, 0, False)
  3753. EndFunc
  3754. Func __UDF_DEBUGPRINT($STEXT, $ILINE = @ScriptLineNumber, $ERR = @error, $EXT = @extended)
  3755. ConsoleWrite("!===========================================================" & @CRLF & "+======================================================" & @CRLF & "-->Line(" & StringFormat("%04d", $ILINE) & "):" & @TAB & $STEXT & @CRLF & "+======================================================" & @CRLF)
  3756. Return SetError($ERR, $EXT, 1)
  3757. EndFunc
  3758. Func __UDF_VALIDATECLASSNAME($HWND, $SCLASSNAMES)
  3759. __UDF_DEBUGPRINT("This is for debugging only, set the debug variable to false before submitting")
  3760. If _WINAPI_ISCLASSNAME($HWND, $SCLASSNAMES) Then Return True
  3761. Local $SSEPARATOR = Opt("GUIDataSeparatorChar")
  3762. $SCLASSNAMES = StringReplace($SCLASSNAMES, $SSEPARATOR, ",")
  3763. __UDF_DEBUGPRINT("Invalid Class Type(s):" & @LF & @TAB & "Expecting Type(s): " & $SCLASSNAMES & @LF & @TAB & "Received Type : " & _WINAPI_GETCLASSNAME($HWND))
  3764. Exit
  3765. EndFunc
  3766. Global $__GHSBLASTWND
  3767. Global $DEBUG_SB = False
  3768. Global Const $__STATUSBARCONSTANT_CLASSNAME = "msctls_statusbar32"
  3769. Global Const $__STATUSBARCONSTANT_WM_SIZE = 5
  3770. Global Const $__STATUSBARCONSTANT_CLR_DEFAULT = -16777216
  3771. Global Const $TAGBORDERS = "int BX;int BY;int RX"
  3772. Func _GUICTRLSTATUSBAR_CREATE($HWND, $VPARTEDGE = -1, $VPARTTEXT = "", $ISTYLES = -1, $IEXSTYLES = -1)
  3773. If Not IsHWnd($HWND) Then Return SetError(1, 0, 0)
  3774. Local $ISTYLE = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE)
  3775. If $ISTYLES = -1 Then $ISTYLES = 0
  3776. If $IEXSTYLES = -1 Then $IEXSTYLES = 0
  3777. Local $APARTWIDTH[1], $APARTTEXT[1]
  3778. If @NumParams > 1 Then
  3779. If IsArray($VPARTEDGE) Then
  3780. $APARTWIDTH = $VPARTEDGE
  3781. Else
  3782. $APARTWIDTH[0] = $VPARTEDGE
  3783. EndIf
  3784. If @NumParams = 2 Then
  3785. ReDim $APARTTEXT[UBound($APARTWIDTH)]
  3786. Else
  3787. If IsArray($VPARTTEXT) Then
  3788. $APARTTEXT = $VPARTTEXT
  3789. Else
  3790. $APARTTEXT[0] = $VPARTTEXT
  3791. EndIf
  3792. If UBound($APARTWIDTH) <> UBound($APARTTEXT) Then
  3793. Local $ILAST
  3794. If UBound($APARTWIDTH) > UBound($APARTTEXT) Then
  3795. $ILAST = UBound($APARTTEXT)
  3796. ReDim $APARTTEXT[UBound($APARTWIDTH)]
  3797. For $X = $ILAST To UBound($APARTTEXT) - 1
  3798. $APARTWIDTH[$X] = ""
  3799. Next
  3800. Else
  3801. $ILAST = UBound($APARTWIDTH)
  3802. ReDim $APARTWIDTH[UBound($APARTTEXT)]
  3803. For $X = $ILAST To UBound($APARTWIDTH) - 1
  3804. $APARTWIDTH[$X] = $APARTWIDTH[$X - 1] + 75
  3805. Next
  3806. $APARTWIDTH[UBound($APARTTEXT) - 1] = -1
  3807. EndIf
  3808. EndIf
  3809. EndIf
  3810. If Not IsHWnd($HWND) Then $HWND = HWnd($HWND)
  3811. If @NumParams > 3 Then $ISTYLE = BitOR($ISTYLE, $ISTYLES)
  3812. EndIf
  3813. Local $NCTRLID = __UDF_GETNEXTGLOBALID($HWND)
  3814. If @error Then Return SetError(@error, @extended, 0)
  3815. Local $HWNDSBAR = _WINAPI_CREATEWINDOWEX($IEXSTYLES, $__STATUSBARCONSTANT_CLASSNAME, "", $ISTYLE, 0, 0, 0, 0, $HWND, $NCTRLID)
  3816. If @error Then Return SetError(@error, @extended, 0)
  3817. If @NumParams > 1 Then
  3818. _GUICTRLSTATUSBAR_SETPARTS($HWNDSBAR, UBound($APARTWIDTH), $APARTWIDTH)
  3819. For $X = 0 To UBound($APARTTEXT) - 1
  3820. _GUICTRLSTATUSBAR_SETTEXT($HWNDSBAR, $APARTTEXT[$X], $X)
  3821. Next
  3822. EndIf
  3823. Return $HWNDSBAR
  3824. EndFunc
  3825. Func _GUICTRLSTATUSBAR_DESTROY(ByRef $HWND)
  3826. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3827. If Not _WINAPI_ISCLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Then Return SetError(2, 2, False)
  3828. Local $DESTROYED = 0
  3829. If IsHWnd($HWND) Then
  3830. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3831. Local $NCTRLID = _WINAPI_GETDLGCTRLID($HWND)
  3832. Local $HPARENT = _WINAPI_GETPARENT($HWND)
  3833. $DESTROYED = _WINAPI_DESTROYWINDOW($HWND)
  3834. Local $IRET = __UDF_FREEGLOBALID($HPARENT, $NCTRLID)
  3835. If Not $IRET Then
  3836. EndIf
  3837. Else
  3838. Return SetError(1, 1, False)
  3839. EndIf
  3840. EndIf
  3841. If $DESTROYED Then $HWND = 0
  3842. Return $DESTROYED <> 0
  3843. EndFunc
  3844. Func _GUICTRLSTATUSBAR_EMBEDCONTROL($HWND, $IPART, $HCONTROL, $IFIT = 4)
  3845. Local $ARECT = _GUICTRLSTATUSBAR_GETRECT($HWND, $IPART)
  3846. Local $IBARX = $ARECT[0]
  3847. Local $IBARY = $ARECT[1]
  3848. Local $IBARW = $ARECT[2] - $IBARX
  3849. Local $IBARH = $ARECT[3] - $IBARY
  3850. Local $ICONX = $IBARX
  3851. Local $ICONY = $IBARY
  3852. Local $ICONW = _WINAPI_GETWINDOWWIDTH($HCONTROL)
  3853. Local $ICONH = _WINAPI_GETWINDOWHEIGHT($HCONTROL)
  3854. If $ICONW > $IBARW Then $ICONW = $IBARW
  3855. If $ICONH > $IBARH Then $ICONH = $IBARH
  3856. Local $IPADX = ($IBARW - $ICONW) / 2
  3857. Local $IPADY = ($IBARH - $ICONH) / 2
  3858. If $IPADX < 0 Then $IPADX = 0
  3859. If $IPADY < 0 Then $IPADY = 0
  3860. If BitAND($IFIT, 1) = 1 Then $ICONX = $IBARX + $IPADX
  3861. If BitAND($IFIT, 2) = 2 Then $ICONY = $IBARY + $IPADY
  3862. If BitAND($IFIT, 4) = 4 Then
  3863. $IPADX = _GUICTRLSTATUSBAR_GETBORDERSRECT($HWND)
  3864. $IPADY = _GUICTRLSTATUSBAR_GETBORDERSVERT($HWND)
  3865. $ICONX = $IBARX
  3866. If _GUICTRLSTATUSBAR_ISSIMPLE($HWND) Then $ICONX += $IPADX
  3867. $ICONY = $IBARY + $IPADY
  3868. $ICONW = $IBARW - ($IPADX * 2)
  3869. $ICONH = $IBARH - ($IPADY * 2)
  3870. EndIf
  3871. _WINAPI_SETPARENT($HCONTROL, $HWND)
  3872. _WINAPI_MOVEWINDOW($HCONTROL, $ICONX, $ICONY, $ICONW, $ICONH)
  3873. EndFunc
  3874. Func _GUICTRLSTATUSBAR_GETBORDERS($HWND)
  3875. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3876. Local $TBORDERS = DllStructCreate($TAGBORDERS)
  3877. Local $PBORDERS = DllStructGetPtr($TBORDERS)
  3878. Local $IRET
  3879. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3880. $IRET = _SENDMESSAGE($HWND, $SB_GETBORDERS, 0, $PBORDERS, 0, "wparam", "ptr")
  3881. Else
  3882. Local $ISIZE = DllStructGetSize($TBORDERS)
  3883. Local $TMEMMAP
  3884. Local $PMEMORY = _MEMINIT($HWND, $ISIZE, $TMEMMAP)
  3885. $IRET = _SENDMESSAGE($HWND, $SB_GETBORDERS, 0, $PMEMORY, 0, "wparam", "ptr")
  3886. _MEMREAD($TMEMMAP, $PMEMORY, $PBORDERS, $ISIZE)
  3887. _MEMFREE($TMEMMAP)
  3888. EndIf
  3889. Local $ABORDERS[3]
  3890. If $IRET = 0 Then Return SetError(-1, -1, $ABORDERS)
  3891. $ABORDERS[0] = DllStructGetData($TBORDERS, "BX")
  3892. $ABORDERS[1] = DllStructGetData($TBORDERS, "BY")
  3893. $ABORDERS[2] = DllStructGetData($TBORDERS, "RX")
  3894. Return $ABORDERS
  3895. EndFunc
  3896. Func _GUICTRLSTATUSBAR_GETBORDERSHORZ($HWND)
  3897. Local $ABORDERS = _GUICTRLSTATUSBAR_GETBORDERS($HWND)
  3898. Return SetError(@error, @extended, $ABORDERS[0])
  3899. EndFunc
  3900. Func _GUICTRLSTATUSBAR_GETBORDERSRECT($HWND)
  3901. Local $ABORDERS = _GUICTRLSTATUSBAR_GETBORDERS($HWND)
  3902. Return SetError(@error, @extended, $ABORDERS[2])
  3903. EndFunc
  3904. Func _GUICTRLSTATUSBAR_GETBORDERSVERT($HWND)
  3905. Local $ABORDERS = _GUICTRLSTATUSBAR_GETBORDERS($HWND)
  3906. Return SetError(@error, @extended, $ABORDERS[1])
  3907. EndFunc
  3908. Func _GUICTRLSTATUSBAR_GETCOUNT($HWND)
  3909. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3910. Return _SENDMESSAGE($HWND, $SB_GETPARTS)
  3911. EndFunc
  3912. Func _GUICTRLSTATUSBAR_GETHEIGHT($HWND)
  3913. Local $TRECT = _GUICTRLSTATUSBAR_GETRECTEX($HWND, 0)
  3914. Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top") - (_GUICTRLSTATUSBAR_GETBORDERSVERT($HWND) * 2)
  3915. EndFunc
  3916. Func _GUICTRLSTATUSBAR_GETICON($HWND, $IINDEX = 0)
  3917. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3918. Return _SENDMESSAGE($HWND, $SB_GETICON, $IINDEX, 0, 0, "wparam", "lparam", "hwnd")
  3919. EndFunc
  3920. Func _GUICTRLSTATUSBAR_GETPARTS($HWND)
  3921. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3922. Local $ICOUNT = _GUICTRLSTATUSBAR_GETCOUNT($HWND)
  3923. Local $TPARTS = DllStructCreate("int[" & $ICOUNT & "]")
  3924. Local $PPARTS = DllStructGetPtr($TPARTS)
  3925. Local $APARTS[$ICOUNT + 1]
  3926. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3927. $APARTS[0] = _SENDMESSAGE($HWND, $SB_GETPARTS, $ICOUNT, $PPARTS, 0, "wparam", "ptr")
  3928. Else
  3929. Local $IPARTS = DllStructGetSize($TPARTS)
  3930. Local $TMEMMAP
  3931. Local $PMEMORY = _MEMINIT($HWND, $IPARTS, $TMEMMAP)
  3932. $APARTS[0] = _SENDMESSAGE($HWND, $SB_GETPARTS, $ICOUNT, $PMEMORY, 0, "wparam", "ptr")
  3933. _MEMREAD($TMEMMAP, $PMEMORY, $PPARTS, $IPARTS)
  3934. _MEMFREE($TMEMMAP)
  3935. EndIf
  3936. For $II = 1 To $ICOUNT
  3937. $APARTS[$II] = DllStructGetData($TPARTS, 1, $II)
  3938. Next
  3939. Return $APARTS
  3940. EndFunc
  3941. Func _GUICTRLSTATUSBAR_GETRECT($HWND, $IPART)
  3942. Local $TRECT = _GUICTRLSTATUSBAR_GETRECTEX($HWND, $IPART)
  3943. If @error Then Return SetError(@error, 0, 0)
  3944. Local $ARECT[4]
  3945. $ARECT[0] = DllStructGetData($TRECT, "Left")
  3946. $ARECT[1] = DllStructGetData($TRECT, "Top")
  3947. $ARECT[2] = DllStructGetData($TRECT, "Right")
  3948. $ARECT[3] = DllStructGetData($TRECT, "Bottom")
  3949. Return $ARECT
  3950. EndFunc
  3951. Func _GUICTRLSTATUSBAR_GETRECTEX($HWND, $IPART)
  3952. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3953. Local $TRECT = DllStructCreate($TAGRECT)
  3954. Local $PRECT = DllStructGetPtr($TRECT)
  3955. Local $IRET
  3956. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3957. $IRET = _SENDMESSAGE($HWND, $SB_GETRECT, $IPART, $PRECT, 0, "wparam", "ptr")
  3958. Else
  3959. Local $IRECT = DllStructGetSize($TRECT)
  3960. Local $TMEMMAP
  3961. Local $PMEMORY = _MEMINIT($HWND, $IRECT, $TMEMMAP)
  3962. $IRET = _SENDMESSAGE($HWND, $SB_GETRECT, $IPART, $PMEMORY, 0, "wparam", "ptr")
  3963. _MEMREAD($TMEMMAP, $PMEMORY, $PRECT, $IRECT)
  3964. _MEMFREE($TMEMMAP)
  3965. EndIf
  3966. Return SetError($IRET = 0, 0, $TRECT)
  3967. EndFunc
  3968. Func _GUICTRLSTATUSBAR_GETTEXT($HWND, $IPART)
  3969. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3970. Local $FUNICODE = _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  3971. Local $IBUFFER = _GUICTRLSTATUSBAR_GETTEXTLENGTH($HWND, $IPART)
  3972. If $IBUFFER = 0 Then Return SetError(1, 0, "")
  3973. Local $TBUFFER
  3974. If $FUNICODE Then
  3975. $TBUFFER = DllStructCreate("wchar Text[" & $IBUFFER & "]")
  3976. $IBUFFER *= 2
  3977. Else
  3978. $TBUFFER = DllStructCreate("char Text[" & $IBUFFER & "]")
  3979. EndIf
  3980. Local $PBUFFER = DllStructGetPtr($TBUFFER)
  3981. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3982. _SENDMESSAGE($HWND, $SB_GETTEXTW, $IPART, $PBUFFER, 0, "wparam", "ptr")
  3983. Else
  3984. Local $TMEMMAP
  3985. Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP)
  3986. If $FUNICODE Then
  3987. _SENDMESSAGE($HWND, $SB_GETTEXTW, $IPART, $PMEMORY, 0, "wparam", "ptr")
  3988. Else
  3989. _SENDMESSAGE($HWND, $SB_GETTEXT, $IPART, $PMEMORY, 0, "wparam", "ptr")
  3990. EndIf
  3991. _MEMREAD($TMEMMAP, $PMEMORY, $PBUFFER, $IBUFFER)
  3992. _MEMFREE($TMEMMAP)
  3993. EndIf
  3994. Return DllStructGetData($TBUFFER, "Text")
  3995. EndFunc
  3996. Func _GUICTRLSTATUSBAR_GETTEXTFLAGS($HWND, $IPART)
  3997. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3998. If _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND) Then
  3999. Return _SENDMESSAGE($HWND, $SB_GETTEXTLENGTHW, $IPART)
  4000. Else
  4001. Return _SENDMESSAGE($HWND, $SB_GETTEXTLENGTH, $IPART)
  4002. EndIf
  4003. EndFunc
  4004. Func _GUICTRLSTATUSBAR_GETTEXTLENGTH($HWND, $IPART)
  4005. Return _WINAPI_LOWORD(_GUICTRLSTATUSBAR_GETTEXTFLAGS($HWND, $IPART))
  4006. EndFunc
  4007. Func _GUICTRLSTATUSBAR_GETTEXTLENGTHEX($HWND, $IPART)
  4008. Return _WINAPI_HIWORD(_GUICTRLSTATUSBAR_GETTEXTFLAGS($HWND, $IPART))
  4009. EndFunc
  4010. Func _GUICTRLSTATUSBAR_GETTIPTEXT($HWND, $IPART)
  4011. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4012. Local $FUNICODE = _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  4013. Local $TBUFFER
  4014. If $FUNICODE Then
  4015. $TBUFFER = DllStructCreate("wchar Text[4096]")
  4016. Else
  4017. $TBUFFER = DllStructCreate("char Text[4096]")
  4018. EndIf
  4019. Local $PBUFFER = DllStructGetPtr($TBUFFER)
  4020. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  4021. _SENDMESSAGE($HWND, $SB_GETTIPTEXTW, _WINAPI_MAKELONG($IPART, 4096), $PBUFFER, 0, "wparam", "ptr")
  4022. Else
  4023. Local $TMEMMAP
  4024. Local $PMEMORY = _MEMINIT($HWND, 4096, $TMEMMAP)
  4025. If $FUNICODE Then
  4026. _SENDMESSAGE($HWND, $SB_GETTIPTEXTW, _WINAPI_MAKELONG($IPART, 4096), $PMEMORY, 0, "wparam", "ptr")
  4027. Else
  4028. _SENDMESSAGE($HWND, $SB_GETTIPTEXTA, _WINAPI_MAKELONG($IPART, 4096), $PMEMORY, 0, "wparam", "ptr")
  4029. EndIf
  4030. _MEMREAD($TMEMMAP, $PMEMORY, $PBUFFER, 4096)
  4031. _MEMFREE($TMEMMAP)
  4032. EndIf
  4033. Return DllStructGetData($TBUFFER, "Text")
  4034. EndFunc
  4035. Func _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  4036. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4037. Return _SENDMESSAGE($HWND, $SB_GETUNICODEFORMAT) <> 0
  4038. EndFunc
  4039. Func _GUICTRLSTATUSBAR_GETWIDTH($HWND, $IPART)
  4040. Local $TRECT = _GUICTRLSTATUSBAR_GETRECTEX($HWND, $IPART)
  4041. Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left") - (_GUICTRLSTATUSBAR_GETBORDERSHORZ($HWND) * 2)
  4042. EndFunc
  4043. Func _GUICTRLSTATUSBAR_ISSIMPLE($HWND)
  4044. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4045. Return _SENDMESSAGE($HWND, $SB_ISSIMPLE) <> 0
  4046. EndFunc
  4047. Func _GUICTRLSTATUSBAR_RESIZE($HWND)
  4048. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4049. _SENDMESSAGE($HWND, $__STATUSBARCONSTANT_WM_SIZE)
  4050. EndFunc
  4051. Func _GUICTRLSTATUSBAR_SETBKCOLOR($HWND, $ICOLOR)
  4052. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4053. $ICOLOR = _SENDMESSAGE($HWND, $SB_SETBKCOLOR, 0, $ICOLOR)
  4054. If $ICOLOR = $__STATUSBARCONSTANT_CLR_DEFAULT Then Return "0x" & Hex($__STATUSBARCONSTANT_CLR_DEFAULT)
  4055. Return $ICOLOR
  4056. EndFunc
  4057. Func _GUICTRLSTATUSBAR_SETICON($HWND, $IPART, $HICON = -1, $SICONFILE = "")
  4058. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4059. If $HICON = -1 Then Return _SENDMESSAGE($HWND, $SB_SETICON, $IPART, $HICON, 0, "wparam", "handle") <> 0
  4060. If StringLen($SICONFILE) <= 0 Then Return _SENDMESSAGE($HWND, $SB_SETICON, $IPART, $HICON) <> 0
  4061. Local $TICON = DllStructCreate("handle")
  4062. Local $VRESULT = DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $SICONFILE, "int", $HICON, "ptr", 0, "ptr", DllStructGetPtr($TICON), "uint", 1)
  4063. If @error Then Return SetError(@error, @extended, False)
  4064. $VRESULT = $VRESULT[0]
  4065. If $VRESULT > 0 Then $VRESULT = _SENDMESSAGE($HWND, $SB_SETICON, $IPART, DllStructGetData($TICON, 1), 0, "wparam", "handle")
  4066. DllCall("user32.dll", "bool", "DestroyIcon", "handle", DllStructGetData($TICON, 1))
  4067. Return $VRESULT
  4068. EndFunc
  4069. Func _GUICTRLSTATUSBAR_SETMINHEIGHT($HWND, $IMINHEIGHT)
  4070. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4071. _SENDMESSAGE($HWND, $SB_SETMINHEIGHT, $IMINHEIGHT)
  4072. _GUICTRLSTATUSBAR_RESIZE($HWND)
  4073. EndFunc
  4074. Func _GUICTRLSTATUSBAR_SETPARTS($HWND, $IAPARTS = -1, $IAPARTWIDTH = 25)
  4075. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4076. Local $TPARTS, $IPARTS = 1
  4077. If IsArray($IAPARTS) <> 0 Then
  4078. $IAPARTS[UBound($IAPARTS) - 1] = -1
  4079. $IPARTS = UBound($IAPARTS)
  4080. $TPARTS = DllStructCreate("int[" & $IPARTS & "]")
  4081. For $X = 0 To $IPARTS - 2
  4082. DllStructSetData($TPARTS, 1, $IAPARTS[$X], $X + 1)
  4083. Next
  4084. DllStructSetData($TPARTS, 1, -1, $IPARTS)
  4085. ElseIf IsArray($IAPARTWIDTH) <> 0 Then
  4086. $IPARTS = UBound($IAPARTWIDTH)
  4087. $TPARTS = DllStructCreate("int[" & $IPARTS & "]")
  4088. For $X = 0 To $IPARTS - 2
  4089. DllStructSetData($TPARTS, 1, $IAPARTWIDTH[$X], $X + 1)
  4090. Next
  4091. DllStructSetData($TPARTS, 1, -1, $IPARTS)
  4092. ElseIf $IAPARTS > 1 Then
  4093. $IPARTS = $IAPARTS
  4094. $TPARTS = DllStructCreate("int[" & $IPARTS & "]")
  4095. For $X = 1 To $IPARTS - 1
  4096. DllStructSetData($TPARTS, 1, $IAPARTWIDTH * $X, $X)
  4097. Next
  4098. DllStructSetData($TPARTS, 1, -1, $IPARTS)
  4099. Else
  4100. $TPARTS = DllStructCreate("int")
  4101. DllStructSetData($TPARTS, $IPARTS, -1)
  4102. EndIf
  4103. Local $PPARTS = DllStructGetPtr($TPARTS)
  4104. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  4105. _SENDMESSAGE($HWND, $SB_SETPARTS, $IPARTS, $PPARTS, 0, "wparam", "ptr")
  4106. Else
  4107. Local $ISIZE = DllStructGetSize($TPARTS)
  4108. Local $TMEMMAP
  4109. Local $PMEMORY = _MEMINIT($HWND, $ISIZE, $TMEMMAP)
  4110. _MEMWRITE($TMEMMAP, $PPARTS)
  4111. _SENDMESSAGE($HWND, $SB_SETPARTS, $IPARTS, $PMEMORY, 0, "wparam", "ptr")
  4112. _MEMFREE($TMEMMAP)
  4113. EndIf
  4114. _GUICTRLSTATUSBAR_RESIZE($HWND)
  4115. Return True
  4116. EndFunc
  4117. Func _GUICTRLSTATUSBAR_SETSIMPLE($HWND, $FSIMPLE = True)
  4118. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4119. _SENDMESSAGE($HWND, $SB_SIMPLE, $FSIMPLE)
  4120. EndFunc
  4121. Func _GUICTRLSTATUSBAR_SETTEXT($HWND, $STEXT = "", $IPART = 0, $IUFLAG = 0)
  4122. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4123. Local $FUNICODE = _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  4124. Local $IBUFFER = StringLen($STEXT) + 1
  4125. Local $TTEXT
  4126. If $FUNICODE Then
  4127. $TTEXT = DllStructCreate("wchar Text[" & $IBUFFER & "]")
  4128. $IBUFFER *= 2
  4129. Else
  4130. $TTEXT = DllStructCreate("char Text[" & $IBUFFER & "]")
  4131. EndIf
  4132. Local $PBUFFER = DllStructGetPtr($TTEXT)
  4133. DllStructSetData($TTEXT, "Text", $STEXT)
  4134. If _GUICTRLSTATUSBAR_ISSIMPLE($HWND) Then $IPART = $SB_SIMPLEID
  4135. Local $IRET
  4136. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  4137. $IRET = _SENDMESSAGE($HWND, $SB_SETTEXTW, BitOR($IPART, $IUFLAG), $PBUFFER, 0, "wparam", "ptr")
  4138. Else
  4139. Local $TMEMMAP
  4140. Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP)
  4141. _MEMWRITE($TMEMMAP, $PBUFFER)
  4142. If $FUNICODE Then
  4143. $IRET = _SENDMESSAGE($HWND, $SB_SETTEXTW, BitOR($IPART, $IUFLAG), $PMEMORY, 0, "wparam", "ptr")
  4144. Else
  4145. $IRET = _SENDMESSAGE($HWND, $SB_SETTEXT, BitOR($IPART, $IUFLAG), $PMEMORY, 0, "wparam", "ptr")
  4146. EndIf
  4147. _MEMFREE($TMEMMAP)
  4148. EndIf
  4149. Return $IRET <> 0
  4150. EndFunc
  4151. Func _GUICTRLSTATUSBAR_SETTIPTEXT($HWND, $IPART, $STEXT)
  4152. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4153. Local $FUNICODE = _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  4154. Local $IBUFFER = StringLen($STEXT) + 1
  4155. Local $TTEXT
  4156. If $FUNICODE Then
  4157. $TTEXT = DllStructCreate("wchar TipText[" & $IBUFFER & "]")
  4158. $IBUFFER *= 2
  4159. Else
  4160. $TTEXT = DllStructCreate("char TipText[" & $IBUFFER & "]")
  4161. EndIf
  4162. Local $PBUFFER = DllStructGetPtr($TTEXT)
  4163. DllStructSetData($TTEXT, "TipText", $STEXT)
  4164. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  4165. _SENDMESSAGE($HWND, $SB_SETTIPTEXTW, $IPART, $PBUFFER, 0, "wparam", "ptr")
  4166. Else
  4167. Local $TMEMMAP
  4168. Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP)
  4169. _MEMWRITE($TMEMMAP, $PBUFFER, $PMEMORY, $IBUFFER)
  4170. If $FUNICODE Then
  4171. _SENDMESSAGE($HWND, $SB_SETTIPTEXTW, $IPART, $PMEMORY, 0, "wparam", "ptr")
  4172. Else
  4173. _SENDMESSAGE($HWND, $SB_SETTIPTEXTA, $IPART, $PMEMORY, 0, "wparam", "ptr")
  4174. EndIf
  4175. _MEMFREE($TMEMMAP)
  4176. EndIf
  4177. EndFunc
  4178. Func _GUICTRLSTATUSBAR_SETUNICODEFORMAT($HWND, $FUNICODE = True)
  4179. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4180. Return _SENDMESSAGE($HWND, $SB_SETUNICODEFORMAT, $FUNICODE)
  4181. EndFunc
  4182. Func _GUICTRLSTATUSBAR_SHOWHIDE($HWND, $ISTATE)
  4183. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  4184. If $ISTATE <> @SW_HIDE And $ISTATE <> @SW_SHOW Then Return SetError(1, 1, False)
  4185. Return _WINAPI_SHOWWINDOW($HWND, $ISTATE)
  4186. EndFunc
  4187. Global $_GHEDITLASTWND
  4188. Global $DEBUG_ED = False
  4189. Global Const $__EDITCONSTANT_CLASSNAME = "Edit"
  4190. Global Const $__EDITCONSTANT_GUI_CHECKED = 1
  4191. Global Const $__EDITCONSTANT_GUI_HIDE = 32
  4192. Global Const $__EDITCONSTANT_GUI_EVENT_CLOSE = -3
  4193. Global Const $__EDITCONSTANT_GUI_ENABLE = 64
  4194. Global Const $__EDITCONSTANT_GUI_DISABLE = 128
  4195. Global Const $__EDITCONSTANT_SS_CENTER = 1
  4196. Global Const $__EDITCONSTANT_WM_SETREDRAW = 11
  4197. Global Const $__EDITCONSTANT_WS_CAPTION = 12582912
  4198. Global Const $__EDITCONSTANT_WS_POPUP = -2147483648
  4199. Global Const $__EDITCONSTANT_WS_TABSTOP = 65536
  4200. Global Const $__EDITCONSTANT_WS_SYSMENU = 524288
  4201. Global Const $__EDITCONSTANT_WS_MINIMIZEBOX = 131072
  4202. Global Const $__EDITCONSTANT_DEFAULT_GUI_FONT = 17
  4203. Global Const $__EDITCONSTANT_WM_SETFONT = 48
  4204. Global Const $__EDITCONSTANT_WM_GETTEXTLENGTH = 14
  4205. Global Const $__EDITCONSTANT_WM_GETTEXT = 13
  4206. Global Const $__EDITCONSTANT_WM_SETTEXT = 12
  4207. Global Const $__EDITCONSTANT_SB_LINEUP = 0
  4208. Global Const $__EDITCONSTANT_SB_LINEDOWN = 1
  4209. Global Const $__EDITCONSTANT_SB_PAGEDOWN = 3
  4210. Global Const $__EDITCONSTANT_SB_PAGEUP = 2
  4211. Global Const $__EDITCONSTANT_SB_SCROLLCARET = 4
  4212. Global Const $TAGEDITBALLOONTIP = "dword Size;ptr Title;ptr Text;int Icon"
  4213. Func _GUICTRLEDIT_APPENDTEXT($HWND, $STEXT)
  4214. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4215. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4216. Local $ILENGTH = _GUICTRLEDIT_GETTEXTLEN($HWND)
  4217. _GUICTRLEDIT_SETSEL($HWND, $ILENGTH, $ILENGTH)
  4218. _SENDMESSAGE($HWND, $EM_REPLACESEL, True, $STEXT, 0, "wparam", "wstr")
  4219. EndFunc
  4220. Func _GUICTRLEDIT_BEGINUPDATE($HWND)
  4221. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4222. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4223. Return _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_SETREDRAW) = 0
  4224. EndFunc
  4225. Func _GUICTRLEDIT_CANUNDO($HWND)
  4226. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4227. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4228. Return _SENDMESSAGE($HWND, $EM_CANUNDO) <> 0
  4229. EndFunc
  4230. Func _GUICTRLEDIT_CHARFROMPOS($HWND, $IX, $IY)
  4231. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4232. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4233. Local $ARETURN[2]
  4234. Local $IRET = _SENDMESSAGE($HWND, $EM_CHARFROMPOS, 0, _WINAPI_MAKELONG($IX, $IY))
  4235. $ARETURN[0] = _WINAPI_LOWORD($IRET)
  4236. $ARETURN[1] = _WINAPI_HIWORD($IRET)
  4237. Return $ARETURN
  4238. EndFunc
  4239. Func _GUICTRLEDIT_CREATE($HWND, $STEXT, $IX, $IY, $IWIDTH = 150, $IHEIGHT = 150, $ISTYLE = 3150020, $IEXSTYLE = 512)
  4240. If Not IsHWnd($HWND) Then Return SetError(1, 0, 0)
  4241. If Not IsString($STEXT) Then Return SetError(2, 0, 0)
  4242. If $IWIDTH = -1 Then $IWIDTH = 150
  4243. If $IHEIGHT = -1 Then $IHEIGHT = 150
  4244. If $ISTYLE = -1 Then $ISTYLE = 3150020
  4245. If $IEXSTYLE = -1 Then $IEXSTYLE = 512
  4246. If BitAND($ISTYLE, $ES_READONLY) = $ES_READONLY Then
  4247. $ISTYLE = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE, $ISTYLE)
  4248. Else
  4249. $ISTYLE = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE, $__EDITCONSTANT_WS_TABSTOP, $ISTYLE)
  4250. EndIf
  4251. Local $NCTRLID = __UDF_GETNEXTGLOBALID($HWND)
  4252. If @error Then Return SetError(@error, @extended, 0)
  4253. Local $HEDIT = _WINAPI_CREATEWINDOWEX($IEXSTYLE, $__EDITCONSTANT_CLASSNAME, "", $ISTYLE, $IX, $IY, $IWIDTH, $IHEIGHT, $HWND, $NCTRLID)
  4254. _SENDMESSAGE($HEDIT, $__EDITCONSTANT_WM_SETFONT, _WINAPI_GETSTOCKOBJECT($__EDITCONSTANT_DEFAULT_GUI_FONT), True)
  4255. _GUICTRLEDIT_SETTEXT($HEDIT, $STEXT)
  4256. _GUICTRLEDIT_SETLIMITTEXT($HEDIT, 0)
  4257. Return $HEDIT
  4258. EndFunc
  4259. Func _GUICTRLEDIT_DESTROY(ByRef $HWND)
  4260. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4261. If Not _WINAPI_ISCLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME) Then Return SetError(2, 2, False)
  4262. Local $DESTROYED = 0
  4263. If IsHWnd($HWND) Then
  4264. If _WINAPI_INPROCESS($HWND, $_GHEDITLASTWND) Then
  4265. Local $NCTRLID = _WINAPI_GETDLGCTRLID($HWND)
  4266. Local $HPARENT = _WINAPI_GETPARENT($HWND)
  4267. $DESTROYED = _WINAPI_DESTROYWINDOW($HWND)
  4268. Local $IRET = __UDF_FREEGLOBALID($HPARENT, $NCTRLID)
  4269. If Not $IRET Then
  4270. EndIf
  4271. Else
  4272. Return SetError(1, 1, False)
  4273. EndIf
  4274. Else
  4275. $DESTROYED = GUICtrlDelete($HWND)
  4276. EndIf
  4277. If $DESTROYED Then $HWND = 0
  4278. Return $DESTROYED <> 0
  4279. EndFunc
  4280. Func _GUICTRLEDIT_EMPTYUNDOBUFFER($HWND)
  4281. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4282. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4283. _SENDMESSAGE($HWND, $EM_EMPTYUNDOBUFFER)
  4284. EndFunc
  4285. Func _GUICTRLEDIT_ENDUPDATE($HWND)
  4286. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4287. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4288. Return _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_SETREDRAW, 1) = 0
  4289. EndFunc
  4290. Func _GUICTRLEDIT_FMTLINES($HWND, $FSOFTBREAK = False)
  4291. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4292. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4293. Return _SENDMESSAGE($HWND, $EM_FMTLINES, $FSOFTBREAK)
  4294. EndFunc
  4295. Func _GUICTRLEDIT_FIND($HWND, $FREPLACE = False)
  4296. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4297. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4298. Local $IPOS = 0, $ICASE, $IOCCURANCE = 0, $IREPLACEMENTS = 0
  4299. Local $APARTSRIGHTEDGE[3] = [125, 225, -1]
  4300. Local $OLDMODE = Opt("GUIOnEventMode", 0)
  4301. Local $ASEL = _GUICTRLEDIT_GETSEL($HWND)
  4302. Local $STEXT = _GUICTRLEDIT_GETTEXT($HWND)
  4303. Local $GUISEARCH = GUICreate("Find", 349, 177, -1, -1, BitOR($__UDFGUICONSTANT_WS_CHILD, $__EDITCONSTANT_WS_MINIMIZEBOX, $__EDITCONSTANT_WS_CAPTION, $__EDITCONSTANT_WS_POPUP, $__EDITCONSTANT_WS_SYSMENU))
  4304. Local $STATUSBAR1 = _GUICTRLSTATUSBAR_CREATE($GUISEARCH, $APARTSRIGHTEDGE)
  4305. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: ")
  4306. GUISetIcon(@SystemDir & "\shell32.dll", 22, $GUISEARCH)
  4307. GUICtrlCreateLabel("Find what:", 9, 10, 53, 16, $__EDITCONSTANT_SS_CENTER)
  4308. Local $INPUTSEARCH = GUICtrlCreateInput("", 80, 8, 257, 21)
  4309. Local $LBLREPLACE = GUICtrlCreateLabel("Replace with:", 9, 42, 69, 17, $__EDITCONSTANT_SS_CENTER)
  4310. Local $INPUTREPLACE = GUICtrlCreateInput("", 80, 40, 257, 21)
  4311. Local $CHKWHOLEONLY = GUICtrlCreateCheckbox("Match whole word only", 9, 72, 145, 17)
  4312. Local $CHKMATCHCASE = GUICtrlCreateCheckbox("Match case", 9, 96, 145, 17)
  4313. Local $BTNFINDNEXT = GUICtrlCreateButton("Find Next", 168, 72, 161, 21, 0)
  4314. Local $BTNREPLACE = GUICtrlCreateButton("Replace", 168, 96, 161, 21, 0)
  4315. Local $BTNCLOSE = GUICtrlCreateButton("Close", 104, 130, 161, 21, 0)
  4316. IF (IsArray($ASEL) And $ASEL <> $EC_ERR) Then
  4317. GUICtrlSetData($INPUTSEARCH, StringMid($STEXT, $ASEL[0] + 1, $ASEL[1] - $ASEL[0]))
  4318. If $ASEL[0] <> $ASEL[1] Then
  4319. $IPOS = $ASEL[0]
  4320. If BitAND(GUICtrlRead($CHKMATCHCASE), $__EDITCONSTANT_GUI_CHECKED) = $__EDITCONSTANT_GUI_CHECKED Then $ICASE = 1
  4321. $IOCCURANCE = 1
  4322. Local $ITPOSE
  4323. While 1
  4324. $ITPOSE = StringInStr($STEXT, GUICtrlRead($INPUTSEARCH), $ICASE, $IOCCURANCE)
  4325. If Not $ITPOSE Then
  4326. $IOCCURANCE = 0
  4327. ExitLoop
  4328. ElseIf $ITPOSE = $IPOS + 1 Then
  4329. ExitLoop
  4330. EndIf
  4331. $IOCCURANCE += 1
  4332. WEnd
  4333. EndIf
  4334. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: " & GUICtrlRead($INPUTSEARCH))
  4335. EndIf
  4336. If $FREPLACE = False Then
  4337. GUICtrlSetState($LBLREPLACE, $__EDITCONSTANT_GUI_HIDE)
  4338. GUICtrlSetState($INPUTREPLACE, $__EDITCONSTANT_GUI_HIDE)
  4339. GUICtrlSetState($BTNREPLACE, $__EDITCONSTANT_GUI_HIDE)
  4340. Else
  4341. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Replacements: " & $IREPLACEMENTS, 1)
  4342. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "With: ", 2)
  4343. EndIf
  4344. GUISetState(@SW_SHOW)
  4345. Local $MSGFIND
  4346. While 1
  4347. $MSGFIND = GUIGetMsg()
  4348. Select
  4349. Case $MSGFIND = $__EDITCONSTANT_GUI_EVENT_CLOSE Or $MSGFIND = $BTNCLOSE
  4350. ExitLoop
  4351. Case $MSGFIND = $BTNFINDNEXT
  4352. GUICtrlSetState($BTNFINDNEXT, $__EDITCONSTANT_GUI_DISABLE)
  4353. GUICtrlSetCursor($BTNFINDNEXT, 15)
  4354. Sleep(100)
  4355. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: " & GUICtrlRead($INPUTSEARCH))
  4356. If $FREPLACE = True Then
  4357. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: " & GUICtrlRead($INPUTSEARCH))
  4358. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "With: " & GUICtrlRead($INPUTREPLACE), 2)
  4359. EndIf
  4360. __GUICTRLEDIT_FINDTEXT($HWND, $INPUTSEARCH, $CHKMATCHCASE, $CHKWHOLEONLY, $IPOS, $IOCCURANCE, $IREPLACEMENTS)
  4361. Sleep(100)
  4362. GUICtrlSetState($BTNFINDNEXT, $__EDITCONSTANT_GUI_ENABLE)
  4363. GUICtrlSetCursor($BTNFINDNEXT, 2)
  4364. Case $MSGFIND = $BTNREPLACE
  4365. GUICtrlSetState($BTNREPLACE, $__EDITCONSTANT_GUI_DISABLE)
  4366. GUICtrlSetCursor($BTNREPLACE, 15)
  4367. Sleep(100)
  4368. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: " & GUICtrlRead($INPUTSEARCH))
  4369. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "With: " & GUICtrlRead($INPUTREPLACE), 2)
  4370. If $IPOS Then
  4371. _GUICTRLEDIT_REPLACESEL($HWND, GUICtrlRead($INPUTREPLACE))
  4372. $IREPLACEMENTS += 1
  4373. $IOCCURANCE -= 1
  4374. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Replacements: " & $IREPLACEMENTS, 1)
  4375. EndIf
  4376. __GUICTRLEDIT_FINDTEXT($HWND, $INPUTSEARCH, $CHKMATCHCASE, $CHKWHOLEONLY, $IPOS, $IOCCURANCE, $IREPLACEMENTS)
  4377. Sleep(100)
  4378. GUICtrlSetState($BTNREPLACE, $__EDITCONSTANT_GUI_ENABLE)
  4379. GUICtrlSetCursor($BTNREPLACE, 2)
  4380. EndSelect
  4381. WEnd
  4382. GUIDelete($GUISEARCH)
  4383. Opt("GUIOnEventMode", $OLDMODE)
  4384. EndFunc
  4385. Func __GUICTRLEDIT_FINDTEXT($HWND, $INPUTSEARCH, $CHKMATCHCASE, $CHKWHOLEONLY, ByRef $IPOS, ByRef $IOCCURANCE, ByRef $IREPLACEMENTS)
  4386. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4387. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4388. Local $ICASE = 0, $IWHOLE = 0
  4389. Local $FEXACT = False
  4390. Local $SFIND = GUICtrlRead($INPUTSEARCH)
  4391. Local $STEXT = _GUICTRLEDIT_GETTEXT($HWND)
  4392. If BitAND(GUICtrlRead($CHKMATCHCASE), $__EDITCONSTANT_GUI_CHECKED) = $__EDITCONSTANT_GUI_CHECKED Then $ICASE = 1
  4393. If BitAND(GUICtrlRead($CHKWHOLEONLY), $__EDITCONSTANT_GUI_CHECKED) = $__EDITCONSTANT_GUI_CHECKED Then $IWHOLE = 1
  4394. If $SFIND <> "" Then
  4395. $IOCCURANCE += 1
  4396. $IPOS = StringInStr($STEXT, $SFIND, $ICASE, $IOCCURANCE)
  4397. If $IWHOLE And $IPOS Then
  4398. Local $C_COMPARE2 = StringMid($STEXT, $IPOS + StringLen($SFIND), 1)
  4399. If $IPOS = 1 Then
  4400. IF ($IPOS + StringLen($SFIND)) - 1 = StringLen($STEXT) OR ($C_COMPARE2 = " " Or $C_COMPARE2 = @LF Or $C_COMPARE2 = @CR Or $C_COMPARE2 = @CRLF Or $C_COMPARE2 = @TAB) Then $FEXACT = True
  4401. Else
  4402. Local $C_COMPARE1 = StringMid($STEXT, $IPOS - 1, 1)
  4403. IF ($IPOS + StringLen($SFIND)) - 1 = StringLen($STEXT) Then
  4404. IF ($C_COMPARE1 = " " Or $C_COMPARE1 = @LF Or $C_COMPARE1 = @CR Or $C_COMPARE1 = @CRLF Or $C_COMPARE1 = @TAB) Then $FEXACT = True
  4405. Else
  4406. IF ($C_COMPARE1 = " " Or $C_COMPARE1 = @LF Or $C_COMPARE1 = @CR Or $C_COMPARE1 = @CRLF Or $C_COMPARE1 = @TAB) AND ($C_COMPARE2 = " " Or $C_COMPARE2 = @LF Or $C_COMPARE2 = @CR Or $C_COMPARE2 = @CRLF Or $C_COMPARE2 = @TAB) Then $FEXACT = True
  4407. EndIf
  4408. EndIf
  4409. If $FEXACT = False Then
  4410. __GUICTRLEDIT_FINDTEXT($HWND, $INPUTSEARCH, $CHKMATCHCASE, $CHKWHOLEONLY, $IPOS, $IOCCURANCE, $IREPLACEMENTS)
  4411. Else
  4412. _GUICTRLEDIT_SETSEL($HWND, $IPOS - 1, ($IPOS + StringLen($SFIND)) - 1)
  4413. _GUICTRLEDIT_SCROLL($HWND, $__EDITCONSTANT_SB_SCROLLCARET)
  4414. EndIf
  4415. ElseIf $IWHOLE And Not $IPOS Then
  4416. $IOCCURANCE = 0
  4417. MsgBox(48, "Find", "Reached End of document, Can not find the string '" & $SFIND & "'")
  4418. ElseIf Not $IWHOLE Then
  4419. If Not $IPOS Then
  4420. $IOCCURANCE = 1
  4421. _GUICTRLEDIT_SETSEL($HWND, -1, 0)
  4422. _GUICTRLEDIT_SCROLL($HWND, $__EDITCONSTANT_SB_SCROLLCARET)
  4423. $IPOS = StringInStr($STEXT, $SFIND, $ICASE, $IOCCURANCE)
  4424. If Not $IPOS Then
  4425. $IOCCURANCE = 0
  4426. MsgBox(48, "Find", "Reached End of document, Can not find the string '" & $SFIND & "'")
  4427. Else
  4428. _GUICTRLEDIT_SETSEL($HWND, $IPOS - 1, ($IPOS + StringLen($SFIND)) - 1)
  4429. _GUICTRLEDIT_SCROLL($HWND, $__EDITCONSTANT_SB_SCROLLCARET)
  4430. EndIf
  4431. Else
  4432. _GUICTRLEDIT_SETSEL($HWND, $IPOS - 1, ($IPOS + StringLen($SFIND)) - 1)
  4433. _GUICTRLEDIT_SCROLL($HWND, $__EDITCONSTANT_SB_SCROLLCARET)
  4434. EndIf
  4435. EndIf
  4436. EndIf
  4437. EndFunc
  4438. Func _GUICTRLEDIT_GETFIRSTVISIBLELINE($HWND)
  4439. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4440. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4441. Return _SENDMESSAGE($HWND, $EM_GETFIRSTVISIBLELINE)
  4442. EndFunc
  4443. Func _GUICTRLEDIT_GETHANDLE($HWND)
  4444. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4445. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4446. Return _SENDMESSAGE($HWND, $EM_GETHANDLE)
  4447. EndFunc
  4448. Func _GUICTRLEDIT_GETIMESTATUS($HWND)
  4449. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4450. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4451. Return _SENDMESSAGE($HWND, $EM_GETIMESTATUS, $EMSIS_COMPOSITIONSTRING)
  4452. EndFunc
  4453. Func _GUICTRLEDIT_GETLIMITTEXT($HWND)
  4454. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4455. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4456. Return _SENDMESSAGE($HWND, $EM_GETLIMITTEXT)
  4457. EndFunc
  4458. Func _GUICTRLEDIT_GETLINE($HWND, $ILINE)
  4459. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4460. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4461. Local $ILENGTH = _GUICTRLEDIT_LINELENGTH($HWND, $ILINE)
  4462. If $ILENGTH = 0 Then Return ""
  4463. Local $TBUFFER = DllStructCreate("short Len;wchar Text[" & $ILENGTH & "]")
  4464. Local $PBUFFER = DllStructGetPtr($TBUFFER)
  4465. DllStructSetData($TBUFFER, "Len", $ILENGTH + 1)
  4466. Local $IRET = _SENDMESSAGE($HWND, $EM_GETLINE, $ILINE, $PBUFFER, 0, "wparam", "ptr")
  4467. If $IRET = 0 Then Return SetError($EC_ERR, $EC_ERR, "")
  4468. Local $TTEXT = DllStructCreate("wchar Text[" & $ILENGTH & "]", $PBUFFER)
  4469. Return DllStructGetData($TTEXT, "Text")
  4470. EndFunc
  4471. Func _GUICTRLEDIT_GETLINECOUNT($HWND)
  4472. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4473. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4474. Return _SENDMESSAGE($HWND, $EM_GETLINECOUNT)
  4475. EndFunc
  4476. Func _GUICTRLEDIT_GETMARGINS($HWND)
  4477. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4478. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4479. Local $AMARGINS[2]
  4480. Local $IMARGINS = _SENDMESSAGE($HWND, $EM_GETMARGINS)
  4481. $AMARGINS[0] = _WINAPI_LOWORD($IMARGINS)
  4482. $AMARGINS[1] = _WINAPI_HIWORD($IMARGINS)
  4483. Return $AMARGINS
  4484. EndFunc
  4485. Func _GUICTRLEDIT_GETMODIFY($HWND)
  4486. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4487. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4488. Return _SENDMESSAGE($HWND, $EM_GETMODIFY) <> 0
  4489. EndFunc
  4490. Func _GUICTRLEDIT_GETPASSWORDCHAR($HWND)
  4491. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4492. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4493. Return _SENDMESSAGE($HWND, $EM_GETPASSWORDCHAR)
  4494. EndFunc
  4495. Func _GUICTRLEDIT_GETRECT($HWND)
  4496. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4497. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4498. Local $ARECT[4]
  4499. Local $TRECT = _GUICTRLEDIT_GETRECTEX($HWND)
  4500. $ARECT[0] = DllStructGetData($TRECT, "Left")
  4501. $ARECT[1] = DllStructGetData($TRECT, "Top")
  4502. $ARECT[2] = DllStructGetData($TRECT, "Right")
  4503. $ARECT[3] = DllStructGetData($TRECT, "Bottom")
  4504. Return $ARECT
  4505. EndFunc
  4506. Func _GUICTRLEDIT_GETRECTEX($HWND)
  4507. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4508. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4509. Local $TRECT = DllStructCreate($TAGRECT)
  4510. _SENDMESSAGE($HWND, $EM_GETRECT, 0, DllStructGetPtr($TRECT), 0, "wparam", "ptr")
  4511. Return $TRECT
  4512. EndFunc
  4513. Func _GUICTRLEDIT_GETSEL($HWND)
  4514. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4515. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4516. Local $ASEL[2]
  4517. Local $WPARAM = DllStructCreate("uint Start")
  4518. Local $LPARAM = DllStructCreate("uint End")
  4519. _SENDMESSAGE($HWND, $EM_GETSEL, DllStructGetPtr($WPARAM), DllStructGetPtr($LPARAM), 0, "ptr", "ptr")
  4520. $ASEL[0] = DllStructGetData($WPARAM, "Start")
  4521. $ASEL[1] = DllStructGetData($LPARAM, "End")
  4522. Return $ASEL
  4523. EndFunc
  4524. Func _GUICTRLEDIT_GETTEXT($HWND)
  4525. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4526. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4527. Local $ITEXTLEN = _GUICTRLEDIT_GETTEXTLEN($HWND) + 1
  4528. Local $TTEXT = DllStructCreate("wchar Text[" & $ITEXTLEN & "]")
  4529. _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_GETTEXT, $ITEXTLEN, DllStructGetPtr($TTEXT), 0, "wparam", "ptr")
  4530. Return DllStructGetData($TTEXT, "Text")
  4531. EndFunc
  4532. Func _GUICTRLEDIT_GETTEXTLEN($HWND)
  4533. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4534. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4535. Return _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_GETTEXTLENGTH)
  4536. EndFunc
  4537. Func _GUICTRLEDIT_GETTHUMB($HWND)
  4538. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4539. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4540. Return _SENDMESSAGE($HWND, $EM_GETTHUMB)
  4541. EndFunc
  4542. Func _GUICTRLEDIT_GETWORDBREAKPROC($HWND)
  4543. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4544. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4545. Return _SENDMESSAGE($HWND, $EM_GETWORDBREAKPROC)
  4546. EndFunc
  4547. Func _GUICTRLEDIT_HIDEBALLOONTIP($HWND)
  4548. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4549. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4550. Return _SENDMESSAGE($HWND, $EM_HIDEBALLOONTIP)
  4551. EndFunc
  4552. Func _GUICTRLEDIT_INSERTTEXT($HWND, $STEXT, $IINDEX = -1)
  4553. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4554. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4555. If $IINDEX = -1 Then
  4556. _GUICTRLEDIT_APPENDTEXT($HWND, $STEXT)
  4557. Else
  4558. _GUICTRLEDIT_SETSEL($HWND, $IINDEX, $IINDEX)
  4559. _SENDMESSAGE($HWND, $EM_REPLACESEL, True, $STEXT, 0, "wparam", "wstr")
  4560. EndIf
  4561. EndFunc
  4562. Func _GUICTRLEDIT_LINEFROMCHAR($HWND, $IINDEX = -1)
  4563. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4564. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4565. Return _SENDMESSAGE($HWND, $EM_LINEFROMCHAR, $IINDEX)
  4566. EndFunc
  4567. Func _GUICTRLEDIT_LINEINDEX($HWND, $IINDEX = -1)
  4568. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4569. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4570. Return _SENDMESSAGE($HWND, $EM_LINEINDEX, $IINDEX)
  4571. EndFunc
  4572. Func _GUICTRLEDIT_LINELENGTH($HWND, $IINDEX = -1)
  4573. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4574. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4575. Local $CHARINDEX = _GUICTRLEDIT_LINEINDEX($HWND, $IINDEX)
  4576. Return _SENDMESSAGE($HWND, $EM_LINELENGTH, $CHARINDEX)
  4577. EndFunc
  4578. Func _GUICTRLEDIT_LINESCROLL($HWND, $IHORIZ, $IVERT)
  4579. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4580. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4581. Return _SENDMESSAGE($HWND, $EM_LINESCROLL, $IHORIZ, $IVERT) <> 0
  4582. EndFunc
  4583. Func _GUICTRLEDIT_POSFROMCHAR($HWND, $IINDEX)
  4584. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4585. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4586. Local $ACOORD[2]
  4587. Local $IRET = _SENDMESSAGE($HWND, $EM_POSFROMCHAR, $IINDEX)
  4588. $ACOORD[0] = _WINAPI_LOWORD($IRET)
  4589. $ACOORD[1] = _WINAPI_HIWORD($IRET)
  4590. Return $ACOORD
  4591. EndFunc
  4592. Func _GUICTRLEDIT_REPLACESEL($HWND, $STEXT, $FUNDO = True)
  4593. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4594. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4595. _SENDMESSAGE($HWND, $EM_REPLACESEL, $FUNDO, $STEXT, 0, "wparam", "wstr")
  4596. EndFunc
  4597. Func _GUICTRLEDIT_SCROLL($HWND, $IDIRECTION)
  4598. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4599. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4600. If BitAND($IDIRECTION, $__EDITCONSTANT_SB_LINEDOWN) <> $__EDITCONSTANT_SB_LINEDOWN And BitAND($IDIRECTION, $__EDITCONSTANT_SB_LINEUP) <> $__EDITCONSTANT_SB_LINEUP And BitAND($IDIRECTION, $__EDITCONSTANT_SB_PAGEDOWN) <> $__EDITCONSTANT_SB_PAGEDOWN And BitAND($IDIRECTION, $__EDITCONSTANT_SB_PAGEUP) <> $__EDITCONSTANT_SB_PAGEUP And BitAND($IDIRECTION, $__EDITCONSTANT_SB_SCROLLCARET) <> $__EDITCONSTANT_SB_SCROLLCARET Then Return 0
  4601. If $IDIRECTION == $__EDITCONSTANT_SB_SCROLLCARET Then
  4602. Return _SENDMESSAGE($HWND, $EM_SCROLLCARET)
  4603. Else
  4604. Return _SENDMESSAGE($HWND, $EM_SCROLL, $IDIRECTION)
  4605. EndIf
  4606. EndFunc
  4607. Func _GUICTRLEDIT_SETHANDLE($HWND, $HMEMORY)
  4608. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4609. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4610. Return _SENDMESSAGE($HWND, $EM_SETHANDLE, $HMEMORY, 0, 0, "hwnd")
  4611. EndFunc
  4612. Func _GUICTRLEDIT_SETIMESTATUS($HWND, $ICOMPOSITION)
  4613. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4614. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4615. Return _SENDMESSAGE($HWND, $EM_SETIMESTATUS, $EMSIS_COMPOSITIONSTRING, $ICOMPOSITION)
  4616. EndFunc
  4617. Func _GUICTRLEDIT_SETLIMITTEXT($HWND, $ILIMIT)
  4618. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4619. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4620. _SENDMESSAGE($HWND, $EM_SETLIMITTEXT, $ILIMIT)
  4621. EndFunc
  4622. Func _GUICTRLEDIT_SETMARGINS($HWND, $IMARGIN = 1, $ILEFT = 65535, $IRIGHT = 65535)
  4623. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4624. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4625. _SENDMESSAGE($HWND, $EM_SETMARGINS, $IMARGIN, _WINAPI_MAKELONG($ILEFT, $IRIGHT))
  4626. EndFunc
  4627. Func _GUICTRLEDIT_SETMODIFY($HWND, $FMODIFIED)
  4628. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4629. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4630. _SENDMESSAGE($HWND, $EM_SETMODIFY, $FMODIFIED)
  4631. EndFunc
  4632. Func _GUICTRLEDIT_SETPASSWORDCHAR($HWND, $CDISPLAYCHAR = "0")
  4633. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4634. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4635. $CDISPLAYCHAR = StringLeft($CDISPLAYCHAR, 1)
  4636. If Asc($CDISPLAYCHAR) = 48 Then
  4637. _SENDMESSAGE($HWND, $EM_SETPASSWORDCHAR)
  4638. Else
  4639. _SENDMESSAGE($HWND, $EM_SETPASSWORDCHAR, Asc($CDISPLAYCHAR))
  4640. EndIf
  4641. EndFunc
  4642. Func _GUICTRLEDIT_SETREADONLY($HWND, $FREADONLY)
  4643. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4644. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4645. Return _SENDMESSAGE($HWND, $EM_SETREADONLY, $FREADONLY) <> 0
  4646. EndFunc
  4647. Func _GUICTRLEDIT_SETRECT($HWND, $ARECT)
  4648. Local $TRECT = DllStructCreate($TAGRECT)
  4649. DllStructSetData($TRECT, "Left", $ARECT[0])
  4650. DllStructSetData($TRECT, "Top", $ARECT[1])
  4651. DllStructSetData($TRECT, "Right", $ARECT[2])
  4652. DllStructSetData($TRECT, "Bottom", $ARECT[3])
  4653. _GUICTRLEDIT_SETRECTEX($HWND, $TRECT)
  4654. EndFunc
  4655. Func _GUICTRLEDIT_SETRECTEX($HWND, $TRECT)
  4656. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4657. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4658. _SENDMESSAGE($HWND, $EM_SETRECT, 0, DllStructGetPtr($TRECT), 0, "wparam", "ptr")
  4659. EndFunc
  4660. Func _GUICTRLEDIT_SETRECTNP($HWND, $ARECT)
  4661. Local $TRECT = DllStructCreate($TAGRECT)
  4662. DllStructSetData($TRECT, "Left", $ARECT[0])
  4663. DllStructSetData($TRECT, "Top", $ARECT[1])
  4664. DllStructSetData($TRECT, "Right", $ARECT[2])
  4665. DllStructSetData($TRECT, "Bottom", $ARECT[3])
  4666. _GUICTRLEDIT_SETRECTNPEX($HWND, $TRECT)
  4667. EndFunc
  4668. Func _GUICTRLEDIT_SETRECTNPEX($HWND, $TRECT)
  4669. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4670. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4671. _SENDMESSAGE($HWND, $EM_SETRECTNP, 0, DllStructGetPtr($TRECT), 0, "wparam", "ptr")
  4672. EndFunc
  4673. Func _GUICTRLEDIT_SETSEL($HWND, $ISTART, $IEND)
  4674. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4675. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4676. _SENDMESSAGE($HWND, $EM_SETSEL, $ISTART, $IEND)
  4677. EndFunc
  4678. Func _GUICTRLEDIT_SETTABSTOPS($HWND, $ATABSTOPS)
  4679. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4680. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4681. If Not IsArray($ATABSTOPS) Then Return SetError(-1, -1, False)
  4682. Local $STABSTOPS = ""
  4683. Local $INUMTABSTOPS = UBound($ATABSTOPS)
  4684. For $X = 0 To $INUMTABSTOPS - 1
  4685. $STABSTOPS &= "int;"
  4686. Next
  4687. $STABSTOPS = StringTrimRight($STABSTOPS, 1)
  4688. Local $TTABSTOPS = DllStructCreate($STABSTOPS)
  4689. For $X = 0 To $INUMTABSTOPS - 1
  4690. DllStructSetData($TTABSTOPS, $X + 1, $ATABSTOPS[$X])
  4691. Next
  4692. Local $IRET = _SENDMESSAGE($HWND, $EM_SETTABSTOPS, $INUMTABSTOPS, DllStructGetPtr($TTABSTOPS), 0, "wparam", "ptr") <> 0
  4693. _WINAPI_INVALIDATERECT($HWND)
  4694. Return $IRET
  4695. EndFunc
  4696. Func _GUICTRLEDIT_SETTEXT($HWND, $STEXT)
  4697. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4698. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4699. _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_SETTEXT, 0, $STEXT, 0, "wparam", "wstr")
  4700. EndFunc
  4701. Func _GUICTRLEDIT_SETWORDBREAKPROC($HWND, $IADDRESSFUNC)
  4702. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4703. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4704. _SENDMESSAGE($HWND, $EM_SETWORDBREAKPROC, 0, $IADDRESSFUNC)
  4705. EndFunc
  4706. Func _GUICTRLEDIT_SHOWBALLOONTIP($HWND, $STITLE, $STEXT, $IICON)
  4707. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4708. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4709. Local $TTITLE = _WINAPI_MULTIBYTETOWIDECHAR($STITLE)
  4710. Local $TTEXT = _WINAPI_MULTIBYTETOWIDECHAR($STEXT)
  4711. Local $TTT = DllStructCreate($TAGEDITBALLOONTIP)
  4712. DllStructSetData($TTT, "Size", DllStructGetSize($TTT))
  4713. DllStructSetData($TTT, "Title", DllStructGetPtr($TTITLE))
  4714. DllStructSetData($TTT, "Text", DllStructGetPtr($TTEXT))
  4715. DllStructSetData($TTT, "Icon", $IICON)
  4716. Return _SENDMESSAGE($HWND, $EM_SHOWBALLOONTIP, 0, DllStructGetPtr($TTT), 0, "wparam", "ptr") <> 0
  4717. EndFunc
  4718. Func _GUICTRLEDIT_UNDO($HWND)
  4719. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4720. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4721. Return _SENDMESSAGE($HWND, $EM_UNDO) <> 0
  4722. EndFunc
  4723. Const $PIXELLOBBYCHECKSUM = 1555213581
  4724. Const $PIXELCHATCHECKSUM = 1649782125
  4725. Const $PIXELGAMECHECKSUM = 2125173826
  4726. Const $PIXELLOADCHECKSUM = 1930887169
  4727. Const $PIXELSTARTCHECKSUM = 1882569945
  4728. Const $PIXELSELECTCHECKSUM = 1988211704
  4729. Const $PIXELBNETLOGINCHECKSUM = 371230022
  4730. Const $NPCSCREENCHECKSUM = 2787122889
  4731. Const $PIXELA1CHECKSUM = 3374657687
  4732. Const $PIXELA2CHECKSUM = 1987662535
  4733. Const $PIXELA3CHECKSUM = 1066095595
  4734. Const $PIXELA4CHECKSUM = 192177123
  4735. Const $PIXELA5CHECKSUM = 2113352287
  4736. Const $PIXELPINDLEPOSSUM1 = 3674943118
  4737. Const $PIXELPINDLEPOSSUM2 = 2211873678
  4738. Const $PIXELPINDLEPOSSUM3 = 1118240787
  4739. $INLOBBY = 0
  4740. $INGAME = 0
  4741. $SELECTSCREEN = 0
  4742. $BNETLOGIN = 0
  4743. $CURRENTPOS = 0
  4744. $WANTEDPOSITION = 0
  4745. $DIABLOOPEN = 0
  4746. $CURRENTIP = 0
  4747. $CURRENTACTCHECKSUM = 0
  4748. $NPCSCREEN = 0
  4749. $CURRENTACT = 0
  4750. $GAMENAMEADD = 1
  4751. $REDPORCOORDS = 0
  4752. $BLUEPORCOORDS = 0
  4753. Global $PAUSED
  4754. $COUNTDOWN = 0
  4755. Global $GAMENAMEFINAL = 0
  4756. Global $TIMELEFT = 0
  4757. $WARMNESS = "Cold"
  4758. $OOGMSG = ""
  4759. $CURRENTPOS = 0
  4760. $COUNTIP = 0
  4761. $CURRENTVERSION = 1.3
  4762. Global $NEWDIABLOTITLE
  4763. Global $D2HANDLE
  4764. Global $PID
  4765. Const $COMMAND = 'netstat -n | find "4000"'
  4766. Global Const $D2CLIENT_OFFSET = 1873477632
  4767. Global Const $D2LAUNCH_OFFSET = 1873018880
  4768. Global Const $D2MULTI_OFFSET = 1872560128
  4769. Global $OLDPTR1, $OLDPTR2, $OLDMSG, $LASTCHATMSG1
  4770. Const $DIABLOTITLE = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "DiabloTitle", "Diablo II")
  4771. $DIABLOPATH = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "DiabloPath", "NotFound")
  4772. If $DIABLOPATH = "" Then
  4773. MsgBox(0, "SIPBot Error!", "Please type in diablopath correctly. Exiting.")
  4774. Exit
  4775. EndIf
  4776. $ACCOUNT = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "Account", "NotFound")
  4777. $PASS = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "Password", "NotFound")
  4778. $CHARLOCATION = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "Charspot", "NotFound")
  4779. $CHATMSG = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "MsgSettings", "1")
  4780. $ALLOWMEMORYREAD = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "ReadMemory", "No")
  4781. $ENABLELOGGING = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "EnableLogging", "Yes")
  4782. $MINIMIZED = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "Minimized", "No")
  4783. $DEBUG_ENABLED = IniRead(@ScriptDir & "\Settings.ini", "CONFIG", "DebugEnabled", "No")
  4784. $QUESTBUTTON = IniRead(@ScriptDir & "\Settings.ini", "CHARSETTINGS", "Questbutton", "NotFound")
  4785. $TELESKILL = IniRead(@ScriptDir & "\Settings.ini", "CHARSETTINGS", "Teleskill", "NotFound")
  4786. $TPSKILL = IniRead(@ScriptDir & "\Settings.ini", "CHARSETTINGS", "TPSkill", "NotFound")
  4787. $VIGORKEY = IniRead(@ScriptDir & "\Settings.ini", "CHARSETTINGS", "Vigorskill", "NotFound")
  4788. Const $MINGAMETIME = IniRead(@ScriptDir & "\Settings.ini", "GAMESETTINGS", "MinGameTime", "NotFound")
  4789. Const $MINIWAITTIME = IniRead(@ScriptDir & "\Settings.ini", "GAMESETTINGS", "MiniWaitTime", "5000")
  4790. Const $GAMENAME = IniRead(@ScriptDir & "\Settings.ini", "GAMESETTINGS", "Gamename", "NotFound")
  4791. Const $RUN = IniRead(@ScriptDir & "\Settings.ini", "GAMESETTINGS", "Ingamescript", "NotFound")
  4792. $GAMEPASS = IniRead(@ScriptDir & "\Settings.ini", "GAMESETTINGS", "Gamepass", "NotFound")
  4793. $DIFFICULTY = IniRead(@ScriptDir & "\Settings.ini", "GAMESETTINGS", "Difficulty", "NotFound")
  4794. $WAITONHOTIP = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "WaitOnHotIp", "6000")
  4795. $WANTEDIP1 = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "Wantedip1", "1")
  4796. $WANTEDIP2 = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "Wantedip2", "1")
  4797. $WANTEDIP3 = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "Wantedip3", "1")
  4798. $WANTEDIP4 = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "Wantedip4", "1")
  4799. Func _DETECTLOBBY()
  4800. If $ALLOWMEMORYREAD = "Yes" Then
  4801. DEBUG(7, "Locations.au3", "Detecting lobby, by reading memory.")
  4802. $VALUE = DETECTLOBBY($PID)
  4803. If $VALUE <> 0 Then
  4804. $INLOBBY = True
  4805. Else
  4806. $INLOBBY = False
  4807. EndIf
  4808. DEBUG(15, "Locations.au3", "Result of lobby detection: " & $INLOBBY & ".")
  4809. EndIf
  4810. If $ALLOWMEMORYREAD = "No" And $MINIMIZED = "No" Then
  4811. DEBUG(18, "Locations.au3", "Detecting lobby, by checking pixel 794,417.")
  4812. ACTIVATED2()
  4813. Opt("PixelCoordMode", 2)
  4814. MouseMove(400, 300, 0)
  4815. If PixelGetColor(794, 417) = 526344 Then
  4816. $INLOBBY = True
  4817. Else
  4818. $INLOBBY = False
  4819. EndIf
  4820. DEBUG(27, "Locations.au3", "Result of lobby detection: " & $INLOBBY & ".")
  4821. EndIf
  4822. If $ALLOWMEMORYREAD = "No" And $MINIMIZED = "Yes" Then
  4823. $INLOBBY = ""
  4824. EndIf
  4825. Return $INLOBBY
  4826. EndFunc
  4827. Func _DETECTDIABLO()
  4828. DEBUG(36, "Locations.au3", "Detecting whether diablo is opened.")
  4829. $D2NAME = WinGetTitle("[TITLE:" & $DIABLOTITLE & "; CLASS:Diablo II]")
  4830. If WinExists($D2NAME) = 1 Then
  4831. $DIABLOOPEN = True
  4832. Else
  4833. $DIABLOOPEN = False
  4834. EndIf
  4835. DEBUG(42, "Locations.au3", "Result of Diablo detection: " & $DIABLOOPEN & ".")
  4836. Return $DIABLOOPEN
  4837. EndFunc
  4838. Func _DETECTINGAME()
  4839. Local $TEMPIP
  4840. Select
  4841. Case $ALLOWMEMORYREAD = "Yes"
  4842. DEBUG(50, "Locations.au3", "Detecting ingame by getting fps of the game.")
  4843. $PING = GETGAMEFPS($PID)
  4844. If $PING > 0 Then
  4845. $INGAME = True
  4846. Else
  4847. $INGAME = False
  4848. EndIf
  4849. DEBUG(58, "Locations.au3", "Fps was: " & $PING & ". InGame: " & $INGAME & ".")
  4850. Case $ALLOWMEMORYREAD = "No"
  4851. DEBUG(60, "Locations.au3", "Detecting ingame by checking if the game has an ip.")
  4852. Local $FOO = Run(@ComSpec & " /c " & $COMMAND, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
  4853. Local $LINE = ""
  4854. For $N = 1 To 3 Step 0
  4855. $LINE = StdoutRead($FOO)
  4856. If @error Then
  4857. ExitLoop
  4858. EndIf
  4859. If Not $LINE = "" Then
  4860. $TEMPIP = $LINE
  4861. EndIf
  4862. Next
  4863. If StringInStr($TEMPIP, "4000") > 0 Then
  4864. $INGAME = True
  4865. Else
  4866. $INGAME = False
  4867. EndIf
  4868. DEBUG(77, "Locations.au3", "Result of ingame detection: " & $INGAME & ".")
  4869. EndSelect
  4870. Return $INGAME
  4871. EndFunc
  4872. Func _DETECTNPCSCREEN()
  4873. ACTIVATED2()
  4874. Opt("PixelCoordMode", 2)
  4875. If $NPCSCREENCHECKSUM = PixelChecksum(84, 445, 122, 477) Then
  4876. $NPCSCREEN = True
  4877. ElseIf $NPCSCREENCHECKSUM <> PixelChecksum(84, 445, 122, 477) Then
  4878. $NPCSCREEN = False
  4879. EndIf
  4880. Return $NPCSCREEN
  4881. EndFunc
  4882. Func _DETECTSELECT()
  4883. If $ALLOWMEMORYREAD = "Yes" Then
  4884. DEBUG(95, "Locations.au3", "Detecting Select Char Screen by reading memory.")
  4885. If DETECTSELECTCHARSCREEN($PID) = 1 Then
  4886. $SELECTSCREEN = True
  4887. Else
  4888. $SELECTSCREEN = False
  4889. EndIf
  4890. DEBUG(102, "Locations.au3", "Result of previous detection: " & $SELECTSCREEN & ".")
  4891. EndIf
  4892. If $ALLOWMEMORYREAD = "No" Then
  4893. DEBUG(105, "Locations.au3", "Detecting Select Char Screen by checking pixel 719,329.")
  4894. ACTIVATED2()
  4895. Opt("PixelCoordMode", 2)
  4896. If PixelGetColor(719, 329) = 16569436 Then
  4897. $SELECTSCREEN = True
  4898. Else
  4899. $SELECTSCREEN = False
  4900. EndIf
  4901. DEBUG(113, "Locations.au3", "Result of previous detection: " & $SELECTSCREEN & ".")
  4902. EndIf
  4903. Return $SELECTSCREEN
  4904. EndFunc
  4905. Func _DETECTBNETLOGIN()
  4906. If $ALLOWMEMORYREAD = "No" And $MINIMIZED = "No" Then
  4907. DEBUG(120, "Locations.au3", "Detecting B.Net Login by checking pixel 705,347.")
  4908. ACTIVATED2()
  4909. Opt("PixelCoordMode", 2)
  4910. If PixelGetColor(705, 347) = 10516544 Then
  4911. $BNETLOGIN = True
  4912. Else
  4913. $BNETLOGIN = False
  4914. EndIf
  4915. DEBUG(128, "Locations.au3", "Result of previous detection: " & $BNETLOGIN & ".")
  4916. EndIf
  4917. Return $BNETLOGIN
  4918. EndFunc
  4919. Func _DETECTACT()
  4920. ACTIVATED2()
  4921. Opt("PixelCoordMode", 2)
  4922. _SENDMINIMIZED($DIABLOTITLE, $QUESTBUTTON)
  4923. Sleep(200)
  4924. $CURRENTACTCHECKSUM = PixelChecksum(90, 65, 390, 90)
  4925. Sleep(500)
  4926. _SENDMINIMIZED($DIABLOTITLE, $QUESTBUTTON)
  4927. If $PIXELA1CHECKSUM = $CURRENTACTCHECKSUM Then
  4928. $CURRENTACT = 1
  4929. ElseIf $PIXELA2CHECKSUM = $CURRENTACTCHECKSUM Then
  4930. $CURRENTACT = 2
  4931. ElseIf $PIXELA3CHECKSUM = $CURRENTACTCHECKSUM Then
  4932. $CURRENTACT = 3
  4933. ElseIf $PIXELA4CHECKSUM = $CURRENTACTCHECKSUM Then
  4934. $CURRENTACT = 4
  4935. ElseIf $PIXELA5CHECKSUM = $CURRENTACTCHECKSUM Then
  4936. $CURRENTACT = 5
  4937. Else
  4938. $CURRENTACT = 0
  4939. _FILEWRITELOG(@ScriptDir & "\Errors.log", "Couldn't detect act - probably not ingame, stopping bot.")
  4940. EndIf
  4941. Return $CURRENTACT
  4942. EndFunc
  4943. Func _WHEREAMI()
  4944. DEBUG(11, "Functions.au3", "Detecting location (_WhereAmI()).")
  4945. Select
  4946. Case _DETECTBNETLOGIN() =True
  4947. $CURRENTPOS = 1
  4948. Case _DETECTSELECT() =True
  4949. $CURRENTPOS = 2
  4950. Case _DETECTLOBBY() =True
  4951. $CURRENTPOS = 3
  4952. Case _DETECTINGAME() =True
  4953. $CURRENTPOS = 4
  4954. Case _DETECTDIABLO() =False
  4955. $CURRENTPOS = 0
  4956. Case Else
  4957. $CURRENTPOS = 5
  4958. _FILEWRITELOG(@ScriptDir & "\Errors.log", "Couldn't detect location, stopping bot.")
  4959. EndSelect
  4960. Return $CURRENTPOS
  4961. EndFunc
  4962. Func OPEND2()
  4963. DEBUG(6, "Navigations.au3", "Opening Diablo...")
  4964. Run($DIABLOPATH)
  4965. $D2HANDLE = WinWait("[TITLE:" & $DIABLOTITLE & "; CLASS:Diablo II]", "")
  4966. $PID = ProcessExists("game.exe")
  4967. WinActivate($D2HANDLE)
  4968. $NEWDIABLOTITLE = RENAMED2()
  4969. $CURRENTPOS = 1
  4970. If $MINIMIZED = "Yes" Then
  4971. WinSetState($NEWDIABLOTITLE, "", @SW_MINIMIZE)
  4972. DEBUG(15, "Navigations.au3", "Diablo opened and minimized.")
  4973. EndIf
  4974. Return $PID
  4975. EndFunc
  4976. Func _AUTOLOGIN()
  4977. _ZLEEP(1000, $MINIWAITTIME / 2)
  4978. DEBUG(23, "Navigations.au3", "Logging in.")
  4979. WinActivate($D2HANDLE)
  4980. Opt("PixelCoordMode", 2)
  4981. _WHEREAMI()
  4982. If $CURRENTPOS <> 1 Then
  4983. _NAVIGATETO(1)
  4984. _AUTOLOGIN()
  4985. Else
  4986. MouseClickDrag("left", 480, 340, 320, 340, 5)
  4987. Sleep(400)
  4988. _SENDMINIMIZED($D2HANDLE, $ACCOUNT)
  4989. Sleep(100)
  4990. _SENDMINIMIZED($D2HANDLE, "{TAB}")
  4991. Sleep(200)
  4992. _SENDMINIMIZED($D2HANDLE, $PASS)
  4993. Sleep(200)
  4994. _SENDMINIMIZED($D2HANDLE, "{ENTER}")
  4995. EndIf
  4996. EndFunc
  4997. Func _AUTOLOGINMINI()
  4998. _ZLEEP(2000, $MINIWAITTIME / 2)
  4999. DEBUG(46, "Navigations.au3", "Logging in.")
  5000. If $ALLOWMEMORYREAD = "Yes" Then
  5001. $TIME1 = TimerInit()
  5002. While DETECTNOTIFYBOX($PID) = 1
  5003. Sleep(200)
  5004. If Round(TimerDiff($TIME1), 1) > 10000 Then
  5005. $OOGMSG = "Login timed out... Quitting."
  5006. _FILEWRITELOG(@ScriptDir & "\Errors.log", "Login timed out, stopping bot.")
  5007. DEBUG(54, "Navigations.au3", "Login timed out.")
  5008. Exit
  5009. EndIf
  5010. WEnd
  5011. $CURRENTPOS = 1
  5012. _MOUSECLICKMINIMIZED($D2HANDLE, "Left", 470, 339)
  5013. Sleep(400)
  5014. For $I = 0 To 17 Step 1
  5015. _SENDMINIMIZED($D2HANDLE, "{bs}")
  5016. Next
  5017. Sleep(400)
  5018. _SENDMINIMIZED($D2HANDLE, $ACCOUNT)
  5019. Sleep(200)
  5020. _SENDMINIMIZED($D2HANDLE, "{TAB}")
  5021. Sleep(200)
  5022. _SENDMINIMIZED($D2HANDLE, $PASS)
  5023. Sleep(200)
  5024. _SENDMINIMIZED($D2HANDLE, "{ENTER}")
  5025. ElseIf $ALLOWMEMORYREAD = "No" Then
  5026. Sleep($MINIWAITTIME / 2)
  5027. $CURRENTPOS = 1
  5028. Sleep($MINIWAITTIME / 2)
  5029. _MOUSECLICKMINIMIZED($D2HANDLE, "Left", 470, 339)
  5030. Sleep(400)
  5031. For $I = 0 To 17 Step 1
  5032. _SENDMINIMIZED($D2HANDLE, "{bs}")
  5033. Next
  5034. Sleep(400)
  5035. _SENDMINIMIZED($D2HANDLE, $ACCOUNT)
  5036. Sleep(200)
  5037. _SENDMINIMIZED($D2HANDLE, "{TAB}")
  5038. Sleep(200)
  5039. _SENDMINIMIZED($D2HANDLE, $PASS)
  5040. Sleep(200)
  5041. _SENDMINIMIZED($D2HANDLE, "{ENTER}")
  5042. Sleep($MINIWAITTIME / 2)
  5043. EndIf
  5044. EndFunc
  5045. Func _SELECTCHAR()
  5046. _ZLEEP(2000, $MINIWAITTIME / 2)
  5047. DEBUG(96, "Navigations.au3", "Selecting char.")
  5048. WinActivate($D2HANDLE)
  5049. Opt("PixelCoordMode", 2)
  5050. _WHEREAMI()
  5051. If $CURRENTPOS <> 2 Then
  5052. _NAVIGATETO(2)
  5053. _SELECTCHAR()
  5054. Else
  5055. Select
  5056. Case $CHARLOCATION = 1
  5057. _SENDMINIMIZED($D2HANDLE, "{ENTER}")
  5058. Case $CHARLOCATION = 2
  5059. _SENDMINIMIZED($D2HANDLE, "{RIGHT}{ENTER}")
  5060. Case $CHARLOCATION = 3
  5061. _SENDMINIMIZED($D2HANDLE, "{DOWN}{ENTER}")
  5062. Case $CHARLOCATION = 4
  5063. _SENDMINIMIZED($D2HANDLE, "{DOWN}{RIGHT}{ENTER}")
  5064. Case $CHARLOCATION = 5
  5065. _SENDMINIMIZED($D2HANDLE, "{DOWN}{DOWN}{ENTER}")
  5066. Case $CHARLOCATION = 6
  5067. _SENDMINIMIZED($D2HANDLE, "{DOWN}{DOWN}{RIGHT}{ENTER}")
  5068. Case $CHARLOCATION = 7
  5069. _SENDMINIMIZED($D2HANDLE, "{DOWN}{DOWN}{DOWN}{ENTER}")
  5070. Case $CHARLOCATION = 8
  5071. _SENDMINIMIZED($D2HANDLE, "{DOWN}{DOWN}{DOWN}{RIGHT}{ENTER}")
  5072. EndSelect
  5073. EndIf
  5074. EndFunc
  5075. Func _SELECTCHARMINI()
  5076. _ZLEEP(2000, $MINIWAITTIME / 2)
  5077. If $ALLOWMEMORYREAD = "Yes" Then
  5078. DEBUG(129, "Navigations.au3", "Detecting Select Char Screen")
  5079. If DETECTSELECTCHARSCREEN($PID) = 0 Then
  5080. DEBUG(131, "Navigations.au3", "It wasnt up, waiting for 'Please Wait'...")
  5081. DEBUG(132, "Navigations.au3", "Select Char screen not up, detecting Notifybox and waiting to its gone...")
  5082. $TIME1 = TimerInit()
  5083. While DETECTNOTIFYBOX($PID) = 1
  5084. If Round(TimerDiff($TIME1), 1) > 10000 Then
  5085. $OOGMSG = "Wrong account/pass... Quitting."
  5086. _FILEWRITELOG(@ScriptDir & "\Errors.log", "Wrong account name or password, stopping bot.")
  5087. DEBUG(138, "Navigations.au3", "Wrong account name or password")
  5088. Exit
  5089. EndIf
  5090. Sleep(200)
  5091. WEnd
  5092. EndIf
  5093. $CURRENTPOS = 2
  5094. ElseIf $ALLOWMEMORYREAD = "No" Then
  5095. Sleep($MINIWAITTIME / 2)
  5096. $CURRENTPOS = 2
  5097. Sleep($MINIWAITTIME / 2)
  5098. EndIf
  5099. DEBUG(150, "Navigations.au3", "Selecting character.")
  5100. Select
  5101. Case $CHARLOCATION = 1
  5102. _SENDMINIMIZED($D2HANDLE, "{ENTER}")
  5103. Case $CHARLOCATION = 2
  5104. _SENDMINIMIZED($D2HANDLE, "{RIGHT}{ENTER}")
  5105. Case $CHARLOCATION = 3
  5106. _SENDMINIMIZED($D2HANDLE, "{DOWN}{ENTER}")
  5107. Case $CHARLOCATION = 4
  5108. _SENDMINIMIZED($D2HANDLE, "{DOWN}{RIGHT}{ENTER}")
  5109. Case $CHARLOCATION = 5
  5110. _SENDMINIMIZED($D2HANDLE, "{DOWN}{DOWN}{ENTER}")
  5111. Case $CHARLOCATION = 6
  5112. _SENDMINIMIZED($D2HANDLE, "{DOWN}{DOWN}{RIGHT}{ENTER}")
  5113. Case $CHARLOCATION = 7
  5114. _SENDMINIMIZED($D2HANDLE, "{DOWN}{DOWN}{DOWN}{ENTER}")
  5115. Case $CHARLOCATION = 8
  5116. _SENDMINIMIZED($D2HANDLE, "{DOWN}{DOWN}{DOWN}{RIGHT}{ENTER}")
  5117. EndSelect
  5118. EndFunc
  5119. Func _CREATEGAME()
  5120. _ZLEEP(2000, $MINIWAITTIME / 2)
  5121. Select
  5122. Case $ALLOWMEMORYREAD = "Yes"
  5123. For $RETRIES = 1 To 5 Step 1
  5124. _DETECTLOBBY()
  5125. If $INLOBBY = True Then
  5126. $CURRENTPOS = 3
  5127. DEBUG(181, "Navigations.au3", "Detected lobby after reading memory " & $RETRIES & " times.")
  5128. _MAKEGAME()
  5129. ExitLoop
  5130. EndIf
  5131. Sleep(750)
  5132. Next
  5133. If $INLOBBY = False Then
  5134. DEBUG(188, "Navigations.au3", "Failed to detect lobby, detecting current position.")
  5135. _WHEREAMI()
  5136. If $CURRENTPOS <> 3 Then
  5137. _NAVIGATETO(3)
  5138. _MAKEGAME()
  5139. ElseIf $CURRENTPOS = 3 Then
  5140. _MAKEGAME()
  5141. EndIf
  5142. EndIf
  5143. Case $MINIMIZED = "Yes" And $ALLOWMEMORYREAD = "No"
  5144. $CURRENTPOS = 3
  5145. Sleep(2000)
  5146. _MAKEGAME()
  5147. Case $MINIMIZED = "No"
  5148. ACTIVATED2()
  5149. Opt("PixelCoordMode", 2)
  5150. _WHEREAMI()
  5151. If $CURRENTPOS <> 3 Then
  5152. _NAVIGATETO(3)
  5153. _CREATEGAME()
  5154. ElseIf $CURRENTPOS = 3 Then
  5155. _MAKEGAME()
  5156. EndIf
  5157. EndSelect
  5158. EndFunc
  5159. Func _MAKEGAME()
  5160. DEBUG(219, "Navigations.au3", "Creating a game.")
  5161. _MOUSECLICKMINIMIZED($D2HANDLE, "Left", 712, 461, 1)
  5162. Sleep(300)
  5163. _MOUSECLICKMINIMIZED($D2HANDLE, "Left", 593, 459, 1)
  5164. Sleep(200)
  5165. $CURRENTPOS = 8
  5166. If $GAMENAME = "Rnd" Then
  5167. $GAMENAMEFINAL = Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1))
  5168. Else
  5169. $GAMENAMEFINAL = $GAMENAME & $GAMENAMEADD
  5170. $GAMENAMEADD = $GAMENAMEADD + 1
  5171. EndIf
  5172. If $GAMENAME = "" Then
  5173. $GAMENAMEFINAL = Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1)) & Chr(64 + Random(1, 26, 1))
  5174. EndIf
  5175. If $GAMEPASS = "" Then
  5176. $GAMEPASS = "x"
  5177. EndIf
  5178. _SENDMINIMIZED($D2HANDLE, $GAMENAMEFINAL)
  5179. Sleep(400)
  5180. _SENDMINIMIZED($D2HANDLE, "{TAB}")
  5181. Sleep(400)
  5182. _SENDMINIMIZED($D2HANDLE, $GAMEPASS)
  5183. Sleep(400)
  5184. If $DIFFICULTY = 1 Then
  5185. _MOUSECLICKMINIMIZED($D2HANDLE, "Left", 439, 375, 1)
  5186. ElseIf $DIFFICULTY = 2 Then
  5187. _MOUSECLICKMINIMIZED($D2HANDLE, "Left", 565, 375, 1)
  5188. ElseIf $DIFFICULTY = 3 Then
  5189. _MOUSECLICKMINIMIZED($D2HANDLE, "Left", 707, 375, 1)
  5190. EndIf
  5191. Sleep(1000)
  5192. _SENDMINIMIZED($D2HANDLE, "{Enter}")
  5193. $CURRENTPOS = 6
  5194. _ZLEEP(1000, 2000)
  5195. EndFunc
  5196. Func TERMINATE()
  5197. DEBUG(277, "Functions.au3", "Killing " & $NEWDIABLOTITLE & " and core.exe")
  5198. If WinExists("[TITLE:" & $NEWDIABLOTITLE & "; CLASS:Diablo II]") = 1 Then
  5199. WinClose("[TITLE:" & $NEWDIABLOTITLE & "; CLASS:Diablo II]")
  5200. WinWaitClose("[TITLE:" & $NEWDIABLOTITLE & "; CLASS:Diablo II]")
  5201. EndIf
  5202. IniWrite(@ScriptDir & "\Com", "OOGUPDATE", "POSITION", "0")
  5203. IniWrite(@ScriptDir & "\Com", "OOGUPDATE", "CURRENTIP", "N/A")
  5204. IniWrite(@ScriptDir & "\Com", "OOGUPDATE", "WARMNESS", "N/A")
  5205. IniWrite(@ScriptDir & "\Com", "OOGUPDATE", "OOGMSG", "")
  5206. Exit
  5207. EndFunc
  5208. Func _NAVIGATETO($WANTEDPOS)
  5209. DEBUG(62, "Functions.au3", "Navigating to position " & $WANTEDPOS & ". Current position is " & $CURRENTPOS & ".")
  5210. If $CURRENTPOS <> $WANTEDPOS Then
  5211. If $ALLOWMEMORYREAD = "No" Then
  5212. Opt("PixelCoordMode", 2)
  5213. Select
  5214. Case $CURRENTPOS = 0 And $WANTEDPOS = 1
  5215. OPEND2()
  5216. Case $CURRENTPOS = 0 And $WANTEDPOS = 2
  5217. OPEND2()
  5218. _AUTOLOGIN()
  5219. Case $CURRENTPOS = 0 And $WANTEDPOS = 3
  5220. OPEND2()
  5221. _AUTOLOGIN()
  5222. _SELECTCHAR()
  5223. Case $CURRENTPOS = 0 And $WANTEDPOS = 4
  5224. OPEND2()
  5225. _AUTOLOGIN()
  5226. _SELECTCHAR()
  5227. _CREATEGAME()
  5228. Case $CURRENTPOS = 1 And $WANTEDPOS = 2
  5229. _AUTOLOGIN()
  5230. Case $CURRENTPOS = 1 And $WANTEDPOS = 3
  5231. _AUTOLOGIN()
  5232. _SELECTCHAR()
  5233. Case $CURRENTPOS = 1 And $WANTEDPOS = 4
  5234. _AUTOLOGIN()
  5235. _SELECTCHAR()
  5236. _CREATEGAME()
  5237. Case $CURRENTPOS = 2 And $WANTEDPOS = 3
  5238. _SELECTCHAR()
  5239. Case $CURRENTPOS = 2 And $WANTEDPOS = 4
  5240. _SELECTCHAR()
  5241. _CREATEGAME()
  5242. Case $CURRENTPOS = 3 And $WANTEDPOS = 4
  5243. _CREATEGAME()
  5244. Case $CURRENTPOS = 4 And $WANTEDPOS = 3
  5245. _EXITGAME()
  5246. Case $CURRENTPOS = 4 And $WANTEDPOS = 2
  5247. _EXITGAME()
  5248. Sleep(400)
  5249. _SENDMINIMIZED($D2HANDLE, "{ESC}")
  5250. Sleep(400)
  5251. Case $CURRENTPOS = 4 And $WANTEDPOS = 1
  5252. _EXITGAME()
  5253. Sleep(400)
  5254. _SENDMINIMIZED($D2HANDLE, "{ESC}")
  5255. Sleep(400)
  5256. _SENDMINIMIZED($D2HANDLE, "{Esc}")
  5257. Sleep(400)
  5258. Case $CURRENTPOS = 3 And $WANTEDPOS = 2
  5259. _SENDMINIMIZED($D2HANDLE, "{Esc}")
  5260. Sleep(400)
  5261. Case $CURRENTPOS = 3 And $WANTEDPOS = 1
  5262. Sleep(400)
  5263. _SENDMINIMIZED($D2HANDLE, "{ESC}")
  5264. Sleep(400)
  5265. _SENDMINIMIZED($D2HANDLE, "{Esc}")
  5266. Sleep(400)
  5267. Case $CURRENTPOS = 2 And $WANTEDPOS = 1
  5268. _SENDMINIMIZED($D2HANDLE, "{Esc}")
  5269. Sleep(400)
  5270. Case Else
  5271. _FILEWRITELOG(@ScriptDir & "\Errors.log", "Dont know where to go, stopping bot.")
  5272. Exit
  5273. EndSelect
  5274. ElseIf $ALLOWMEMORYREAD = "Yes" Then
  5275. Select
  5276. Case $CURRENTPOS = 0 And $WANTEDPOS = 1
  5277. OPEND2()
  5278. Case $CURRENTPOS = 0 And $WANTEDPOS = 2
  5279. OPEND2()
  5280. _AUTOLOGINMINI()
  5281. Case $CURRENTPOS = 0 And $WANTEDPOS = 3
  5282. OPEND2()
  5283. _AUTOLOGINMINI()
  5284. _SELECTCHARMINI()
  5285. Case $CURRENTPOS = 0 And $WANTEDPOS = 4
  5286. OPEND2()
  5287. _AUTOLOGINMINI()
  5288. _SELECTCHARMINI()
  5289. _CREATEGAME()
  5290. Case $CURRENTPOS = 1 And $WANTEDPOS = 2
  5291. _AUTOLOGINMINI()
  5292. Case $CURRENTPOS = 1 And $WANTEDPOS = 3
  5293. _AUTOLOGINMINI()
  5294. _SELECTCHARMINI()
  5295. Case $CURRENTPOS = 1 And $WANTEDPOS = 4
  5296. _AUTOLOGINMINI()
  5297. _SELECTCHARMINI()
  5298. _CREATEGAME()
  5299. Case $CURRENTPOS = 2 And $WANTEDPOS = 3
  5300. _SELECTCHARMINI()
  5301. Case $CURRENTPOS = 2 And $WANTEDPOS = 4
  5302. _SELECTCHARMINI()
  5303. _CREATEGAME()
  5304. Case $CURRENTPOS = 3 And $WANTEDPOS = 4
  5305. _CREATEGAME()
  5306. Case $CURRENTPOS = 4 And $WANTEDPOS = 3
  5307. _EXITGAME()
  5308. Case $CURRENTPOS = 4 And $WANTEDPOS = 2
  5309. _EXITGAME()
  5310. Sleep(400)
  5311. _SENDMINIMIZED($D2HANDLE, "{ESC}")
  5312. Sleep(400)
  5313. Case $CURRENTPOS = 4 And $WANTEDPOS = 1
  5314. _EXITGAME()
  5315. Sleep(400)
  5316. _SENDMINIMIZED($D2HANDLE, "{ESC}")
  5317. Sleep(400)
  5318. _SENDMINIMIZED($D2HANDLE, "{Esc}")
  5319. Sleep(400)
  5320. Case $CURRENTPOS = 3 And $WANTEDPOS = 2
  5321. _SENDMINIMIZED($D2HANDLE, "{Esc}")
  5322. Sleep(400)
  5323. Case $CURRENTPOS = 3 And $WANTEDPOS = 1
  5324. Sleep(400)
  5325. _SENDMINIMIZED($D2HANDLE, "{ESC}")
  5326. Sleep(400)
  5327. _SENDMINIMIZED($D2HANDLE, "{Esc}")
  5328. Sleep(400)
  5329. Case $CURRENTPOS = 2 And $WANTEDPOS = 1
  5330. _SENDMINIMIZED($D2HANDLE, "{Esc}")
  5331. Sleep(400)
  5332. Case Else
  5333. _FILEWRITELOG(@ScriptDir & "\Errors.log", "Dont know where to go, stopping bot.")
  5334. Exit
  5335. EndSelect
  5336. EndIf
  5337. EndIf
  5338. EndFunc
  5339. Func _ZLEEP($TIMEMIN, $TIMEMAX)
  5340. Sleep(Random($TIMEMIN, $TIMEMAX))
  5341. EndFunc
  5342. Func PAUSEEXECUTION()
  5343. DEBUG(484, "Functions.au3", "Pausing execution.")
  5344. $PAUSED = Not $PAUSED
  5345. While $PAUSED
  5346. Sleep(100)
  5347. $OOGMSG = 'Pausing bot... Press "Pause" to continue.'
  5348. WEnd
  5349. $OOGMSG = ""
  5350. EndFunc
  5351. Func COUNTER()
  5352. If $COUNTDOWN = $MINGAMETIME Then
  5353. Else
  5354. $COUNTDOWN = $COUNTDOWN + 1
  5355. EndIf
  5356. EndFunc
  5357. Func COUNTER2()
  5358. If $COUNTIP = $WAITONHOTIP Then
  5359. Else
  5360. $COUNTIP = $COUNTIP + 1
  5361. EndIf
  5362. EndFunc
  5363. Func DEBUG($SCRIPTLINE, $SCRIPT, $MSG)
  5364. If $DEBUG_ENABLED = "Yes" Then
  5365. Local $HEDIT
  5366. Local $SDATENOW = @YEAR & "-" & @MON & "-" & @MDAY
  5367. Local $STIMENOW = @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC
  5368. $DEBUG_MSG = @CRLF & $SDATENOW & " " & $STIMENOW & @CRLF & "Script: " & $SCRIPT & " | Scriptline: " & $SCRIPTLINE & "." & @CRLF & "-> " & $MSG & @CRLF & @CRLF
  5369. $HEDIT = ControlGetHandle("SIP-Bot Debuglog", "", "Edit1")
  5370. If @error = 1 Then
  5371. $DEBUG_ENABLED = "No"
  5372. _FILEWRITELOG(@ScriptDir & "\Errors.log", "Debugging has been disabled because Debuglog doesn't exist.")
  5373. Else
  5374. _GUICTRLEDIT_APPENDTEXT($HEDIT, $DEBUG_MSG)
  5375. EndIf
  5376. ConsoleWrite($DEBUG_MSG)
  5377. EndIf
  5378. EndFunc
  5379. Func _UPDATEOOG()
  5380. IniWrite(@ScriptDir & "\Com", "OOGUPDATE", "POSITION", $CURRENTPOS)
  5381. IniWrite(@ScriptDir & "\Com", "OOGUPDATE", "CURRENTIP", $CURRENTIP)
  5382. IniWrite(@ScriptDir & "\Com", "OOGUPDATE", "WARMNESS", $WARMNESS)
  5383. IniWrite(@ScriptDir & "\Com", "OOGUPDATE", "OOGMSG", $OOGMSG)
  5384. EndFunc
  5385. Func D2INFO()
  5386. $PID = WinGetProcess($NEWDIABLOTITLE)
  5387. $D2HANDLE = WinGetHandle($NEWDIABLOTITLE)
  5388. EndFunc
  5389. Func ACTIVATED2()
  5390. WinActivate($D2HANDLE)
  5391. EndFunc
  5392. Func RENAMED2()
  5393. $NEWDIABLOTITLE = $DIABLOTITLE & " - SIP loaded."
  5394. WinSetTitle($DIABLOTITLE, "", $NEWDIABLOTITLE)
  5395. Return $NEWDIABLOTITLE
  5396. EndFunc
  5397. Func _BO()
  5398. WinActivate($D2HANDLE)
  5399. _ZLEEP(300, 350)
  5400. $LEFTPRIMSKILL = PixelChecksum(121, 557, 165, 597)
  5401. Do
  5402. Send("w")
  5403. _ZLEEP(100, 200)
  5404. Until PixelChecksum(121, 557, 165, 597) <> $LEFTPRIMSKILL
  5405. _ZLEEP(100, 200)
  5406. Send("{F8}")
  5407. _ZLEEP(500, 600)
  5408. MouseClick("secondary", 400, 300, 1, 0)
  5409. _ZLEEP(500, 600)
  5410. Send("{F7}")
  5411. _ZLEEP(500, 600)
  5412. MouseClick("secondary", 400, 300, 1, 0)
  5413. _ZLEEP(500, 600)
  5414. Send("a")
  5415. _ZLEEP(500, 600)
  5416. MouseClick("secondary", 400, 300, 1, 0)
  5417. _ZLEEP(500, 600)
  5418. $LEFTSECSKILL = PixelChecksum(121, 557, 165, 597)
  5419. Do
  5420. Send("w")
  5421. _ZLEEP(100, 200)
  5422. Until PixelChecksum(121, 557, 165, 597) <> $LEFTSECSKILL
  5423. EndFunc
  5424. Func _ENTERPORTAL($PORTALCOLOR)
  5425. Opt("PixelCoordMode", 2)
  5426. If $PORTALCOLOR = "Red" Then
  5427. $REDPORCOORDS = PixelSearch(147, 70, 621, 364, 16777215, 4)
  5428. _ZLEEP(50, 100)
  5429. $REDPORCOORDS[1] = $REDPORCOORDS[1] + 40
  5430. MouseClick("Primary", $REDPORCOORDS[0], $REDPORCOORDS[1], 1, 0)
  5431. EndIf
  5432. If $PORTALCOLOR = "Blue" Then
  5433. $BLUEPORCOORDS = PixelSearch(147, 70, 621, 364, 10526972, 4)
  5434. _ZLEEP(50, 100)
  5435. $BLUEPORCOORDS[1] = $BLUEPORCOORDS[1] + 40
  5436. MouseClick("Primary", $BLUEPORCOORDS[0], $BLUEPORCOORDS[1], 1, 0)
  5437. EndIf
  5438. EndFunc
  5439. Func _REPAIR()
  5440. Opt("PixelCoordMode", 2)
  5441. MouseClick("Primary", 154, 526, 1, 1)
  5442. Sleep(2000)
  5443. MouseClick("Primary", 786, 451, 1, 1)
  5444. Sleep(2000)
  5445. MouseClick("Primary", 482, 475, 1, 1)
  5446. Sleep(2000)
  5447. $LARZUK = PixelSearch(300, 125, 800, 433, 2887688)
  5448. If @error = 1 Then
  5449. $LARZUK = PixelSearch(300, 125, 800, 433, 4199436)
  5450. EndIf
  5451. MouseClick("Right", $LARZUK[0], $LARZUK[1], 1, 0)
  5452. Sleep(1000)
  5453. Send("{DOWN}{Enter}")
  5454. Sleep(500)
  5455. _DETECTNPCSCREEN()
  5456. If $NPCSCREEN = True Then
  5457. MouseClick("Primary", 368, 465, 1, 0)
  5458. _ZLEEP(200, 300)
  5459. Send("{Esc}")
  5460. _EXITGAME()
  5461. Else
  5462. MsgBox(0, "", $NPCSCREEN)
  5463. Exit
  5464. EndIf
  5465. EndFunc
  5466. Func _GETGAMEIP()
  5467. DEBUG(97, "InGameFunctions.au3", "Retrieving game ip.")
  5468. $WANTEDIP1 = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "Wantedip1", "")
  5469. $WANTEDIP2 = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "Wantedip2", "")
  5470. $WANTEDIP3 = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "Wantedip3", "")
  5471. $WANTEDIP4 = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "Wantedip4", "")
  5472. If $ALLOWMEMORYREAD = "Yes" Then
  5473. $TEMPIP = GETSERVERIP1($PID)
  5474. $IPLENGTH = StringLen($TEMPIP)
  5475. If $IPLENGTH = 14 Then
  5476. $CURRENTIP = StringMid($TEMPIP, 13, 2)
  5477. _FILEWRITELOG(@ScriptDir & "\Ip's.log", "Ip of game: " & $GAMENAMEFINAL & " was ." & $CURRENTIP & ". Configured Ip's are: " & $WANTEDIP1 & ", " & $WANTEDIP2 & ", " & $WANTEDIP3 & " and " & $WANTEDIP4 & ".")
  5478. ElseIf $IPLENGTH = 15 Then
  5479. $CURRENTIP = StringMid($TEMPIP, 13, 3)
  5480. _FILEWRITELOG(@ScriptDir & "\Ip's.log", "Ip of game: " & $GAMENAMEFINAL & " was ." & $CURRENTIP & ". Configured Ip's are: " & $WANTEDIP1 & ", " & $WANTEDIP2 & ", " & $WANTEDIP3 & " and " & $WANTEDIP4 & ".")
  5481. EndIf
  5482. EndIf
  5483. If $ALLOWMEMORYREAD = "No" Then
  5484. Local $FOO = Run(@ComSpec & " /c " & $COMMAND, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
  5485. Local $LINE = ""
  5486. For $N = 1 To 3 Step 0
  5487. $LINE = StdoutRead($FOO)
  5488. If @error Then
  5489. ExitLoop
  5490. EndIf
  5491. If Not $LINE = "" Then
  5492. $TEMPIP = $LINE
  5493. $TEMPIP2 = StringTrimRight($TEMPIP, 13)
  5494. $TEMPIP3 = StringTrimLeft($TEMPIP2, 30)
  5495. $TEMPIP4 = StringStripWS($TEMPIP3, 3)
  5496. $IPLENGTH = StringLen($TEMPIP4)
  5497. If $IPLENGTH = 19 Then
  5498. $CURRENTIP = StringMid($TEMPIP4, 13, 2)
  5499. _FILEWRITELOG(@ScriptDir & "\Ip's.log", "Ip of game: " & $GAMENAMEFINAL & " was ." & $CURRENTIP & ". Configured Ip's are: " & $WANTEDIP1 & ", " & $WANTEDIP2 & ", " & $WANTEDIP3 & " and " & $WANTEDIP4 & ".")
  5500. ElseIf $IPLENGTH = 20 Then
  5501. $CURRENTIP = StringMid($TEMPIP4, 13, 3)
  5502. _FILEWRITELOG(@ScriptDir & "\Ip's.log", "Ip of game: " & $GAMENAMEFINAL & " was ." & $CURRENTIP & ". Configured Ip's are: " & $WANTEDIP1 & ", " & $WANTEDIP2 & ", " & $WANTEDIP3 & " and " & $WANTEDIP4 & ".")
  5503. EndIf
  5504. ExitLoop
  5505. EndIf
  5506. Next
  5507. EndIf
  5508. Return $CURRENTIP
  5509. EndFunc
  5510. Func _IDLEINGAME()
  5511. DEBUG(484, "Functions.au3", "Idling ingame.")
  5512. Do
  5513. $TIMELEFT = $WAITONHOTIP - $COUNTIP
  5514. $OOGMSG = "Waiting on hot server - " & $TIMELEFT & " seconds left."
  5515. If $ALLOWMEMORYREAD = "Yes" Then
  5516. $LASTCHATMSG = GETLASTCHATMSG($PID)
  5517. If $LASTCHATMSG <> $LASTCHATMSG1 Then
  5518. $LASTCHATMSG1 = $LASTCHATMSG
  5519. If $LASTCHATMSG1 <> "0" Then
  5520. TrayTip("SIP-Bot: Message Detected", $LASTCHATMSG1, 5)
  5521. If $ENABLELOGGING = "Yes" Then
  5522. _FILEWRITELOG(@ScriptDir & "\Messages.log", $GAMENAMEFINAL & " - " & $LASTCHATMSG1)
  5523. EndIf
  5524. EndIf
  5525. EndIf
  5526. EndIf
  5527. Sleep(200)
  5528. Until $COUNTIP >= $WAITONHOTIP
  5529. EndFunc
  5530. Func _READD2MEMORY($PID, $ADDRESS, $FORMAT = "dword", $READ = 0, $DEBUGENABLED = False)
  5531. $AHANDLE = OPENSECUREPROCESS($PID)
  5532. Local $V_BUFFER = DllStructCreate($FORMAT)
  5533. $RESULT = _WINAPI_READPROCESSMEMORY($AHANDLE, $ADDRESS, DllStructGetPtr($V_BUFFER), DllStructGetSize($V_BUFFER), $READ)
  5534. $TEMP = DllStructGetData($V_BUFFER, 1)
  5535. _WINAPI_CLOSEHANDLE($AHANDLE)
  5536. If $DEBUGENABLED = True Then
  5537. ConsoleWrite(@CRLF & $PID & " <--- pid of process." & @CRLF)
  5538. ConsoleWrite($AHANDLE & " <--- Handle to process." & @CRLF)
  5539. ConsoleWrite(DllStructGetData($V_BUFFER, 1) & " <--- DllStruct of format." & @CRLF)
  5540. ConsoleWrite($RESULT & " <--- Result of ReadprocessMemory (1 = success, 0 = failure)." & @CRLF)
  5541. ConsoleWrite($TEMP & " <--- Memory Read." & @CRLF)
  5542. EndIf
  5543. Return $TEMP
  5544. EndFunc
  5545. Func OPENSECUREPROCESS($WNDPID, $RIGHTS = 2035711)
  5546. $SE_KERNEL_OBJECT = 6
  5547. $DACL_SECURITY_INFORMATION = 4
  5548. $ERROR_SUCCESS = 0
  5549. $WRITE_DAC = 262144
  5550. $UNPROTECTED_DACL_SECURITY_INFORMATION = 536870912
  5551. Local $PID = $WNDPID
  5552. Local $WINDOW
  5553. Local $PROCESS
  5554. Local $DACL = DllStructCreate("ptr")
  5555. Local $SECDESC = DllStructCreate("ptr")
  5556. $PROCESS = _WINAPI_OPENPROCESS($RIGHTS, 0, $PID)
  5557. IF ($PROCESS <> 0) Then
  5558. Return $PROCESS
  5559. EndIf
  5560. IF (GETSECURITYINFO(_WINAPI_GETCURRENTPROCESS(), $SE_KERNEL_OBJECT, $DACL_SECURITY_INFORMATION, 0, 0, DllStructGetPtr($DACL, 1), 0, DllStructGetPtr($SECDESC, 1)) <> $ERROR_SUCCESS) Then
  5561. Return 0
  5562. EndIf
  5563. $PROCESS = _WINAPI_OPENPROCESS($WRITE_DAC, 0, $PID)
  5564. IF ($PROCESS == 0) Then
  5565. _WINAPI_LOCALFREE($SECDESC)
  5566. Return 0
  5567. EndIf
  5568. IF (SETSECURITYINFO($PROCESS, $SE_KERNEL_OBJECT, BitOR($DACL_SECURITY_INFORMATION, $UNPROTECTED_DACL_SECURITY_INFORMATION), 0, 0, DllStructGetData($DACL, 1), 0) <> $ERROR_SUCCESS) Then
  5569. _WINAPI_LOCALFREE($SECDESC)
  5570. Return 0
  5571. EndIf
  5572. _WINAPI_CLOSEHANDLE($PROCESS)
  5573. _WINAPI_LOCALFREE($SECDESC)
  5574. $PROCESS = _WINAPI_OPENPROCESS($RIGHTS, 0, $PID)
  5575. IF ($PROCESS == 0) Then
  5576. Return 0
  5577. EndIf
  5578. Return $PROCESS
  5579. EndFunc
  5580. Func GETSECURITYINFO($HANDLE, $OBJECTTYPE, $SECURITYINFO, $PPSIDOWNER, $PPSIDGROUP, $PPDACL, $PPSACL, $PPSECURITYDESCRIPTOR)
  5581. $CALL = DllCall("Advapi32.dll", "long", "GetSecurityInfo", "ptr", $HANDLE, "int", $OBJECTTYPE, "dword", $SECURITYINFO, "ptr", $PPSIDOWNER, "ptr", $PPSIDGROUP, "ptr", $PPDACL, "ptr", $PPSACL, "ptr", $PPSECURITYDESCRIPTOR)
  5582. Return $CALL[0]
  5583. EndFunc
  5584. Func SETSECURITYINFO($HANDLE, $OBJECTTYPE, $SECURITYINFO, $PSIDOWNER, $PSIDGROUP, $PDACL, $PSACL)
  5585. $CALL = DllCall("Advapi32.dll", "long", "SetSecurityInfo", "ptr", $HANDLE, "int", $OBJECTTYPE, "dword", $SECURITYINFO, "ptr", $PSIDOWNER, "ptr", $PSIDGROUP, "ptr", $PDACL, "ptr", $PSACL)
  5586. Return $CALL[0]
  5587. EndFunc
  5588. Func _MEMORYREADWIDESTRING($IV_ADDRESS, $AH_HANDLE, $SV_TYPE = "ushort[10]")
  5589. Local $V_BUFFER = DllStructCreate($SV_TYPE)
  5590. If @error Then
  5591. SetError(@error + 1)
  5592. Return 0
  5593. EndIf
  5594. $READ = 0
  5595. _WINAPI_READPROCESSMEMORY($AH_HANDLE, $IV_ADDRESS, DllStructGetPtr($V_BUFFER), DllStructGetSize($V_BUFFER), $READ)
  5596. If Not @error Then
  5597. $TMPSTRING = ""
  5598. For $CHAR = 1 To 255
  5599. $V_VALUE = DllStructGetData($V_BUFFER, 1, $CHAR)
  5600. If $V_VALUE = 0 Then ExitLoop
  5601. $TMPSTRING = $TMPSTRING & Chr($V_VALUE)
  5602. Next
  5603. Return $TMPSTRING
  5604. Else
  5605. SetError(6)
  5606. Return 0
  5607. EndIf
  5608. EndFunc
  5609. Func _SETPRIVILEGE($PRIVILEGE, $ENABLE)
  5610. Local $HTOKEN = _SECURITY__OPENTHREADTOKENEX(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
  5611. If @error Then Return SetError(@error, @extended, 0)
  5612. _SECURITY__SETPRIVILEGE($HTOKEN, $PRIVILEGE, $ENABLE)
  5613. EndFunc
  5614. Func GETLASTCHATMSG($PID)
  5615. $TEMP = GETLASTMSG($PID)
  5616. $RESULT = StringInStr($TEMP, "ÿc")
  5617. Select
  5618. Case $RESULT = 0
  5619. $LASTMSG = $TEMP
  5620. Case $RESULT > 0
  5621. $MSGARRAY = StringSplit($TEMP, "ÿc", 1)
  5622. $MSGARRAY1 = StringTrimLeft($MSGARRAY[2], 1)
  5623. $MSGARRAY2 = StringTrimLeft($MSGARRAY[3], 1)
  5624. $LASTMSG = $MSGARRAY1 & $MSGARRAY2
  5625. EndSelect
  5626. If $CHATMSG = 1 Then
  5627. Return $LASTMSG
  5628. ElseIf $CHATMSG = 0 Then
  5629. If StringInStr($LASTMSG, "p Majorblood") = 0 Then
  5630. Return "s"
  5631. Else
  5632. $TEMP = StringTrimLeft($LASTMSG, 25)
  5633. Return $TEMP
  5634. EndIf
  5635. EndIf
  5636. EndFunc
  5637. Func DETECTNOTIFYBOX($PID)
  5638. Local $TEMP
  5639. $TEMP = _READD2MEMORY($PID, $D2LAUNCH_OFFSET + 152512, "dword")
  5640. If $TEMP <> 0 Then
  5641. Return 1
  5642. ElseIf $TEMP = 0 Then
  5643. Return 0
  5644. EndIf
  5645. EndFunc
  5646. Func DETECTLOBBY($PID)
  5647. Local $TEMP
  5648. $TEMP = _READD2MEMORY($PID, $D2MULTI_OFFSET + 233812, "dword")
  5649. If $TEMP <> 0 Then
  5650. Return 1
  5651. ElseIf $TEMP = 0 Then
  5652. Return 0
  5653. EndIf
  5654. EndFunc
  5655. Func DETECTSELECTCHARSCREEN($PID)
  5656. Local $TEMP
  5657. $TEMP = _READD2MEMORY($PID, $D2LAUNCH_OFFSET + 152347, "dword")
  5658. If $TEMP <> 0 Then
  5659. Return 1
  5660. ElseIf $TEMP = 0 Then
  5661. Return 0
  5662. EndIf
  5663. EndFunc
  5664. Func GETCURRENTHP($PID)
  5665. Local $TEMP
  5666. $TEMP = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1157013, "ushort")
  5667. Return $TEMP
  5668. EndFunc
  5669. Func GETLASTMSG($PID)
  5670. Local $PTR
  5671. Local $PTR2
  5672. $PTR = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1129136, "dword")
  5673. $PTR2 = _READD2MEMORY($PID, $PTR, "dword")
  5674. $HANDLE = OPENSECUREPROCESS($PID)
  5675. $TEMP = _MEMORYREADWIDESTRING($PTR2, $HANDLE, "ushort[396]")
  5676. _WINAPI_CLOSEHANDLE($HANDLE)
  5677. Return $TEMP
  5678. EndFunc
  5679. Func GETREALM($PID)
  5680. Local $TEMP
  5681. Local $PTR
  5682. $PTR = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1161600, "dword")
  5683. $TEMP = _READD2MEMORY($PID, $PTR + 209, "char[15]")
  5684. Return $TEMP
  5685. EndFunc
  5686. Func GETCHARNAME($PID)
  5687. Local $TEMP
  5688. Local $PTR
  5689. $PTR = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1161600, "dword")
  5690. $TEMP = _READD2MEMORY($PID, $PTR + 185, "char[15]")
  5691. Return $TEMP
  5692. EndFunc
  5693. Func GETGAMENAME($PID)
  5694. Local $TEMP
  5695. Local $PTR
  5696. $PTR = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1161600, "dword")
  5697. $TEMP = _READD2MEMORY($PID, $PTR + 27, "char[15]")
  5698. Return $TEMP
  5699. EndFunc
  5700. Func GETMOUSECOORDS($PID)
  5701. Local $TEMP
  5702. Dim $TEMP[2]
  5703. $TEMP[0] = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1161256, "dword")
  5704. $TEMP[1] = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1161252, "dword")
  5705. Return $TEMP
  5706. EndFunc
  5707. Func GETGAMEPING($PID)
  5708. Local $TEMP
  5709. $TEMP = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1153028, "dword")
  5710. Return $TEMP
  5711. EndFunc
  5712. Func GETSERVERIP1($PID)
  5713. Local $TEMP
  5714. Local $PTR
  5715. $PTR = _READD2MEMORY($PID, 1874639232, "dword")
  5716. $TEMP = _READD2MEMORY($PID, $PTR + 51, "char[18]")
  5717. Return $TEMP
  5718. EndFunc
  5719. Func GETSERVERIP2($PID)
  5720. Local $TEMP
  5721. $TEMP = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1000224, "char[18]")
  5722. Return $TEMP
  5723. EndFunc
  5724. Func GETSERVERIP3($PID)
  5725. Local $TEMP
  5726. $TEMP = _READD2MEMORY($PID, 1872933368, "char[18]")
  5727. Return $TEMP
  5728. EndFunc
  5729. Func GETGAMEFPS($PID)
  5730. Local $TEMP
  5731. $TEMP = _READD2MEMORY($PID, 1874641580, "dword")
  5732. Return $TEMP
  5733. EndFunc
  5734. Func GETAUTOMAPTOGGLED($PID)
  5735. Local $TEMP
  5736. $TEMP = _READD2MEMORY($PID, 1874505128, "dword")
  5737. Return $TEMP
  5738. EndFunc
  5739. Func GETRUNTOGGLED($PID)
  5740. Local $TEMP
  5741. $TEMP = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1164268, "dword")
  5742. Return $TEMP
  5743. EndFunc
  5744. Func GETAREA($PID)
  5745. Local $TEMP
  5746. Local $TEMP2
  5747. Dim $TEMP3[2]
  5748. $TEMP = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1193136, "byte")
  5749. Select
  5750. Case $TEMP = 0
  5751. $TEMP2 = "NONE"
  5752. Case $TEMP = 1
  5753. $TEMP2 = "ROGUE_ENCAMPMENT"
  5754. Case $TEMP = 2
  5755. $TEMP2 = "BLOOD_MOOR"
  5756. Case $TEMP = 3
  5757. $TEMP2 = "COLD_PLAINS"
  5758. Case $TEMP = 4
  5759. $TEMP2 = "STONY_FIELD"
  5760. Case $TEMP = 5
  5761. $TEMP2 = "DARK_WOOD"
  5762. Case $TEMP = 6
  5763. $TEMP2 = "BLACK_MARSH"
  5764. Case $TEMP = 7
  5765. $TEMP2 = "TAMOE_HIGHLAND"
  5766. Case $TEMP = 8
  5767. $TEMP2 = "DEN_OF_EVIL"
  5768. Case $TEMP = 9
  5769. $TEMP2 = "CAVE_LEVEL_1"
  5770. Case $TEMP = 10
  5771. $TEMP2 = "UNDERGROUND_PASSAGE_LEVEL_1"
  5772. Case $TEMP = 11
  5773. $TEMP2 = "HOLE_LEVEL_1"
  5774. Case $TEMP = 12
  5775. $TEMP2 = "PIT_LEVEL_1"
  5776. Case $TEMP = 13
  5777. $TEMP2 = "CAVE_LEVEL_2"
  5778. Case $TEMP = 14
  5779. $TEMP2 = "UNDERGROUND_PASSAGE_LEVEL_2"
  5780. Case $TEMP = 15
  5781. $TEMP2 = "HOLE_LEVEL_2"
  5782. Case $TEMP = 16
  5783. $TEMP2 = "PIT_LEVEL_2"
  5784. Case $TEMP = 17
  5785. $TEMP2 = "BURIAL_GROUNDS"
  5786. Case $TEMP = 18
  5787. $TEMP2 = "CRYPT"
  5788. Case $TEMP = 19
  5789. $TEMP2 = "MAUSOLEUM"
  5790. Case $TEMP = 20
  5791. $TEMP2 = "FORGOTTEN_TOWER"
  5792. Case $TEMP = 21
  5793. $TEMP2 = "TOWER_CELLAR_LEVEL_1"
  5794. Case $TEMP = 22
  5795. $TEMP2 = "TOWER_CELLAR_LEVEL_2"
  5796. Case $TEMP = 23
  5797. $TEMP2 = "TOWER_CELLAR_LEVEL_3"
  5798. Case $TEMP = 24
  5799. $TEMP2 = "TOWER_CELLAR_LEVEL_4"
  5800. Case $TEMP = 25
  5801. $TEMP2 = "TOWER_CELLAR_LEVEL_5"
  5802. Case $TEMP = 26
  5803. $TEMP2 = "MONASTERY_GATE"
  5804. Case $TEMP = 27
  5805. $TEMP2 = "OUTER_CLOISTER"
  5806. Case $TEMP = 28
  5807. $TEMP2 = "BARRACKS"
  5808. Case $TEMP = 29
  5809. $TEMP2 = "JAIL_LEVEL_1"
  5810. Case $TEMP = 30
  5811. $TEMP2 = "JAIL_LEVEL_2"
  5812. Case $TEMP = 31
  5813. $TEMP2 = "JAIL_LEVEL_3"
  5814. Case $TEMP = 32
  5815. $TEMP2 = "INNER_CLOISTER"
  5816. Case $TEMP = 33
  5817. $TEMP2 = "CATHEDRAL"
  5818. Case $TEMP = 34
  5819. $TEMP2 = "CATACOMBS_LEVEL_1"
  5820. Case $TEMP = 35
  5821. $TEMP2 = "CATACOMBS_LEVEL_2"
  5822. Case $TEMP = 36
  5823. $TEMP2 = "CATACOMBS_LEVEL_3"
  5824. Case $TEMP = 37
  5825. $TEMP2 = "CATACOMBS_LEVEL_4"
  5826. Case $TEMP = 38
  5827. $TEMP2 = "TRISTRAM"
  5828. Case $TEMP = 39
  5829. $TEMP2 = "MOO_MOO_FARM"
  5830. Case $TEMP = 40
  5831. $TEMP2 = "LUT_GHOLEIN"
  5832. Case $TEMP = 41
  5833. $TEMP2 = "ROCKY_WASTE"
  5834. Case $TEMP = 42
  5835. $TEMP2 = "DRY_HILLS"
  5836. Case $TEMP = 43
  5837. $TEMP2 = "FAR_OASIS"
  5838. Case $TEMP = 44
  5839. $TEMP2 = "LOST_CITY"
  5840. Case $TEMP = 45
  5841. $TEMP2 = "VALLEY_OF_SNAKES"
  5842. Case $TEMP = 46
  5843. $TEMP2 = "CANYON_OF_THE_MAGI"
  5844. Case $TEMP = 47
  5845. $TEMP2 = "SEWERS_LEVEL_1"
  5846. Case $TEMP = 48
  5847. $TEMP2 = "SEWERS_LEVEL_2"
  5848. Case $TEMP = 49
  5849. $TEMP2 = "SEWERS_LEVEL_3"
  5850. Case $TEMP = 50
  5851. $TEMP2 = "HAREM_LEVEL_1"
  5852. Case $TEMP = 51
  5853. $TEMP2 = "HAREM_LEVEL_2"
  5854. Case $TEMP = 52
  5855. $TEMP2 = "PALACE_CELLAR_LEVEL_1"
  5856. Case $TEMP = 53
  5857. $TEMP2 = "PALACE_CELLAR_LEVEL_2"
  5858. Case $TEMP = 54
  5859. $TEMP2 = "PALACE_CELLAR_LEVEL_3"
  5860. Case $TEMP = 55
  5861. $TEMP2 = "STONY_TOMB_LEVEL_1"
  5862. Case $TEMP = 56
  5863. $TEMP2 = "HALLS_OF_THE_DEAD_LEVEL_1"
  5864. Case $TEMP = 57
  5865. $TEMP2 = "HALLS_OF_THE_DEAD_LEVEL_2"
  5866. Case $TEMP = 58
  5867. $TEMP2 = "CLAW_VIPER_TEMPLE_LEVEL_1"
  5868. Case $TEMP = 59
  5869. $TEMP2 = "STONY_TOMB_LEVEL_2"
  5870. Case $TEMP = 60
  5871. $TEMP2 = "HALLS_OF_THE_DEAD_LEVEL_3"
  5872. Case $TEMP = 61
  5873. $TEMP2 = "CLAW_VIPER_TEMPLE_LEVEL_2"
  5874. Case $TEMP = 62
  5875. $TEMP2 = "MAGGOT_LAIR_LEVEL_1"
  5876. Case $TEMP = 63
  5877. $TEMP2 = "MAGGOT_LAIR_LEVEL_2"
  5878. Case $TEMP = 64
  5879. $TEMP2 = "MAGGOT_LAIR_LEVEL_3"
  5880. Case $TEMP = 65
  5881. $TEMP2 = "ANCIENT_TUNNELS"
  5882. Case $TEMP = 66
  5883. $TEMP2 = "TAL_RASHAS_TOMB1"
  5884. Case $TEMP = 67
  5885. $TEMP2 = "TAL_RASHAS_TOMB2"
  5886. Case $TEMP = 68
  5887. $TEMP2 = "TAL_RASHAS_TOMB3"
  5888. Case $TEMP = 69
  5889. $TEMP2 = "TAL_RASHAS_TOMB4"
  5890. Case $TEMP = 70
  5891. $TEMP2 = "TAL_RASHAS_TOMB5"
  5892. Case $TEMP = 71
  5893. $TEMP2 = "TAL_RASHAS_TOMB6"
  5894. Case $TEMP = 72
  5895. $TEMP2 = "TAL_RASHAS_TOMB7"
  5896. Case $TEMP = 73
  5897. $TEMP2 = "DURIELS_LAIR"
  5898. Case $TEMP = 74
  5899. $TEMP2 = "ARCANE_SANCTUARY"
  5900. Case $TEMP = 75
  5901. $TEMP2 = "KURAST_DOCKTOWN"
  5902. Case $TEMP = 76
  5903. $TEMP2 = "SPIDER_FOREST"
  5904. Case $TEMP = 77
  5905. $TEMP2 = "GREAT_MARSH"
  5906. Case $TEMP = 78
  5907. $TEMP2 = "FLAYER_JUNGLE"
  5908. Case $TEMP = 79
  5909. $TEMP2 = "LOWER_KURAST"
  5910. Case $TEMP = 80
  5911. $TEMP2 = "KURAST_BAZAAR"
  5912. Case $TEMP = 81
  5913. $TEMP2 = "UPPER_KURAST"
  5914. Case $TEMP = 82
  5915. $TEMP2 = "KURAST_CAUSEWAY"
  5916. Case $TEMP = 83
  5917. $TEMP2 = "TRAVINCAL"
  5918. Case $TEMP = 84
  5919. $TEMP2 = "SPIDER_CAVE"
  5920. Case $TEMP = 85
  5921. $TEMP2 = "SPIDER_CAVERN"
  5922. Case $TEMP = 86
  5923. $TEMP2 = "SWAMPY_PIT_LEVEL_1"
  5924. Case $TEMP = 87
  5925. $TEMP2 = "SWAMPY_PIT_LEVEL_2"
  5926. Case $TEMP = 88
  5927. $TEMP2 = "FLAYER_DUNGEON_LEVEL_1"
  5928. Case $TEMP = 89
  5929. $TEMP2 = "FLAYER_DUNGEON_LEVEL_2"
  5930. Case $TEMP = 90
  5931. $TEMP2 = "SWAMPY_PIT_LEVEL_3"
  5932. Case $TEMP = 91
  5933. $TEMP2 = "FLAYER_DUNGEON_LEVEL_3"
  5934. Case $TEMP = 92
  5935. $TEMP2 = "SEWERS_LEVEL_1"
  5936. Case $TEMP = 93
  5937. $TEMP2 = "SEWERS_LEVEL_2"
  5938. Case $TEMP = 94
  5939. $TEMP2 = "RUINED_TEMPLE"
  5940. Case $TEMP = 95
  5941. $TEMP2 = "DISUSED_FANE"
  5942. Case $TEMP = 96
  5943. $TEMP2 = "FORGOTTEN_RELIQUARY"
  5944. Case $TEMP = 97
  5945. $TEMP2 = "FORGOTTEN_TEMPLE"
  5946. Case $TEMP = 98
  5947. $TEMP2 = "RUINED_FANE"
  5948. Case $TEMP = 99
  5949. $TEMP2 = "DISUSED_RELIQUARY"
  5950. Case $TEMP = 100
  5951. $TEMP2 = "DURANCE_OF_HATE_LEVEL_1"
  5952. Case $TEMP = 101
  5953. $TEMP2 = "DURANCE_OF_HATE_LEVEL_2"
  5954. Case $TEMP = 102
  5955. $TEMP2 = "DURANCE_OF_HATE_LEVEL_3"
  5956. Case $TEMP = 103
  5957. $TEMP2 = "THE_PANDEMONIUM_FORTRESS"
  5958. Case $TEMP = 104
  5959. $TEMP2 = "OUTER_STEPPES"
  5960. Case $TEMP = 105
  5961. $TEMP2 = "PLAINS_OF_DESPAIR"
  5962. Case $TEMP = 106
  5963. $TEMP2 = "CITY_OF_THE_DAMNED"
  5964. Case $TEMP = 107
  5965. $TEMP2 = "RIVER_OF_FLAME"
  5966. Case $TEMP = 108
  5967. $TEMP2 = "CHAOS_SANCTUM"
  5968. Case $TEMP = 109
  5969. $TEMP2 = "HARROGATH"
  5970. Case $TEMP = 110
  5971. $TEMP2 = "BLOODY_FOOTHILLS"
  5972. Case $TEMP = 111
  5973. $TEMP2 = "FRIGID_HIGHLANDS"
  5974. Case $TEMP = 112
  5975. $TEMP2 = "ARREAT_PLATEAU"
  5976. Case $TEMP = 113
  5977. $TEMP2 = "CRYSTALLINE_PASSAGE"
  5978. Case $TEMP = 114
  5979. $TEMP2 = "FROZEN_RIVER"
  5980. Case $TEMP = 115
  5981. $TEMP2 = "GLACIAL_TRAIL"
  5982. Case $TEMP = 116
  5983. $TEMP2 = "ECHO_CHAMBER"
  5984. Case $TEMP = 117
  5985. $TEMP2 = "FROZEN_TUNDRA"
  5986. Case $TEMP = 118
  5987. $TEMP2 = "ANCIENTS_WAY"
  5988. Case $TEMP = 119
  5989. $TEMP2 = "GLACIAL_CAVES_LEVEL_2"
  5990. Case $TEMP = 120
  5991. $TEMP2 = "ROCKY_SUMMIT"
  5992. Case $TEMP = 121
  5993. $TEMP2 = "NIHLATHAKS_TEMPLE"
  5994. Case $TEMP = 122
  5995. $TEMP2 = "HALLS_OF_ANGUISH"
  5996. Case $TEMP = 123
  5997. $TEMP2 = "HALLS_OF_PAIN"
  5998. Case $TEMP = 124
  5999. $TEMP2 = "HALLS_OF_VAUGHT"
  6000. Case $TEMP = 125
  6001. $TEMP2 = "HELL1"
  6002. Case $TEMP = 126
  6003. $TEMP2 = "HELL2"
  6004. Case $TEMP = 127
  6005. $TEMP2 = "HELL3"
  6006. Case $TEMP = 128
  6007. $TEMP2 = "THE_WORLDSTONE_KEEP_LEVEL_1"
  6008. Case $TEMP = 129
  6009. $TEMP2 = "THE_WORLDSTONE_KEEP_LEVEL_2"
  6010. Case $TEMP = 130
  6011. $TEMP2 = "THE_WORLDSTONE_KEEP_LEVEL_3"
  6012. Case $TEMP = 131
  6013. $TEMP2 = "THRONE_OF_DESTRUCTION"
  6014. Case $TEMP = 132
  6015. $TEMP2 = "THE_WORLDSTONE_CHAMBER"
  6016. EndSelect
  6017. $TEMP3[0] = $TEMP
  6018. $TEMP3[1] = $TEMP2
  6019. Return $TEMP3
  6020. EndFunc
  6021. Func GETCHARCOORDS($PID)
  6022. Local $TEMP
  6023. Dim $TEMP[2]
  6024. $TEMP[0] = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1193169, "short")
  6025. $TEMP[1] = _READD2MEMORY($PID, $D2CLIENT_OFFSET + 1193171, "short")
  6026. Return $TEMP
  6027. EndFunc
  6028. Func DETECTWPSCREEN($PID)
  6029. Local $TEMP
  6030. Local $TEMP2
  6031. $TEMP = GETCHARCOORDS($PID)
  6032. If $TEMP[0] = 2 And $TEMP[1] = 0 Then
  6033. Return True
  6034. Else
  6035. Return False
  6036. EndIf
  6037. EndFunc
  6038. Func GETSTARTACT($PID)
  6039. Local $TEMP
  6040. Local $TEMP2
  6041. $TEMP = GETAREA($PID)
  6042. Select
  6043. Case $TEMP[0] = 1
  6044. $TEMP2 = 1
  6045. Case $TEMP[0] = 40
  6046. $TEMP2 = 2
  6047. Case $TEMP[0] = 75
  6048. $TEMP2 = 3
  6049. Case $TEMP[0] = 103
  6050. $TEMP2 = 4
  6051. Case $TEMP[0] = 109
  6052. $TEMP2 = 5
  6053. Case Else
  6054. $TEMP2 = 0
  6055. EndSelect
  6056. Return $TEMP2
  6057. EndFunc
  6058. Func DETECTINTOWN($PID)
  6059. Local $TEMP
  6060. Local $TEMP2
  6061. $TEMP = GETAREA($PID)
  6062. Select
  6063. Case $TEMP[0] = 1
  6064. $TEMP2 = True
  6065. Case $TEMP[0] = 40
  6066. $TEMP2 = True
  6067. Case $TEMP[0] = 75
  6068. $TEMP2 = True
  6069. Case $TEMP[0] = 103
  6070. $TEMP2 = True
  6071. Case $TEMP[0] = 109
  6072. $TEMP2 = True
  6073. Case Else
  6074. $TEMP2 = False
  6075. EndSelect
  6076. Return $TEMP2
  6077. EndFunc
  6078. Func _MOUSECLICKMINIMIZED($HANDLE, $BUTTON = "left", $X = "", $Y = "", $CLICKS = 1)
  6079. Local $MK_LBUTTON = 1
  6080. Local $WM_LBUTTONDOWN = 513
  6081. Local $WM_LBUTTONUP = 514
  6082. Local $MK_RBUTTON = 2
  6083. Local $WM_RBUTTONDOWN = 516
  6084. Local $WM_RBUTTONUP = 517
  6085. Local $WM_MOUSEMOVE = 512
  6086. Local $I = 0
  6087. Select
  6088. Case $BUTTON = "right"
  6089. $BUTTON = $MK_RBUTTON
  6090. $BUTTONDOWN = $WM_RBUTTONDOWN
  6091. $BUTTONUP = $WM_RBUTTONUP
  6092. Case $BUTTON = "left"
  6093. $BUTTON = $MK_LBUTTON
  6094. $BUTTONDOWN = $WM_LBUTTONDOWN
  6095. $BUTTONUP = $WM_LBUTTONUP
  6096. Case Else
  6097. Exit
  6098. EndSelect
  6099. If $X = "" Or $Y = "" Then
  6100. Exit
  6101. EndIf
  6102. For $I = 1 To $CLICKS
  6103. DllCall("user32.dll", "int", "SendMessage", "hwnd", $HANDLE, "int", $WM_MOUSEMOVE, "int", 0, "long", _MAKELONG($X, $Y))
  6104. DllCall("user32.dll", "int", "SendMessage", "hwnd", $HANDLE, "int", $BUTTONDOWN, "int", $BUTTON, "long", _MAKELONG($X, $Y))
  6105. DllCall("user32.dll", "int", "SendMessage", "hwnd", $HANDLE, "int", $BUTTONUP, "int", $BUTTON, "long", _MAKELONG($X, $Y))
  6106. Next
  6107. EndFunc
  6108. Func _MOUSEMOVEMINIMIZED($HANDLE, $X = "", $Y = "")
  6109. Local $WM_MOUSEMOVE = 512
  6110. Local $I = 0
  6111. If $X = "" Or $Y = "" Then
  6112. Exit
  6113. EndIf
  6114. DllCall("user32.dll", "int", "SendMessage", "hwnd", $HANDLE, "int", $WM_MOUSEMOVE, "int", 0, "long", _MAKELONG($X, $Y))
  6115. EndFunc
  6116. Func _SENDMINIMIZED($HANDLE, $KEYS)
  6117. ControlSend($HANDLE, "", "", $KEYS)
  6118. EndFunc
  6119. Func _MAKELONG($LOWORD, $HIWORD)
  6120. Return BitOR($HIWORD * 65536, BitAND($LOWORD, 65535))
  6121. EndFunc
  6122. Func _INGAMESCRIPTS($RUN)
  6123. Sleep(500)
  6124. $TIME = TimerInit()
  6125. While $CURRENTPOS <> 4
  6126. _DETECTINGAME()
  6127. If $INGAME = True Then
  6128. ExitLoop
  6129. EndIf
  6130. Sleep(800)
  6131. If Round(TimerDiff($TIME), 1) > 35000 Then
  6132. _WHEREAMI()
  6133. If $CURRENTPOS <> 4 Then
  6134. _NAVIGATETO(4)
  6135. _INGAMESCRIPTS($RUN)
  6136. EndIf
  6137. ExitLoop
  6138. EndIf
  6139. WEnd
  6140. $CURRENTPOS = 4
  6141. Select
  6142. Case $RUN = "IpScript"
  6143. If $MINIMIZED = "Yes" Then
  6144. $CURRENTPOS = 4
  6145. EndIf
  6146. $WAITONHOTIP = IniRead(@ScriptDir & "\Settings.ini", "IPSCRIPTOPTIONS", "WaitOnHotIp", "6000")
  6147. _GETGAMEIP()
  6148. If $CURRENTIP = $WANTEDIP1 Then
  6149. TrayTip("SIPBot", $GAMENAMEFINAL & " had the ip: " & $CURRENTIP & " (Hot)", 5, 1)
  6150. $WARMNESS = "Hot"
  6151. _ZLEEP(2000, 5000)
  6152. TrayTip("", "", 5, 1)
  6153. _IDLEINGAME()
  6154. _EXITGAME()
  6155. ElseIf $CURRENTIP = $WANTEDIP2 Then
  6156. TrayTip("SIPBot", $GAMENAMEFINAL & " had the ip: " & $CURRENTIP & " (Hot)", 5, 1)
  6157. $WARMNESS = "Hot"
  6158. _ZLEEP(2000, 5000)
  6159. TrayTip("", "", 5, 1)
  6160. _IDLEINGAME()
  6161. _EXITGAME()
  6162. ElseIf $CURRENTIP = $WANTEDIP3 Then
  6163. TrayTip("SIPBot", $GAMENAMEFINAL & " had the ip: " & $CURRENTIP & " (Hot)", 5, 1)
  6164. $WARMNESS = "Hot"
  6165. _ZLEEP(2000, 5000)
  6166. TrayTip("", "", 5, 1)
  6167. _IDLEINGAME()
  6168. _EXITGAME()
  6169. ElseIf $CURRENTIP = $WANTEDIP4 Then
  6170. TrayTip("SIPBot", $GAMENAMEFINAL & " had the ip: " & $CURRENTIP & " (Hot)", 5, 1)
  6171. $WARMNESS = "Hot"
  6172. _ZLEEP(2000, 5000)
  6173. TrayTip("", "", 5, 1)
  6174. _IDLEINGAME()
  6175. _EXITGAME()
  6176. Else
  6177. TrayTip("SIPBot", $GAMENAMEFINAL & " had the ip: " & $CURRENTIP & " (Cold)", 5, 1)
  6178. $WARMNESS = "Cold"
  6179. _ZLEEP(2000, 5000)
  6180. TrayTip("", "", 5, 1)
  6181. _EXITGAME()
  6182. EndIf
  6183. EndSelect
  6184. EndFunc
  6185. $PID = OPEND2()
  6186. _AUTOLOGINMINI()
  6187. _SELECTCHARMINI()
  6188. _CREATEGAME()
  6189. While 1
  6190. $MSG = GETLASTCHATMSG($PID)
  6191. If $MSG = "s" Then
  6192. Sleep(100)
  6193. Else
  6194. JOINGAME1()
  6195. $KEY = IniRead("joiner.ini", "global", "games", "0")
  6196. IniWrite("joiner.ini", "global", "games", $KEY + 1)
  6197. EndIf
  6198. Sleep(100)
  6199. WEnd
  6200. Func JOINGAME1()
  6201. Sleep(5000)
  6202. $GAME = GETLASTCHATMSG($PID)
  6203. $TITLE1 = "Diablo II"
  6204. ControlSend($TITLE1, "", "", "5")
  6205. Sleep(5000)
  6206. ControlClick($TITLE1, "", "", "left", "1", "716", "460")
  6207. Sleep(200)
  6208. ControlSend($TITLE1, "", "", $GAME)
  6209. Sleep(300)
  6210. ControlSend($TITLE1, "", "", "{TAB}")
  6211. Sleep(300)
  6212. ControlSend($TITLE1, "", "", "okm")
  6213. Sleep(300)
  6214. ControlSend($TITLE1, "", "", "{ENTER}")
  6215. EndFunc
  6216. Func _EXITGAME()
  6217. $TITLE1 = "Diablo II"
  6218. DEBUG(259, "Navigations.au3", "Exiting game.")
  6219. _SENDMINIMIZED($TITLE1, "{Esc}")
  6220. _ZLEEP(500, 600)
  6221. _SENDMINIMIZED($TITLE1, "{up}")
  6222. _ZLEEP(500, 600)
  6223. _SENDMINIMIZED($TITLE1, "{ENTER}")
  6224. Sleep($MINIWAITTIME / 3)
  6225. For $RETRIES = 1 To 20 Step 1
  6226. _DETECTLOBBY()
  6227. If $INLOBBY = True Then
  6228. $CURRENTPOS = 3
  6229. ExitLoop
  6230. Else
  6231. Sleep(500)
  6232. EndIf
  6233. Next
  6234. EndFunc
  6235. ; DeTokenise by myAut2Exe >The Open Source AutoIT/AutoHotKey script decompiler< 2.9 build(146)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement