Advertisement
Guest User

Untitled

a guest
Sep 28th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 244.31 KB | None | 0 0
  1. Global Const $GUI_EVENT_CLOSE = -3
  2. Global Const $GUI_EVENT_MINIMIZE = -4
  3. Global Const $GUI_EVENT_RESTORE = -5
  4. Global Const $GUI_EVENT_MAXIMIZE = -6
  5. Global Const $GUI_EVENT_PRIMARYDOWN = -7
  6. Global Const $GUI_EVENT_PRIMARYUP = -8
  7. Global Const $GUI_EVENT_SECONDARYDOWN = -9
  8. Global Const $GUI_EVENT_SECONDARYUP = -10
  9. Global Const $GUI_EVENT_MOUSEMOVE = -11
  10. Global Const $GUI_EVENT_RESIZED = -12
  11. Global Const $GUI_EVENT_DROPPED = -13
  12. Global Const $GUI_RUNDEFMSG = "GUI_RUNDEFMSG"
  13. Global Const $GUI_AVISTOP = 0
  14. Global Const $GUI_AVISTART = 1
  15. Global Const $GUI_AVICLOSE = 2
  16. Global Const $GUI_CHECKED = 1
  17. Global Const $GUI_INDETERMINATE = 2
  18. Global Const $GUI_UNCHECKED = 4
  19. Global Const $GUI_DROPACCEPTED = 8
  20. Global Const $GUI_NODROPACCEPTED = 4096
  21. Global Const $GUI_ACCEPTFILES = $GUI_DROPACCEPTED
  22. Global Const $GUI_SHOW = 16
  23. Global Const $GUI_HIDE = 32
  24. Global Const $GUI_ENABLE = 64
  25. Global Const $GUI_DISABLE = 128
  26. Global Const $GUI_FOCUS = 256
  27. Global Const $GUI_NOFOCUS = 8192
  28. Global Const $GUI_DEFBUTTON = 512
  29. Global Const $GUI_EXPAND = 1024
  30. Global Const $GUI_ONTOP = 2048
  31. Global Const $GUI_FONTITALIC = 2
  32. Global Const $GUI_FONTUNDER = 4
  33. Global Const $GUI_FONTSTRIKE = 8
  34. Global Const $GUI_DOCKAUTO = 1
  35. Global Const $GUI_DOCKLEFT = 2
  36. Global Const $GUI_DOCKRIGHT = 4
  37. Global Const $GUI_DOCKHCENTER = 8
  38. Global Const $GUI_DOCKTOP = 32
  39. Global Const $GUI_DOCKBOTTOM = 64
  40. Global Const $GUI_DOCKVCENTER = 128
  41. Global Const $GUI_DOCKWIDTH = 256
  42. Global Const $GUI_DOCKHEIGHT = 512
  43. Global Const $GUI_DOCKSIZE = 768
  44. Global Const $GUI_DOCKMENUBAR = 544
  45. Global Const $GUI_DOCKSTATEBAR = 576
  46. Global Const $GUI_DOCKALL = 802
  47. Global Const $GUI_DOCKBORDERS = 102
  48. Global Const $GUI_GR_CLOSE = 1
  49. Global Const $GUI_GR_LINE = 2
  50. Global Const $GUI_GR_BEZIER = 4
  51. Global Const $GUI_GR_MOVE = 6
  52. Global Const $GUI_GR_COLOR = 8
  53. Global Const $GUI_GR_RECT = 10
  54. Global Const $GUI_GR_ELLIPSE = 12
  55. Global Const $GUI_GR_PIE = 14
  56. Global Const $GUI_GR_DOT = 16
  57. Global Const $GUI_GR_PIXEL = 18
  58. Global Const $GUI_GR_HINT = 20
  59. Global Const $GUI_GR_REFRESH = 22
  60. Global Const $GUI_GR_PENSIZE = 24
  61. Global Const $GUI_GR_NOBKCOLOR = -2
  62. Global Const $GUI_BKCOLOR_DEFAULT = -1
  63. Global Const $GUI_BKCOLOR_TRANSPARENT = -2
  64. Global Const $GUI_BKCOLOR_LV_ALTERNATE = -33554432
  65. Global Const $GUI_WS_EX_PARENTDRAG = 1048576
  66. Func _ARRAYADD(ByRef $AVARRAY, $VVALUE)
  67. If Not IsArray($AVARRAY) Then Return SetError(1, 0, -1)
  68. If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, -1)
  69. Local $IUBOUND = UBound($AVARRAY)
  70. ReDim $AVARRAY[$IUBOUND + 1]
  71. $AVARRAY[$IUBOUND] = $VVALUE
  72. Return $IUBOUND
  73. EndFunc
  74. Func _ARRAYBINARYSEARCH(Const ByRef $AVARRAY, $VVALUE, $ISTART = 0, $IEND = 0)
  75. If Not IsArray($AVARRAY) Then Return SetError(1, 0, -1)
  76. If UBound($AVARRAY, 0) <> 1 Then Return SetError(5, 0, -1)
  77. Local $IUBOUND = UBound($AVARRAY) - 1
  78. If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
  79. If $ISTART < 0 Then $ISTART = 0
  80. If $ISTART > $IEND Then Return SetError(4, 0, -1)
  81. Local $IMID = Int(($IEND + $ISTART) / 2)
  82. If $AVARRAY[$ISTART] > $VVALUE Or $AVARRAY[$IEND] < $VVALUE Then Return SetError(2, 0, -1)
  83. While $ISTART <= $IMID And $VVALUE <> $AVARRAY[$IMID]
  84. If $VVALUE < $AVARRAY[$IMID] Then
  85. $IEND = $IMID - 1
  86. Else
  87. $ISTART = $IMID + 1
  88. EndIf
  89. $IMID = Int(($IEND + $ISTART) / 2)
  90. WEnd
  91. If $ISTART > $IEND Then Return SetError(3, 0, -1)
  92. Return $IMID
  93. EndFunc
  94. Func _ARRAYCOMBINATIONS(ByRef $AVARRAY, $ISET, $SDELIM = "")
  95. If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
  96. If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, 0)
  97. Local $IN = UBound($AVARRAY)
  98. Local $IR = $ISET
  99. Local $AIDX[$IR]
  100. For $I = 0 To $IR - 1
  101. $AIDX[$I] = $I
  102. Next
  103. Local $ITOTAL = __ARRAY_COMBINATIONS($IN, $IR)
  104. Local $ILEFT = $ITOTAL
  105. Local $ARESULT[$ITOTAL + 1]
  106. $ARESULT[0] = $ITOTAL
  107. Local $ICOUNT = 1
  108. While $ILEFT > 0
  109. __ARRAY_GETNEXT($IN, $IR, $ILEFT, $ITOTAL, $AIDX)
  110. For $I = 0 To $ISET - 1
  111. $ARESULT[$ICOUNT] &= $AVARRAY[$AIDX[$I]] & $SDELIM
  112. Next
  113. If $SDELIM <> "" Then $ARESULT[$ICOUNT] = StringTrimRight($ARESULT[$ICOUNT], 1)
  114. $ICOUNT += 1
  115. WEnd
  116. Return $ARESULT
  117. EndFunc
  118. Func _ARRAYCONCATENATE(ByRef $AVARRAYTARGET, Const ByRef $AVARRAYSOURCE, $ISTART = 0)
  119. If Not IsArray($AVARRAYTARGET) Then Return SetError(1, 0, 0)
  120. If Not IsArray($AVARRAYSOURCE) Then Return SetError(2, 0, 0)
  121. If UBound($AVARRAYTARGET, 0) <> 1 Then
  122. If UBound($AVARRAYSOURCE, 0) <> 1 Then Return SetError(5, 0, 0)
  123. Return SetError(3, 0, 0)
  124. EndIf
  125. If UBound($AVARRAYSOURCE, 0) <> 1 Then Return SetError(4, 0, 0)
  126. Local $IUBOUNDTARGET = UBound($AVARRAYTARGET) - $ISTART, $IUBOUNDSOURCE = UBound($AVARRAYSOURCE)
  127. ReDim $AVARRAYTARGET[$IUBOUNDTARGET + $IUBOUNDSOURCE]
  128. For $I = $ISTART To $IUBOUNDSOURCE - 1
  129. $AVARRAYTARGET[$IUBOUNDTARGET + $I] = $AVARRAYSOURCE[$I]
  130. Next
  131. Return $IUBOUNDTARGET + $IUBOUNDSOURCE
  132. EndFunc
  133. Func _ARRAYCREATE($V_0, $V_1 = 0, $V_2 = 0, $V_3 = 0, $V_4 = 0, $V_5 = 0, $V_6 = 0, $V_7 = 0, $V_8 = 0, $V_9 = 0, $V_10 = 0, $V_11 = 0, $V_12 = 0, $V_13 = 0, $V_14 = 0, $V_15 = 0, $V_16 = 0, $V_17 = 0, $V_18 = 0, $V_19 = 0, $V_20 = 0)
  134. Local $AV_ARRAY[21] = [$V_0, $V_1, $V_2, $V_3, $V_4, $V_5, $V_6, $V_7, $V_8, $V_9, $V_10, $V_11, $V_12, $V_13, $V_14, $V_15, $V_16, $V_17, $V_18, $V_19, $V_20]
  135. ReDim $AV_ARRAY[@NumParams]
  136. Return $AV_ARRAY
  137. EndFunc
  138. Func _ARRAYDELETE(ByRef $AVARRAY, $IELEMENT)
  139. If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
  140. Local $IUBOUND = UBound($AVARRAY, 1) - 1
  141. If Not $IUBOUND Then
  142. $AVARRAY = ""
  143. Return 0
  144. EndIf
  145. If $IELEMENT < 0 Then $IELEMENT = 0
  146. If $IELEMENT > $IUBOUND Then $IELEMENT = $IUBOUND
  147. Switch UBound($AVARRAY, 0)
  148. Case 1
  149. For $I = $IELEMENT To $IUBOUND - 1
  150. $AVARRAY[$I] = $AVARRAY[$I + 1]
  151. Next
  152. ReDim $AVARRAY[$IUBOUND]
  153. Case 2
  154. Local $ISUBMAX = UBound($AVARRAY, 2) - 1
  155. For $I = $IELEMENT To $IUBOUND - 1
  156. For $J = 0 To $ISUBMAX
  157. $AVARRAY[$I][$J] = $AVARRAY[$I + 1][$J]
  158. Next
  159. Next
  160. ReDim $AVARRAY[$IUBOUND][$ISUBMAX + 1]
  161. Case Else
  162. Return SetError(3, 0, 0)
  163. EndSwitch
  164. Return $IUBOUND
  165. EndFunc
  166. Func _ARRAYDISPLAY(Const ByRef $AVARRAY, $STITLE = "Array: ListView Display", $IITEMLIMIT = -1, $ITRANSPOSE = 0, $SSEPARATOR = "", $SREPLACE = "|", $SHEADER = "")
  167. If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
  168. Local $IDIMENSION = UBound($AVARRAY, 0), $IUBOUND = UBound($AVARRAY, 1) - 1, $ISUBMAX = UBound($AVARRAY, 2) - 1
  169. If $IDIMENSION > 2 Then Return SetError(2, 0, 0)
  170. If $SSEPARATOR = "" Then $SSEPARATOR = Chr(124)
  171. If _ARRAYSEARCH($AVARRAY, $SSEPARATOR, 0, 0, 0, 1) <> -1 Then
  172. For $X = 1 To 255
  173. If $X >= 32 And $X <= 127 Then ContinueLoop
  174. Local $SFIND = _ARRAYSEARCH($AVARRAY, Chr($X), 0, 0, 0, 1)
  175. If $SFIND = -1 Then
  176. $SSEPARATOR = Chr($X)
  177. ExitLoop
  178. EndIf
  179. Next
  180. EndIf
  181. Local $VTMP, $IBUFFER = 64
  182. Local $ICOLLIMIT = 250
  183. Local $IONEVENTMODE = Opt("GUIOnEventMode", 0), $SDATASEPARATORCHAR = Opt("GUIDataSeparatorChar", $SSEPARATOR)
  184. If $ISUBMAX < 0 Then $ISUBMAX = 0
  185. If $ITRANSPOSE Then
  186. $VTMP = $IUBOUND
  187. $IUBOUND = $ISUBMAX
  188. $ISUBMAX = $VTMP
  189. EndIf
  190. If $ISUBMAX > $ICOLLIMIT Then $ISUBMAX = $ICOLLIMIT
  191. If $IITEMLIMIT < 1 Then $IITEMLIMIT = $IUBOUND
  192. If $IUBOUND > $IITEMLIMIT Then $IUBOUND = $IITEMLIMIT
  193. If $SHEADER = "" Then
  194. $SHEADER = "Row "
  195. For $I = 0 To $ISUBMAX
  196. $SHEADER &= $SSEPARATOR & "Col " & $I
  197. Next
  198. EndIf
  199. Local $AVARRAYTEXT[$IUBOUND + 1]
  200. For $I = 0 To $IUBOUND
  201. $AVARRAYTEXT[$I] = "[" & $I & "]"
  202. For $J = 0 To $ISUBMAX
  203. If $IDIMENSION = 1 Then
  204. If $ITRANSPOSE Then
  205. $VTMP = $AVARRAY[$J]
  206. Else
  207. $VTMP = $AVARRAY[$I]
  208. EndIf
  209. Else
  210. If $ITRANSPOSE Then
  211. $VTMP = $AVARRAY[$J][$I]
  212. Else
  213. $VTMP = $AVARRAY[$I][$J]
  214. EndIf
  215. EndIf
  216. $VTMP = StringReplace($VTMP, $SSEPARATOR, $SREPLACE, 0, 1)
  217. $AVARRAYTEXT[$I] &= $SSEPARATOR & $VTMP
  218. $VTMP = StringLen($VTMP)
  219. If $VTMP > $IBUFFER Then $IBUFFER = $VTMP
  220. Next
  221. Next
  222. $IBUFFER += 1
  223. Local Const $_ARRAYCONSTANT_GUI_DOCKBORDERS = 102
  224. Local Const $_ARRAYCONSTANT_GUI_DOCKBOTTOM = 64
  225. Local Const $_ARRAYCONSTANT_GUI_DOCKHEIGHT = 512
  226. Local Const $_ARRAYCONSTANT_GUI_DOCKLEFT = 2
  227. Local Const $_ARRAYCONSTANT_GUI_DOCKRIGHT = 4
  228. Local Const $_ARRAYCONSTANT_GUI_EVENT_CLOSE = -3
  229. Local Const $_ARRAYCONSTANT_LVIF_PARAM = 4
  230. Local Const $_ARRAYCONSTANT_LVIF_TEXT = 1
  231. Local Const $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH = (4096 + 29)
  232. Local Const $_ARRAYCONSTANT_LVM_GETITEMCOUNT = (4096 + 4)
  233. Local Const $_ARRAYCONSTANT_LVM_GETITEMSTATE = (4096 + 44)
  234. Local Const $_ARRAYCONSTANT_LVM_INSERTITEMW = (4096 + 77)
  235. Local Const $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (4096 + 54)
  236. Local Const $_ARRAYCONSTANT_LVM_SETITEMW = (4096 + 76)
  237. Local Const $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT = 32
  238. Local Const $_ARRAYCONSTANT_LVS_EX_GRIDLINES = 1
  239. Local Const $_ARRAYCONSTANT_LVS_SHOWSELALWAYS = 8
  240. Local Const $_ARRAYCONSTANT_WS_EX_CLIENTEDGE = 512
  241. Local Const $_ARRAYCONSTANT_WS_MAXIMIZEBOX = 65536
  242. Local Const $_ARRAYCONSTANT_WS_MINIMIZEBOX = 131072
  243. Local Const $_ARRAYCONSTANT_WS_SIZEBOX = 262144
  244. Local Const $_ARRAYCONSTANT_TAGLVITEM = "int Mask;int Item;int SubItem;int State;int StateMask;ptr Text;int TextMax;int Image;int Param;int Indent;int GroupID;int Columns;ptr pColumns"
  245. Local $IADDMASK = BitOR($_ARRAYCONSTANT_LVIF_TEXT, $_ARRAYCONSTANT_LVIF_PARAM)
  246. Local $TBUFFER = DllStructCreate("wchar Text[" & $IBUFFER & "]"), $PBUFFER = DllStructGetPtr($TBUFFER)
  247. Local $TITEM = DllStructCreate($_ARRAYCONSTANT_TAGLVITEM), $PITEM = DllStructGetPtr($TITEM)
  248. DllStructSetData($TITEM, "Param", 0)
  249. DllStructSetData($TITEM, "Text", $PBUFFER)
  250. DllStructSetData($TITEM, "TextMax", $IBUFFER)
  251. Local $IWIDTH = 640, $IHEIGHT = 480
  252. Local $HGUI = GUICreate($STITLE, $IWIDTH, $IHEIGHT, Default, Default, BitOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX))
  253. Local $AIGUISIZE = WinGetClientSize($HGUI)
  254. Local $HLISTVIEW = GUICtrlCreateListView($SHEADER, 0, 0, $AIGUISIZE[0], $AIGUISIZE[1] - 26, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS)
  255. Local $HCOPY = GUICtrlCreateButton("Copy Selected", 3, $AIGUISIZE[1] - 23, $AIGUISIZE[0] - 6, 20)
  256. GUICtrlSetResizing($HLISTVIEW, $_ARRAYCONSTANT_GUI_DOCKBORDERS)
  257. GUICtrlSetResizing($HCOPY, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
  258. GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_GRIDLINES, $_ARRAYCONSTANT_LVS_EX_GRIDLINES)
  259. GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT)
  260. GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE)
  261. Local $AITEM
  262. For $I = 0 To $IUBOUND
  263. If GUICtrlCreateListViewItem($AVARRAYTEXT[$I], $HLISTVIEW) = 0 Then
  264. $AITEM = StringSplit($AVARRAYTEXT[$I], $SSEPARATOR)
  265. DllStructSetData($TBUFFER, "Text", $AITEM[1])
  266. DllStructSetData($TITEM, "Item", $I)
  267. DllStructSetData($TITEM, "SubItem", 0)
  268. DllStructSetData($TITEM, "Mask", $IADDMASK)
  269. GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_INSERTITEMW, 0, $PITEM)
  270. DllStructSetData($TITEM, "Mask", $_ARRAYCONSTANT_LVIF_TEXT)
  271. For $J = 2 To $AITEM[0]
  272. DllStructSetData($TBUFFER, "Text", $AITEM[$J])
  273. DllStructSetData($TITEM, "SubItem", $J - 1)
  274. GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETITEMW, 0, $PITEM)
  275. Next
  276. EndIf
  277. Next
  278. $IWIDTH = 0
  279. For $I = 0 To $ISUBMAX + 1
  280. $IWIDTH += GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $I, 0)
  281. Next
  282. If $IWIDTH < 250 Then $IWIDTH = 230
  283. $IWIDTH += 20
  284. If $IWIDTH > @DesktopWidth Then $IWIDTH = @DesktopWidth - 100
  285. WinMove($HGUI, "", (@DesktopWidth - $IWIDTH) / 2, Default, $IWIDTH)
  286. GUISetState(@SW_SHOW, $HGUI)
  287. While 1
  288. Switch GUIGetMsg()
  289. Case $_ARRAYCONSTANT_GUI_EVENT_CLOSE
  290. ExitLoop
  291. Case $HCOPY
  292. Local $SCLIP = ""
  293. Local $AICURITEMS[1] = [0]
  294. For $I = 0 To GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0)
  295. If GUICtrlSendMsg($HLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMSTATE, $I, 2) Then
  296. $AICURITEMS[0] += 1
  297. ReDim $AICURITEMS[$AICURITEMS[0] + 1]
  298. $AICURITEMS[$AICURITEMS[0]] = $I
  299. EndIf
  300. Next
  301. If Not $AICURITEMS[0] Then
  302. For $SITEM In $AVARRAYTEXT
  303. $SCLIP &= $SITEM & @CRLF
  304. Next
  305. Else
  306. For $I = 1 To UBound($AICURITEMS) - 1
  307. $SCLIP &= $AVARRAYTEXT[$AICURITEMS[$I]] & @CRLF
  308. Next
  309. EndIf
  310. ClipPut($SCLIP)
  311. EndSwitch
  312. WEnd
  313. GUIDelete($HGUI)
  314. Opt("GUIOnEventMode", $IONEVENTMODE)
  315. Opt("GUIDataSeparatorChar", $SDATASEPARATORCHAR)
  316. Return 1
  317. EndFunc
  318. Func _ARRAYFINDALL(Const ByRef $AVARRAY, $VVALUE, $ISTART = 0, $IEND = 0, $ICASE = 0, $IPARTIAL = 0, $ISUBITEM = 0)
  319. $ISTART = _ARRAYSEARCH($AVARRAY, $VVALUE, $ISTART, $IEND, $ICASE, $IPARTIAL, 1, $ISUBITEM)
  320. If @error Then Return SetError(@error, 0, -1)
  321. Local $IINDEX = 0, $AVRESULT[UBound($AVARRAY)]
  322. Do
  323. $AVRESULT[$IINDEX] = $ISTART
  324. $IINDEX += 1
  325. $ISTART = _ARRAYSEARCH($AVARRAY, $VVALUE, $ISTART + 1, $IEND, $ICASE, $IPARTIAL, 1, $ISUBITEM)
  326. Until @error
  327. ReDim $AVRESULT[$IINDEX]
  328. Return $AVRESULT
  329. EndFunc
  330. Func _ARRAYINSERT(ByRef $AVARRAY, $IELEMENT, $VVALUE = "")
  331. If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
  332. If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, 0)
  333. Local $IUBOUND = UBound($AVARRAY) + 1
  334. ReDim $AVARRAY[$IUBOUND]
  335. For $I = $IUBOUND - 1 To $IELEMENT + 1 Step -1
  336. $AVARRAY[$I] = $AVARRAY[$I - 1]
  337. Next
  338. $AVARRAY[$IELEMENT] = $VVALUE
  339. Return $IUBOUND
  340. EndFunc
  341. Func _ARRAYMAX(Const ByRef $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
  342. Local $IRESULT = _ARRAYMAXINDEX($AVARRAY, $ICOMPNUMERIC, $ISTART, $IEND)
  343. If @error Then Return SetError(@error, 0, "")
  344. Return $AVARRAY[$IRESULT]
  345. EndFunc
  346. Func _ARRAYMAXINDEX(Const ByRef $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
  347. If Not IsArray($AVARRAY) Or UBound($AVARRAY, 0) <> 1 Then Return SetError(1, 0, -1)
  348. If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, -1)
  349. Local $IUBOUND = UBound($AVARRAY) - 1
  350. If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
  351. If $ISTART < 0 Then $ISTART = 0
  352. If $ISTART > $IEND Then Return SetError(2, 0, -1)
  353. Local $IMAXINDEX = $ISTART
  354. If $ICOMPNUMERIC Then
  355. For $I = $ISTART To $IEND
  356. If Number($AVARRAY[$IMAXINDEX]) < Number($AVARRAY[$I]) Then $IMAXINDEX = $I
  357. Next
  358. Else
  359. For $I = $ISTART To $IEND
  360. If $AVARRAY[$IMAXINDEX] < $AVARRAY[$I] Then $IMAXINDEX = $I
  361. Next
  362. EndIf
  363. Return $IMAXINDEX
  364. EndFunc
  365. Func _ARRAYMIN(Const ByRef $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
  366. Local $IRESULT = _ARRAYMININDEX($AVARRAY, $ICOMPNUMERIC, $ISTART, $IEND)
  367. If @error Then Return SetError(@error, 0, "")
  368. Return $AVARRAY[$IRESULT]
  369. EndFunc
  370. Func _ARRAYMININDEX(Const ByRef $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
  371. If Not IsArray($AVARRAY) Then Return SetError(1, 0, -1)
  372. If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, -1)
  373. Local $IUBOUND = UBound($AVARRAY) - 1
  374. If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
  375. If $ISTART < 0 Then $ISTART = 0
  376. If $ISTART > $IEND Then Return SetError(2, 0, -1)
  377. Local $IMININDEX = $ISTART
  378. If $ICOMPNUMERIC Then
  379. For $I = $ISTART To $IEND
  380. If Number($AVARRAY[$IMININDEX]) > Number($AVARRAY[$I]) Then $IMININDEX = $I
  381. Next
  382. Else
  383. For $I = $ISTART To $IEND
  384. If $AVARRAY[$IMININDEX] > $AVARRAY[$I] Then $IMININDEX = $I
  385. Next
  386. EndIf
  387. Return $IMININDEX
  388. EndFunc
  389. Func _ARRAYPERMUTE(ByRef $AVARRAY, $SDELIM = "")
  390. If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
  391. If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, 0)
  392. Local $ISIZE = UBound($AVARRAY), $IFACTORIAL = 1, $AIDX[$ISIZE], $ARESULT[1], $ICOUNT = 1
  393. For $I = 0 To $ISIZE - 1
  394. $AIDX[$I] = $I
  395. Next
  396. For $I = $ISIZE To 1 Step -1
  397. $IFACTORIAL *= $I
  398. Next
  399. ReDim $ARESULT[$IFACTORIAL + 1]
  400. $ARESULT[0] = $IFACTORIAL
  401. __ARRAY_EXETERINTERNAL($AVARRAY, 0, $ISIZE, $SDELIM, $AIDX, $ARESULT, $ICOUNT)
  402. Return $ARESULT
  403. EndFunc
  404. Func _ARRAYPOP(ByRef $AVARRAY)
  405. If (Not IsArray($AVARRAY)) Then Return SetError(1, 0, "")
  406. If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, "")
  407. Local $IUBOUND = UBound($AVARRAY) - 1, $SLASTVAL = $AVARRAY[$IUBOUND]
  408. If Not $IUBOUND Then
  409. $AVARRAY = ""
  410. Else
  411. ReDim $AVARRAY[$IUBOUND]
  412. EndIf
  413. Return $SLASTVAL
  414. EndFunc
  415. Func _ARRAYPUSH(ByRef $AVARRAY, $VVALUE, $IDIRECTION = 0)
  416. If (Not IsArray($AVARRAY)) Then Return SetError(1, 0, 0)
  417. If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, 0)
  418. Local $IUBOUND = UBound($AVARRAY) - 1
  419. If IsArray($VVALUE) Then
  420. Local $IUBOUNDS = UBound($VVALUE)
  421. If ($IUBOUNDS - 1) > $IUBOUND Then Return SetError(2, 0, 0)
  422. If $IDIRECTION Then
  423. For $I = $IUBOUND To $IUBOUNDS Step -1
  424. $AVARRAY[$I] = $AVARRAY[$I - $IUBOUNDS]
  425. Next
  426. For $I = 0 To $IUBOUNDS - 1
  427. $AVARRAY[$I] = $VVALUE[$I]
  428. Next
  429. Else
  430. For $I = 0 To $IUBOUND - $IUBOUNDS
  431. $AVARRAY[$I] = $AVARRAY[$I + $IUBOUNDS]
  432. Next
  433. For $I = 0 To $IUBOUNDS - 1
  434. $AVARRAY[$I + $IUBOUND - $IUBOUNDS + 1] = $VVALUE[$I]
  435. Next
  436. EndIf
  437. Else
  438. If $IDIRECTION Then
  439. For $I = $IUBOUND To 1 Step -1
  440. $AVARRAY[$I] = $AVARRAY[$I - 1]
  441. Next
  442. $AVARRAY[0] = $VVALUE
  443. Else
  444. For $I = 0 To $IUBOUND - 1
  445. $AVARRAY[$I] = $AVARRAY[$I + 1]
  446. Next
  447. $AVARRAY[$IUBOUND] = $VVALUE
  448. EndIf
  449. EndIf
  450. Return 1
  451. EndFunc
  452. Func _ARRAYREVERSE(ByRef $AVARRAY, $ISTART = 0, $IEND = 0)
  453. If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
  454. If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, 0)
  455. Local $VTMP, $IUBOUND = UBound($AVARRAY) - 1
  456. If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
  457. If $ISTART < 0 Then $ISTART = 0
  458. If $ISTART > $IEND Then Return SetError(2, 0, 0)
  459. For $I = $ISTART To Int(($ISTART + $IEND - 1) / 2)
  460. $VTMP = $AVARRAY[$I]
  461. $AVARRAY[$I] = $AVARRAY[$IEND]
  462. $AVARRAY[$IEND] = $VTMP
  463. $IEND -= 1
  464. Next
  465. Return 1
  466. EndFunc
  467. Func _ARRAYSEARCH(Const ByRef $AVARRAY, $VVALUE, $ISTART = 0, $IEND = 0, $ICASE = 0, $IPARTIAL = 0, $IFORWARD = 1, $ISUBITEM = -1)
  468. If Not IsArray($AVARRAY) Then Return SetError(1, 0, -1)
  469. If UBound($AVARRAY, 0) > 2 Or UBound($AVARRAY, 0) < 1 Then Return SetError(2, 0, -1)
  470. Local $IUBOUND = UBound($AVARRAY) - 1
  471. If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
  472. If $ISTART < 0 Then $ISTART = 0
  473. If $ISTART > $IEND Then Return SetError(4, 0, -1)
  474. Local $ISTEP = 1
  475. If Not $IFORWARD Then
  476. Local $ITMP = $ISTART
  477. $ISTART = $IEND
  478. $IEND = $ITMP
  479. $ISTEP = -1
  480. EndIf
  481. Switch UBound($AVARRAY, 0)
  482. Case 1
  483. If Not $IPARTIAL Then
  484. If Not $ICASE Then
  485. For $I = $ISTART To $IEND Step $ISTEP
  486. If $AVARRAY[$I] = $VVALUE Then Return $I
  487. Next
  488. Else
  489. For $I = $ISTART To $IEND Step $ISTEP
  490. If $AVARRAY[$I] == $VVALUE Then Return $I
  491. Next
  492. EndIf
  493. Else
  494. For $I = $ISTART To $IEND Step $ISTEP
  495. If StringInStr($AVARRAY[$I], $VVALUE, $ICASE) > 0 Then Return $I
  496. Next
  497. EndIf
  498. Case 2
  499. Local $IUBOUNDSUB = UBound($AVARRAY, 2) - 1
  500. If $ISUBITEM > $IUBOUNDSUB Then $ISUBITEM = $IUBOUNDSUB
  501. If $ISUBITEM < 0 Then
  502. $ISUBITEM = 0
  503. Else
  504. $IUBOUNDSUB = $ISUBITEM
  505. EndIf
  506. For $J = $ISUBITEM To $IUBOUNDSUB
  507. If Not $IPARTIAL Then
  508. If Not $ICASE Then
  509. For $I = $ISTART To $IEND Step $ISTEP
  510. If $AVARRAY[$I][$J] = $VVALUE Then Return $I
  511. Next
  512. Else
  513. For $I = $ISTART To $IEND Step $ISTEP
  514. If $AVARRAY[$I][$J] == $VVALUE Then Return $I
  515. Next
  516. EndIf
  517. Else
  518. For $I = $ISTART To $IEND Step $ISTEP
  519. If StringInStr($AVARRAY[$I][$J], $VVALUE, $ICASE) > 0 Then Return $I
  520. Next
  521. EndIf
  522. Next
  523. Case Else
  524. Return SetError(7, 0, -1)
  525. EndSwitch
  526. Return SetError(6, 0, -1)
  527. EndFunc
  528. Func _ARRAYSORT(ByRef $AVARRAY, $IDESCENDING = 0, $ISTART = 0, $IEND = 0, $ISUBITEM = 0)
  529. If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
  530. Local $IUBOUND = UBound($AVARRAY) - 1
  531. If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
  532. If $ISTART < 0 Then $ISTART = 0
  533. If $ISTART > $IEND Then Return SetError(2, 0, 0)
  534. Switch UBound($AVARRAY, 0)
  535. Case 1
  536. __ARRAYQUICKSORT1D($AVARRAY, $ISTART, $IEND)
  537. If $IDESCENDING Then _ARRAYREVERSE($AVARRAY, $ISTART, $IEND)
  538. Case 2
  539. Local $ISUBMAX = UBound($AVARRAY, 2) - 1
  540. If $ISUBITEM > $ISUBMAX Then Return SetError(3, 0, 0)
  541. If $IDESCENDING Then
  542. $IDESCENDING = -1
  543. Else
  544. $IDESCENDING = 1
  545. EndIf
  546. __ARRAYQUICKSORT2D($AVARRAY, $IDESCENDING, $ISTART, $IEND, $ISUBITEM, $ISUBMAX)
  547. Case Else
  548. Return SetError(4, 0, 0)
  549. EndSwitch
  550. Return 1
  551. EndFunc
  552. Func __ARRAYQUICKSORT1D(ByRef $AVARRAY, ByRef $ISTART, ByRef $IEND)
  553. If $IEND <= $ISTART Then Return
  554. Local $VTMP
  555. If ($IEND - $ISTART) < 15 Then
  556. Local $VCUR
  557. For $I = $ISTART + 1 To $IEND
  558. $VTMP = $AVARRAY[$I]
  559. If IsNumber($VTMP) Then
  560. For $J = $I - 1 To $ISTART Step -1
  561. $VCUR = $AVARRAY[$J]
  562. If ($VTMP >= $VCUR And IsNumber($VCUR)) Or (Not IsNumber($VCUR) And StringCompare($VTMP, $VCUR) >= 0) Then ExitLoop
  563. $AVARRAY[$J + 1] = $VCUR
  564. Next
  565. Else
  566. For $J = $I - 1 To $ISTART Step -1
  567. If (StringCompare($VTMP, $AVARRAY[$J]) >= 0) Then ExitLoop
  568. $AVARRAY[$J + 1] = $AVARRAY[$J]
  569. Next
  570. EndIf
  571. $AVARRAY[$J + 1] = $VTMP
  572. Next
  573. Return
  574. EndIf
  575. Local $L = $ISTART, $R = $IEND, $VPIVOT = $AVARRAY[Int(($ISTART + $IEND) / 2)], $FNUM = IsNumber($VPIVOT)
  576. Do
  577. If $FNUM Then
  578. While ($AVARRAY[$L] < $VPIVOT And IsNumber($AVARRAY[$L])) Or (Not IsNumber($AVARRAY[$L]) And StringCompare($AVARRAY[$L], $VPIVOT) < 0)
  579. $L += 1
  580. WEnd
  581. While ($AVARRAY[$R] > $VPIVOT And IsNumber($AVARRAY[$R])) Or (Not IsNumber($AVARRAY[$R]) And StringCompare($AVARRAY[$R], $VPIVOT) > 0)
  582. $R -= 1
  583. WEnd
  584. Else
  585. While (StringCompare($AVARRAY[$L], $VPIVOT) < 0)
  586. $L += 1
  587. WEnd
  588. While (StringCompare($AVARRAY[$R], $VPIVOT) > 0)
  589. $R -= 1
  590. WEnd
  591. EndIf
  592. If $L <= $R Then
  593. $VTMP = $AVARRAY[$L]
  594. $AVARRAY[$L] = $AVARRAY[$R]
  595. $AVARRAY[$R] = $VTMP
  596. $L += 1
  597. $R -= 1
  598. EndIf
  599. Until $L > $R
  600. __ARRAYQUICKSORT1D($AVARRAY, $ISTART, $R)
  601. __ARRAYQUICKSORT1D($AVARRAY, $L, $IEND)
  602. EndFunc
  603. Func __ARRAYQUICKSORT2D(ByRef $AVARRAY, ByRef $ISTEP, ByRef $ISTART, ByRef $IEND, ByRef $ISUBITEM, ByRef $ISUBMAX)
  604. If $IEND <= $ISTART Then Return
  605. Local $VTMP, $L = $ISTART, $R = $IEND, $VPIVOT = $AVARRAY[Int(($ISTART + $IEND) / 2)][$ISUBITEM], $FNUM = IsNumber($VPIVOT)
  606. Do
  607. If $FNUM Then
  608. While ($ISTEP * ($AVARRAY[$L][$ISUBITEM] - $VPIVOT) < 0 And IsNumber($AVARRAY[$L][$ISUBITEM])) Or (Not IsNumber($AVARRAY[$L][$ISUBITEM]) And $ISTEP * StringCompare($AVARRAY[$L][$ISUBITEM], $VPIVOT) < 0)
  609. $L += 1
  610. WEnd
  611. While ($ISTEP * ($AVARRAY[$R][$ISUBITEM] - $VPIVOT) > 0 And IsNumber($AVARRAY[$R][$ISUBITEM])) Or (Not IsNumber($AVARRAY[$R][$ISUBITEM]) And $ISTEP * StringCompare($AVARRAY[$R][$ISUBITEM], $VPIVOT) > 0)
  612. $R -= 1
  613. WEnd
  614. Else
  615. While ($ISTEP * StringCompare($AVARRAY[$L][$ISUBITEM], $VPIVOT) < 0)
  616. $L += 1
  617. WEnd
  618. While ($ISTEP * StringCompare($AVARRAY[$R][$ISUBITEM], $VPIVOT) > 0)
  619. $R -= 1
  620. WEnd
  621. EndIf
  622. If $L <= $R Then
  623. For $I = 0 To $ISUBMAX
  624. $VTMP = $AVARRAY[$L][$I]
  625. $AVARRAY[$L][$I] = $AVARRAY[$R][$I]
  626. $AVARRAY[$R][$I] = $VTMP
  627. Next
  628. $L += 1
  629. $R -= 1
  630. EndIf
  631. Until $L > $R
  632. __ARRAYQUICKSORT2D($AVARRAY, $ISTEP, $ISTART, $R, $ISUBITEM, $ISUBMAX)
  633. __ARRAYQUICKSORT2D($AVARRAY, $ISTEP, $L, $IEND, $ISUBITEM, $ISUBMAX)
  634. EndFunc
  635. Func _ARRAYSWAP(ByRef $VITEM1, ByRef $VITEM2)
  636. Local $VTMP = $VITEM1
  637. $VITEM1 = $VITEM2
  638. $VITEM2 = $VTMP
  639. EndFunc
  640. Func _ARRAYTOCLIP(Const ByRef $AVARRAY, $ISTART = 0, $IEND = 0)
  641. Local $SRESULT = _ARRAYTOSTRING($AVARRAY, @CR, $ISTART, $IEND)
  642. If @error Then Return SetError(@error, 0, 0)
  643. Return ClipPut($SRESULT)
  644. EndFunc
  645. Func _ARRAYTOSTRING(Const ByRef $AVARRAY, $SDELIM = "|", $ISTART = 0, $IEND = 0)
  646. If Not IsArray($AVARRAY) Then Return SetError(1, 0, "")
  647. If UBound($AVARRAY, 0) <> 1 Then Return SetError(3, 0, "")
  648. Local $SRESULT, $IUBOUND = UBound($AVARRAY) - 1
  649. If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
  650. If $ISTART < 0 Then $ISTART = 0
  651. If $ISTART > $IEND Then Return SetError(2, 0, "")
  652. For $I = $ISTART To $IEND
  653. $SRESULT &= $AVARRAY[$I] & $SDELIM
  654. Next
  655. Return StringTrimRight($SRESULT, StringLen($SDELIM))
  656. EndFunc
  657. Func _ARRAYTRIM(ByRef $AVARRAY, $ITRIMNUM, $IDIRECTION = 0, $ISTART = 0, $IEND = 0)
  658. If Not IsArray($AVARRAY) Then Return SetError(1, 0, 0)
  659. If UBound($AVARRAY, 0) <> 1 Then Return SetError(2, 0, 0)
  660. Local $IUBOUND = UBound($AVARRAY) - 1
  661. If $IEND < 1 Or $IEND > $IUBOUND Then $IEND = $IUBOUND
  662. If $ISTART < 0 Then $ISTART = 0
  663. If $ISTART > $IEND Then Return SetError(5, 0, 0)
  664. If $IDIRECTION Then
  665. For $I = $ISTART To $IEND
  666. $AVARRAY[$I] = StringTrimRight($AVARRAY[$I], $ITRIMNUM)
  667. Next
  668. Else
  669. For $I = $ISTART To $IEND
  670. $AVARRAY[$I] = StringTrimLeft($AVARRAY[$I], $ITRIMNUM)
  671. Next
  672. EndIf
  673. Return 1
  674. EndFunc
  675. Func _ARRAYUNIQUE($AARRAY, $IDIMENSION = 1, $IBASE = 0, $ICASE = 0, $VDELIM = "|")
  676. Local $IUBOUNDDIM
  677. If $VDELIM = "|" Then $VDELIM = Chr(1)
  678. If Not IsArray($AARRAY) Then Return SetError(1, 0, 0)
  679. If Not $IDIMENSION > 0 Then
  680. Return SetError(3, 0, 0)
  681. Else
  682. $IUBOUNDDIM = UBound($AARRAY, 1)
  683. If @error Then Return SetError(3, 0, 0)
  684. If $IDIMENSION > 1 Then
  685. Local $AARRAYTMP[1]
  686. For $I = 0 To $IUBOUNDDIM - 1
  687. _ARRAYADD($AARRAYTMP, $AARRAY[$I][$IDIMENSION - 1])
  688. Next
  689. _ARRAYDELETE($AARRAYTMP, 0)
  690. Else
  691. If UBound($AARRAY, 0) = 1 Then
  692. Dim $AARRAYTMP[1]
  693. For $I = 0 To $IUBOUNDDIM - 1
  694. _ARRAYADD($AARRAYTMP, $AARRAY[$I])
  695. Next
  696. _ARRAYDELETE($AARRAYTMP, 0)
  697. Else
  698. Dim $AARRAYTMP[1]
  699. For $I = 0 To $IUBOUNDDIM - 1
  700. _ARRAYADD($AARRAYTMP, $AARRAY[$I][$IDIMENSION - 1])
  701. Next
  702. _ARRAYDELETE($AARRAYTMP, 0)
  703. EndIf
  704. EndIf
  705. EndIf
  706. Local $SHOLD
  707. For $ICC = $IBASE To UBound($AARRAYTMP) - 1
  708. If Not StringInStr($VDELIM & $SHOLD, $VDELIM & $AARRAYTMP[$ICC] & $VDELIM, $ICASE) Then $SHOLD &= $AARRAYTMP[$ICC] & $VDELIM
  709. Next
  710. If $SHOLD Then
  711. $AARRAYTMP = StringSplit(StringTrimRight($SHOLD, StringLen($VDELIM)), $VDELIM, 1)
  712. Return $AARRAYTMP
  713. EndIf
  714. Return SetError(2, 0, 0)
  715. EndFunc
  716. Func __ARRAY_EXETERINTERNAL(ByRef $AVARRAY, $ISTART, $ISIZE, $SDELIM, ByRef $AIDX, ByRef $ARESULT, ByRef $ICOUNT)
  717. If $ISTART == $ISIZE - 1 Then
  718. For $I = 0 To $ISIZE - 1
  719. $ARESULT[$ICOUNT] &= $AVARRAY[$AIDX[$I]] & $SDELIM
  720. Next
  721. If $SDELIM <> "" Then $ARESULT[$ICOUNT] = StringTrimRight($ARESULT[$ICOUNT], 1)
  722. $ICOUNT += 1
  723. Else
  724. Local $ITEMP
  725. For $I = $ISTART To $ISIZE - 1
  726. $ITEMP = $AIDX[$I]
  727. $AIDX[$I] = $AIDX[$ISTART]
  728. $AIDX[$ISTART] = $ITEMP
  729. __ARRAY_EXETERINTERNAL($AVARRAY, $ISTART + 1, $ISIZE, $SDELIM, $AIDX, $ARESULT, $ICOUNT)
  730. $AIDX[$ISTART] = $AIDX[$I]
  731. $AIDX[$I] = $ITEMP
  732. Next
  733. EndIf
  734. EndFunc
  735. Func __ARRAY_COMBINATIONS($IN, $IR)
  736. Local $I_TOTAL = 1
  737. For $I = $IR To 1 Step -1
  738. $I_TOTAL *= ($IN / $I)
  739. $IN -= 1
  740. Next
  741. Return Round($I_TOTAL)
  742. EndFunc
  743. Func __ARRAY_GETNEXT($IN, $IR, ByRef $ILEFT, $ITOTAL, ByRef $AIDX)
  744. If $ILEFT == $ITOTAL Then
  745. $ILEFT -= 1
  746. Return
  747. EndIf
  748. Local $I = $IR - 1
  749. While $AIDX[$I] == $IN - $IR + $I
  750. $I -= 1
  751. WEnd
  752. $AIDX[$I] += 1
  753. For $J = $I + 1 To $IR - 1
  754. $AIDX[$J] = $AIDX[$I] + $J - $I
  755. Next
  756. $ILEFT -= 1
  757. EndFunc
  758. Global Const $SBARS_SIZEGRIP = 256
  759. Global Const $SBT_TOOLTIPS = 2048
  760. Global Const $SBARS_TOOLTIPS = 2048
  761. Global Const $SBT_SUNKEN = 0
  762. Global Const $SBT_NOBORDERS = 256
  763. Global Const $SBT_POPOUT = 512
  764. Global Const $SBT_RTLREADING = 1024
  765. Global Const $SBT_NOTABPARSING = 2048
  766. Global Const $SBT_OWNERDRAW = 4096
  767. Global Const $__STATUSBARCONSTANT_WM_USER = 1024
  768. Global Const $SB_GETBORDERS = ($__STATUSBARCONSTANT_WM_USER + 7)
  769. Global Const $SB_GETICON = ($__STATUSBARCONSTANT_WM_USER + 20)
  770. Global Const $SB_GETPARTS = ($__STATUSBARCONSTANT_WM_USER + 6)
  771. Global Const $SB_GETRECT = ($__STATUSBARCONSTANT_WM_USER + 10)
  772. Global Const $SB_GETTEXTA = ($__STATUSBARCONSTANT_WM_USER + 2)
  773. Global Const $SB_GETTEXTW = ($__STATUSBARCONSTANT_WM_USER + 13)
  774. Global Const $SB_GETTEXT = $SB_GETTEXTA
  775. Global Const $SB_GETTEXTLENGTHA = ($__STATUSBARCONSTANT_WM_USER + 3)
  776. Global Const $SB_GETTEXTLENGTHW = ($__STATUSBARCONSTANT_WM_USER + 12)
  777. Global Const $SB_GETTEXTLENGTH = $SB_GETTEXTLENGTHA
  778. Global Const $SB_GETTIPTEXTA = ($__STATUSBARCONSTANT_WM_USER + 18)
  779. Global Const $SB_GETTIPTEXTW = ($__STATUSBARCONSTANT_WM_USER + 19)
  780. Global Const $SB_GETUNICODEFORMAT = 8192 + 6
  781. Global Const $SB_ISSIMPLE = ($__STATUSBARCONSTANT_WM_USER + 14)
  782. Global Const $SB_SETBKCOLOR = 8192 + 1
  783. Global Const $SB_SETICON = ($__STATUSBARCONSTANT_WM_USER + 15)
  784. Global Const $SB_SETMINHEIGHT = ($__STATUSBARCONSTANT_WM_USER + 8)
  785. Global Const $SB_SETPARTS = ($__STATUSBARCONSTANT_WM_USER + 4)
  786. Global Const $SB_SETTEXTA = ($__STATUSBARCONSTANT_WM_USER + 1)
  787. Global Const $SB_SETTEXTW = ($__STATUSBARCONSTANT_WM_USER + 11)
  788. Global Const $SB_SETTEXT = $SB_SETTEXTA
  789. Global Const $SB_SETTIPTEXTA = ($__STATUSBARCONSTANT_WM_USER + 16)
  790. Global Const $SB_SETTIPTEXTW = ($__STATUSBARCONSTANT_WM_USER + 17)
  791. Global Const $SB_SETUNICODEFORMAT = 8192 + 5
  792. Global Const $SB_SIMPLE = ($__STATUSBARCONSTANT_WM_USER + 9)
  793. Global Const $SB_SIMPLEID = 255
  794. Global Const $SBN_FIRST = -880
  795. Global Const $SBN_SIMPLEMODECHANGE = $SBN_FIRST - 0
  796. Global Const $GMEM_FIXED = 0
  797. Global Const $GMEM_MOVEABLE = 2
  798. Global Const $GMEM_NOCOMPACT = 16
  799. Global Const $GMEM_NODISCARD = 32
  800. Global Const $GMEM_ZEROINIT = 64
  801. Global Const $GMEM_MODIFY = 128
  802. Global Const $GMEM_DISCARDABLE = 256
  803. Global Const $GMEM_NOT_BANKED = 4096
  804. Global Const $GMEM_SHARE = 8192
  805. Global Const $GMEM_DDESHARE = 8192
  806. Global Const $GMEM_NOTIFY = 16384
  807. Global Const $GMEM_LOWER = 4096
  808. Global Const $GMEM_VALID_FLAGS = 32626
  809. Global Const $GMEM_INVALID_HANDLE = 32768
  810. Global Const $GPTR = $GMEM_FIXED + $GMEM_ZEROINIT
  811. Global Const $GHND = $GMEM_MOVEABLE + $GMEM_ZEROINIT
  812. Global Const $MEM_COMMIT = 4096
  813. Global Const $MEM_RESERVE = 8192
  814. Global Const $MEM_TOP_DOWN = 1048576
  815. Global Const $MEM_SHARED = 134217728
  816. Global Const $PAGE_NOACCESS = 1
  817. Global Const $PAGE_READONLY = 2
  818. Global Const $PAGE_READWRITE = 4
  819. Global Const $PAGE_EXECUTE = 16
  820. Global Const $PAGE_EXECUTE_READ = 32
  821. Global Const $PAGE_EXECUTE_READWRITE = 64
  822. Global Const $PAGE_GUARD = 256
  823. Global Const $PAGE_NOCACHE = 512
  824. Global Const $MEM_DECOMMIT = 16384
  825. Global Const $MEM_RELEASE = 32768
  826. Global Const $TAGPOINT = "long X;long Y"
  827. Global Const $TAGRECT = "long Left;long Top;long Right;long Bottom"
  828. Global Const $TAGSIZE = "long X;long Y"
  829. Global Const $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight"
  830. Global Const $TAGFILETIME = "dword Lo;dword Hi"
  831. Global Const $TAGSYSTEMTIME = "word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds"
  832. Global Const $TAGTIME_ZONE_INFORMATION = "long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias"
  833. Global Const $TAGNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;INT Code"
  834. Global Const $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param"
  835. Global Const $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;ptr szText"
  836. Global Const $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;ptr szText;int Why"
  837. Global Const $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param"
  838. 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"
  839. Global Const $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TAGSYSTEMTIME
  840. Global Const $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TAGSYSTEMTIME & ";ptr pDisplay;wchar Display[64]"
  841. Global Const $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;long SizeX;long SizeY"
  842. Global Const $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TAGSYSTEMTIME
  843. Global Const $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TAGSYSTEMTIME & ";dword Flags"
  844. 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"
  845. Global Const $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved"
  846. Global Const $TAGGDIPENCODERPARAM = "byte GUID[16];dword Count;dword Type;ptr Values"
  847. Global Const $TAGGDIPENCODERPARAMS = "dword Count;byte Params[0]"
  848. Global Const $TAGGDIPRECTF = "float X;float Y;float Width;float Height"
  849. Global Const $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs"
  850. Global Const $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc"
  851. 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"
  852. Global Const $TAGGDIPPENCODERPARAMS = "dword Count;byte Params[0]"
  853. 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"
  854. Global Const $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam"
  855. Global Const $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT
  856. Global Const $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem"
  857. Global Const $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1"
  858. Global Const $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value"
  859. Global Const $TAGLVFINDINFO = "uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction"
  860. Global Const $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem"
  861. 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"
  862. Global Const $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "long ActionX;long ActionY;lparam Param"
  863. 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"
  864. Global Const $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM
  865. Global Const $TAGNMLVFINDITEM = $TAGNMHDR & ";" & $TAGLVFINDINFO
  866. Global Const $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam"
  867. Global Const $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags"
  868. Global Const $TAGNMLVKEYDOWN = $TAGNMHDR & ";align 1;word VKey;uint Flags"
  869. Global Const $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY"
  870. Global Const $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TAGSYSTEMTIME
  871. 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"
  872. 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"
  873. 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"
  874. Global Const $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TAGSYSTEMTIME & ";int DayState;ptr pDayState"
  875. 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"
  876. Global Const $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result"
  877. Global Const $TAGNMTCKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags"
  878. Global Const $TAGTVITEM = "uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param"
  879. Global Const $TAGTVITEMEX = $TAGTVITEM & ";int Integral"
  880. 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"
  881. 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"
  882. Global Const $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM
  883. Global Const $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam"
  884. Global Const $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item"
  885. Global Const $TAGNMTVKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags"
  886. Global Const $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo"
  887. Global Const $TAGTOKEN_PRIVILEGES = "dword Count;int64 LUID;dword Attributes"
  888. Global Const $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT
  889. Global Const $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData"
  890. 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"
  891. 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"
  892. Global Const $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak"
  893. Global Const $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;" & "long ActualLeft;long ActualTop;long ActualRight;long ActualBottom"
  894. Global Const $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;laram lParam"
  895. Global Const $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM"
  896. Global Const $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;long CLeft;long CTop;long CRight;long CBottom;" & "long BLeft;long BTop;long BRight;long BBottom"
  897. Global Const $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow"
  898. 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
  899. Global Const $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags"
  900. Global Const $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;align;dword_ptr Param;int_ptr String"
  901. Global Const $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax"
  902. Global Const $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider"
  903. Global Const $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;dword Offset;dword OffsetHigh;handle hEvent"
  904. 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"
  905. 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"
  906. Global Const $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format"
  907. Global Const $TAGGUID = "dword Data1;word Data2;word Data3;byte Data4[8]"
  908. Global Const $TAGWINDOWPLACEMENT = "uint length; uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]"
  909. Global Const $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags"
  910. Global Const $TAGSCROLLINFO = "uint cbSize;uint fMask;int nMin;int nMax;uint nPage;int nPos;int nTrackPos"
  911. Global Const $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]"
  912. 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]"
  913. Global Const $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo"
  914. Global Const $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID"
  915. 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"
  916. Global Const $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle"
  917. 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]"
  918. Global Const $PROCESS_TERMINATE = 1
  919. Global Const $PROCESS_CREATE_THREAD = 2
  920. Global Const $PROCESS_SET_SESSIONID = 4
  921. Global Const $PROCESS_VM_OPERATION = 8
  922. Global Const $PROCESS_VM_READ = 16
  923. Global Const $PROCESS_VM_WRITE = 32
  924. Global Const $PROCESS_DUP_HANDLE = 64
  925. Global Const $PROCESS_CREATE_PROCESS = 128
  926. Global Const $PROCESS_SET_QUOTA = 256
  927. Global Const $PROCESS_SET_INFORMATION = 512
  928. Global Const $PROCESS_QUERY_INFORMATION = 1024
  929. Global Const $PROCESS_SUSPEND_RESUME = 2048
  930. Global Const $PROCESS_ALL_ACCESS = 2035711
  931. Global Const $ERROR_NO_TOKEN = 1008
  932. Global Const $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
  933. Global Const $SE_AUDIT_NAME = "SeAuditPrivilege"
  934. Global Const $SE_BACKUP_NAME = "SeBackupPrivilege"
  935. Global Const $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
  936. Global Const $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
  937. Global Const $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
  938. Global Const $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
  939. Global Const $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
  940. Global Const $SE_DEBUG_NAME = "SeDebugPrivilege"
  941. Global Const $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
  942. Global Const $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
  943. Global Const $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
  944. Global Const $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
  945. Global Const $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
  946. Global Const $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
  947. Global Const $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
  948. Global Const $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
  949. Global Const $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
  950. Global Const $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
  951. Global Const $SE_RESTORE_NAME = "SeRestorePrivilege"
  952. Global Const $SE_SECURITY_NAME = "SeSecurityPrivilege"
  953. Global Const $SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
  954. Global Const $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
  955. Global Const $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
  956. Global Const $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
  957. Global Const $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
  958. Global Const $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
  959. Global Const $SE_TCB_NAME = "SeTcbPrivilege"
  960. Global Const $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
  961. Global Const $SE_UNDOCK_NAME = "SeUndockPrivilege"
  962. Global Const $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1
  963. Global Const $SE_PRIVILEGE_ENABLED = 2
  964. Global Const $SE_PRIVILEGE_REMOVED = 4
  965. Global Const $SE_PRIVILEGE_USED_FOR_ACCESS = -2147483648
  966. Global Const $TOKENUSER = 1
  967. Global Const $TOKENGROUPS = 2
  968. Global Const $TOKENPRIVILEGES = 3
  969. Global Const $TOKENOWNER = 4
  970. Global Const $TOKENPRIMARYGROUP = 5
  971. Global Const $TOKENDEFAULTDACL = 6
  972. Global Const $TOKENSOURCE = 7
  973. Global Const $TOKENTYPE = 8
  974. Global Const $TOKENIMPERSONATIONLEVEL = 9
  975. Global Const $TOKENSTATISTICS = 10
  976. Global Const $TOKENRESTRICTEDSIDS = 11
  977. Global Const $TOKENSESSIONID = 12
  978. Global Const $TOKENGROUPSANDPRIVILEGES = 13
  979. Global Const $TOKENSESSIONREFERENCE = 14
  980. Global Const $TOKENSANDBOXINERT = 15
  981. Global Const $TOKENAUDITPOLICY = 16
  982. Global Const $TOKENORIGIN = 17
  983. Global Const $TOKENELEVATIONTYPE = 18
  984. Global Const $TOKENLINKEDTOKEN = 19
  985. Global Const $TOKENELEVATION = 20
  986. Global Const $TOKENHASRESTRICTIONS = 21
  987. Global Const $TOKENACCESSINFORMATION = 22
  988. Global Const $TOKENVIRTUALIZATIONALLOWED = 23
  989. Global Const $TOKENVIRTUALIZATIONENABLED = 24
  990. Global Const $TOKENINTEGRITYLEVEL = 25
  991. Global Const $TOKENUIACCESS = 26
  992. Global Const $TOKENMANDATORYPOLICY = 27
  993. Global Const $TOKENLOGONSID = 28
  994. Global Const $TOKEN_ASSIGN_PRIMARY = 1
  995. Global Const $TOKEN_DUPLICATE = 2
  996. Global Const $TOKEN_IMPERSONATE = 4
  997. Global Const $TOKEN_QUERY = 8
  998. Global Const $TOKEN_QUERY_SOURCE = 16
  999. Global Const $TOKEN_ADJUST_PRIVILEGES = 32
  1000. Global Const $TOKEN_ADJUST_GROUPS = 64
  1001. Global Const $TOKEN_ADJUST_DEFAULT = 128
  1002. Global Const $TOKEN_ADJUST_SESSIONID = 256
  1003. Func _WINAPI_GETLASTERROR($CURERR = @error, $CUREXT = @extended)
  1004. Local $ARESULT = DllCall("kernel32.dll", "dword", "GetLastError")
  1005. Return SetError($CURERR, $CUREXT, $ARESULT[0])
  1006. EndFunc
  1007. Func _WINAPI_SETLASTERROR($IERRCODE, $CURERR = @error, $CUREXT = @extended)
  1008. DllCall("kernel32.dll", "none", "SetLastError", "dword", $IERRCODE)
  1009. Return SetError($CURERR, $CUREXT)
  1010. EndFunc
  1011. Func _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN, $FDISABLEALL, $PNEWSTATE, $IBUFFERLEN, $PPREVSTATE = 0, $PREQUIRED = 0)
  1012. Local $ARESULT = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $HTOKEN, "bool", $FDISABLEALL, "ptr", $PNEWSTATE, "dword", $IBUFFERLEN, "ptr", $PPREVSTATE, "ptr", $PREQUIRED)
  1013. If @error Then Return SetError(@error, @extended, False)
  1014. Return $ARESULT[0]
  1015. EndFunc
  1016. Func _SECURITY__GETACCOUNTSID($SACCOUNT, $SSYSTEM = "")
  1017. Local $AACCT = _SECURITY__LOOKUPACCOUNTNAME($SACCOUNT, $SSYSTEM)
  1018. If @error Then Return SetError(@error, 0, 0)
  1019. Return _SECURITY__STRINGSIDTOSID($AACCT[0])
  1020. EndFunc
  1021. Func _SECURITY__GETLENGTHSID($PSID)
  1022. If Not _SECURITY__ISVALIDSID($PSID) Then Return SetError(-1, 0, 0)
  1023. Local $ARESULT = DllCall("advapi32.dll", "dword", "GetLengthSid", "ptr", $PSID)
  1024. If @error Then Return SetError(@error, @extended, 0)
  1025. Return $ARESULT[0]
  1026. EndFunc
  1027. Func _SECURITY__GETTOKENINFORMATION($HTOKEN, $ICLASS)
  1028. Local $ARESULT = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "ptr", 0, "dword", 0, "dword*", 0)
  1029. If @error Then Return SetError(@error, @extended, 0)
  1030. If Not $ARESULT[0] Then Return 0
  1031. Local $TBUFFER = DllStructCreate("byte[" & $ARESULT[5] & "]")
  1032. Local $PBUFFER = DllStructGetPtr($TBUFFER)
  1033. $ARESULT = DllCall("advapi32.dll", "bool", "GetTokenInformation", "handle", $HTOKEN, "int", $ICLASS, "ptr", $PBUFFER, "dword", $ARESULT[5], "dword*", 0)
  1034. If @error Then Return SetError(@error, @extended, 0)
  1035. If Not $ARESULT[0] Then Return 0
  1036. Return $TBUFFER
  1037. EndFunc
  1038. Func _SECURITY__IMPERSONATESELF($ILEVEL = 2)
  1039. Local $ARESULT = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $ILEVEL)
  1040. If @error Then Return SetError(@error, @extended, False)
  1041. Return $ARESULT[0]
  1042. EndFunc
  1043. Func _SECURITY__ISVALIDSID($PSID)
  1044. Local $ARESULT = DllCall("advapi32.dll", "bool", "IsValidSid", "ptr", $PSID)
  1045. If @error Then Return SetError(@error, @extended, False)
  1046. Return $ARESULT[0]
  1047. EndFunc
  1048. Func _SECURITY__LOOKUPACCOUNTNAME($SACCOUNT, $SSYSTEM = "")
  1049. Local $TDATA = DllStructCreate("byte SID[256]")
  1050. Local $PSID = DllStructGetPtr($TDATA, "SID")
  1051. Local $ARESULT = DllCall("advapi32.dll", "bool", "LookupAccountNameW", "wstr", $SSYSTEM, "wstr", $SACCOUNT, "ptr", $PSID, "dword*", 256, "wstr", "", "dword*", 256, "int*", 0)
  1052. If @error Then Return SetError(@error, @extended, 0)
  1053. If Not $ARESULT[0] Then Return 0
  1054. Local $AACCT[3]
  1055. $AACCT[0] = _SECURITY__SIDTOSTRINGSID($PSID)
  1056. $AACCT[1] = $ARESULT[5]
  1057. $AACCT[2] = $ARESULT[7]
  1058. Return $AACCT
  1059. EndFunc
  1060. Func _SECURITY__LOOKUPACCOUNTSID($VSID)
  1061. Local $PSID, $AACCT[3]
  1062. If IsString($VSID) Then
  1063. Local $TSID = _SECURITY__STRINGSIDTOSID($VSID)
  1064. $PSID = DllStructGetPtr($TSID)
  1065. Else
  1066. $PSID = $VSID
  1067. EndIf
  1068. If Not _SECURITY__ISVALIDSID($PSID) Then Return SetError(-1, 0, 0)
  1069. Local $ARESULT = DllCall("advapi32.dll", "bool", "LookupAccountSidW", "ptr", 0, "ptr", $PSID, "wstr", "", "dword*", 256, "wstr", "", "dword*", 256, "int*", 0)
  1070. If @error Then Return SetError(@error, @extended, 0)
  1071. If Not $ARESULT[0] Then Return 0
  1072. Local $AACCT[3]
  1073. $AACCT[0] = $ARESULT[3]
  1074. $AACCT[1] = $ARESULT[5]
  1075. $AACCT[2] = $ARESULT[7]
  1076. Return $AACCT
  1077. EndFunc
  1078. Func _SECURITY__LOOKUPPRIVILEGEVALUE($SSYSTEM, $SNAME)
  1079. Local $ARESULT = DllCall("advapi32.dll", "int", "LookupPrivilegeValueW", "wstr", $SSYSTEM, "wstr", $SNAME, "int64*", 0)
  1080. If @error Then Return SetError(@error, @extended, 0)
  1081. Return SetError(0, $ARESULT[0], $ARESULT[3])
  1082. EndFunc
  1083. Func _SECURITY__OPENPROCESSTOKEN($HPROCESS, $IACCESS)
  1084. Local $ARESULT = DllCall("advapi32.dll", "int", "OpenProcessToken", "handle", $HPROCESS, "dword", $IACCESS, "ptr", 0)
  1085. If @error Then Return SetError(@error, @extended, 0)
  1086. Return SetError(0, $ARESULT[0], $ARESULT[3])
  1087. EndFunc
  1088. Func _SECURITY__OPENTHREADTOKEN($IACCESS, $HTHREAD = 0, $FOPENASSELF = False)
  1089. If $HTHREAD = 0 Then $HTHREAD = DllCall("kernel32.dll", "handle", "GetCurrentThread")
  1090. If @error Then Return SetError(@error, @extended, 0)
  1091. Local $ARESULT = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $HTHREAD[0], "dword", $IACCESS, "int", $FOPENASSELF, "ptr*", 0)
  1092. If @error Then Return SetError(@error, @extended, 0)
  1093. Return SetError(0, $ARESULT[0], $ARESULT[4])
  1094. EndFunc
  1095. Func _SECURITY__OPENTHREADTOKENEX($IACCESS, $HTHREAD = 0, $FOPENASSELF = False)
  1096. Local $HTOKEN = _SECURITY__OPENTHREADTOKEN($IACCESS, $HTHREAD, $FOPENASSELF)
  1097. If $HTOKEN = 0 Then
  1098. If _WINAPI_GETLASTERROR() <> $ERROR_NO_TOKEN Then Return SetError(-3, _WINAPI_GETLASTERROR(), 0)
  1099. If Not _SECURITY__IMPERSONATESELF() Then Return SetError(-1, _WINAPI_GETLASTERROR(), 0)
  1100. $HTOKEN = _SECURITY__OPENTHREADTOKEN($IACCESS, $HTHREAD, $FOPENASSELF)
  1101. If $HTOKEN = 0 Then Return SetError(-2, _WINAPI_GETLASTERROR(), 0)
  1102. EndIf
  1103. Return $HTOKEN
  1104. EndFunc
  1105. Func _SECURITY__SETPRIVILEGE($HTOKEN, $SPRIVILEGE, $FENABLE)
  1106. Local $ILUID = _SECURITY__LOOKUPPRIVILEGEVALUE("", $SPRIVILEGE)
  1107. If $ILUID = 0 Then Return SetError(-1, 0, False)
  1108. Local $TCURRSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
  1109. Local $PCURRSTATE = DllStructGetPtr($TCURRSTATE)
  1110. Local $ICURRSTATE = DllStructGetSize($TCURRSTATE)
  1111. Local $TPREVSTATE = DllStructCreate($TAGTOKEN_PRIVILEGES)
  1112. Local $PPREVSTATE = DllStructGetPtr($TPREVSTATE)
  1113. Local $IPREVSTATE = DllStructGetSize($TPREVSTATE)
  1114. Local $TREQUIRED = DllStructCreate("int Data")
  1115. Local $PREQUIRED = DllStructGetPtr($TREQUIRED)
  1116. DllStructSetData($TCURRSTATE, "Count", 1)
  1117. DllStructSetData($TCURRSTATE, "LUID", $ILUID)
  1118. If Not _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN, False, $PCURRSTATE, $ICURRSTATE, $PPREVSTATE, $PREQUIRED) Then Return SetError(-2, @error, False)
  1119. DllStructSetData($TPREVSTATE, "Count", 1)
  1120. DllStructSetData($TPREVSTATE, "LUID", $ILUID)
  1121. Local $IATTRIBUTES = DllStructGetData($TPREVSTATE, "Attributes")
  1122. If $FENABLE Then
  1123. $IATTRIBUTES = BitOR($IATTRIBUTES, $SE_PRIVILEGE_ENABLED)
  1124. Else
  1125. $IATTRIBUTES = BitAND($IATTRIBUTES, BitNOT($SE_PRIVILEGE_ENABLED))
  1126. EndIf
  1127. DllStructSetData($TPREVSTATE, "Attributes", $IATTRIBUTES)
  1128. If Not _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN, False, $PPREVSTATE, $IPREVSTATE, $PCURRSTATE, $PREQUIRED) Then Return SetError(-3, @error, False)
  1129. Return True
  1130. EndFunc
  1131. Func _SECURITY__SIDTOSTRINGSID($PSID)
  1132. If Not _SECURITY__ISVALIDSID($PSID) Then Return SetError(-1, 0, "")
  1133. Local $ARESULT = DllCall("advapi32.dll", "int", "ConvertSidToStringSidW", "ptr", $PSID, "ptr*", 0)
  1134. If @error Then Return SetError(@error, @extended, "")
  1135. If Not $ARESULT[0] Then Return ""
  1136. Local $TBUFFER = DllStructCreate("wchar Text[256]", $ARESULT[2])
  1137. Local $SSID = DllStructGetData($TBUFFER, "Text")
  1138. DllCall("Kernel32.dll", "ptr", "LocalFree", "ptr", $ARESULT[2])
  1139. Return $SSID
  1140. EndFunc
  1141. Func _SECURITY__SIDTYPESTR($ITYPE)
  1142. Switch $ITYPE
  1143. Case 1
  1144. Return "User"
  1145. Case 2
  1146. Return "Group"
  1147. Case 3
  1148. Return "Domain"
  1149. Case 4
  1150. Return "Alias"
  1151. Case 5
  1152. Return "Well Known Group"
  1153. Case 6
  1154. Return "Deleted Account"
  1155. Case 7
  1156. Return "Invalid"
  1157. Case 8
  1158. Return "Invalid"
  1159. Case 9
  1160. Return "Computer"
  1161. Case Else
  1162. Return "Unknown SID Type"
  1163. EndSwitch
  1164. EndFunc
  1165. Func _SECURITY__STRINGSIDTOSID($SSID)
  1166. Local $ARESULT = DllCall("advapi32.dll", "bool", "ConvertStringSidToSidW", "wstr", $SSID, "ptr*", 0)
  1167. If @error Then Return SetError(@error, @extended, 0)
  1168. If Not $ARESULT[0] Then Return 0
  1169. Local $ISIZE = _SECURITY__GETLENGTHSID($ARESULT[2])
  1170. Local $TBUFFER = DllStructCreate("byte Data[" & $ISIZE & "]", $ARESULT[2])
  1171. Local $TSID = DllStructCreate("byte Data[" & $ISIZE & "]")
  1172. DllStructSetData($TSID, "Data", DllStructGetData($TBUFFER, "Data"))
  1173. DllCall("kernel32.dll", "ptr", "LocalFree", "ptr", $ARESULT[2])
  1174. Return $TSID
  1175. EndFunc
  1176. Global Const $TAGMEMMAP = "handle hProc;ulong_ptr Size;ptr Mem"
  1177. Func _MEMFREE(ByRef $TMEMMAP)
  1178. Local $PMEMORY = DllStructGetData($TMEMMAP, "Mem")
  1179. Local $HPROCESS = DllStructGetData($TMEMMAP, "hProc")
  1180. Local $BRESULT = _MEMVIRTUALFREEEX($HPROCESS, $PMEMORY, 0, $MEM_RELEASE)
  1181. DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HPROCESS)
  1182. If @error Then Return SetError(@error, @extended, False)
  1183. Return $BRESULT
  1184. EndFunc
  1185. Func _MEMGLOBALALLOC($IBYTES, $IFLAGS = 0)
  1186. Local $ARESULT = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", $IFLAGS, "ulong_ptr", $IBYTES)
  1187. If @error Then Return SetError(@error, @extended, 0)
  1188. Return $ARESULT[0]
  1189. EndFunc
  1190. Func _MEMGLOBALFREE($HMEM)
  1191. Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $HMEM)
  1192. If @error Then Return SetError(@error, @extended, False)
  1193. Return $ARESULT[0]
  1194. EndFunc
  1195. Func _MEMGLOBALLOCK($HMEM)
  1196. Local $ARESULT = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $HMEM)
  1197. If @error Then Return SetError(@error, @extended, 0)
  1198. Return $ARESULT[0]
  1199. EndFunc
  1200. Func _MEMGLOBALSIZE($HMEM)
  1201. Local $ARESULT = DllCall("kernel32.dll", "ulong_ptr", "GlobalSize", "handle", $HMEM)
  1202. If @error Then Return SetError(@error, @extended, 0)
  1203. Return $ARESULT[0]
  1204. EndFunc
  1205. Func _MEMGLOBALUNLOCK($HMEM)
  1206. Local $ARESULT = DllCall("kernel32.dll", "bool", "GlobalUnlock", "handle", $HMEM)
  1207. If @error Then Return SetError(@error, @extended, 0)
  1208. Return $ARESULT[0]
  1209. EndFunc
  1210. Func _MEMINIT($HWND, $ISIZE, ByRef $TMEMMAP)
  1211. Local $ARESULT = DllCall("User32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0)
  1212. If @error Then Return SetError(@error, @extended, 0)
  1213. Local $IPROCESSID = $ARESULT[2]
  1214. If $IPROCESSID = 0 Then Return SetError(1, 0, 0)
  1215. Local $IACCESS = BitOR($PROCESS_VM_OPERATION, $PROCESS_VM_READ, $PROCESS_VM_WRITE)
  1216. Local $HPROCESS = __MEM_OPENPROCESS($IACCESS, False, $IPROCESSID, True)
  1217. Local $IALLOC = BitOR($MEM_RESERVE, $MEM_COMMIT)
  1218. Local $PMEMORY = _MEMVIRTUALALLOCEX($HPROCESS, 0, $ISIZE, $IALLOC, $PAGE_READWRITE)
  1219. If $PMEMORY = 0 Then Return SetError(2, 0, 0)
  1220. $TMEMMAP = DllStructCreate($TAGMEMMAP)
  1221. DllStructSetData($TMEMMAP, "hProc", $HPROCESS)
  1222. DllStructSetData($TMEMMAP, "Size", $ISIZE)
  1223. DllStructSetData($TMEMMAP, "Mem", $PMEMORY)
  1224. Return $PMEMORY
  1225. EndFunc
  1226. Func _MEMMOVEMEMORY($PSOURCE, $PDEST, $ILENGTH)
  1227. DllCall("kernel32.dll", "none", "RtlMoveMemory", "ptr", $PDEST, "ptr", $PSOURCE, "ulong_ptr", $ILENGTH)
  1228. If @error Then Return SetError(@error, @extended)
  1229. EndFunc
  1230. Func _MEMREAD(ByRef $TMEMMAP, $PSRCE, $PDEST, $ISIZE)
  1231. Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PSRCE, "ptr", $PDEST, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  1232. If @error Then Return SetError(@error, @extended, False)
  1233. Return $ARESULT[0]
  1234. EndFunc
  1235. Func _MEMWRITE(ByRef $TMEMMAP, $PSRCE, $PDEST = 0, $ISIZE = 0, $SSRCE = "ptr")
  1236. If $PDEST = 0 Then $PDEST = DllStructGetData($TMEMMAP, "Mem")
  1237. If $ISIZE = 0 Then $ISIZE = DllStructGetData($TMEMMAP, "Size")
  1238. Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", DllStructGetData($TMEMMAP, "hProc"), "ptr", $PDEST, $SSRCE, $PSRCE, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  1239. If @error Then Return SetError(@error, @extended, False)
  1240. Return $ARESULT[0]
  1241. EndFunc
  1242. Func _MEMVIRTUALALLOC($PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT)
  1243. Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT)
  1244. If @error Then Return SetError(@error, @extended, 0)
  1245. Return $ARESULT[0]
  1246. EndFunc
  1247. Func _MEMVIRTUALALLOCEX($HPROCESS, $PADDRESS, $ISIZE, $IALLOCATION, $IPROTECT)
  1248. Local $ARESULT = DllCall("kernel32.dll", "ptr", "VirtualAllocEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IALLOCATION, "dword", $IPROTECT)
  1249. If @error Then Return SetError(@error, @extended, 0)
  1250. Return $ARESULT[0]
  1251. EndFunc
  1252. Func _MEMVIRTUALFREE($PADDRESS, $ISIZE, $IFREETYPE)
  1253. Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE)
  1254. If @error Then Return SetError(@error, @extended, False)
  1255. Return $ARESULT[0]
  1256. EndFunc
  1257. Func _MEMVIRTUALFREEEX($HPROCESS, $PADDRESS, $ISIZE, $IFREETYPE)
  1258. Local $ARESULT = DllCall("kernel32.dll", "bool", "VirtualFreeEx", "handle", $HPROCESS, "ptr", $PADDRESS, "ulong_ptr", $ISIZE, "dword", $IFREETYPE)
  1259. If @error Then Return SetError(@error, @extended, False)
  1260. Return $ARESULT[0]
  1261. EndFunc
  1262. Func __MEM_OPENPROCESS($IACCESS, $FINHERIT, $IPROCESSID, $FDEBUGPRIV = False)
  1263. Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  1264. If @error Then Return SetError(@error, @extended, 0)
  1265. If $ARESULT[0] Then Return $ARESULT[0]
  1266. If Not $FDEBUGPRIV Then Return 0
  1267. Local $HTOKEN = _SECURITY__OPENTHREADTOKENEX(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
  1268. If @error Then Return SetError(@error, @extended, 0)
  1269. _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", True)
  1270. Local $IERROR = @error
  1271. Local $ILASTERROR = @extended
  1272. Local $IRET = 0
  1273. If Not @error Then
  1274. $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  1275. $IERROR = @error
  1276. $ILASTERROR = @extended
  1277. If $ARESULT[0] Then $IRET = $ARESULT[0]
  1278. _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", False)
  1279. If @error Then
  1280. $IERROR = @error
  1281. $ILASTERROR = @extended
  1282. EndIf
  1283. EndIf
  1284. DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HTOKEN)
  1285. Return SetError($IERROR, $ILASTERROR, $IRET)
  1286. EndFunc
  1287. Global Const $FC_NOOVERWRITE = 0
  1288. Global Const $FC_OVERWRITE = 1
  1289. Global Const $FT_MODIFIED = 0
  1290. Global Const $FT_CREATED = 1
  1291. Global Const $FT_ACCESSED = 2
  1292. Global Const $FO_READ = 0
  1293. Global Const $FO_APPEND = 1
  1294. Global Const $FO_OVERWRITE = 2
  1295. Global Const $FO_BINARY = 16
  1296. Global Const $FO_UNICODE = 32
  1297. Global Const $FO_UTF16_LE = 32
  1298. Global Const $FO_UTF16_BE = 64
  1299. Global Const $FO_UTF8 = 128
  1300. Global Const $FO_UTF8_NOBOM = 256
  1301. Global Const $EOF = -1
  1302. Global Const $FD_FILEMUSTEXIST = 1
  1303. Global Const $FD_PATHMUSTEXIST = 2
  1304. Global Const $FD_MULTISELECT = 4
  1305. Global Const $FD_PROMPTCREATENEW = 8
  1306. Global Const $FD_PROMPTOVERWRITE = 16
  1307. Global Const $CREATE_NEW = 1
  1308. Global Const $CREATE_ALWAYS = 2
  1309. Global Const $OPEN_EXISTING = 3
  1310. Global Const $OPEN_ALWAYS = 4
  1311. Global Const $TRUNCATE_EXISTING = 5
  1312. Global Const $INVALID_SET_FILE_POINTER = -1
  1313. Global Const $FILE_BEGIN = 0
  1314. Global Const $FILE_CURRENT = 1
  1315. Global Const $FILE_END = 2
  1316. Global Const $FILE_ATTRIBUTE_READONLY = 1
  1317. Global Const $FILE_ATTRIBUTE_HIDDEN = 2
  1318. Global Const $FILE_ATTRIBUTE_SYSTEM = 4
  1319. Global Const $FILE_ATTRIBUTE_DIRECTORY = 16
  1320. Global Const $FILE_ATTRIBUTE_ARCHIVE = 32
  1321. Global Const $FILE_ATTRIBUTE_DEVICE = 64
  1322. Global Const $FILE_ATTRIBUTE_NORMAL = 128
  1323. Global Const $FILE_ATTRIBUTE_TEMPORARY = 256
  1324. Global Const $FILE_ATTRIBUTE_SPARSE_FILE = 512
  1325. Global Const $FILE_ATTRIBUTE_REPARSE_POINT = 1024
  1326. Global Const $FILE_ATTRIBUTE_COMPRESSED = 2048
  1327. Global Const $FILE_ATTRIBUTE_OFFLINE = 4096
  1328. Global Const $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
  1329. Global Const $FILE_ATTRIBUTE_ENCRYPTED = 16384
  1330. Global Const $FILE_SHARE_READ = 1
  1331. Global Const $FILE_SHARE_WRITE = 2
  1332. Global Const $FILE_SHARE_DELETE = 4
  1333. Global Const $GENERIC_ALL = 268435456
  1334. Global Const $GENERIC_EXECUTE = 536870912
  1335. Global Const $GENERIC_WRITE = 1073741824
  1336. Global Const $GENERIC_READ = -2147483648
  1337. Func _SENDMESSAGE($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
  1338. Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageW", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
  1339. If @error Then Return SetError(@error, @extended, "")
  1340. If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN]
  1341. Return $ARESULT
  1342. EndFunc
  1343. Func _SENDMESSAGEA($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
  1344. Local $ARESULT = DllCall("user32.dll", $SRETURNTYPE, "SendMessageA", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
  1345. If @error Then Return SetError(@error, @extended, "")
  1346. If $IRETURN >= 0 And $IRETURN <= 4 Then Return $ARESULT[$IRETURN]
  1347. Return $ARESULT
  1348. EndFunc
  1349. Global $__GAINPROCESS_WINAPI[64][2] = [[0, 0]]
  1350. Global $__GAWINLIST_WINAPI[64][2] = [[0, 0]]
  1351. Global Const $__WINAPICONSTANT_WM_SETFONT = 48
  1352. Global Const $__WINAPICONSTANT_FW_NORMAL = 400
  1353. Global Const $__WINAPICONSTANT_DEFAULT_CHARSET = 1
  1354. Global Const $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0
  1355. Global Const $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0
  1356. Global Const $__WINAPICONSTANT_DEFAULT_QUALITY = 0
  1357. Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
  1358. Global Const $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM = 4096
  1359. Global Const $__WINAPICONSTANT_LOGPIXELSX = 88
  1360. Global Const $__WINAPICONSTANT_LOGPIXELSY = 90
  1361. Global Const $HGDI_ERROR = Ptr(-1)
  1362. Global Const $INVALID_HANDLE_VALUE = Ptr(-1)
  1363. Global Const $CLR_INVALID = -1
  1364. Global Const $__WINAPICONSTANT_FLASHW_CAPTION = 1
  1365. Global Const $__WINAPICONSTANT_FLASHW_TRAY = 2
  1366. Global Const $__WINAPICONSTANT_FLASHW_TIMER = 4
  1367. Global Const $__WINAPICONSTANT_FLASHW_TIMERNOFG = 12
  1368. Global Const $__WINAPICONSTANT_GW_HWNDNEXT = 2
  1369. Global Const $__WINAPICONSTANT_GW_CHILD = 5
  1370. Global Const $__WINAPICONSTANT_DI_MASK = 1
  1371. Global Const $__WINAPICONSTANT_DI_IMAGE = 2
  1372. Global Const $__WINAPICONSTANT_DI_NORMAL = 3
  1373. Global Const $__WINAPICONSTANT_DI_COMPAT = 4
  1374. Global Const $__WINAPICONSTANT_DI_DEFAULTSIZE = 8
  1375. Global Const $__WINAPICONSTANT_DI_NOMIRROR = 16
  1376. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1
  1377. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE = 4
  1378. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER = 8
  1379. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE = 16
  1380. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE = 32
  1381. Global Const $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED = 134217728
  1382. Global Const $NULL_BRUSH = 5
  1383. Global Const $NULL_PEN = 8
  1384. Global Const $BLACK_BRUSH = 4
  1385. Global Const $DKGRAY_BRUSH = 3
  1386. Global Const $DC_BRUSH = 18
  1387. Global Const $GRAY_BRUSH = 2
  1388. Global Const $HOLLOW_BRUSH = $NULL_BRUSH
  1389. Global Const $LTGRAY_BRUSH = 1
  1390. Global Const $WHITE_BRUSH = 0
  1391. Global Const $BLACK_PEN = 7
  1392. Global Const $DC_PEN = 19
  1393. Global Const $WHITE_PEN = 6
  1394. Global Const $ANSI_FIXED_FONT = 11
  1395. Global Const $ANSI_VAR_FONT = 12
  1396. Global Const $DEVICE_DEFAULT_FONT = 14
  1397. Global Const $DEFAULT_GUI_FONT = 17
  1398. Global Const $OEM_FIXED_FONT = 10
  1399. Global Const $SYSTEM_FONT = 13
  1400. Global Const $SYSTEM_FIXED_FONT = 16
  1401. Global Const $DEFAULT_PALETTE = 15
  1402. Global Const $MB_PRECOMPOSED = 1
  1403. Global Const $MB_COMPOSITE = 2
  1404. Global Const $MB_USEGLYPHCHARS = 4
  1405. Global Const $ULW_ALPHA = 2
  1406. Global Const $ULW_COLORKEY = 1
  1407. Global Const $ULW_OPAQUE = 4
  1408. Global Const $WH_CALLWNDPROC = 4
  1409. Global Const $WH_CALLWNDPROCRET = 12
  1410. Global Const $WH_CBT = 5
  1411. Global Const $WH_DEBUG = 9
  1412. Global Const $WH_FOREGROUNDIDLE = 11
  1413. Global Const $WH_GETMESSAGE = 3
  1414. Global Const $WH_JOURNALPLAYBACK = 1
  1415. Global Const $WH_JOURNALRECORD = 0
  1416. Global Const $WH_KEYBOARD = 2
  1417. Global Const $WH_KEYBOARD_LL = 13
  1418. Global Const $WH_MOUSE = 7
  1419. Global Const $WH_MOUSE_LL = 14
  1420. Global Const $WH_MSGFILTER = -1
  1421. Global Const $WH_SHELL = 10
  1422. Global Const $WH_SYSMSGFILTER = 6
  1423. Global Const $WPF_ASYNCWINDOWPLACEMENT = 4
  1424. Global Const $WPF_RESTORETOMAXIMIZED = 2
  1425. Global Const $WPF_SETMINPOSITION = 1
  1426. Global Const $KF_EXTENDED = 256
  1427. Global Const $KF_ALTDOWN = 8192
  1428. Global Const $KF_UP = 32768
  1429. Global Const $LLKHF_EXTENDED = BitShift($KF_EXTENDED, 8)
  1430. Global Const $LLKHF_INJECTED = 16
  1431. Global Const $LLKHF_ALTDOWN = BitShift($KF_ALTDOWN, 8)
  1432. Global Const $LLKHF_UP = BitShift($KF_UP, 8)
  1433. Global Const $OFN_ALLOWMULTISELECT = 512
  1434. Global Const $OFN_CREATEPROMPT = 8192
  1435. Global Const $OFN_DONTADDTORECENT = 33554432
  1436. Global Const $OFN_ENABLEHOOK = 32
  1437. Global Const $OFN_ENABLEINCLUDENOTIFY = 4194304
  1438. Global Const $OFN_ENABLESIZING = 8388608
  1439. Global Const $OFN_ENABLETEMPLATE = 64
  1440. Global Const $OFN_ENABLETEMPLATEHANDLE = 128
  1441. Global Const $OFN_EXPLORER = 524288
  1442. Global Const $OFN_EXTENSIONDIFFERENT = 1024
  1443. Global Const $OFN_FILEMUSTEXIST = 4096
  1444. Global Const $OFN_FORCESHOWHIDDEN = 268435456
  1445. Global Const $OFN_HIDEREADONLY = 4
  1446. Global Const $OFN_LONGNAMES = 2097152
  1447. Global Const $OFN_NOCHANGEDIR = 8
  1448. Global Const $OFN_NODEREFERENCELINKS = 1048576
  1449. Global Const $OFN_NOLONGNAMES = 262144
  1450. Global Const $OFN_NONETWORKBUTTON = 131072
  1451. Global Const $OFN_NOREADONLYRETURN = 32768
  1452. Global Const $OFN_NOTESTFILECREATE = 65536
  1453. Global Const $OFN_NOVALIDATE = 256
  1454. Global Const $OFN_OVERWRITEPROMPT = 2
  1455. Global Const $OFN_PATHMUSTEXIST = 2048
  1456. Global Const $OFN_READONLY = 1
  1457. Global Const $OFN_SHAREAWARE = 16384
  1458. Global Const $OFN_SHOWHELP = 16
  1459. Global Const $OFN_EX_NOPLACESBAR = 1
  1460. Global Const $TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & $TAGPOINT
  1461. Global Const $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]"
  1462. Global Const $TAGFLASHWINFO = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut"
  1463. Global Const $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
  1464. Global Const $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"
  1465. Func _WINAPI_ATTACHCONSOLE($IPROCESSID = -1)
  1466. Local $ARESULT = DllCall("kernel32.dll", "bool", "AttachConsole", "dword", $IPROCESSID)
  1467. If @error Then Return SetError(@error, @extended, False)
  1468. Return $ARESULT[0]
  1469. EndFunc
  1470. Func _WINAPI_ATTACHTHREADINPUT($IATTACH, $IATTACHTO, $FATTACH)
  1471. Local $ARESULT = DllCall("user32.dll", "bool", "AttachThreadInput", "dword", $IATTACH, "dword", $IATTACHTO, "bool", $FATTACH)
  1472. If @error Then Return SetError(@error, @extended, False)
  1473. Return $ARESULT[0]
  1474. EndFunc
  1475. Func _WINAPI_BEEP($IFREQ = 500, $IDURATION = 1000)
  1476. Local $ARESULT = DllCall("kernel32.dll", "bool", "Beep", "dword", $IFREQ, "dword", $IDURATION)
  1477. If @error Then Return SetError(@error, @extended, False)
  1478. Return $ARESULT[0]
  1479. EndFunc
  1480. Func _WINAPI_BITBLT($HDESTDC, $IXDEST, $IYDEST, $IWIDTH, $IHEIGHT, $HSRCDC, $IXSRC, $IYSRC, $IROP)
  1481. 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)
  1482. If @error Then Return SetError(@error, @extended, False)
  1483. Return $ARESULT[0]
  1484. EndFunc
  1485. Func _WINAPI_CALLNEXTHOOKEX($HHK, $ICODE, $WPARAM, $LPARAM)
  1486. Local $ARESULT = DllCall("user32.dll", "lresult", "CallNextHookEx", "handle", $HHK, "int", $ICODE, "wparam", $WPARAM, "lparam", $LPARAM)
  1487. If @error Then Return SetError(@error, @extended, -1)
  1488. Return $ARESULT[0]
  1489. EndFunc
  1490. Func _WINAPI_CALLWINDOWPROC($LPPREVWNDFUNC, $HWND, $MSG, $WPARAM, $LPARAM)
  1491. Local $ARESULT = DllCall("user32.dll", "lresult", "CallWindowProc", "ptr", $LPPREVWNDFUNC, "hwnd", $HWND, "uint", $MSG, "wparam", $WPARAM, "lparam", $LPARAM)
  1492. If @error Then Return SetError(@error, @extended, -1)
  1493. Return $ARESULT[0]
  1494. EndFunc
  1495. Func _WINAPI_CLIENTTOSCREEN($HWND, ByRef $TPOINT)
  1496. Local $PPOINT = DllStructGetPtr($TPOINT)
  1497. DllCall("user32.dll", "bool", "ClientToScreen", "hwnd", $HWND, "ptr", $PPOINT)
  1498. Return SetError(@error, @extended, $TPOINT)
  1499. EndFunc
  1500. Func _WINAPI_CLOSEHANDLE($HOBJECT)
  1501. Local $ARESULT = DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $HOBJECT)
  1502. If @error Then Return SetError(@error, @extended, False)
  1503. Return $ARESULT[0]
  1504. EndFunc
  1505. Func _WINAPI_COMBINERGN($HRGNDEST, $HRGNSRC1, $HRGNSRC2, $ICOMBINEMODE)
  1506. Local $ARESULT = DllCall("gdi32.dll", "int", "CombineRgn", "handle", $HRGNDEST, "handle", $HRGNSRC1, "handle", $HRGNSRC2, "int", $ICOMBINEMODE)
  1507. If @error Then Return SetError(@error, @extended, 0)
  1508. Return $ARESULT[0]
  1509. EndFunc
  1510. Func _WINAPI_COMMDLGEXTENDEDERROR()
  1511. Local Const $CDERR_DIALOGFAILURE = 65535
  1512. Local Const $CDERR_FINDRESFAILURE = 6
  1513. Local Const $CDERR_INITIALIZATION = 2
  1514. Local Const $CDERR_LOADRESFAILURE = 7
  1515. Local Const $CDERR_LOADSTRFAILURE = 5
  1516. Local Const $CDERR_LOCKRESFAILURE = 8
  1517. Local Const $CDERR_MEMALLOCFAILURE = 9
  1518. Local Const $CDERR_MEMLOCKFAILURE = 10
  1519. Local Const $CDERR_NOHINSTANCE = 4
  1520. Local Const $CDERR_NOHOOK = 11
  1521. Local Const $CDERR_NOTEMPLATE = 3
  1522. Local Const $CDERR_REGISTERMSGFAIL = 12
  1523. Local Const $CDERR_STRUCTSIZE = 1
  1524. Local Const $FNERR_BUFFERTOOSMALL = 12291
  1525. Local Const $FNERR_INVALIDFILENAME = 12290
  1526. Local Const $FNERR_SUBCLASSFAILURE = 12289
  1527. Local $ARESULT = DllCall("comdlg32.dll", "dword", "CommDlgExtendedError")
  1528. If @error Then Return SetError(@error, @extended, 0)
  1529. Switch $ARESULT[0]
  1530. Case $CDERR_DIALOGFAILURE
  1531. 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.")
  1532. Case $CDERR_FINDRESFAILURE
  1533. Return SetError($ARESULT[0], 0, "The common dialog box function failed to find a specified resource.")
  1534. Case $CDERR_INITIALIZATION
  1535. Return SetError($ARESULT[0], 0, "The common dialog box function failed during initialization." & @LF & "This error often occurs when sufficient memory is not available.")
  1536. Case $CDERR_LOADRESFAILURE
  1537. Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified resource.")
  1538. Case $CDERR_LOADSTRFAILURE
  1539. Return SetError($ARESULT[0], 0, "The common dialog box function failed to load a specified string.")
  1540. Case $CDERR_LOCKRESFAILURE
  1541. Return SetError($ARESULT[0], 0, "The common dialog box function failed to lock a specified resource.")
  1542. Case $CDERR_MEMALLOCFAILURE
  1543. Return SetError($ARESULT[0], 0, "The common dialog box function was unable to allocate memory for internal structures.")
  1544. Case $CDERR_MEMLOCKFAILURE
  1545. Return SetError($ARESULT[0], 0, "The common dialog box function was unable to lock the memory associated with a handle.")
  1546. Case $CDERR_NOHINSTANCE
  1547. 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.")
  1548. Case $CDERR_NOHOOK
  1549. 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.")
  1550. Case $CDERR_NOTEMPLATE
  1551. 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.")
  1552. Case $CDERR_REGISTERMSGFAIL
  1553. Return SetError($ARESULT[0], 0, "The RegisterWindowMessage function returned an error code when it was called by the common dialog box function.")
  1554. Case $CDERR_STRUCTSIZE
  1555. Return SetError($ARESULT[0], 0, "The lStructSize member of the initialization structure for the corresponding common dialog box is invalid")
  1556. Case $FNERR_BUFFERTOOSMALL
  1557. 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.")
  1558. Case $FNERR_INVALIDFILENAME
  1559. Return SetError($ARESULT[0], 0, "A file name is invalid.")
  1560. Case $FNERR_SUBCLASSFAILURE
  1561. Return SetError($ARESULT[0], 0, "An attempt to subclass a list box failed because sufficient memory was not available.")
  1562. EndSwitch
  1563. Return Hex($ARESULT[0])
  1564. EndFunc
  1565. Func _WINAPI_COPYICON($HICON)
  1566. Local $ARESULT = DllCall("user32.dll", "handle", "CopyIcon", "handle", $HICON)
  1567. If @error Then Return SetError(@error, @extended, 0)
  1568. Return $ARESULT[0]
  1569. EndFunc
  1570. Func _WINAPI_CREATEBITMAP($IWIDTH, $IHEIGHT, $IPLANES = 1, $IBITSPERPEL = 1, $PBITS = 0)
  1571. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateBitmap", "int", $IWIDTH, "int", $IHEIGHT, "uint", $IPLANES, "uint", $IBITSPERPEL, "ptr", $PBITS)
  1572. If @error Then Return SetError(@error, @extended, 0)
  1573. Return $ARESULT[0]
  1574. EndFunc
  1575. Func _WINAPI_CREATECOMPATIBLEBITMAP($HDC, $IWIDTH, $IHEIGHT)
  1576. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleBitmap", "handle", $HDC, "int", $IWIDTH, "int", $IHEIGHT)
  1577. If @error Then Return SetError(@error, @extended, 0)
  1578. Return $ARESULT[0]
  1579. EndFunc
  1580. Func _WINAPI_CREATECOMPATIBLEDC($HDC)
  1581. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateCompatibleDC", "handle", $HDC)
  1582. If @error Then Return SetError(@error, @extended, 0)
  1583. Return $ARESULT[0]
  1584. EndFunc
  1585. Func _WINAPI_CREATEEVENT($PATTRIBUTES = 0, $FMANUALRESET = True, $FINITIALSTATE = True, $SNAME = "")
  1586. Local $SNAMETYPE = "wstr"
  1587. If $SNAME = "" Then
  1588. $SNAME = 0
  1589. $SNAMETYPE = "ptr"
  1590. EndIf
  1591. Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateEventW", "ptr", $PATTRIBUTES, "bool", $FMANUALRESET, "bool", $FINITIALSTATE, $SNAMETYPE, $SNAME)
  1592. If @error Then Return SetError(@error, @extended, 0)
  1593. Return $ARESULT[0]
  1594. EndFunc
  1595. Func _WINAPI_CREATEFILE($SFILENAME, $ICREATION, $IACCESS = 4, $ISHARE = 0, $IATTRIBUTES = 0, $PSECURITY = 0)
  1596. Local $IDA = 0, $ISM = 0, $ICD = 0, $IFA = 0
  1597. If BitAND($IACCESS, 1) <> 0 Then $IDA = BitOR($IDA, $GENERIC_EXECUTE)
  1598. If BitAND($IACCESS, 2) <> 0 Then $IDA = BitOR($IDA, $GENERIC_READ)
  1599. If BitAND($IACCESS, 4) <> 0 Then $IDA = BitOR($IDA, $GENERIC_WRITE)
  1600. If BitAND($ISHARE, 1) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_DELETE)
  1601. If BitAND($ISHARE, 2) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_READ)
  1602. If BitAND($ISHARE, 4) <> 0 Then $ISM = BitOR($ISM, $FILE_SHARE_WRITE)
  1603. Switch $ICREATION
  1604. Case 0
  1605. $ICD = $CREATE_NEW
  1606. Case 1
  1607. $ICD = $CREATE_ALWAYS
  1608. Case 2
  1609. $ICD = $OPEN_EXISTING
  1610. Case 3
  1611. $ICD = $OPEN_ALWAYS
  1612. Case 4
  1613. $ICD = $TRUNCATE_EXISTING
  1614. EndSwitch
  1615. If BitAND($IATTRIBUTES, 1) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_ARCHIVE)
  1616. If BitAND($IATTRIBUTES, 2) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_HIDDEN)
  1617. If BitAND($IATTRIBUTES, 4) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_READONLY)
  1618. If BitAND($IATTRIBUTES, 8) <> 0 Then $IFA = BitOR($IFA, $FILE_ATTRIBUTE_SYSTEM)
  1619. Local $ARESULT = DllCall("kernel32.dll", "handle", "CreateFileW", "wstr", $SFILENAME, "dword", $IDA, "dword", $ISM, "ptr", $PSECURITY, "dword", $ICD, "dword", $IFA, "ptr", 0)
  1620. If @error Or $ARESULT[0] = Ptr(-1) Then Return SetError(@error, @extended, 0)
  1621. Return $ARESULT[0]
  1622. EndFunc
  1623. 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")
  1624. 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)
  1625. If @error Then Return SetError(@error, @extended, 0)
  1626. Return $ARESULT[0]
  1627. EndFunc
  1628. Func _WINAPI_CREATEFONTINDIRECT($TLOGFONT)
  1629. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateFontIndirectW", "ptr", DllStructGetPtr($TLOGFONT))
  1630. If @error Then Return SetError(@error, @extended, 0)
  1631. Return $ARESULT[0]
  1632. EndFunc
  1633. Func _WINAPI_CREATEPEN($IPENSTYLE, $IWIDTH, $NCOLOR)
  1634. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreatePen", "int", $IPENSTYLE, "int", $IWIDTH, "dword", $NCOLOR)
  1635. If @error Then Return SetError(@error, @extended, 0)
  1636. Return $ARESULT[0]
  1637. EndFunc
  1638. Func _WINAPI_CREATEPROCESS($SAPPNAME, $SCOMMAND, $PSECURITY, $PTHREAD, $FINHERIT, $IFLAGS, $PENVIRON, $SDIR, $PSTARTUPINFO, $PPROCESS)
  1639. Local $PCOMMAND = 0
  1640. Local $SAPPNAMETYPE = "wstr", $SDIRTYPE = "wstr"
  1641. If $SAPPNAME = "" Then
  1642. $SAPPNAMETYPE = "ptr"
  1643. $SAPPNAME = 0
  1644. EndIf
  1645. If $SCOMMAND <> "" Then
  1646. Local $TCOMMAND = DllStructCreate("wchar Text[" & 260 + 1 & "]")
  1647. $PCOMMAND = DllStructGetPtr($TCOMMAND)
  1648. DllStructSetData($TCOMMAND, "Text", $SCOMMAND)
  1649. EndIf
  1650. If $SDIR = "" Then
  1651. $SDIRTYPE = "ptr"
  1652. $SDIR = 0
  1653. EndIf
  1654. 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)
  1655. If @error Then Return SetError(@error, @extended, False)
  1656. Return $ARESULT[0]
  1657. EndFunc
  1658. Func _WINAPI_CREATERECTRGN($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT)
  1659. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT)
  1660. If @error Then Return SetError(@error, @extended, 0)
  1661. Return $ARESULT[0]
  1662. EndFunc
  1663. Func _WINAPI_CREATEROUNDRECTRGN($ILEFTRECT, $ITOPRECT, $IRIGHTRECT, $IBOTTOMRECT, $IWIDTHELLIPSE, $IHEIGHTELLIPSE)
  1664. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateRoundRectRgn", "int", $ILEFTRECT, "int", $ITOPRECT, "int", $IRIGHTRECT, "int", $IBOTTOMRECT, "int", $IWIDTHELLIPSE, "int", $IHEIGHTELLIPSE)
  1665. If @error Then Return SetError(@error, @extended, 0)
  1666. Return $ARESULT[0]
  1667. EndFunc
  1668. Func _WINAPI_CREATESOLIDBITMAP($HWND, $ICOLOR, $IWIDTH, $IHEIGHT, $BRGB = 1)
  1669. Local $HDC = _WINAPI_GETDC($HWND)
  1670. Local $HDESTDC = _WINAPI_CREATECOMPATIBLEDC($HDC)
  1671. Local $HBITMAP = _WINAPI_CREATECOMPATIBLEBITMAP($HDC, $IWIDTH, $IHEIGHT)
  1672. Local $HOLD = _WINAPI_SELECTOBJECT($HDESTDC, $HBITMAP)
  1673. Local $TRECT = DllStructCreate($TAGRECT)
  1674. DllStructSetData($TRECT, 1, 0)
  1675. DllStructSetData($TRECT, 2, 0)
  1676. DllStructSetData($TRECT, 3, $IWIDTH)
  1677. DllStructSetData($TRECT, 4, $IHEIGHT)
  1678. If $BRGB Then
  1679. $ICOLOR = BitOR(BitAND($ICOLOR, 65280), BitShift(BitAND($ICOLOR, 255), -16), BitShift(BitAND($ICOLOR, 16711680), 16))
  1680. EndIf
  1681. Local $HBRUSH = _WINAPI_CREATESOLIDBRUSH($ICOLOR)
  1682. _WINAPI_FILLRECT($HDESTDC, DllStructGetPtr($TRECT), $HBRUSH)
  1683. If @error Then
  1684. _WINAPI_DELETEOBJECT($HBITMAP)
  1685. $HBITMAP = 0
  1686. EndIf
  1687. _WINAPI_DELETEOBJECT($HBRUSH)
  1688. _WINAPI_RELEASEDC($HWND, $HDC)
  1689. _WINAPI_SELECTOBJECT($HDESTDC, $HOLD)
  1690. _WINAPI_DELETEDC($HDESTDC)
  1691. If Not $HBITMAP Then Return SetError(1, 0, 0)
  1692. Return $HBITMAP
  1693. EndFunc
  1694. Func _WINAPI_CREATESOLIDBRUSH($NCOLOR)
  1695. Local $ARESULT = DllCall("gdi32.dll", "handle", "CreateSolidBrush", "dword", $NCOLOR)
  1696. If @error Then Return SetError(@error, @extended, 0)
  1697. Return $ARESULT[0]
  1698. EndFunc
  1699. Func _WINAPI_CREATEWINDOWEX($IEXSTYLE, $SCLASS, $SNAME, $ISTYLE, $IX, $IY, $IWIDTH, $IHEIGHT, $HPARENT, $HMENU = 0, $HINSTANCE = 0, $PPARAM = 0)
  1700. If $HINSTANCE = 0 Then $HINSTANCE = _WINAPI_GETMODULEHANDLE("")
  1701. 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)
  1702. If @error Then Return SetError(@error, @extended, 0)
  1703. Return $ARESULT[0]
  1704. EndFunc
  1705. Func _WINAPI_DEFWINDOWPROC($HWND, $IMSG, $IWPARAM, $ILPARAM)
  1706. Local $ARESULT = DllCall("user32.dll", "lresult", "DefWindowProc", "hwnd", $HWND, "uint", $IMSG, "wparam", $IWPARAM, "lparam", $ILPARAM)
  1707. If @error Then Return SetError(@error, @extended, 0)
  1708. Return $ARESULT[0]
  1709. EndFunc
  1710. Func _WINAPI_DELETEDC($HDC)
  1711. Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteDC", "handle", $HDC)
  1712. If @error Then Return SetError(@error, @extended, False)
  1713. Return $ARESULT[0]
  1714. EndFunc
  1715. Func _WINAPI_DELETEOBJECT($HOBJECT)
  1716. Local $ARESULT = DllCall("gdi32.dll", "bool", "DeleteObject", "handle", $HOBJECT)
  1717. If @error Then Return SetError(@error, @extended, False)
  1718. Return $ARESULT[0]
  1719. EndFunc
  1720. Func _WINAPI_DESTROYICON($HICON)
  1721. Local $ARESULT = DllCall("user32.dll", "bool", "DestroyIcon", "handle", $HICON)
  1722. If @error Then Return SetError(@error, @extended, False)
  1723. Return $ARESULT[0]
  1724. EndFunc
  1725. Func _WINAPI_DESTROYWINDOW($HWND)
  1726. Local $ARESULT = DllCall("user32.dll", "bool", "DestroyWindow", "hwnd", $HWND)
  1727. If @error Then Return SetError(@error, @extended, False)
  1728. Return $ARESULT[0]
  1729. EndFunc
  1730. Func _WINAPI_DRAWEDGE($HDC, $PTRRECT, $NEDGETYPE, $GRFFLAGS)
  1731. Local $ARESULT = DllCall("user32.dll", "bool", "DrawEdge", "handle", $HDC, "ptr", $PTRRECT, "uint", $NEDGETYPE, "uint", $GRFFLAGS)
  1732. If @error Then Return SetError(@error, @extended, False)
  1733. Return $ARESULT[0]
  1734. EndFunc
  1735. Func _WINAPI_DRAWFRAMECONTROL($HDC, $PTRRECT, $NTYPE, $NSTATE)
  1736. Local $ARESULT = DllCall("user32.dll", "bool", "DrawFrameControl", "handle", $HDC, "ptr", $PTRRECT, "uint", $NTYPE, "uint", $NSTATE)
  1737. If @error Then Return SetError(@error, @extended, False)
  1738. Return $ARESULT[0]
  1739. EndFunc
  1740. Func _WINAPI_DRAWICON($HDC, $IX, $IY, $HICON)
  1741. Local $ARESULT = DllCall("user32.dll", "bool", "DrawIcon", "handle", $HDC, "int", $IX, "int", $IY, "handle", $HICON)
  1742. If @error Then Return SetError(@error, @extended, False)
  1743. Return $ARESULT[0]
  1744. EndFunc
  1745. Func _WINAPI_DRAWICONEX($HDC, $IX, $IY, $HICON, $IWIDTH = 0, $IHEIGHT = 0, $ISTEP = 0, $HBRUSH = 0, $IFLAGS = 3)
  1746. Local $IOPTIONS
  1747. Switch $IFLAGS
  1748. Case 1
  1749. $IOPTIONS = $__WINAPICONSTANT_DI_MASK
  1750. Case 2
  1751. $IOPTIONS = $__WINAPICONSTANT_DI_IMAGE
  1752. Case 3
  1753. $IOPTIONS = $__WINAPICONSTANT_DI_NORMAL
  1754. Case 4
  1755. $IOPTIONS = $__WINAPICONSTANT_DI_COMPAT
  1756. Case 5
  1757. $IOPTIONS = $__WINAPICONSTANT_DI_DEFAULTSIZE
  1758. Case Else
  1759. $IOPTIONS = $__WINAPICONSTANT_DI_NOMIRROR
  1760. EndSwitch
  1761. 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)
  1762. If @error Then Return SetError(@error, @extended, False)
  1763. Return $ARESULT[0]
  1764. EndFunc
  1765. Func _WINAPI_DRAWLINE($HDC, $IX1, $IY1, $IX2, $IY2)
  1766. _WINAPI_MOVETO($HDC, $IX1, $IY1)
  1767. If @error Then Return SetError(@error, @extended, False)
  1768. _WINAPI_LINETO($HDC, $IX2, $IY2)
  1769. If @error Then Return SetError(@error, @extended, False)
  1770. Return True
  1771. EndFunc
  1772. Func _WINAPI_DRAWTEXT($HDC, $STEXT, ByRef $TRECT, $IFLAGS)
  1773. Local $ARESULT = DllCall("user32.dll", "int", "DrawTextW", "handle", $HDC, "wstr", $STEXT, "int", -1, "ptr", DllStructGetPtr($TRECT), "uint", $IFLAGS)
  1774. If @error Then Return SetError(@error, @extended, 0)
  1775. Return $ARESULT[0]
  1776. EndFunc
  1777. Func _WINAPI_ENABLEWINDOW($HWND, $FENABLE = True)
  1778. Local $ARESULT = DllCall("user32.dll", "bool", "EnableWindow", "hwnd", $HWND, "bool", $FENABLE)
  1779. If @error Then Return SetError(@error, @extended, False)
  1780. Return $ARESULT[0]
  1781. EndFunc
  1782. Func _WINAPI_ENUMDISPLAYDEVICES($SDEVICE, $IDEVNUM)
  1783. Local $PNAME = 0, $IFLAGS = 0, $ADEVICE[5]
  1784. If $SDEVICE <> "" Then
  1785. Local $TNAME = DllStructCreate("wchar Text[" & StringLen($SDEVICE) + 1 & "]")
  1786. $PNAME = DllStructGetPtr($TNAME)
  1787. DllStructSetData($TNAME, "Text", $SDEVICE)
  1788. EndIf
  1789. Local $TDEVICE = DllStructCreate($TAGDISPLAY_DEVICE)
  1790. Local $PDEVICE = DllStructGetPtr($TDEVICE)
  1791. Local $IDEVICE = DllStructGetSize($TDEVICE)
  1792. DllStructSetData($TDEVICE, "Size", $IDEVICE)
  1793. DllCall("user32.dll", "bool", "EnumDisplayDevicesW", "ptr", $PNAME, "dword", $IDEVNUM, "ptr", $PDEVICE, "dword", 1)
  1794. If @error Then Return SetError(@error, @extended, 0)
  1795. Local $IN = DllStructGetData($TDEVICE, "Flags")
  1796. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) <> 0 Then $IFLAGS = BitOR($IFLAGS, 1)
  1797. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 2)
  1798. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER) <> 0 Then $IFLAGS = BitOR($IFLAGS, 4)
  1799. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 8)
  1800. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE) <> 0 Then $IFLAGS = BitOR($IFLAGS, 16)
  1801. If BitAND($IN, $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED) <> 0 Then $IFLAGS = BitOR($IFLAGS, 32)
  1802. $ADEVICE[0] = True
  1803. $ADEVICE[1] = DllStructGetData($TDEVICE, "Name")
  1804. $ADEVICE[2] = DllStructGetData($TDEVICE, "String")
  1805. $ADEVICE[3] = $IFLAGS
  1806. $ADEVICE[4] = DllStructGetData($TDEVICE, "ID")
  1807. Return $ADEVICE
  1808. EndFunc
  1809. Func _WINAPI_ENUMWINDOWS($FVISIBLE = True, $HWND = Default)
  1810. __WINAPI_ENUMWINDOWSINIT()
  1811. If $HWND = Default Then $HWND = _WINAPI_GETDESKTOPWINDOW()
  1812. __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE)
  1813. Return $__GAWINLIST_WINAPI
  1814. EndFunc
  1815. Func __WINAPI_ENUMWINDOWSADD($HWND, $SCLASS = "")
  1816. If $SCLASS = "" Then $SCLASS = _WINAPI_GETCLASSNAME($HWND)
  1817. $__GAWINLIST_WINAPI[0][0] += 1
  1818. Local $ICOUNT = $__GAWINLIST_WINAPI[0][0]
  1819. If $ICOUNT >= $__GAWINLIST_WINAPI[0][1] Then
  1820. ReDim $__GAWINLIST_WINAPI[$ICOUNT + 64][2]
  1821. $__GAWINLIST_WINAPI[0][1] += 64
  1822. EndIf
  1823. $__GAWINLIST_WINAPI[$ICOUNT][0] = $HWND
  1824. $__GAWINLIST_WINAPI[$ICOUNT][1] = $SCLASS
  1825. EndFunc
  1826. Func __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE = True)
  1827. $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_CHILD)
  1828. While $HWND <> 0
  1829. If (Not $FVISIBLE) Or _WINAPI_ISWINDOWVISIBLE($HWND) Then
  1830. __WINAPI_ENUMWINDOWSCHILD($HWND, $FVISIBLE)
  1831. __WINAPI_ENUMWINDOWSADD($HWND)
  1832. EndIf
  1833. $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
  1834. WEnd
  1835. EndFunc
  1836. Func __WINAPI_ENUMWINDOWSINIT()
  1837. ReDim $__GAWINLIST_WINAPI[64][2]
  1838. $__GAWINLIST_WINAPI[0][0] = 0
  1839. $__GAWINLIST_WINAPI[0][1] = 64
  1840. EndFunc
  1841. Func _WINAPI_ENUMWINDOWSPOPUP()
  1842. __WINAPI_ENUMWINDOWSINIT()
  1843. Local $HWND = _WINAPI_GETWINDOW(_WINAPI_GETDESKTOPWINDOW(), $__WINAPICONSTANT_GW_CHILD)
  1844. Local $SCLASS
  1845. While $HWND <> 0
  1846. If _WINAPI_ISWINDOWVISIBLE($HWND) Then
  1847. $SCLASS = _WINAPI_GETCLASSNAME($HWND)
  1848. If $SCLASS = "#32768" Then
  1849. __WINAPI_ENUMWINDOWSADD($HWND)
  1850. ElseIf $SCLASS = "ToolbarWindow32" Then
  1851. __WINAPI_ENUMWINDOWSADD($HWND)
  1852. ElseIf $SCLASS = "ToolTips_Class32" Then
  1853. __WINAPI_ENUMWINDOWSADD($HWND)
  1854. ElseIf $SCLASS = "BaseBar" Then
  1855. __WINAPI_ENUMWINDOWSCHILD($HWND)
  1856. EndIf
  1857. EndIf
  1858. $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
  1859. WEnd
  1860. Return $__GAWINLIST_WINAPI
  1861. EndFunc
  1862. Func _WINAPI_ENUMWINDOWSTOP()
  1863. __WINAPI_ENUMWINDOWSINIT()
  1864. Local $HWND = _WINAPI_GETWINDOW(_WINAPI_GETDESKTOPWINDOW(), $__WINAPICONSTANT_GW_CHILD)
  1865. While $HWND <> 0
  1866. If _WINAPI_ISWINDOWVISIBLE($HWND) Then __WINAPI_ENUMWINDOWSADD($HWND)
  1867. $HWND = _WINAPI_GETWINDOW($HWND, $__WINAPICONSTANT_GW_HWNDNEXT)
  1868. WEnd
  1869. Return $__GAWINLIST_WINAPI
  1870. EndFunc
  1871. Func _WINAPI_EXPANDENVIRONMENTSTRINGS($SSTRING)
  1872. Local $ARESULT = DllCall("kernel32.dll", "dword", "ExpandEnvironmentStringsW", "wstr", $SSTRING, "wstr", "", "dword", 4096)
  1873. If @error Then Return SetError(@error, @extended, "")
  1874. Return $ARESULT[2]
  1875. EndFunc
  1876. Func _WINAPI_EXTRACTICONEX($SFILE, $IINDEX, $PLARGE, $PSMALL, $IICONS)
  1877. Local $ARESULT = DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $SFILE, "int", $IINDEX, "handle", $PLARGE, "handle", $PSMALL, "uint", $IICONS)
  1878. If @error Then Return SetError(@error, @extended, 0)
  1879. Return $ARESULT[0]
  1880. EndFunc
  1881. Func _WINAPI_FATALAPPEXIT($SMESSAGE)
  1882. DllCall("kernel32.dll", "none", "FatalAppExitW", "uint", 0, "wstr", $SMESSAGE)
  1883. If @error Then Return SetError(@error, @extended)
  1884. EndFunc
  1885. Func _WINAPI_FILLRECT($HDC, $PTRRECT, $HBRUSH)
  1886. Local $ARESULT
  1887. If IsPtr($HBRUSH) Then
  1888. $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "ptr", $PTRRECT, "handle", $HBRUSH)
  1889. Else
  1890. $ARESULT = DllCall("user32.dll", "int", "FillRect", "handle", $HDC, "ptr", $PTRRECT, "dword", $HBRUSH)
  1891. EndIf
  1892. If @error Then Return SetError(@error, @extended, False)
  1893. Return $ARESULT[0]
  1894. EndFunc
  1895. Func _WINAPI_FINDEXECUTABLE($SFILENAME, $SDIRECTORY = "")
  1896. Local $ARESULT = DllCall("shell32.dll", "INT", "FindExecutableW", "wstr", $SFILENAME, "wstr", $SDIRECTORY, "wstr", "")
  1897. If @error Then Return SetError(@error, @extended, 0)
  1898. Return SetExtended($ARESULT[0], $ARESULT[3])
  1899. EndFunc
  1900. Func _WINAPI_FINDWINDOW($SCLASSNAME, $SWINDOWNAME)
  1901. Local $ARESULT = DllCall("user32.dll", "hwnd", "FindWindowW", "wstr", $SCLASSNAME, "wstr", $SWINDOWNAME)
  1902. If @error Then Return SetError(@error, @extended, 0)
  1903. Return $ARESULT[0]
  1904. EndFunc
  1905. Func _WINAPI_FLASHWINDOW($HWND, $FINVERT = True)
  1906. Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindow", "hwnd", $HWND, "bool", $FINVERT)
  1907. If @error Then Return SetError(@error, @extended, False)
  1908. Return $ARESULT[0]
  1909. EndFunc
  1910. Func _WINAPI_FLASHWINDOWEX($HWND, $IFLAGS = 3, $ICOUNT = 3, $ITIMEOUT = 0)
  1911. Local $TFLASH = DllStructCreate($TAGFLASHWINFO)
  1912. Local $PFLASH = DllStructGetPtr($TFLASH)
  1913. Local $IFLASH = DllStructGetSize($TFLASH)
  1914. Local $IMODE = 0
  1915. If BitAND($IFLAGS, 1) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_CAPTION)
  1916. If BitAND($IFLAGS, 2) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TRAY)
  1917. If BitAND($IFLAGS, 4) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMER)
  1918. If BitAND($IFLAGS, 8) <> 0 Then $IMODE = BitOR($IMODE, $__WINAPICONSTANT_FLASHW_TIMERNOFG)
  1919. DllStructSetData($TFLASH, "Size", $IFLASH)
  1920. DllStructSetData($TFLASH, "hWnd", $HWND)
  1921. DllStructSetData($TFLASH, "Flags", $IMODE)
  1922. DllStructSetData($TFLASH, "Count", $ICOUNT)
  1923. DllStructSetData($TFLASH, "Timeout", $ITIMEOUT)
  1924. Local $ARESULT = DllCall("user32.dll", "bool", "FlashWindowEx", "ptr", $PFLASH)
  1925. If @error Then Return SetError(@error, @extended, False)
  1926. Return $ARESULT[0]
  1927. EndFunc
  1928. Func _WINAPI_FLOATTOINT($NFLOAT)
  1929. Local $TFLOAT = DllStructCreate("float")
  1930. Local $TINT = DllStructCreate("int", DllStructGetPtr($TFLOAT))
  1931. DllStructSetData($TFLOAT, 1, $NFLOAT)
  1932. Return DllStructGetData($TINT, 1)
  1933. EndFunc
  1934. Func _WINAPI_FLUSHFILEBUFFERS($HFILE)
  1935. Local $ARESULT = DllCall("kernel32.dll", "bool", "FlushFileBuffers", "handle", $HFILE)
  1936. If @error Then Return SetError(@error, @extended, False)
  1937. Return $ARESULT[0]
  1938. EndFunc
  1939. Func _WINAPI_FORMATMESSAGE($IFLAGS, $PSOURCE, $IMESSAGEID, $ILANGUAGEID, ByRef $PBUFFER, $ISIZE, $VARGUMENTS)
  1940. Local $SBUFFERTYPE = "ptr"
  1941. If IsString($PBUFFER) Then $SBUFFERTYPE = "wstr"
  1942. Local $ARESULT = DllCall("Kernel32.dll", "dword", "FormatMessageW", "dword", $IFLAGS, "ptr", $PSOURCE, "dword", $IMESSAGEID, "dword", $ILANGUAGEID, $SBUFFERTYPE, $PBUFFER, "dword", $ISIZE, "ptr", $VARGUMENTS)
  1943. If @error Then Return SetError(@error, @extended, 0)
  1944. If $SBUFFERTYPE = "wstr" Then $PBUFFER = $ARESULT[5]
  1945. Return $ARESULT[0]
  1946. EndFunc
  1947. Func _WINAPI_FRAMERECT($HDC, $PTRRECT, $HBRUSH)
  1948. Local $ARESULT = DllCall("user32.dll", "int", "FrameRect", "handle", $HDC, "ptr", $PTRRECT, "handle", $HBRUSH)
  1949. If @error Then Return SetError(@error, @extended, False)
  1950. Return $ARESULT[0]
  1951. EndFunc
  1952. Func _WINAPI_FREELIBRARY($HMODULE)
  1953. Local $ARESULT = DllCall("kernel32.dll", "bool", "FreeLibrary", "handle", $HMODULE)
  1954. If @error Then Return SetError(@error, @extended, False)
  1955. Return $ARESULT[0]
  1956. EndFunc
  1957. Func _WINAPI_GETANCESTOR($HWND, $IFLAGS = 1)
  1958. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetAncestor", "hwnd", $HWND, "uint", $IFLAGS)
  1959. If @error Then Return SetError(@error, @extended, 0)
  1960. Return $ARESULT[0]
  1961. EndFunc
  1962. Func _WINAPI_GETASYNCKEYSTATE($IKEY)
  1963. Local $ARESULT = DllCall("user32.dll", "short", "GetAsyncKeyState", "int", $IKEY)
  1964. If @error Then Return SetError(@error, @extended, 0)
  1965. Return $ARESULT[0]
  1966. EndFunc
  1967. Func _WINAPI_GETBKMODE($HDC)
  1968. Local $ARESULT = DllCall("gdi32.dll", "int", "GetBkMode", "handle", $HDC)
  1969. If @error Then Return SetError(@error, @extended, 0)
  1970. Return $ARESULT[0]
  1971. EndFunc
  1972. Func _WINAPI_GETCLASSNAME($HWND)
  1973. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  1974. Local $ARESULT = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $HWND, "wstr", "", "int", 4096)
  1975. If @error Then Return SetError(@error, @extended, False)
  1976. Return SetExtended($ARESULT[0], $ARESULT[2])
  1977. EndFunc
  1978. Func _WINAPI_GETCLIENTHEIGHT($HWND)
  1979. Local $TRECT = _WINAPI_GETCLIENTRECT($HWND)
  1980. If @error Then Return SetError(@error, @extended, 0)
  1981. Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top")
  1982. EndFunc
  1983. Func _WINAPI_GETCLIENTWIDTH($HWND)
  1984. Local $TRECT = _WINAPI_GETCLIENTRECT($HWND)
  1985. If @error Then Return SetError(@error, @extended, 0)
  1986. Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left")
  1987. EndFunc
  1988. Func _WINAPI_GETCLIENTRECT($HWND)
  1989. Local $TRECT = DllStructCreate($TAGRECT)
  1990. DllCall("user32.dll", "bool", "GetClientRect", "hwnd", $HWND, "ptr", DllStructGetPtr($TRECT))
  1991. If @error Then Return SetError(@error, @extended, 0)
  1992. Return $TRECT
  1993. EndFunc
  1994. Func _WINAPI_GETCURRENTPROCESS()
  1995. Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentProcess")
  1996. If @error Then Return SetError(@error, @extended, 0)
  1997. Return $ARESULT[0]
  1998. EndFunc
  1999. Func _WINAPI_GETCURRENTPROCESSID()
  2000. Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentProcessId")
  2001. If @error Then Return SetError(@error, @extended, 0)
  2002. Return $ARESULT[0]
  2003. EndFunc
  2004. Func _WINAPI_GETCURRENTTHREAD()
  2005. Local $ARESULT = DllCall("kernel32.dll", "handle", "GetCurrentThread")
  2006. If @error Then Return SetError(@error, @extended, 0)
  2007. Return $ARESULT[0]
  2008. EndFunc
  2009. Func _WINAPI_GETCURRENTTHREADID()
  2010. Local $ARESULT = DllCall("kernel32.dll", "dword", "GetCurrentThreadId")
  2011. If @error Then Return SetError(@error, @extended, 0)
  2012. Return $ARESULT[0]
  2013. EndFunc
  2014. Func _WINAPI_GETCURSORINFO()
  2015. Local $TCURSOR = DllStructCreate($TAGCURSORINFO)
  2016. Local $ICURSOR = DllStructGetSize($TCURSOR)
  2017. DllStructSetData($TCURSOR, "Size", $ICURSOR)
  2018. DllCall("user32.dll", "bool", "GetCursorInfo", "ptr", DllStructGetPtr($TCURSOR))
  2019. If @error Then Return SetError(@error, @extended, 0)
  2020. Local $ACURSOR[5]
  2021. $ACURSOR[0] = True
  2022. $ACURSOR[1] = DllStructGetData($TCURSOR, "Flags") <> 0
  2023. $ACURSOR[2] = DllStructGetData($TCURSOR, "hCursor")
  2024. $ACURSOR[3] = DllStructGetData($TCURSOR, "X")
  2025. $ACURSOR[4] = DllStructGetData($TCURSOR, "Y")
  2026. Return $ACURSOR
  2027. EndFunc
  2028. Func _WINAPI_GETDC($HWND)
  2029. Local $ARESULT = DllCall("user32.dll", "handle", "GetDC", "hwnd", $HWND)
  2030. If @error Then Return SetError(@error, @extended, 0)
  2031. Return $ARESULT[0]
  2032. EndFunc
  2033. Func _WINAPI_GETDESKTOPWINDOW()
  2034. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDesktopWindow")
  2035. If @error Then Return SetError(@error, @extended, 0)
  2036. Return $ARESULT[0]
  2037. EndFunc
  2038. Func _WINAPI_GETDEVICECAPS($HDC, $IINDEX)
  2039. Local $ARESULT = DllCall("gdi32.dll", "int", "GetDeviceCaps", "handle", $HDC, "int", $IINDEX)
  2040. If @error Then Return SetError(@error, @extended, 0)
  2041. Return $ARESULT[0]
  2042. EndFunc
  2043. Func _WINAPI_GETDIBITS($HDC, $HBMP, $ISTARTSCAN, $ISCANLINES, $PBITS, $PBI, $IUSAGE)
  2044. Local $ARESULT = DllCall("gdi32.dll", "int", "GetDIBits", "handle", $HDC, "handle", $HBMP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "ptr", $PBITS, "ptr", $PBI, "uint", $IUSAGE)
  2045. If @error Then Return SetError(@error, @extended, False)
  2046. Return $ARESULT[0]
  2047. EndFunc
  2048. Func _WINAPI_GETDLGCTRLID($HWND)
  2049. Local $ARESULT = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $HWND)
  2050. If @error Then Return SetError(@error, @extended, 0)
  2051. Return $ARESULT[0]
  2052. EndFunc
  2053. Func _WINAPI_GETDLGITEM($HWND, $IITEMID)
  2054. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetDlgItem", "hwnd", $HWND, "int", $IITEMID)
  2055. If @error Then Return SetError(@error, @extended, 0)
  2056. Return $ARESULT[0]
  2057. EndFunc
  2058. Func _WINAPI_GETFOCUS()
  2059. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetFocus")
  2060. If @error Then Return SetError(@error, @extended, 0)
  2061. Return $ARESULT[0]
  2062. EndFunc
  2063. Func _WINAPI_GETFOREGROUNDWINDOW()
  2064. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetForegroundWindow")
  2065. If @error Then Return SetError(@error, @extended, 0)
  2066. Return $ARESULT[0]
  2067. EndFunc
  2068. Func _WINAPI_GETGUIRESOURCES($IFLAG = 0, $HPROCESS = -1)
  2069. If $HPROCESS = -1 Then $HPROCESS = _WINAPI_GETCURRENTPROCESS()
  2070. Local $ARESULT = DllCall("user32.dll", "dword", "GetGuiResources", "handle", $HPROCESS, "dword", $IFLAG)
  2071. If @error Then Return SetError(@error, @extended, 0)
  2072. Return $ARESULT[0]
  2073. EndFunc
  2074. Func _WINAPI_GETICONINFO($HICON)
  2075. Local $TINFO = DllStructCreate($TAGICONINFO)
  2076. DllCall("user32.dll", "bool", "GetIconInfo", "handle", $HICON, "ptr", DllStructGetPtr($TINFO))
  2077. If @error Then Return SetError(@error, @extended, 0)
  2078. Local $AICON[6]
  2079. $AICON[0] = True
  2080. $AICON[1] = DllStructGetData($TINFO, "Icon") <> 0
  2081. $AICON[2] = DllStructGetData($TINFO, "XHotSpot")
  2082. $AICON[3] = DllStructGetData($TINFO, "YHotSpot")
  2083. $AICON[4] = DllStructGetData($TINFO, "hMask")
  2084. $AICON[5] = DllStructGetData($TINFO, "hColor")
  2085. Return $AICON
  2086. EndFunc
  2087. Func _WINAPI_GETFILESIZEEX($HFILE)
  2088. Local $ARESULT = DllCall("kernel32.dll", "bool", "GetFileSizeEx", "handle", $HFILE, "int64*", 0)
  2089. If @error Then Return SetError(@error, @extended, 0)
  2090. Return $ARESULT[2]
  2091. EndFunc
  2092. Func _WINAPI_GETLASTERRORMESSAGE()
  2093. Local $TBUFFERPTR = DllStructCreate("ptr")
  2094. Local $PBUFFERPTR = DllStructGetPtr($TBUFFERPTR)
  2095. Local $NCOUNT = _WINAPI_FORMATMESSAGE(BitOR($__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER, $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM), 0, _WINAPI_GETLASTERROR(), 0, $PBUFFERPTR, 0, 0)
  2096. If @error Then Return SetError(@error, 0, "")
  2097. Local $STEXT = ""
  2098. Local $PBUFFER = DllStructGetData($TBUFFERPTR, 1)
  2099. If $PBUFFER Then
  2100. If $NCOUNT > 0 Then
  2101. Local $TBUFFER = DllStructCreate("wchar[" & ($NCOUNT + 1) & "]", $PBUFFER)
  2102. $STEXT = DllStructGetData($TBUFFER, 1)
  2103. EndIf
  2104. _WINAPI_LOCALFREE($PBUFFER)
  2105. EndIf
  2106. Return $STEXT
  2107. EndFunc
  2108. Func _WINAPI_GETLAYEREDWINDOWATTRIBUTES($HWND, ByRef $I_TRANSCOLOR, ByRef $TRANSPARENCY, $ASCOLORREF = False)
  2109. $I_TRANSCOLOR = -1
  2110. $TRANSPARENCY = -1
  2111. Local $ARESULT = DllCall("user32.dll", "bool", "GetLayeredWindowAttributes", "hwnd", $HWND, "dword*", $I_TRANSCOLOR, "byte*", $TRANSPARENCY, "dword*", 0)
  2112. If @error Then Return SetError(@error, @extended, 0)
  2113. If Not $ASCOLORREF Then
  2114. $ARESULT[2] = Hex(String($ARESULT[2]), 6)
  2115. $ARESULT[2] = "0x" & StringMid($ARESULT[2], 5, 2) & StringMid($ARESULT[2], 3, 2) & StringMid($ARESULT[2], 1, 2)
  2116. EndIf
  2117. $I_TRANSCOLOR = $ARESULT[2]
  2118. $TRANSPARENCY = $ARESULT[3]
  2119. Return $ARESULT[4]
  2120. EndFunc
  2121. Func _WINAPI_GETMODULEHANDLE($SMODULENAME)
  2122. Local $SMODULENAMETYPE = "wstr"
  2123. If $SMODULENAME = "" Then
  2124. $SMODULENAME = 0
  2125. $SMODULENAMETYPE = "ptr"
  2126. EndIf
  2127. Local $ARESULT = DllCall("kernel32.dll", "handle", "GetModuleHandleW", $SMODULENAMETYPE, $SMODULENAME)
  2128. If @error Then Return SetError(@error, @extended, 0)
  2129. Return $ARESULT[0]
  2130. EndFunc
  2131. Func _WINAPI_GETMOUSEPOS($FTOCLIENT = False, $HWND = 0)
  2132. Local $IMODE = Opt("MouseCoordMode", 1)
  2133. Local $APOS = MouseGetPos()
  2134. Opt("MouseCoordMode", $IMODE)
  2135. Local $TPOINT = DllStructCreate($TAGPOINT)
  2136. DllStructSetData($TPOINT, "X", $APOS[0])
  2137. DllStructSetData($TPOINT, "Y", $APOS[1])
  2138. If $FTOCLIENT Then
  2139. _WINAPI_SCREENTOCLIENT($HWND, $TPOINT)
  2140. If @error Then Return SetError(@error, @extended, 0)
  2141. EndIf
  2142. Return $TPOINT
  2143. EndFunc
  2144. Func _WINAPI_GETMOUSEPOSX($FTOCLIENT = False, $HWND = 0)
  2145. Local $TPOINT = _WINAPI_GETMOUSEPOS($FTOCLIENT, $HWND)
  2146. If @error Then Return SetError(@error, @extended, 0)
  2147. Return DllStructGetData($TPOINT, "X")
  2148. EndFunc
  2149. Func _WINAPI_GETMOUSEPOSY($FTOCLIENT = False, $HWND = 0)
  2150. Local $TPOINT = _WINAPI_GETMOUSEPOS($FTOCLIENT, $HWND)
  2151. If @error Then Return SetError(@error, @extended, 0)
  2152. Return DllStructGetData($TPOINT, "Y")
  2153. EndFunc
  2154. Func _WINAPI_GETOBJECT($HOBJECT, $ISIZE, $POBJECT)
  2155. Local $ARESULT = DllCall("gdi32.dll", "int", "GetObject", "handle", $HOBJECT, "int", $ISIZE, "ptr", $POBJECT)
  2156. If @error Then Return SetError(@error, @extended, 0)
  2157. Return $ARESULT[0]
  2158. EndFunc
  2159. Func _WINAPI_GETOPENFILENAME($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0)
  2160. Local $IPATHLEN = 4096
  2161. Local $INULLS = 0
  2162. Local $TOFN = DllStructCreate($TAGOPENFILENAME)
  2163. Local $AFILES[1] = [0]
  2164. Local $IFLAG = $IFLAGS
  2165. Local $ASFLINES = StringSplit($SFILTER, "|")
  2166. Local $ASFILTER[$ASFLINES[0] * 2 + 1]
  2167. Local $ISTART, $IFINAL, $STFILTER
  2168. $ASFILTER[0] = $ASFLINES[0] * 2
  2169. For $I = 1 To $ASFLINES[0]
  2170. $ISTART = StringInStr($ASFLINES[$I], "(", 0, 1)
  2171. $IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1)
  2172. $ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3)
  2173. $ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3)
  2174. $STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];"
  2175. Next
  2176. Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]")
  2177. Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]")
  2178. Local $TFILTER = DllStructCreate($STFILTER & "wchar")
  2179. Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]")
  2180. Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]")
  2181. For $I = 1 To $ASFILTER[0]
  2182. DllStructSetData($TFILTER, $I, $ASFILTER[$I])
  2183. Next
  2184. DllStructSetData($TTITLE, "Title", $STITLE)
  2185. DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR)
  2186. DllStructSetData($TPATH, "Path", $SDEFAULTFILE)
  2187. DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT)
  2188. DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN))
  2189. DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER)
  2190. DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER))
  2191. DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX)
  2192. DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH))
  2193. DllStructSetData($TOFN, "nMaxFile", $IPATHLEN)
  2194. DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR))
  2195. DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE))
  2196. DllStructSetData($TOFN, "Flags", $IFLAG)
  2197. DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN))
  2198. DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX)
  2199. DllCall("comdlg32.dll", "bool", "GetOpenFileNameW", "ptr", DllStructGetPtr($TOFN))
  2200. If @error Then Return SetError(@error, @extended, $AFILES)
  2201. If BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT And BitAND($IFLAGS, $OFN_EXPLORER) = $OFN_EXPLORER Then
  2202. For $X = 1 To $IPATHLEN
  2203. If DllStructGetData($TPATH, "Path", $X) = Chr(0) Then
  2204. DllStructSetData($TPATH, "Path", "|", $X)
  2205. $INULLS += 1
  2206. Else
  2207. $INULLS = 0
  2208. EndIf
  2209. If $INULLS = 2 Then ExitLoop
  2210. Next
  2211. DllStructSetData($TPATH, "Path", Chr(0), $X - 1)
  2212. $AFILES = StringSplit(DllStructGetData($TPATH, "Path"), "|")
  2213. If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2214. Return StringSplit(DllStructGetData($TPATH, "Path"), "|")
  2215. ElseIf BitAND($IFLAGS, $OFN_ALLOWMULTISELECT) = $OFN_ALLOWMULTISELECT Then
  2216. $AFILES = StringSplit(DllStructGetData($TPATH, "Path"), " ")
  2217. If $AFILES[0] = 1 Then Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2218. Return StringSplit(StringReplace(DllStructGetData($TPATH, "Path"), " ", "|"), "|")
  2219. Else
  2220. Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2221. EndIf
  2222. EndFunc
  2223. Func _WINAPI_GETOVERLAPPEDRESULT($HFILE, $POVERLAPPED, ByRef $IBYTES, $FWAIT = False)
  2224. Local $ARESULT = DllCall("kernel32.dll", "bool", "GetOverlappedResult", "handle", $HFILE, "ptr", $POVERLAPPED, "dword*", 0, "bool", $FWAIT)
  2225. If @error Then Return SetError(@error, @extended, False)
  2226. $IBYTES = $ARESULT[3]
  2227. Return $ARESULT[0]
  2228. EndFunc
  2229. Func _WINAPI_GETPARENT($HWND)
  2230. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $HWND)
  2231. If @error Then Return SetError(@error, @extended, 0)
  2232. Return $ARESULT[0]
  2233. EndFunc
  2234. Func _WINAPI_GETPROCESSAFFINITYMASK($HPROCESS)
  2235. Local $ARESULT = DllCall("kernel32.dll", "bool", "GetProcessAffinityMask", "handle", $HPROCESS, "dword_ptr*", 0, "dword_ptr*", 0)
  2236. If @error Then Return SetError(@error, @extended, 0)
  2237. Local $AMASK[3]
  2238. $AMASK[0] = True
  2239. $AMASK[1] = $ARESULT[2]
  2240. $AMASK[2] = $ARESULT[3]
  2241. Return $AMASK
  2242. EndFunc
  2243. Func _WINAPI_GETSAVEFILENAME($STITLE = "", $SFILTER = "All files (*.*)", $SINITALDIR = ".", $SDEFAULTFILE = "", $SDEFAULTEXT = "", $IFILTERINDEX = 1, $IFLAGS = 0, $IFLAGSEX = 0, $HWNDOWNER = 0)
  2244. Local $IPATHLEN = 4096
  2245. Local $TOFN = DllStructCreate($TAGOPENFILENAME)
  2246. Local $AFILES[1] = [0]
  2247. Local $IFLAG = $IFLAGS
  2248. Local $ASFLINES = StringSplit($SFILTER, "|")
  2249. Local $ASFILTER[$ASFLINES[0] * 2 + 1]
  2250. Local $ISTART, $IFINAL, $STFILTER
  2251. $ASFILTER[0] = $ASFLINES[0] * 2
  2252. For $I = 1 To $ASFLINES[0]
  2253. $ISTART = StringInStr($ASFLINES[$I], "(", 0, 1)
  2254. $IFINAL = StringInStr($ASFLINES[$I], ")", 0, -1)
  2255. $ASFILTER[$I * 2 - 1] = StringStripWS(StringLeft($ASFLINES[$I], $ISTART - 1), 3)
  2256. $ASFILTER[$I * 2] = StringStripWS(StringTrimRight(StringTrimLeft($ASFLINES[$I], $ISTART), StringLen($ASFLINES[$I]) - $IFINAL + 1), 3)
  2257. $STFILTER &= "wchar[" & StringLen($ASFILTER[$I * 2 - 1]) + 1 & "];wchar[" & StringLen($ASFILTER[$I * 2]) + 1 & "];"
  2258. Next
  2259. Local $TTITLE = DllStructCreate("wchar Title[" & StringLen($STITLE) + 1 & "]")
  2260. Local $TINITIALDIR = DllStructCreate("wchar InitDir[" & StringLen($SINITALDIR) + 1 & "]")
  2261. Local $TFILTER = DllStructCreate($STFILTER & "wchar")
  2262. Local $TPATH = DllStructCreate("wchar Path[" & $IPATHLEN & "]")
  2263. Local $TEXTN = DllStructCreate("wchar Extension[" & StringLen($SDEFAULTEXT) + 1 & "]")
  2264. For $I = 1 To $ASFILTER[0]
  2265. DllStructSetData($TFILTER, $I, $ASFILTER[$I])
  2266. Next
  2267. DllStructSetData($TTITLE, "Title", $STITLE)
  2268. DllStructSetData($TINITIALDIR, "InitDir", $SINITALDIR)
  2269. DllStructSetData($TPATH, "Path", $SDEFAULTFILE)
  2270. DllStructSetData($TEXTN, "Extension", $SDEFAULTEXT)
  2271. DllStructSetData($TOFN, "StructSize", DllStructGetSize($TOFN))
  2272. DllStructSetData($TOFN, "hwndOwner", $HWNDOWNER)
  2273. DllStructSetData($TOFN, "lpstrFilter", DllStructGetPtr($TFILTER))
  2274. DllStructSetData($TOFN, "nFilterIndex", $IFILTERINDEX)
  2275. DllStructSetData($TOFN, "lpstrFile", DllStructGetPtr($TPATH))
  2276. DllStructSetData($TOFN, "nMaxFile", $IPATHLEN)
  2277. DllStructSetData($TOFN, "lpstrInitialDir", DllStructGetPtr($TINITIALDIR))
  2278. DllStructSetData($TOFN, "lpstrTitle", DllStructGetPtr($TTITLE))
  2279. DllStructSetData($TOFN, "Flags", $IFLAG)
  2280. DllStructSetData($TOFN, "lpstrDefExt", DllStructGetPtr($TEXTN))
  2281. DllStructSetData($TOFN, "FlagsEx", $IFLAGSEX)
  2282. DllCall("comdlg32.dll", "bool", "GetSaveFileNameW", "ptr", DllStructGetPtr($TOFN))
  2283. If @error Then Return SetError(@error, @extended, $AFILES)
  2284. Return __WINAPI_PARSEFILEDIALOGPATH(DllStructGetData($TPATH, "Path"))
  2285. EndFunc
  2286. Func _WINAPI_GETSTOCKOBJECT($IOBJECT)
  2287. Local $ARESULT = DllCall("gdi32.dll", "handle", "GetStockObject", "int", $IOBJECT)
  2288. If @error Then Return SetError(@error, @extended, 0)
  2289. Return $ARESULT[0]
  2290. EndFunc
  2291. Func _WINAPI_GETSTDHANDLE($ISTDHANDLE)
  2292. If $ISTDHANDLE < 0 Or $ISTDHANDLE > 2 Then Return SetError(2, 0, -1)
  2293. Local Const $AHANDLE[3] = [-10, -11, -12]
  2294. Local $ARESULT = DllCall("kernel32.dll", "handle", "GetStdHandle", "dword", $AHANDLE[$ISTDHANDLE])
  2295. If @error Then Return SetError(@error, @extended, -1)
  2296. Return $ARESULT[0]
  2297. EndFunc
  2298. Func _WINAPI_GETSYSCOLOR($IINDEX)
  2299. Local $ARESULT = DllCall("user32.dll", "dword", "GetSysColor", "int", $IINDEX)
  2300. If @error Then Return SetError(@error, @extended, 0)
  2301. Return $ARESULT[0]
  2302. EndFunc
  2303. Func _WINAPI_GETSYSCOLORBRUSH($IINDEX)
  2304. Local $ARESULT = DllCall("user32.dll", "handle", "GetSysColorBrush", "int", $IINDEX)
  2305. If @error Then Return SetError(@error, @extended, 0)
  2306. Return $ARESULT[0]
  2307. EndFunc
  2308. Func _WINAPI_GETSYSTEMMETRICS($IINDEX)
  2309. Local $ARESULT = DllCall("user32.dll", "int", "GetSystemMetrics", "int", $IINDEX)
  2310. If @error Then Return SetError(@error, @extended, 0)
  2311. Return $ARESULT[0]
  2312. EndFunc
  2313. Func _WINAPI_GETTEXTEXTENTPOINT32($HDC, $STEXT)
  2314. Local $TSIZE = DllStructCreate($TAGSIZE)
  2315. Local $ISIZE = StringLen($STEXT)
  2316. DllCall("gdi32.dll", "bool", "GetTextExtentPoint32W", "handle", $HDC, "wstr", $STEXT, "int", $ISIZE, "ptr", DllStructGetPtr($TSIZE))
  2317. If @error Then Return SetError(@error, @extended, 0)
  2318. Return $TSIZE
  2319. EndFunc
  2320. Func _WINAPI_GETWINDOW($HWND, $ICMD)
  2321. Local $ARESULT = DllCall("user32.dll", "hwnd", "GetWindow", "hwnd", $HWND, "uint", $ICMD)
  2322. If @error Then Return SetError(@error, @extended, 0)
  2323. Return $ARESULT[0]
  2324. EndFunc
  2325. Func _WINAPI_GETWINDOWDC($HWND)
  2326. Local $ARESULT = DllCall("user32.dll", "handle", "GetWindowDC", "hwnd", $HWND)
  2327. If @error Then Return SetError(@error, @extended, 0)
  2328. Return $ARESULT[0]
  2329. EndFunc
  2330. Func _WINAPI_GETWINDOWHEIGHT($HWND)
  2331. Local $TRECT = _WINAPI_GETWINDOWRECT($HWND)
  2332. If @error Then Return SetError(@error, @extended, 0)
  2333. Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top")
  2334. EndFunc
  2335. Func _WINAPI_GETWINDOWLONG($HWND, $IINDEX)
  2336. Local $SFUNCNAME = "GetWindowLongW"
  2337. If @AutoItX64 Then $SFUNCNAME = "GetWindowLongPtrW"
  2338. Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX)
  2339. If @error Then Return SetError(@error, @extended, 0)
  2340. Return $ARESULT[0]
  2341. EndFunc
  2342. Func _WINAPI_GETWINDOWPLACEMENT($HWND)
  2343. Local $TWINDOWPLACEMENT = DllStructCreate($TAGWINDOWPLACEMENT)
  2344. DllStructSetData($TWINDOWPLACEMENT, "length", DllStructGetSize($TWINDOWPLACEMENT))
  2345. Local $PWINDOWPLACEMENT = DllStructGetPtr($TWINDOWPLACEMENT)
  2346. DllCall("user32.dll", "bool", "GetWindowPlacement", "hwnd", $HWND, "ptr", $PWINDOWPLACEMENT)
  2347. If @error Then Return SetError(@error, @extended, 0)
  2348. Return $TWINDOWPLACEMENT
  2349. EndFunc
  2350. Func _WINAPI_GETWINDOWRECT($HWND)
  2351. Local $TRECT = DllStructCreate($TAGRECT)
  2352. DllCall("user32.dll", "bool", "GetWindowRect", "hwnd", $HWND, "ptr", DllStructGetPtr($TRECT))
  2353. If @error Then Return SetError(@error, @extended, 0)
  2354. Return $TRECT
  2355. EndFunc
  2356. Func _WINAPI_GETWINDOWRGN($HWND, $HRGN)
  2357. Local $ARESULT = DllCall("user32.dll", "int", "GetWindowRgn", "hwnd", $HWND, "handle", $HRGN)
  2358. If @error Then Return SetError(@error, @extended, 0)
  2359. Return $ARESULT[0]
  2360. EndFunc
  2361. Func _WINAPI_GETWINDOWTEXT($HWND)
  2362. Local $ARESULT = DllCall("user32.dll", "int", "GetWindowTextW", "hwnd", $HWND, "wstr", "", "int", 4096)
  2363. If @error Then Return SetError(@error, @extended, "")
  2364. Return SetExtended($ARESULT[0], $ARESULT[2])
  2365. EndFunc
  2366. Func _WINAPI_GETWINDOWTHREADPROCESSID($HWND, ByRef $IPID)
  2367. Local $ARESULT = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $HWND, "dword*", 0)
  2368. If @error Then Return SetError(@error, @extended, 0)
  2369. $IPID = $ARESULT[2]
  2370. Return $ARESULT[0]
  2371. EndFunc
  2372. Func _WINAPI_GETWINDOWWIDTH($HWND)
  2373. Local $TRECT = _WINAPI_GETWINDOWRECT($HWND)
  2374. If @error Then Return SetError(@error, @extended, 0)
  2375. Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left")
  2376. EndFunc
  2377. Func _WINAPI_GETXYFROMPOINT(ByRef $TPOINT, ByRef $IX, ByRef $IY)
  2378. $IX = DllStructGetData($TPOINT, "X")
  2379. $IY = DllStructGetData($TPOINT, "Y")
  2380. EndFunc
  2381. Func _WINAPI_GLOBALMEMORYSTATUS()
  2382. Local $TMEM = DllStructCreate($TAGMEMORYSTATUSEX)
  2383. Local $PMEM = DllStructGetPtr($TMEM)
  2384. Local $IMEM = DllStructGetSize($TMEM)
  2385. DllStructSetData($TMEM, 1, $IMEM)
  2386. DllCall("kernel32.dll", "none", "GlobalMemoryStatusEx", "ptr", $PMEM)
  2387. If @error Then Return SetError(@error, @extended, 0)
  2388. Local $AMEM[7]
  2389. $AMEM[0] = DllStructGetData($TMEM, 2)
  2390. $AMEM[1] = DllStructGetData($TMEM, 3)
  2391. $AMEM[2] = DllStructGetData($TMEM, 4)
  2392. $AMEM[3] = DllStructGetData($TMEM, 5)
  2393. $AMEM[4] = DllStructGetData($TMEM, 6)
  2394. $AMEM[5] = DllStructGetData($TMEM, 7)
  2395. $AMEM[6] = DllStructGetData($TMEM, 8)
  2396. Return $AMEM
  2397. EndFunc
  2398. Func _WINAPI_GUIDFROMSTRING($SGUID)
  2399. Local $TGUID = DllStructCreate($TAGGUID)
  2400. _WINAPI_GUIDFROMSTRINGEX($SGUID, DllStructGetPtr($TGUID))
  2401. If @error Then Return SetError(@error, @extended, 0)
  2402. Return $TGUID
  2403. EndFunc
  2404. Func _WINAPI_GUIDFROMSTRINGEX($SGUID, $PGUID)
  2405. Local $ARESULT = DllCall("ole32.dll", "long", "CLSIDFromString", "wstr", $SGUID, "ptr", $PGUID)
  2406. If @error Then Return SetError(@error, @extended, False)
  2407. Return $ARESULT[0]
  2408. EndFunc
  2409. Func _WINAPI_HIWORD($ILONG)
  2410. Return BitShift($ILONG, 16)
  2411. EndFunc
  2412. Func _WINAPI_INPROCESS($HWND, ByRef $HLASTWND)
  2413. If $HWND = $HLASTWND Then Return True
  2414. For $II = $__GAINPROCESS_WINAPI[0][0] To 1 Step -1
  2415. If $HWND = $__GAINPROCESS_WINAPI[$II][0] Then
  2416. If $__GAINPROCESS_WINAPI[$II][1] Then
  2417. $HLASTWND = $HWND
  2418. Return True
  2419. Else
  2420. Return False
  2421. EndIf
  2422. EndIf
  2423. Next
  2424. Local $IPROCESSID
  2425. _WINAPI_GETWINDOWTHREADPROCESSID($HWND, $IPROCESSID)
  2426. Local $ICOUNT = $__GAINPROCESS_WINAPI[0][0] + 1
  2427. If $ICOUNT >= 64 Then $ICOUNT = 1
  2428. $__GAINPROCESS_WINAPI[0][0] = $ICOUNT
  2429. $__GAINPROCESS_WINAPI[$ICOUNT][0] = $HWND
  2430. $__GAINPROCESS_WINAPI[$ICOUNT][1] = ($IPROCESSID = @AutoItPID)
  2431. Return $__GAINPROCESS_WINAPI[$ICOUNT][1]
  2432. EndFunc
  2433. Func _WINAPI_INTTOFLOAT($IINT)
  2434. Local $TINT = DllStructCreate("int")
  2435. Local $TFLOAT = DllStructCreate("float", DllStructGetPtr($TINT))
  2436. DllStructSetData($TINT, 1, $IINT)
  2437. Return DllStructGetData($TFLOAT, 1)
  2438. EndFunc
  2439. Func _WINAPI_ISCLASSNAME($HWND, $SCLASSNAME)
  2440. Local $SSEPARATOR = Opt("GUIDataSeparatorChar")
  2441. Local $ACLASSNAME = StringSplit($SCLASSNAME, $SSEPARATOR)
  2442. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  2443. Local $SCLASSCHECK = _WINAPI_GETCLASSNAME($HWND)
  2444. For $X = 1 To UBound($ACLASSNAME) - 1
  2445. If StringUpper(StringMid($SCLASSCHECK, 1, StringLen($ACLASSNAME[$X]))) = StringUpper($ACLASSNAME[$X]) Then Return True
  2446. Next
  2447. Return False
  2448. EndFunc
  2449. Func _WINAPI_ISWINDOW($HWND)
  2450. Local $ARESULT = DllCall("user32.dll", "bool", "IsWindow", "hwnd", $HWND)
  2451. If @error Then Return SetError(@error, @extended, 0)
  2452. Return $ARESULT[0]
  2453. EndFunc
  2454. Func _WINAPI_ISWINDOWVISIBLE($HWND)
  2455. Local $ARESULT = DllCall("user32.dll", "bool", "IsWindowVisible", "hwnd", $HWND)
  2456. If @error Then Return SetError(@error, @extended, 0)
  2457. Return $ARESULT[0]
  2458. EndFunc
  2459. Func _WINAPI_INVALIDATERECT($HWND, $TRECT = 0, $FERASE = True)
  2460. Local $PRECT = 0
  2461. If IsDllStruct($TRECT) Then $PRECT = DllStructGetPtr($TRECT)
  2462. Local $ARESULT = DllCall("user32.dll", "bool", "InvalidateRect", "hwnd", $HWND, "ptr", $PRECT, "bool", $FERASE)
  2463. If @error Then Return SetError(@error, @extended, False)
  2464. Return $ARESULT[0]
  2465. EndFunc
  2466. Func _WINAPI_LINETO($HDC, $IX, $IY)
  2467. Local $ARESULT = DllCall("gdi32.dll", "bool", "LineTo", "handle", $HDC, "int", $IX, "int", $IY)
  2468. If @error Then Return SetError(@error, @extended, False)
  2469. Return $ARESULT[0]
  2470. EndFunc
  2471. Func _WINAPI_LOADBITMAP($HINSTANCE, $SBITMAP)
  2472. Local $SBITMAPTYPE = "int"
  2473. If IsString($SBITMAP) Then $SBITMAPTYPE = "wstr"
  2474. Local $ARESULT = DllCall("user32.dll", "handle", "LoadBitmapW", "handle", $HINSTANCE, $SBITMAPTYPE, $SBITMAP)
  2475. If @error Then Return SetError(@error, @extended, 0)
  2476. Return $ARESULT[0]
  2477. EndFunc
  2478. Func _WINAPI_LOADIMAGE($HINSTANCE, $SIMAGE, $ITYPE, $IXDESIRED, $IYDESIRED, $ILOAD)
  2479. Local $ARESULT, $SIMAGETYPE = "int"
  2480. If IsString($SIMAGE) Then $SIMAGETYPE = "wstr"
  2481. $ARESULT = DllCall("user32.dll", "handle", "LoadImageW", "handle", $HINSTANCE, $SIMAGETYPE, $SIMAGE, "uint", $ITYPE, "int", $IXDESIRED, "int", $IYDESIRED, "uint", $ILOAD)
  2482. If @error Then Return SetError(@error, @extended, 0)
  2483. Return $ARESULT[0]
  2484. EndFunc
  2485. Func _WINAPI_LOADLIBRARY($SFILENAME)
  2486. Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryW", "wstr", $SFILENAME)
  2487. If @error Then Return SetError(@error, @extended, 0)
  2488. Return $ARESULT[0]
  2489. EndFunc
  2490. Func _WINAPI_LOADLIBRARYEX($SFILENAME, $IFLAGS = 0)
  2491. Local $ARESULT = DllCall("kernel32.dll", "handle", "LoadLibraryExW", "wstr", $SFILENAME, "ptr", 0, "dword", $IFLAGS)
  2492. If @error Then Return SetError(@error, @extended, 0)
  2493. Return $ARESULT[0]
  2494. EndFunc
  2495. Func _WINAPI_LOADSHELL32ICON($IICONID)
  2496. Local $TICONS = DllStructCreate("ptr Data")
  2497. Local $PICONS = DllStructGetPtr($TICONS)
  2498. Local $IICONS = _WINAPI_EXTRACTICONEX("shell32.dll", $IICONID, 0, $PICONS, 1)
  2499. If @error Then Return SetError(@error, @extended, 0)
  2500. If $IICONS <= 0 Then Return SetError(1, 0, 0)
  2501. Return DllStructGetData($TICONS, "Data")
  2502. EndFunc
  2503. Func _WINAPI_LOADSTRING($HINSTANCE, $ISTRINGID)
  2504. Local $ARESULT = DllCall("user32.dll", "int", "LoadStringW", "handle", $HINSTANCE, "uint", $ISTRINGID, "wstr", "", "int", 4096)
  2505. If @error Then Return SetError(@error, @extended, "")
  2506. Return SetExtended($ARESULT[0], $ARESULT[3])
  2507. EndFunc
  2508. Func _WINAPI_LOCALFREE($HMEM)
  2509. Local $ARESULT = DllCall("kernel32.dll", "handle", "LocalFree", "handle", $HMEM)
  2510. If @error Then Return SetError(@error, @extended, False)
  2511. Return $ARESULT[0]
  2512. EndFunc
  2513. Func _WINAPI_LOWORD($ILONG)
  2514. Return BitAND($ILONG, 65535)
  2515. EndFunc
  2516. Func _WINAPI_MAKELANGID($LGIDPRIMARY, $LGIDSUB)
  2517. Return BitOR(BitShift($LGIDSUB, -10), $LGIDPRIMARY)
  2518. EndFunc
  2519. Func _WINAPI_MAKELCID($LGID, $SRTID)
  2520. Return BitOR(BitShift($SRTID, -16), $LGID)
  2521. EndFunc
  2522. Func _WINAPI_MAKELONG($ILO, $IHI)
  2523. Return BitOR(BitShift($IHI, -16), BitAND($ILO, 65535))
  2524. EndFunc
  2525. Func _WINAPI_MAKEQWORD($LODWORD, $HIDWORD)
  2526. Local $TINT64 = DllStructCreate("uint64")
  2527. Local $TDWORDS = DllStructCreate("dword;dword", DllStructGetPtr($TINT64))
  2528. DllStructSetData($TDWORDS, 1, $LODWORD)
  2529. DllStructSetData($TDWORDS, 2, $HIDWORD)
  2530. Return DllStructGetData($TINT64, 1)
  2531. EndFunc
  2532. Func _WINAPI_MESSAGEBEEP($ITYPE = 1)
  2533. Local $ISOUND
  2534. Switch $ITYPE
  2535. Case 1
  2536. $ISOUND = 0
  2537. Case 2
  2538. $ISOUND = 16
  2539. Case 3
  2540. $ISOUND = 32
  2541. Case 4
  2542. $ISOUND = 48
  2543. Case 5
  2544. $ISOUND = 64
  2545. Case Else
  2546. $ISOUND = -1
  2547. EndSwitch
  2548. Local $ARESULT = DllCall("user32.dll", "bool", "MessageBeep", "uint", $ISOUND)
  2549. If @error Then Return SetError(@error, @extended, False)
  2550. Return $ARESULT[0]
  2551. EndFunc
  2552. Func _WINAPI_MSGBOX($IFLAGS, $STITLE, $STEXT)
  2553. BlockInput(0)
  2554. MsgBox($IFLAGS, $STITLE, $STEXT & " ")
  2555. EndFunc
  2556. Func _WINAPI_MOUSE_EVENT($IFLAGS, $IX = 0, $IY = 0, $IDATA = 0, $IEXTRAINFO = 0)
  2557. DllCall("user32.dll", "none", "mouse_event", "dword", $IFLAGS, "dword", $IX, "dword", $IY, "dword", $IDATA, "ulong_ptr", $IEXTRAINFO)
  2558. If @error Then Return SetError(@error, @extended)
  2559. EndFunc
  2560. Func _WINAPI_MOVETO($HDC, $IX, $IY)
  2561. Local $ARESULT = DllCall("gdi32.dll", "bool", "MoveToEx", "handle", $HDC, "int", $IX, "int", $IY, "ptr", 0)
  2562. If @error Then Return SetError(@error, @extended, False)
  2563. Return $ARESULT[0]
  2564. EndFunc
  2565. Func _WINAPI_MOVEWINDOW($HWND, $IX, $IY, $IWIDTH, $IHEIGHT, $FREPAINT = True)
  2566. Local $ARESULT = DllCall("user32.dll", "bool", "MoveWindow", "hwnd", $HWND, "int", $IX, "int", $IY, "int", $IWIDTH, "int", $IHEIGHT, "bool", $FREPAINT)
  2567. If @error Then Return SetError(@error, @extended, False)
  2568. Return $ARESULT[0]
  2569. EndFunc
  2570. Func _WINAPI_MULDIV($INUMBER, $INUMERATOR, $IDENOMINATOR)
  2571. Local $ARESULT = DllCall("kernel32.dll", "int", "MulDiv", "int", $INUMBER, "int", $INUMERATOR, "int", $IDENOMINATOR)
  2572. If @error Then Return SetError(@error, @extended, -1)
  2573. Return $ARESULT[0]
  2574. EndFunc
  2575. Func _WINAPI_MULTIBYTETOWIDECHAR($STEXT, $ICODEPAGE = 0, $IFLAGS = 0, $BRETSTRING = False)
  2576. Local $STEXTTYPE = "ptr", $PTEXT = $STEXT
  2577. If IsDllStruct($STEXT) Then
  2578. $PTEXT = DllStructGetPtr($STEXT)
  2579. Else
  2580. If Not IsPtr($STEXT) Then $STEXTTYPE = "STR"
  2581. EndIf
  2582. Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $PTEXT, "int", -1, "ptr", 0, "int", 0)
  2583. If @error Then Return SetError(@error, @extended, 0)
  2584. Local $IOUT = $ARESULT[0]
  2585. Local $TOUT = DllStructCreate("wchar[" & $IOUT & "]")
  2586. Local $POUT = DllStructGetPtr($TOUT)
  2587. $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, $STEXTTYPE, $PTEXT, "int", -1, "ptr", $POUT, "int", $IOUT)
  2588. If @error Then Return SetError(@error, @extended, 0)
  2589. If $BRETSTRING Then Return DllStructGetData($TOUT, 1)
  2590. Return $TOUT
  2591. EndFunc
  2592. Func _WINAPI_MULTIBYTETOWIDECHAREX($STEXT, $PTEXT, $ICODEPAGE = 0, $IFLAGS = 0)
  2593. Local $ARESULT = DllCall("kernel32.dll", "int", "MultiByteToWideChar", "uint", $ICODEPAGE, "dword", $IFLAGS, "STR", $STEXT, "int", -1, "ptr", $PTEXT, "int", (StringLen($STEXT) + 1) * 2)
  2594. If @error Then Return SetError(@error, @extended, False)
  2595. Return $ARESULT[0]
  2596. EndFunc
  2597. Func _WINAPI_OPENPROCESS($IACCESS, $FINHERIT, $IPROCESSID, $FDEBUGPRIV = False)
  2598. Local $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  2599. If @error Then Return SetError(@error, @extended, 0)
  2600. If $ARESULT[0] Then Return $ARESULT[0]
  2601. If Not $FDEBUGPRIV Then Return 0
  2602. Local $HTOKEN = _SECURITY__OPENTHREADTOKENEX(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
  2603. If @error Then Return SetError(@error, @extended, 0)
  2604. _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", True)
  2605. Local $IERROR = @error
  2606. Local $ILASTERROR = @extended
  2607. Local $IRET = 0
  2608. If Not @error Then
  2609. $ARESULT = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $IACCESS, "bool", $FINHERIT, "dword", $IPROCESSID)
  2610. $IERROR = @error
  2611. $ILASTERROR = @extended
  2612. If $ARESULT[0] Then $IRET = $ARESULT[0]
  2613. _SECURITY__SETPRIVILEGE($HTOKEN, "SeDebugPrivilege", False)
  2614. If @error Then
  2615. $IERROR = @error
  2616. $ILASTERROR = @extended
  2617. EndIf
  2618. EndIf
  2619. _WINAPI_CLOSEHANDLE($HTOKEN)
  2620. Return SetError($IERROR, $ILASTERROR, $IRET)
  2621. EndFunc
  2622. Func __WINAPI_PARSEFILEDIALOGPATH($SPATH)
  2623. Local $AFILES[3]
  2624. $AFILES[0] = 2
  2625. Local $STEMP = StringMid($SPATH, 1, StringInStr($SPATH, "\", 0, -1) - 1)
  2626. $AFILES[1] = $STEMP
  2627. $AFILES[2] = StringMid($SPATH, StringInStr($SPATH, "\", 0, -1) + 1)
  2628. Return $AFILES
  2629. EndFunc
  2630. Func _WINAPI_PATHFINDONPATH(Const $SZFILE, $AEXTRAPATHS = "", Const $SZPATHDELIMITER = @LF)
  2631. Local $IEXTRACOUNT = 0
  2632. If IsString($AEXTRAPATHS) Then
  2633. If StringLen($AEXTRAPATHS) Then
  2634. $AEXTRAPATHS = StringSplit($AEXTRAPATHS, $SZPATHDELIMITER, 1 + 2)
  2635. $IEXTRACOUNT = UBound($AEXTRAPATHS, 1)
  2636. EndIf
  2637. ElseIf IsArray($AEXTRAPATHS) Then
  2638. $IEXTRACOUNT = UBound($AEXTRAPATHS)
  2639. EndIf
  2640. Local $TPATHS, $TPATHPTRS
  2641. If $IEXTRACOUNT Then
  2642. Local $SZSTRUCT = ""
  2643. For $PATH In $AEXTRAPATHS
  2644. $SZSTRUCT &= "wchar[" & StringLen($PATH) + 1 & "];"
  2645. Next
  2646. $TPATHS = DllStructCreate($SZSTRUCT)
  2647. $TPATHPTRS = DllStructCreate("ptr[" & $IEXTRACOUNT + 1 & "]")
  2648. For $I = 1 To $IEXTRACOUNT
  2649. DllStructSetData($TPATHS, $I, $AEXTRAPATHS[$I - 1])
  2650. DllStructSetData($TPATHPTRS, 1, DllStructGetPtr($TPATHS, $I), $I)
  2651. Next
  2652. DllStructSetData($TPATHPTRS, 1, Ptr(0), $IEXTRACOUNT + 1)
  2653. EndIf
  2654. Local $ARESULT = DllCall("shlwapi.dll", "bool", "PathFindOnPathW", "wstr", $SZFILE, "ptr", DllStructGetPtr($TPATHPTRS))
  2655. If @error Then Return SetError(@error, @extended, False)
  2656. If $ARESULT[0] = 0 Then Return SetError(1, 0, $SZFILE)
  2657. Return $ARESULT[1]
  2658. EndFunc
  2659. Func _WINAPI_POINTFROMRECT(ByRef $TRECT, $FCENTER = True)
  2660. Local $IX1 = DllStructGetData($TRECT, "Left")
  2661. Local $IY1 = DllStructGetData($TRECT, "Top")
  2662. Local $IX2 = DllStructGetData($TRECT, "Right")
  2663. Local $IY2 = DllStructGetData($TRECT, "Bottom")
  2664. If $FCENTER Then
  2665. $IX1 = $IX1 + (($IX2 - $IX1) / 2)
  2666. $IY1 = $IY1 + (($IY2 - $IY1) / 2)
  2667. EndIf
  2668. Local $TPOINT = DllStructCreate($TAGPOINT)
  2669. DllStructSetData($TPOINT, "X", $IX1)
  2670. DllStructSetData($TPOINT, "Y", $IY1)
  2671. Return $TPOINT
  2672. EndFunc
  2673. Func _WINAPI_POSTMESSAGE($HWND, $IMSG, $IWPARAM, $ILPARAM)
  2674. Local $ARESULT = DllCall("user32.dll", "bool", "PostMessage", "hwnd", $HWND, "uint", $IMSG, "wparam", $IWPARAM, "lparam", $ILPARAM)
  2675. If @error Then Return SetError(@error, @extended, False)
  2676. Return $ARESULT[0]
  2677. EndFunc
  2678. Func _WINAPI_PRIMARYLANGID($LGID)
  2679. Return BitAND($LGID, 1023)
  2680. EndFunc
  2681. Func _WINAPI_PTINRECT(ByRef $TRECT, ByRef $TPOINT)
  2682. Local $IX = DllStructGetData($TPOINT, "X")
  2683. Local $IY = DllStructGetData($TPOINT, "Y")
  2684. Local $ARESULT = DllCall("user32.dll", "bool", "PtInRect", "ptr", DllStructGetPtr($TRECT), "long", $IX, "long", $IY)
  2685. If @error Then Return SetError(@error, @extended, False)
  2686. Return $ARESULT[0]
  2687. EndFunc
  2688. Func _WINAPI_READFILE($HFILE, $PBUFFER, $ITOREAD, ByRef $IREAD, $POVERLAPPED = 0)
  2689. Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadFile", "handle", $HFILE, "ptr", $PBUFFER, "dword", $ITOREAD, "dword*", 0, "ptr", $POVERLAPPED)
  2690. If @error Then Return SetError(@error, @extended, False)
  2691. $IREAD = $ARESULT[4]
  2692. Return $ARESULT[0]
  2693. EndFunc
  2694. Func _WINAPI_READPROCESSMEMORY($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IREAD)
  2695. Local $ARESULT = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, "ptr", $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  2696. If @error Then Return SetError(@error, @extended, False)
  2697. $IREAD = $ARESULT[5]
  2698. Return $ARESULT[0]
  2699. EndFunc
  2700. Func _WINAPI_RECTISEMPTY(ByRef $TRECT)
  2701. Return (DllStructGetData($TRECT, "Left") = 0) And (DllStructGetData($TRECT, "Top") = 0) And (DllStructGetData($TRECT, "Right") = 0) And (DllStructGetData($TRECT, "Bottom") = 0)
  2702. EndFunc
  2703. Func _WINAPI_REDRAWWINDOW($HWND, $TRECT = 0, $HREGION = 0, $IFLAGS = 5)
  2704. Local $PRECT = 0
  2705. If $TRECT <> 0 Then $PRECT = DllStructGetPtr($TRECT)
  2706. Local $ARESULT = DllCall("user32.dll", "bool", "RedrawWindow", "hwnd", $HWND, "ptr", $PRECT, "handle", $HREGION, "uint", $IFLAGS)
  2707. If @error Then Return SetError(@error, @extended, False)
  2708. Return $ARESULT[0]
  2709. EndFunc
  2710. Func _WINAPI_REGISTERWINDOWMESSAGE($SMESSAGE)
  2711. Local $ARESULT = DllCall("user32.dll", "uint", "RegisterWindowMessageW", "wstr", $SMESSAGE)
  2712. If @error Then Return SetError(@error, @extended, 0)
  2713. Return $ARESULT[0]
  2714. EndFunc
  2715. Func _WINAPI_RELEASECAPTURE()
  2716. Local $ARESULT = DllCall("user32.dll", "bool", "ReleaseCapture")
  2717. If @error Then Return SetError(@error, @extended, False)
  2718. Return $ARESULT[0]
  2719. EndFunc
  2720. Func _WINAPI_RELEASEDC($HWND, $HDC)
  2721. Local $ARESULT = DllCall("user32.dll", "int", "ReleaseDC", "hwnd", $HWND, "handle", $HDC)
  2722. If @error Then Return SetError(@error, @extended, False)
  2723. Return $ARESULT[0]
  2724. EndFunc
  2725. Func _WINAPI_SCREENTOCLIENT($HWND, ByRef $TPOINT)
  2726. Local $ARESULT = DllCall("user32.dll", "bool", "ScreenToClient", "hwnd", $HWND, "ptr", DllStructGetPtr($TPOINT))
  2727. If @error Then Return SetError(@error, @extended, False)
  2728. Return $ARESULT[0]
  2729. EndFunc
  2730. Func _WINAPI_SELECTOBJECT($HDC, $HGDIOBJ)
  2731. Local $ARESULT = DllCall("gdi32.dll", "handle", "SelectObject", "handle", $HDC, "handle", $HGDIOBJ)
  2732. If @error Then Return SetError(@error, @extended, False)
  2733. Return $ARESULT[0]
  2734. EndFunc
  2735. Func _WINAPI_SETBKCOLOR($HDC, $ICOLOR)
  2736. Local $ARESULT = DllCall("gdi32.dll", "INT", "SetBkColor", "handle", $HDC, "dword", $ICOLOR)
  2737. If @error Then Return SetError(@error, @extended, -1)
  2738. Return $ARESULT[0]
  2739. EndFunc
  2740. Func _WINAPI_SETBKMODE($HDC, $IBKMODE)
  2741. Local $ARESULT = DllCall("gdi32.dll", "int", "SetBkMode", "handle", $HDC, "int", $IBKMODE)
  2742. If @error Then Return SetError(@error, @extended, 0)
  2743. Return $ARESULT[0]
  2744. EndFunc
  2745. Func _WINAPI_SETCAPTURE($HWND)
  2746. Local $ARESULT = DllCall("user32.dll", "hwnd", "SetCapture", "hwnd", $HWND)
  2747. If @error Then Return SetError(@error, @extended, 0)
  2748. Return $ARESULT[0]
  2749. EndFunc
  2750. Func _WINAPI_SETCURSOR($HCURSOR)
  2751. Local $ARESULT = DllCall("user32.dll", "handle", "SetCursor", "handle", $HCURSOR)
  2752. If @error Then Return SetError(@error, @extended, 0)
  2753. Return $ARESULT[0]
  2754. EndFunc
  2755. Func _WINAPI_SETDEFAULTPRINTER($SPRINTER)
  2756. Local $ARESULT = DllCall("winspool.drv", "bool", "SetDefaultPrinterW", "wstr", $SPRINTER)
  2757. If @error Then Return SetError(@error, @extended, False)
  2758. Return $ARESULT[0]
  2759. EndFunc
  2760. Func _WINAPI_SETDIBITS($HDC, $HBMP, $ISTARTSCAN, $ISCANLINES, $PBITS, $PBMI, $ICOLORUSE = 0)
  2761. Local $ARESULT = DllCall("gdi32.dll", "int", "SetDIBits", "handle", $HDC, "handle", $HBMP, "uint", $ISTARTSCAN, "uint", $ISCANLINES, "ptr", $PBITS, "ptr", $PBMI, "uint", $ICOLORUSE)
  2762. If @error Then Return SetError(@error, @extended, False)
  2763. Return $ARESULT[0]
  2764. EndFunc
  2765. Func _WINAPI_SETENDOFFILE($HFILE)
  2766. Local $ARESULT = DllCall("kernel32.dll", "bool", "SetEndOfFile", "handle", $HFILE)
  2767. If @error Then Return SetError(@error, @extended, False)
  2768. Return $ARESULT[0]
  2769. EndFunc
  2770. Func _WINAPI_SETEVENT($HEVENT)
  2771. Local $ARESULT = DllCall("kernel32.dll", "bool", "SetEvent", "handle", $HEVENT)
  2772. If @error Then Return SetError(@error, @extended, False)
  2773. Return $ARESULT[0]
  2774. EndFunc
  2775. Func _WINAPI_SETFILEPOINTER($HFILE, $IPOS, $IMETHOD = 0)
  2776. Local $ARESULT = DllCall("kernel32.dll", "INT", "SetFilePointer", "handle", $HFILE, "long", $IPOS, "ptr", 0, "long", $IMETHOD)
  2777. If @error Then Return SetError(@error, @extended, -1)
  2778. Return $ARESULT[0]
  2779. EndFunc
  2780. Func _WINAPI_SETFOCUS($HWND)
  2781. Local $ARESULT = DllCall("user32.dll", "hwnd", "SetFocus", "hwnd", $HWND)
  2782. If @error Then Return SetError(@error, @extended, 0)
  2783. Return $ARESULT[0]
  2784. EndFunc
  2785. Func _WINAPI_SETFONT($HWND, $HFONT, $FREDRAW = True)
  2786. _SENDMESSAGE($HWND, $__WINAPICONSTANT_WM_SETFONT, $HFONT, $FREDRAW, 0, "hwnd")
  2787. EndFunc
  2788. Func _WINAPI_SETHANDLEINFORMATION($HOBJECT, $IMASK, $IFLAGS)
  2789. Local $ARESULT = DllCall("kernel32.dll", "bool", "SetHandleInformation", "handle", $HOBJECT, "dword", $IMASK, "dword", $IFLAGS)
  2790. If @error Then Return SetError(@error, @extended, False)
  2791. Return $ARESULT[0]
  2792. EndFunc
  2793. Func _WINAPI_SETLAYEREDWINDOWATTRIBUTES($HWND, $I_TRANSCOLOR, $TRANSPARENCY = 255, $DWFLAGS = 3, $ISCOLORREF = False)
  2794. If $DWFLAGS = Default Or $DWFLAGS = "" Or $DWFLAGS < 0 Then $DWFLAGS = 3
  2795. If Not $ISCOLORREF Then
  2796. $I_TRANSCOLOR = Hex(String($I_TRANSCOLOR), 6)
  2797. $I_TRANSCOLOR = Execute("0x00" & StringMid($I_TRANSCOLOR, 5, 2) & StringMid($I_TRANSCOLOR, 3, 2) & StringMid($I_TRANSCOLOR, 1, 2))
  2798. EndIf
  2799. Local $ARESULT = DllCall("user32.dll", "bool", "SetLayeredWindowAttributes", "hwnd", $HWND, "dword", $I_TRANSCOLOR, "byte", $TRANSPARENCY, "dword", $DWFLAGS)
  2800. If @error Then Return SetError(@error, @extended, False)
  2801. Return $ARESULT[0]
  2802. EndFunc
  2803. Func _WINAPI_SETPARENT($HWNDCHILD, $HWNDPARENT)
  2804. Local $ARESULT = DllCall("user32.dll", "hwnd", "SetParent", "hwnd", $HWNDCHILD, "hwnd", $HWNDPARENT)
  2805. If @error Then Return SetError(@error, @extended, 0)
  2806. Return $ARESULT[0]
  2807. EndFunc
  2808. Func _WINAPI_SETPROCESSAFFINITYMASK($HPROCESS, $IMASK)
  2809. Local $ARESULT = DllCall("kernel32.dll", "bool", "SetProcessAffinityMask", "handle", $HPROCESS, "ulong_ptr", $IMASK)
  2810. If @error Then Return SetError(@error, @extended, False)
  2811. Return $ARESULT[0]
  2812. EndFunc
  2813. Func _WINAPI_SETSYSCOLORS($VELEMENTS, $VCOLORS)
  2814. Local $ISEARRAY = IsArray($VELEMENTS), $ISCARRAY = IsArray($VCOLORS)
  2815. Local $IELEMENTNUM
  2816. If Not $ISCARRAY And Not $ISEARRAY Then
  2817. $IELEMENTNUM = 1
  2818. ElseIf $ISCARRAY Or $ISEARRAY Then
  2819. If Not $ISCARRAY Or Not $ISEARRAY Then Return SetError(-1, -1, False)
  2820. If UBound($VELEMENTS) <> UBound($VCOLORS) Then Return SetError(-1, -1, False)
  2821. $IELEMENTNUM = UBound($VELEMENTS)
  2822. EndIf
  2823. Local $TELEMENTS = DllStructCreate("int Element[" & $IELEMENTNUM & "]")
  2824. Local $TCOLORS = DllStructCreate("dword NewColor[" & $IELEMENTNUM & "]")
  2825. Local $PELEMENTS = DllStructGetPtr($TELEMENTS)
  2826. Local $PCOLORS = DllStructGetPtr($TCOLORS)
  2827. If Not $ISEARRAY Then
  2828. DllStructSetData($TELEMENTS, "Element", $VELEMENTS, 1)
  2829. Else
  2830. For $X = 0 To $IELEMENTNUM - 1
  2831. DllStructSetData($TELEMENTS, "Element", $VELEMENTS[$X], $X + 1)
  2832. Next
  2833. EndIf
  2834. If Not $ISCARRAY Then
  2835. DllStructSetData($TCOLORS, "NewColor", $VCOLORS, 1)
  2836. Else
  2837. For $X = 0 To $IELEMENTNUM - 1
  2838. DllStructSetData($TCOLORS, "NewColor", $VCOLORS[$X], $X + 1)
  2839. Next
  2840. EndIf
  2841. Local $ARESULT = DllCall("user32.dll", "bool", "SetSysColors", "int", $IELEMENTNUM, "ptr", $PELEMENTS, "ptr", $PCOLORS)
  2842. If @error Then Return SetError(@error, @extended, False)
  2843. Return $ARESULT[0]
  2844. EndFunc
  2845. Func _WINAPI_SETTEXTCOLOR($HDC, $ICOLOR)
  2846. Local $ARESULT = DllCall("gdi32.dll", "INT", "SetTextColor", "handle", $HDC, "dword", $ICOLOR)
  2847. If @error Then Return SetError(@error, @extended, -1)
  2848. Return $ARESULT[0]
  2849. EndFunc
  2850. Func _WINAPI_SETWINDOWLONG($HWND, $IINDEX, $IVALUE)
  2851. _WINAPI_SETLASTERROR(0)
  2852. Local $SFUNCNAME = "SetWindowLongW"
  2853. If @AutoItX64 Then $SFUNCNAME = "SetWindowLongPtrW"
  2854. Local $ARESULT = DllCall("user32.dll", "long_ptr", $SFUNCNAME, "hwnd", $HWND, "int", $IINDEX, "long_ptr", $IVALUE)
  2855. If @error Then Return SetError(@error, @extended, 0)
  2856. Return $ARESULT[0]
  2857. EndFunc
  2858. Func _WINAPI_SETWINDOWPLACEMENT($HWND, $PWINDOWPLACEMENT)
  2859. Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowPlacement", "hwnd", $HWND, "ptr", $PWINDOWPLACEMENT)
  2860. If @error Then Return SetError(@error, @extended, False)
  2861. Return $ARESULT[0]
  2862. EndFunc
  2863. Func _WINAPI_SETWINDOWPOS($HWND, $HAFTER, $IX, $IY, $ICX, $ICY, $IFLAGS)
  2864. Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowPos", "hwnd", $HWND, "hwnd", $HAFTER, "int", $IX, "int", $IY, "int", $ICX, "int", $ICY, "uint", $IFLAGS)
  2865. If @error Then Return SetError(@error, @extended, False)
  2866. Return $ARESULT[0]
  2867. EndFunc
  2868. Func _WINAPI_SETWINDOWRGN($HWND, $HRGN, $BREDRAW = True)
  2869. Local $ARESULT = DllCall("user32.dll", "int", "SetWindowRgn", "hwnd", $HWND, "handle", $HRGN, "bool", $BREDRAW)
  2870. If @error Then Return SetError(@error, @extended, False)
  2871. Return $ARESULT[0]
  2872. EndFunc
  2873. Func _WINAPI_SETWINDOWSHOOKEX($IDHOOK, $LPFN, $HMOD, $DWTHREADID = 0)
  2874. Local $ARESULT = DllCall("user32.dll", "handle", "SetWindowsHookEx", "int", $IDHOOK, "ptr", $LPFN, "handle", $HMOD, "dword", $DWTHREADID)
  2875. If @error Then Return SetError(@error, @extended, 0)
  2876. Return $ARESULT[0]
  2877. EndFunc
  2878. Func _WINAPI_SETWINDOWTEXT($HWND, $STEXT)
  2879. Local $ARESULT = DllCall("user32.dll", "bool", "SetWindowTextW", "hwnd", $HWND, "wstr", $STEXT)
  2880. If @error Then Return SetError(@error, @extended, False)
  2881. Return $ARESULT[0]
  2882. EndFunc
  2883. Func _WINAPI_SHOWCURSOR($FSHOW)
  2884. Local $ARESULT = DllCall("user32.dll", "int", "ShowCursor", "bool", $FSHOW)
  2885. If @error Then Return SetError(@error, @extended, 0)
  2886. Return $ARESULT[0]
  2887. EndFunc
  2888. Func _WINAPI_SHOWERROR($STEXT, $FEXIT = True)
  2889. _WINAPI_MSGBOX(266256, "Error", $STEXT)
  2890. If $FEXIT Then Exit
  2891. EndFunc
  2892. Func _WINAPI_SHOWMSG($STEXT)
  2893. _WINAPI_MSGBOX(64 + 4096, "Information", $STEXT)
  2894. EndFunc
  2895. Func _WINAPI_SHOWWINDOW($HWND, $ICMDSHOW = 5)
  2896. Local $ARESULT = DllCall("user32.dll", "bool", "ShowWindow", "hwnd", $HWND, "int", $ICMDSHOW)
  2897. If @error Then Return SetError(@error, @extended, False)
  2898. Return $ARESULT[0]
  2899. EndFunc
  2900. Func _WINAPI_STRINGFROMGUID($PGUID)
  2901. Local $ARESULT = DllCall("ole32.dll", "int", "StringFromGUID2", "ptr", $PGUID, "wstr", "", "int", 40)
  2902. If @error Then Return SetError(@error, @extended, "")
  2903. Return SetExtended($ARESULT[0], $ARESULT[2])
  2904. EndFunc
  2905. Func _WINAPI_SUBLANGID($LGID)
  2906. Return BitShift($LGID, 10)
  2907. EndFunc
  2908. Func _WINAPI_SYSTEMPARAMETERSINFO($IACTION, $IPARAM = 0, $VPARAM = 0, $IWININI = 0)
  2909. Local $ARESULT = DllCall("user32.dll", "bool", "SystemParametersInfoW", "uint", $IACTION, "uint", $IPARAM, "ptr", $VPARAM, "uint", $IWININI)
  2910. If @error Then Return SetError(@error, @extended, False)
  2911. Return $ARESULT[0]
  2912. EndFunc
  2913. Func _WINAPI_TWIPSPERPIXELX()
  2914. Local $LNGDC, $TWIPSPERPIXELX
  2915. $LNGDC = _WINAPI_GETDC(0)
  2916. $TWIPSPERPIXELX = 1440 / _WINAPI_GETDEVICECAPS($LNGDC, $__WINAPICONSTANT_LOGPIXELSX)
  2917. _WINAPI_RELEASEDC(0, $LNGDC)
  2918. Return $TWIPSPERPIXELX
  2919. EndFunc
  2920. Func _WINAPI_TWIPSPERPIXELY()
  2921. Local $LNGDC, $TWIPSPERPIXELY
  2922. $LNGDC = _WINAPI_GETDC(0)
  2923. $TWIPSPERPIXELY = 1440 / _WINAPI_GETDEVICECAPS($LNGDC, $__WINAPICONSTANT_LOGPIXELSY)
  2924. _WINAPI_RELEASEDC(0, $LNGDC)
  2925. Return $TWIPSPERPIXELY
  2926. EndFunc
  2927. Func _WINAPI_UNHOOKWINDOWSHOOKEX($HHK)
  2928. Local $ARESULT = DllCall("user32.dll", "bool", "UnhookWindowsHookEx", "handle", $HHK)
  2929. If @error Then Return SetError(@error, @extended, False)
  2930. Return $ARESULT[0]
  2931. EndFunc
  2932. Func _WINAPI_UPDATELAYEREDWINDOW($HWND, $HDCDEST, $PPTDEST, $PSIZE, $HDCSRCE, $PPTSRCE, $IRGB, $PBLEND, $IFLAGS)
  2933. 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)
  2934. If @error Then Return SetError(@error, @extended, False)
  2935. Return $ARESULT[0]
  2936. EndFunc
  2937. Func _WINAPI_UPDATEWINDOW($HWND)
  2938. Local $ARESULT = DllCall("user32.dll", "bool", "UpdateWindow", "hwnd", $HWND)
  2939. If @error Then Return SetError(@error, @extended, False)
  2940. Return $ARESULT[0]
  2941. EndFunc
  2942. Func _WINAPI_WAITFORINPUTIDLE($HPROCESS, $ITIMEOUT = -1)
  2943. Local $ARESULT = DllCall("user32.dll", "dword", "WaitForInputIdle", "handle", $HPROCESS, "dword", $ITIMEOUT)
  2944. If @error Then Return SetError(@error, @extended, False)
  2945. Return $ARESULT[0]
  2946. EndFunc
  2947. Func _WINAPI_WAITFORMULTIPLEOBJECTS($ICOUNT, $PHANDLES, $FWAITALL = False, $ITIMEOUT = -1)
  2948. Local $ARESULT = DllCall("kernel32.dll", "INT", "WaitForMultipleObjects", "dword", $ICOUNT, "ptr", $PHANDLES, "bool", $FWAITALL, "dword", $ITIMEOUT)
  2949. If @error Then Return SetError(@error, @extended, -1)
  2950. Return $ARESULT[0]
  2951. EndFunc
  2952. Func _WINAPI_WAITFORSINGLEOBJECT($HHANDLE, $ITIMEOUT = -1)
  2953. Local $ARESULT = DllCall("kernel32.dll", "INT", "WaitForSingleObject", "handle", $HHANDLE, "dword", $ITIMEOUT)
  2954. If @error Then Return SetError(@error, @extended, -1)
  2955. Return $ARESULT[0]
  2956. EndFunc
  2957. Func _WINAPI_WIDECHARTOMULTIBYTE($PUNICODE, $ICODEPAGE = 0, $BRETSTRING = True)
  2958. Local $SUNICODETYPE = "ptr"
  2959. If IsDllStruct($PUNICODE) Then
  2960. $PUNICODE = DllStructGetPtr($PUNICODE)
  2961. Else
  2962. If Not IsPtr($PUNICODE) Then $SUNICODETYPE = "wstr"
  2963. EndIf
  2964. Local $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "ptr", 0, "int", 0, "ptr", 0, "ptr", 0)
  2965. If @error Then Return SetError(@error, @extended, "")
  2966. Local $TMULTIBYTE = DllStructCreate("char[" & $ARESULT[0] & "]")
  2967. Local $PMULTIBYTE = DllStructGetPtr($TMULTIBYTE)
  2968. $ARESULT = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $ICODEPAGE, "dword", 0, $SUNICODETYPE, $PUNICODE, "int", -1, "ptr", $PMULTIBYTE, "int", $ARESULT[0], "ptr", 0, "ptr", 0)
  2969. If @error Then Return SetError(@error, @extended, "")
  2970. If $BRETSTRING Then Return DllStructGetData($TMULTIBYTE, 1)
  2971. Return $TMULTIBYTE
  2972. EndFunc
  2973. Func _WINAPI_WINDOWFROMPOINT(ByRef $TPOINT)
  2974. Local $TPOINTCAST = DllStructCreate("int64", DllStructGetPtr($TPOINT))
  2975. Local $ARESULT = DllCall("user32.dll", "hwnd", "WindowFromPoint", "int64", DllStructGetData($TPOINTCAST, 1))
  2976. If @error Then Return SetError(@error, @extended, 0)
  2977. Return $ARESULT[0]
  2978. EndFunc
  2979. Func _WINAPI_WRITECONSOLE($HCONSOLE, $STEXT)
  2980. Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteConsoleW", "handle", $HCONSOLE, "wstr", $STEXT, "dword", StringLen($STEXT), "dword*", 0, "ptr", 0)
  2981. If @error Then Return SetError(@error, @extended, False)
  2982. Return $ARESULT[0]
  2983. EndFunc
  2984. Func _WINAPI_WRITEFILE($HFILE, $PBUFFER, $ITOWRITE, ByRef $IWRITTEN, $POVERLAPPED = 0)
  2985. Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteFile", "handle", $HFILE, "ptr", $PBUFFER, "dword", $ITOWRITE, "dword*", 0, "ptr", $POVERLAPPED)
  2986. If @error Then Return SetError(@error, @extended, False)
  2987. $IWRITTEN = $ARESULT[4]
  2988. Return $ARESULT[0]
  2989. EndFunc
  2990. Func _WINAPI_WRITEPROCESSMEMORY($HPROCESS, $PBASEADDRESS, $PBUFFER, $ISIZE, ByRef $IWRITTEN, $SBUFFER = "ptr")
  2991. Local $ARESULT = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", $HPROCESS, "ptr", $PBASEADDRESS, $SBUFFER, $PBUFFER, "ulong_ptr", $ISIZE, "ulong_ptr*", 0)
  2992. If @error Then Return SetError(@error, @extended, False)
  2993. $IWRITTEN = $ARESULT[5]
  2994. Return $ARESULT[0]
  2995. EndFunc
  2996. Global Const $_UDF_GLOBALIDS_OFFSET = 2
  2997. Global Const $_UDF_GLOBALID_MAX_WIN = 16
  2998. Global Const $_UDF_STARTID = 10000
  2999. Global Const $_UDF_GLOBALID_MAX_IDS = 55535
  3000. Global Const $__UDFGUICONSTANT_WS_VISIBLE = 268435456
  3001. Global Const $__UDFGUICONSTANT_WS_CHILD = 1073741824
  3002. Global $_UDF_GLOBALIDS_USED[$_UDF_GLOBALID_MAX_WIN][$_UDF_GLOBALID_MAX_IDS + $_UDF_GLOBALIDS_OFFSET + 1]
  3003. Func __UDF_GETNEXTGLOBALID($HWND)
  3004. Local $NCTRLID, $IUSEDINDEX = -1, $FALLUSED = True
  3005. If Not WinExists($HWND) Then Return SetError(-1, -1, 0)
  3006. For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  3007. If $_UDF_GLOBALIDS_USED[$IINDEX][0] <> 0 Then
  3008. If Not WinExists($_UDF_GLOBALIDS_USED[$IINDEX][0]) Then
  3009. For $X = 0 To UBound($_UDF_GLOBALIDS_USED, 2) - 1
  3010. $_UDF_GLOBALIDS_USED[$IINDEX][$X] = 0
  3011. Next
  3012. $_UDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID
  3013. $FALLUSED = False
  3014. EndIf
  3015. EndIf
  3016. Next
  3017. For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  3018. If $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then
  3019. $IUSEDINDEX = $IINDEX
  3020. ExitLoop
  3021. EndIf
  3022. Next
  3023. If $IUSEDINDEX = -1 Then
  3024. For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  3025. If $_UDF_GLOBALIDS_USED[$IINDEX][0] = 0 Then
  3026. $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND
  3027. $_UDF_GLOBALIDS_USED[$IINDEX][1] = $_UDF_STARTID
  3028. $FALLUSED = False
  3029. $IUSEDINDEX = $IINDEX
  3030. ExitLoop
  3031. EndIf
  3032. Next
  3033. EndIf
  3034. If $IUSEDINDEX = -1 And $FALLUSED Then Return SetError(16, 0, 0)
  3035. If $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1] = $_UDF_STARTID + $_UDF_GLOBALID_MAX_IDS Then
  3036. For $IIDINDEX = $_UDF_GLOBALIDS_OFFSET To UBound($_UDF_GLOBALIDS_USED, 2) - 1
  3037. If $_UDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = 0 Then
  3038. $NCTRLID = ($IIDINDEX - $_UDF_GLOBALIDS_OFFSET) + 10000
  3039. $_UDF_GLOBALIDS_USED[$IUSEDINDEX][$IIDINDEX] = $NCTRLID
  3040. Return $NCTRLID
  3041. EndIf
  3042. Next
  3043. Return SetError(-1, $_UDF_GLOBALID_MAX_IDS, 0)
  3044. EndIf
  3045. $NCTRLID = $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1]
  3046. $_UDF_GLOBALIDS_USED[$IUSEDINDEX][1] += 1
  3047. $_UDF_GLOBALIDS_USED[$IUSEDINDEX][($NCTRLID - 10000) + $_UDF_GLOBALIDS_OFFSET] = $NCTRLID
  3048. Return $NCTRLID
  3049. EndFunc
  3050. Func __UDF_FREEGLOBALID($HWND, $IGLOBALID)
  3051. If $IGLOBALID - $_UDF_STARTID < 0 Or $IGLOBALID - $_UDF_STARTID > $_UDF_GLOBALID_MAX_IDS Then Return SetError(-1, 0, False)
  3052. For $IINDEX = 0 To $_UDF_GLOBALID_MAX_WIN - 1
  3053. If $_UDF_GLOBALIDS_USED[$IINDEX][0] = $HWND Then
  3054. For $X = $_UDF_GLOBALIDS_OFFSET To UBound($_UDF_GLOBALIDS_USED, 2) - 1
  3055. If $_UDF_GLOBALIDS_USED[$IINDEX][$X] = $IGLOBALID Then
  3056. $_UDF_GLOBALIDS_USED[$IINDEX][$X] = 0
  3057. Return True
  3058. EndIf
  3059. Next
  3060. Return SetError(-3, 0, False)
  3061. EndIf
  3062. Next
  3063. Return SetError(-2, 0, False)
  3064. EndFunc
  3065. Func __UDF_DEBUGPRINT($STEXT, $ILINE = @ScriptLineNumber, $ERR = @error, $EXT = @extended)
  3066. ConsoleWrite("!===========================================================" & @CRLF & "+======================================================" & @CRLF & "-->Line(" & StringFormat("%04d", $ILINE) & "):" & @TAB & $STEXT & @CRLF & "+======================================================" & @CRLF)
  3067. Return SetError($ERR, $EXT, 1)
  3068. EndFunc
  3069. Func __UDF_VALIDATECLASSNAME($HWND, $SCLASSNAMES)
  3070. __UDF_DEBUGPRINT("This is for debugging only, set the debug variable to false before submitting")
  3071. If _WINAPI_ISCLASSNAME($HWND, $SCLASSNAMES) Then Return True
  3072. Local $SSEPARATOR = Opt("GUIDataSeparatorChar")
  3073. $SCLASSNAMES = StringReplace($SCLASSNAMES, $SSEPARATOR, ",")
  3074. __UDF_DEBUGPRINT("Invalid Class Type(s):" & @LF & @TAB & "Expecting Type(s): " & $SCLASSNAMES & @LF & @TAB & "Received Type : " & _WINAPI_GETCLASSNAME($HWND))
  3075. Exit
  3076. EndFunc
  3077. Global $__GHSBLASTWND
  3078. Global $DEBUG_SB = False
  3079. Global Const $__STATUSBARCONSTANT_CLASSNAME = "msctls_statusbar32"
  3080. Global Const $__STATUSBARCONSTANT_WM_SIZE = 5
  3081. Global Const $__STATUSBARCONSTANT_CLR_DEFAULT = -16777216
  3082. Global Const $TAGBORDERS = "int BX;int BY;int RX"
  3083. Func _GUICTRLSTATUSBAR_CREATE($HWND, $VPARTEDGE = -1, $VPARTTEXT = "", $ISTYLES = -1, $IEXSTYLES = -1)
  3084. If Not IsHWnd($HWND) Then Return SetError(1, 0, 0)
  3085. Local $ISTYLE = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE)
  3086. If $ISTYLES = -1 Then $ISTYLES = 0
  3087. If $IEXSTYLES = -1 Then $IEXSTYLES = 0
  3088. Local $APARTWIDTH[1], $APARTTEXT[1]
  3089. If @NumParams > 1 Then
  3090. If IsArray($VPARTEDGE) Then
  3091. $APARTWIDTH = $VPARTEDGE
  3092. Else
  3093. $APARTWIDTH[0] = $VPARTEDGE
  3094. EndIf
  3095. If @NumParams = 2 Then
  3096. ReDim $APARTTEXT[UBound($APARTWIDTH)]
  3097. Else
  3098. If IsArray($VPARTTEXT) Then
  3099. $APARTTEXT = $VPARTTEXT
  3100. Else
  3101. $APARTTEXT[0] = $VPARTTEXT
  3102. EndIf
  3103. If UBound($APARTWIDTH) <> UBound($APARTTEXT) Then
  3104. Local $ILAST
  3105. If UBound($APARTWIDTH) > UBound($APARTTEXT) Then
  3106. $ILAST = UBound($APARTTEXT)
  3107. ReDim $APARTTEXT[UBound($APARTWIDTH)]
  3108. For $X = $ILAST To UBound($APARTTEXT) - 1
  3109. $APARTWIDTH[$X] = ""
  3110. Next
  3111. Else
  3112. $ILAST = UBound($APARTWIDTH)
  3113. ReDim $APARTWIDTH[UBound($APARTTEXT)]
  3114. For $X = $ILAST To UBound($APARTWIDTH) - 1
  3115. $APARTWIDTH[$X] = $APARTWIDTH[$X - 1] + 75
  3116. Next
  3117. $APARTWIDTH[UBound($APARTTEXT) - 1] = -1
  3118. EndIf
  3119. EndIf
  3120. EndIf
  3121. If Not IsHWnd($HWND) Then $HWND = HWnd($HWND)
  3122. If @NumParams > 3 Then $ISTYLE = BitOR($ISTYLE, $ISTYLES)
  3123. EndIf
  3124. Local $NCTRLID = __UDF_GETNEXTGLOBALID($HWND)
  3125. If @error Then Return SetError(@error, @extended, 0)
  3126. Local $HWNDSBAR = _WINAPI_CREATEWINDOWEX($IEXSTYLES, $__STATUSBARCONSTANT_CLASSNAME, "", $ISTYLE, 0, 0, 0, 0, $HWND, $NCTRLID)
  3127. If @error Then Return SetError(@error, @extended, 0)
  3128. If @NumParams > 1 Then
  3129. _GUICTRLSTATUSBAR_SETPARTS($HWNDSBAR, UBound($APARTWIDTH), $APARTWIDTH)
  3130. For $X = 0 To UBound($APARTTEXT) - 1
  3131. _GUICTRLSTATUSBAR_SETTEXT($HWNDSBAR, $APARTTEXT[$X], $X)
  3132. Next
  3133. EndIf
  3134. Return $HWNDSBAR
  3135. EndFunc
  3136. Func _GUICTRLSTATUSBAR_DESTROY(ByRef $HWND)
  3137. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3138. If Not _WINAPI_ISCLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME) Then Return SetError(2, 2, False)
  3139. Local $DESTROYED = 0
  3140. If IsHWnd($HWND) Then
  3141. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3142. Local $NCTRLID = _WINAPI_GETDLGCTRLID($HWND)
  3143. Local $HPARENT = _WINAPI_GETPARENT($HWND)
  3144. $DESTROYED = _WINAPI_DESTROYWINDOW($HWND)
  3145. Local $IRET = __UDF_FREEGLOBALID($HPARENT, $NCTRLID)
  3146. If Not $IRET Then
  3147. EndIf
  3148. Else
  3149. Return SetError(1, 1, False)
  3150. EndIf
  3151. EndIf
  3152. If $DESTROYED Then $HWND = 0
  3153. Return $DESTROYED <> 0
  3154. EndFunc
  3155. Func _GUICTRLSTATUSBAR_EMBEDCONTROL($HWND, $IPART, $HCONTROL, $IFIT = 4)
  3156. Local $ARECT = _GUICTRLSTATUSBAR_GETRECT($HWND, $IPART)
  3157. Local $IBARX = $ARECT[0]
  3158. Local $IBARY = $ARECT[1]
  3159. Local $IBARW = $ARECT[2] - $IBARX
  3160. Local $IBARH = $ARECT[3] - $IBARY
  3161. Local $ICONX = $IBARX
  3162. Local $ICONY = $IBARY
  3163. Local $ICONW = _WINAPI_GETWINDOWWIDTH($HCONTROL)
  3164. Local $ICONH = _WINAPI_GETWINDOWHEIGHT($HCONTROL)
  3165. If $ICONW > $IBARW Then $ICONW = $IBARW
  3166. If $ICONH > $IBARH Then $ICONH = $IBARH
  3167. Local $IPADX = ($IBARW - $ICONW) / 2
  3168. Local $IPADY = ($IBARH - $ICONH) / 2
  3169. If $IPADX < 0 Then $IPADX = 0
  3170. If $IPADY < 0 Then $IPADY = 0
  3171. If BitAND($IFIT, 1) = 1 Then $ICONX = $IBARX + $IPADX
  3172. If BitAND($IFIT, 2) = 2 Then $ICONY = $IBARY + $IPADY
  3173. If BitAND($IFIT, 4) = 4 Then
  3174. $IPADX = _GUICTRLSTATUSBAR_GETBORDERSRECT($HWND)
  3175. $IPADY = _GUICTRLSTATUSBAR_GETBORDERSVERT($HWND)
  3176. $ICONX = $IBARX
  3177. If _GUICTRLSTATUSBAR_ISSIMPLE($HWND) Then $ICONX += $IPADX
  3178. $ICONY = $IBARY + $IPADY
  3179. $ICONW = $IBARW - ($IPADX * 2)
  3180. $ICONH = $IBARH - ($IPADY * 2)
  3181. EndIf
  3182. _WINAPI_SETPARENT($HCONTROL, $HWND)
  3183. _WINAPI_MOVEWINDOW($HCONTROL, $ICONX, $ICONY, $ICONW, $ICONH)
  3184. EndFunc
  3185. Func _GUICTRLSTATUSBAR_GETBORDERS($HWND)
  3186. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3187. Local $TBORDERS = DllStructCreate($TAGBORDERS)
  3188. Local $PBORDERS = DllStructGetPtr($TBORDERS)
  3189. Local $IRET
  3190. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3191. $IRET = _SENDMESSAGE($HWND, $SB_GETBORDERS, 0, $PBORDERS, 0, "wparam", "ptr")
  3192. Else
  3193. Local $ISIZE = DllStructGetSize($TBORDERS)
  3194. Local $TMEMMAP
  3195. Local $PMEMORY = _MEMINIT($HWND, $ISIZE, $TMEMMAP)
  3196. $IRET = _SENDMESSAGE($HWND, $SB_GETBORDERS, 0, $PMEMORY, 0, "wparam", "ptr")
  3197. _MEMREAD($TMEMMAP, $PMEMORY, $PBORDERS, $ISIZE)
  3198. _MEMFREE($TMEMMAP)
  3199. EndIf
  3200. Local $ABORDERS[3]
  3201. If $IRET = 0 Then Return SetError(-1, -1, $ABORDERS)
  3202. $ABORDERS[0] = DllStructGetData($TBORDERS, "BX")
  3203. $ABORDERS[1] = DllStructGetData($TBORDERS, "BY")
  3204. $ABORDERS[2] = DllStructGetData($TBORDERS, "RX")
  3205. Return $ABORDERS
  3206. EndFunc
  3207. Func _GUICTRLSTATUSBAR_GETBORDERSHORZ($HWND)
  3208. Local $ABORDERS = _GUICTRLSTATUSBAR_GETBORDERS($HWND)
  3209. Return SetError(@error, @extended, $ABORDERS[0])
  3210. EndFunc
  3211. Func _GUICTRLSTATUSBAR_GETBORDERSRECT($HWND)
  3212. Local $ABORDERS = _GUICTRLSTATUSBAR_GETBORDERS($HWND)
  3213. Return SetError(@error, @extended, $ABORDERS[2])
  3214. EndFunc
  3215. Func _GUICTRLSTATUSBAR_GETBORDERSVERT($HWND)
  3216. Local $ABORDERS = _GUICTRLSTATUSBAR_GETBORDERS($HWND)
  3217. Return SetError(@error, @extended, $ABORDERS[1])
  3218. EndFunc
  3219. Func _GUICTRLSTATUSBAR_GETCOUNT($HWND)
  3220. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3221. Return _SENDMESSAGE($HWND, $SB_GETPARTS)
  3222. EndFunc
  3223. Func _GUICTRLSTATUSBAR_GETHEIGHT($HWND)
  3224. Local $TRECT = _GUICTRLSTATUSBAR_GETRECTEX($HWND, 0)
  3225. Return DllStructGetData($TRECT, "Bottom") - DllStructGetData($TRECT, "Top") - (_GUICTRLSTATUSBAR_GETBORDERSVERT($HWND) * 2)
  3226. EndFunc
  3227. Func _GUICTRLSTATUSBAR_GETICON($HWND, $IINDEX = 0)
  3228. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3229. Return _SENDMESSAGE($HWND, $SB_GETICON, $IINDEX, 0, 0, "wparam", "lparam", "hwnd")
  3230. EndFunc
  3231. Func _GUICTRLSTATUSBAR_GETPARTS($HWND)
  3232. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3233. Local $ICOUNT = _GUICTRLSTATUSBAR_GETCOUNT($HWND)
  3234. Local $TPARTS = DllStructCreate("int[" & $ICOUNT & "]")
  3235. Local $PPARTS = DllStructGetPtr($TPARTS)
  3236. Local $APARTS[$ICOUNT + 1]
  3237. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3238. $APARTS[0] = _SENDMESSAGE($HWND, $SB_GETPARTS, $ICOUNT, $PPARTS, 0, "wparam", "ptr")
  3239. Else
  3240. Local $IPARTS = DllStructGetSize($TPARTS)
  3241. Local $TMEMMAP
  3242. Local $PMEMORY = _MEMINIT($HWND, $IPARTS, $TMEMMAP)
  3243. $APARTS[0] = _SENDMESSAGE($HWND, $SB_GETPARTS, $ICOUNT, $PMEMORY, 0, "wparam", "ptr")
  3244. _MEMREAD($TMEMMAP, $PMEMORY, $PPARTS, $IPARTS)
  3245. _MEMFREE($TMEMMAP)
  3246. EndIf
  3247. For $II = 1 To $ICOUNT
  3248. $APARTS[$II] = DllStructGetData($TPARTS, 1, $II)
  3249. Next
  3250. Return $APARTS
  3251. EndFunc
  3252. Func _GUICTRLSTATUSBAR_GETRECT($HWND, $IPART)
  3253. Local $TRECT = _GUICTRLSTATUSBAR_GETRECTEX($HWND, $IPART)
  3254. If @error Then Return SetError(@error, 0, 0)
  3255. Local $ARECT[4]
  3256. $ARECT[0] = DllStructGetData($TRECT, "Left")
  3257. $ARECT[1] = DllStructGetData($TRECT, "Top")
  3258. $ARECT[2] = DllStructGetData($TRECT, "Right")
  3259. $ARECT[3] = DllStructGetData($TRECT, "Bottom")
  3260. Return $ARECT
  3261. EndFunc
  3262. Func _GUICTRLSTATUSBAR_GETRECTEX($HWND, $IPART)
  3263. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3264. Local $TRECT = DllStructCreate($TAGRECT)
  3265. Local $PRECT = DllStructGetPtr($TRECT)
  3266. Local $IRET
  3267. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3268. $IRET = _SENDMESSAGE($HWND, $SB_GETRECT, $IPART, $PRECT, 0, "wparam", "ptr")
  3269. Else
  3270. Local $IRECT = DllStructGetSize($TRECT)
  3271. Local $TMEMMAP
  3272. Local $PMEMORY = _MEMINIT($HWND, $IRECT, $TMEMMAP)
  3273. $IRET = _SENDMESSAGE($HWND, $SB_GETRECT, $IPART, $PMEMORY, 0, "wparam", "ptr")
  3274. _MEMREAD($TMEMMAP, $PMEMORY, $PRECT, $IRECT)
  3275. _MEMFREE($TMEMMAP)
  3276. EndIf
  3277. Return SetError($IRET = 0, 0, $TRECT)
  3278. EndFunc
  3279. Func _GUICTRLSTATUSBAR_GETTEXT($HWND, $IPART)
  3280. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3281. Local $FUNICODE = _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  3282. Local $IBUFFER = _GUICTRLSTATUSBAR_GETTEXTLENGTH($HWND, $IPART)
  3283. If $IBUFFER = 0 Then Return SetError(1, 0, "")
  3284. Local $TBUFFER
  3285. If $FUNICODE Then
  3286. $TBUFFER = DllStructCreate("wchar Text[" & $IBUFFER & "]")
  3287. $IBUFFER *= 2
  3288. Else
  3289. $TBUFFER = DllStructCreate("char Text[" & $IBUFFER & "]")
  3290. EndIf
  3291. Local $PBUFFER = DllStructGetPtr($TBUFFER)
  3292. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3293. _SENDMESSAGE($HWND, $SB_GETTEXTW, $IPART, $PBUFFER, 0, "wparam", "ptr")
  3294. Else
  3295. Local $TMEMMAP
  3296. Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP)
  3297. If $FUNICODE Then
  3298. _SENDMESSAGE($HWND, $SB_GETTEXTW, $IPART, $PMEMORY, 0, "wparam", "ptr")
  3299. Else
  3300. _SENDMESSAGE($HWND, $SB_GETTEXT, $IPART, $PMEMORY, 0, "wparam", "ptr")
  3301. EndIf
  3302. _MEMREAD($TMEMMAP, $PMEMORY, $PBUFFER, $IBUFFER)
  3303. _MEMFREE($TMEMMAP)
  3304. EndIf
  3305. Return DllStructGetData($TBUFFER, "Text")
  3306. EndFunc
  3307. Func _GUICTRLSTATUSBAR_GETTEXTFLAGS($HWND, $IPART)
  3308. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3309. If _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND) Then
  3310. Return _SENDMESSAGE($HWND, $SB_GETTEXTLENGTHW, $IPART)
  3311. Else
  3312. Return _SENDMESSAGE($HWND, $SB_GETTEXTLENGTH, $IPART)
  3313. EndIf
  3314. EndFunc
  3315. Func _GUICTRLSTATUSBAR_GETTEXTLENGTH($HWND, $IPART)
  3316. Return _WINAPI_LOWORD(_GUICTRLSTATUSBAR_GETTEXTFLAGS($HWND, $IPART))
  3317. EndFunc
  3318. Func _GUICTRLSTATUSBAR_GETTEXTLENGTHEX($HWND, $IPART)
  3319. Return _WINAPI_HIWORD(_GUICTRLSTATUSBAR_GETTEXTFLAGS($HWND, $IPART))
  3320. EndFunc
  3321. Func _GUICTRLSTATUSBAR_GETTIPTEXT($HWND, $IPART)
  3322. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3323. Local $FUNICODE = _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  3324. Local $TBUFFER
  3325. If $FUNICODE Then
  3326. $TBUFFER = DllStructCreate("wchar Text[4096]")
  3327. Else
  3328. $TBUFFER = DllStructCreate("char Text[4096]")
  3329. EndIf
  3330. Local $PBUFFER = DllStructGetPtr($TBUFFER)
  3331. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3332. _SENDMESSAGE($HWND, $SB_GETTIPTEXTW, _WINAPI_MAKELONG($IPART, 4096), $PBUFFER, 0, "wparam", "ptr")
  3333. Else
  3334. Local $TMEMMAP
  3335. Local $PMEMORY = _MEMINIT($HWND, 4096, $TMEMMAP)
  3336. If $FUNICODE Then
  3337. _SENDMESSAGE($HWND, $SB_GETTIPTEXTW, _WINAPI_MAKELONG($IPART, 4096), $PMEMORY, 0, "wparam", "ptr")
  3338. Else
  3339. _SENDMESSAGE($HWND, $SB_GETTIPTEXTA, _WINAPI_MAKELONG($IPART, 4096), $PMEMORY, 0, "wparam", "ptr")
  3340. EndIf
  3341. _MEMREAD($TMEMMAP, $PMEMORY, $PBUFFER, 4096)
  3342. _MEMFREE($TMEMMAP)
  3343. EndIf
  3344. Return DllStructGetData($TBUFFER, "Text")
  3345. EndFunc
  3346. Func _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  3347. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3348. Return _SENDMESSAGE($HWND, $SB_GETUNICODEFORMAT) <> 0
  3349. EndFunc
  3350. Func _GUICTRLSTATUSBAR_GETWIDTH($HWND, $IPART)
  3351. Local $TRECT = _GUICTRLSTATUSBAR_GETRECTEX($HWND, $IPART)
  3352. Return DllStructGetData($TRECT, "Right") - DllStructGetData($TRECT, "Left") - (_GUICTRLSTATUSBAR_GETBORDERSHORZ($HWND) * 2)
  3353. EndFunc
  3354. Func _GUICTRLSTATUSBAR_ISSIMPLE($HWND)
  3355. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3356. Return _SENDMESSAGE($HWND, $SB_ISSIMPLE) <> 0
  3357. EndFunc
  3358. Func _GUICTRLSTATUSBAR_RESIZE($HWND)
  3359. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3360. _SENDMESSAGE($HWND, $__STATUSBARCONSTANT_WM_SIZE)
  3361. EndFunc
  3362. Func _GUICTRLSTATUSBAR_SETBKCOLOR($HWND, $ICOLOR)
  3363. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3364. $ICOLOR = _SENDMESSAGE($HWND, $SB_SETBKCOLOR, 0, $ICOLOR)
  3365. If $ICOLOR = $__STATUSBARCONSTANT_CLR_DEFAULT Then Return "0x" & Hex($__STATUSBARCONSTANT_CLR_DEFAULT)
  3366. Return $ICOLOR
  3367. EndFunc
  3368. Func _GUICTRLSTATUSBAR_SETICON($HWND, $IPART, $HICON = -1, $SICONFILE = "")
  3369. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3370. If $HICON = -1 Then Return _SENDMESSAGE($HWND, $SB_SETICON, $IPART, $HICON, 0, "wparam", "handle") <> 0
  3371. If StringLen($SICONFILE) <= 0 Then Return _SENDMESSAGE($HWND, $SB_SETICON, $IPART, $HICON) <> 0
  3372. Local $TICON = DllStructCreate("handle")
  3373. Local $VRESULT = DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $SICONFILE, "int", $HICON, "ptr", 0, "ptr", DllStructGetPtr($TICON), "uint", 1)
  3374. If @error Then Return SetError(@error, @extended, False)
  3375. $VRESULT = $VRESULT[0]
  3376. If $VRESULT > 0 Then $VRESULT = _SENDMESSAGE($HWND, $SB_SETICON, $IPART, DllStructGetData($TICON, 1), 0, "wparam", "handle")
  3377. DllCall("user32.dll", "bool", "DestroyIcon", "handle", DllStructGetData($TICON, 1))
  3378. Return $VRESULT
  3379. EndFunc
  3380. Func _GUICTRLSTATUSBAR_SETMINHEIGHT($HWND, $IMINHEIGHT)
  3381. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3382. _SENDMESSAGE($HWND, $SB_SETMINHEIGHT, $IMINHEIGHT)
  3383. _GUICTRLSTATUSBAR_RESIZE($HWND)
  3384. EndFunc
  3385. Func _GUICTRLSTATUSBAR_SETPARTS($HWND, $IAPARTS = -1, $IAPARTWIDTH = 25)
  3386. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3387. Local $TPARTS, $IPARTS = 1
  3388. If IsArray($IAPARTS) <> 0 Then
  3389. $IAPARTS[UBound($IAPARTS) - 1] = -1
  3390. $IPARTS = UBound($IAPARTS)
  3391. $TPARTS = DllStructCreate("int[" & $IPARTS & "]")
  3392. For $X = 0 To $IPARTS - 2
  3393. DllStructSetData($TPARTS, 1, $IAPARTS[$X], $X + 1)
  3394. Next
  3395. DllStructSetData($TPARTS, 1, -1, $IPARTS)
  3396. ElseIf IsArray($IAPARTWIDTH) <> 0 Then
  3397. $IPARTS = UBound($IAPARTWIDTH)
  3398. $TPARTS = DllStructCreate("int[" & $IPARTS & "]")
  3399. For $X = 0 To $IPARTS - 2
  3400. DllStructSetData($TPARTS, 1, $IAPARTWIDTH[$X], $X + 1)
  3401. Next
  3402. DllStructSetData($TPARTS, 1, -1, $IPARTS)
  3403. ElseIf $IAPARTS > 1 Then
  3404. $IPARTS = $IAPARTS
  3405. $TPARTS = DllStructCreate("int[" & $IPARTS & "]")
  3406. For $X = 1 To $IPARTS - 1
  3407. DllStructSetData($TPARTS, 1, $IAPARTWIDTH * $X, $X)
  3408. Next
  3409. DllStructSetData($TPARTS, 1, -1, $IPARTS)
  3410. Else
  3411. $TPARTS = DllStructCreate("int")
  3412. DllStructSetData($TPARTS, $IPARTS, -1)
  3413. EndIf
  3414. Local $PPARTS = DllStructGetPtr($TPARTS)
  3415. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3416. _SENDMESSAGE($HWND, $SB_SETPARTS, $IPARTS, $PPARTS, 0, "wparam", "ptr")
  3417. Else
  3418. Local $ISIZE = DllStructGetSize($TPARTS)
  3419. Local $TMEMMAP
  3420. Local $PMEMORY = _MEMINIT($HWND, $ISIZE, $TMEMMAP)
  3421. _MEMWRITE($TMEMMAP, $PPARTS)
  3422. _SENDMESSAGE($HWND, $SB_SETPARTS, $IPARTS, $PMEMORY, 0, "wparam", "ptr")
  3423. _MEMFREE($TMEMMAP)
  3424. EndIf
  3425. _GUICTRLSTATUSBAR_RESIZE($HWND)
  3426. Return True
  3427. EndFunc
  3428. Func _GUICTRLSTATUSBAR_SETSIMPLE($HWND, $FSIMPLE = True)
  3429. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3430. _SENDMESSAGE($HWND, $SB_SIMPLE, $FSIMPLE)
  3431. EndFunc
  3432. Func _GUICTRLSTATUSBAR_SETTEXT($HWND, $STEXT = "", $IPART = 0, $IUFLAG = 0)
  3433. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3434. Local $FUNICODE = _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  3435. Local $IBUFFER = StringLen($STEXT) + 1
  3436. Local $TTEXT
  3437. If $FUNICODE Then
  3438. $TTEXT = DllStructCreate("wchar Text[" & $IBUFFER & "]")
  3439. $IBUFFER *= 2
  3440. Else
  3441. $TTEXT = DllStructCreate("char Text[" & $IBUFFER & "]")
  3442. EndIf
  3443. Local $PBUFFER = DllStructGetPtr($TTEXT)
  3444. DllStructSetData($TTEXT, "Text", $STEXT)
  3445. If _GUICTRLSTATUSBAR_ISSIMPLE($HWND) Then $IPART = $SB_SIMPLEID
  3446. Local $IRET
  3447. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3448. $IRET = _SENDMESSAGE($HWND, $SB_SETTEXTW, BitOR($IPART, $IUFLAG), $PBUFFER, 0, "wparam", "ptr")
  3449. Else
  3450. Local $TMEMMAP
  3451. Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP)
  3452. _MEMWRITE($TMEMMAP, $PBUFFER)
  3453. If $FUNICODE Then
  3454. $IRET = _SENDMESSAGE($HWND, $SB_SETTEXTW, BitOR($IPART, $IUFLAG), $PMEMORY, 0, "wparam", "ptr")
  3455. Else
  3456. $IRET = _SENDMESSAGE($HWND, $SB_SETTEXT, BitOR($IPART, $IUFLAG), $PMEMORY, 0, "wparam", "ptr")
  3457. EndIf
  3458. _MEMFREE($TMEMMAP)
  3459. EndIf
  3460. Return $IRET <> 0
  3461. EndFunc
  3462. Func _GUICTRLSTATUSBAR_SETTIPTEXT($HWND, $IPART, $STEXT)
  3463. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3464. Local $FUNICODE = _GUICTRLSTATUSBAR_GETUNICODEFORMAT($HWND)
  3465. Local $IBUFFER = StringLen($STEXT) + 1
  3466. Local $TTEXT
  3467. If $FUNICODE Then
  3468. $TTEXT = DllStructCreate("wchar TipText[" & $IBUFFER & "]")
  3469. $IBUFFER *= 2
  3470. Else
  3471. $TTEXT = DllStructCreate("char TipText[" & $IBUFFER & "]")
  3472. EndIf
  3473. Local $PBUFFER = DllStructGetPtr($TTEXT)
  3474. DllStructSetData($TTEXT, "TipText", $STEXT)
  3475. If _WINAPI_INPROCESS($HWND, $__GHSBLASTWND) Then
  3476. _SENDMESSAGE($HWND, $SB_SETTIPTEXTW, $IPART, $PBUFFER, 0, "wparam", "ptr")
  3477. Else
  3478. Local $TMEMMAP
  3479. Local $PMEMORY = _MEMINIT($HWND, $IBUFFER, $TMEMMAP)
  3480. _MEMWRITE($TMEMMAP, $PBUFFER, $PMEMORY, $IBUFFER)
  3481. If $FUNICODE Then
  3482. _SENDMESSAGE($HWND, $SB_SETTIPTEXTW, $IPART, $PMEMORY, 0, "wparam", "ptr")
  3483. Else
  3484. _SENDMESSAGE($HWND, $SB_SETTIPTEXTA, $IPART, $PMEMORY, 0, "wparam", "ptr")
  3485. EndIf
  3486. _MEMFREE($TMEMMAP)
  3487. EndIf
  3488. EndFunc
  3489. Func _GUICTRLSTATUSBAR_SETUNICODEFORMAT($HWND, $FUNICODE = True)
  3490. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3491. Return _SENDMESSAGE($HWND, $SB_SETUNICODEFORMAT, $FUNICODE)
  3492. EndFunc
  3493. Func _GUICTRLSTATUSBAR_SHOWHIDE($HWND, $ISTATE)
  3494. If $DEBUG_SB Then __UDF_VALIDATECLASSNAME($HWND, $__STATUSBARCONSTANT_CLASSNAME)
  3495. If $ISTATE <> @SW_HIDE And $ISTATE <> @SW_SHOW Then Return SetError(1, 1, False)
  3496. Return _WINAPI_SHOWWINDOW($HWND, $ISTATE)
  3497. EndFunc
  3498. Global Const $ES_LEFT = 0
  3499. Global Const $ES_CENTER = 1
  3500. Global Const $ES_RIGHT = 2
  3501. Global Const $ES_MULTILINE = 4
  3502. Global Const $ES_UPPERCASE = 8
  3503. Global Const $ES_LOWERCASE = 16
  3504. Global Const $ES_PASSWORD = 32
  3505. Global Const $ES_AUTOVSCROLL = 64
  3506. Global Const $ES_AUTOHSCROLL = 128
  3507. Global Const $ES_NOHIDESEL = 256
  3508. Global Const $ES_OEMCONVERT = 1024
  3509. Global Const $ES_READONLY = 2048
  3510. Global Const $ES_WANTRETURN = 4096
  3511. Global Const $ES_NUMBER = 8192
  3512. Global Const $EC_ERR = -1
  3513. Global Const $ECM_FIRST = 5376
  3514. Global Const $EM_CANUNDO = 198
  3515. Global Const $EM_CHARFROMPOS = 215
  3516. Global Const $EM_EMPTYUNDOBUFFER = 205
  3517. Global Const $EM_FMTLINES = 200
  3518. Global Const $EM_GETCUEBANNER = ($ECM_FIRST + 2)
  3519. Global Const $EM_GETFIRSTVISIBLELINE = 206
  3520. Global Const $EM_GETHANDLE = 189
  3521. Global Const $EM_GETIMESTATUS = 217
  3522. Global Const $EM_GETLIMITTEXT = 213
  3523. Global Const $EM_GETLINE = 196
  3524. Global Const $EM_GETLINECOUNT = 186
  3525. Global Const $EM_GETMARGINS = 212
  3526. Global Const $EM_GETMODIFY = 184
  3527. Global Const $EM_GETPASSWORDCHAR = 210
  3528. Global Const $EM_GETRECT = 178
  3529. Global Const $EM_GETSEL = 176
  3530. Global Const $EM_GETTHUMB = 190
  3531. Global Const $EM_GETWORDBREAKPROC = 209
  3532. Global Const $EM_HIDEBALLOONTIP = ($ECM_FIRST + 4)
  3533. Global Const $EM_LIMITTEXT = 197
  3534. Global Const $EM_LINEFROMCHAR = 201
  3535. Global Const $EM_LINEINDEX = 187
  3536. Global Const $EM_LINELENGTH = 193
  3537. Global Const $EM_LINESCROLL = 182
  3538. Global Const $EM_POSFROMCHAR = 214
  3539. Global Const $EM_REPLACESEL = 194
  3540. Global Const $EM_SCROLL = 181
  3541. Global Const $EM_SCROLLCARET = 183
  3542. Global Const $EM_SETCUEBANNER = ($ECM_FIRST + 1)
  3543. Global Const $EM_SETHANDLE = 188
  3544. Global Const $EM_SETIMESTATUS = 216
  3545. Global Const $EM_SETLIMITTEXT = $EM_LIMITTEXT
  3546. Global Const $EM_SETMARGINS = 211
  3547. Global Const $EM_SETMODIFY = 185
  3548. Global Const $EM_SETPASSWORDCHAR = 204
  3549. Global Const $EM_SETREADONLY = 207
  3550. Global Const $EM_SETRECT = 179
  3551. Global Const $EM_SETRECTNP = 180
  3552. Global Const $EM_SETSEL = 177
  3553. Global Const $EM_SETTABSTOPS = 203
  3554. Global Const $EM_SETWORDBREAKPROC = 208
  3555. Global Const $EM_SHOWBALLOONTIP = ($ECM_FIRST + 3)
  3556. Global Const $EM_UNDO = 199
  3557. Global Const $EC_LEFTMARGIN = 1
  3558. Global Const $EC_RIGHTMARGIN = 2
  3559. Global Const $EC_USEFONTINFO = 65535
  3560. Global Const $EMSIS_COMPOSITIONSTRING = 1
  3561. Global Const $EIMES_GETCOMPSTRATONCE = 1
  3562. Global Const $EIMES_CANCELCOMPSTRINFOCUS = 2
  3563. Global Const $EIMES_COMPLETECOMPSTRKILLFOCUS = 4
  3564. Global Const $EN_ALIGN_LTR_EC = 1792
  3565. Global Const $EN_ALIGN_RTL_EC = 1793
  3566. Global Const $EN_CHANGE = 768
  3567. Global Const $EN_ERRSPACE = 1280
  3568. Global Const $EN_HSCROLL = 1537
  3569. Global Const $EN_KILLFOCUS = 512
  3570. Global Const $EN_MAXTEXT = 1281
  3571. Global Const $EN_SETFOCUS = 256
  3572. Global Const $EN_UPDATE = 1024
  3573. Global Const $EN_VSCROLL = 1538
  3574. Global Const $TTI_NONE = 0
  3575. Global Const $TTI_INFO = 1
  3576. Global Const $TTI_WARNING = 2
  3577. Global Const $TTI_ERROR = 3
  3578. Global Const $TTI_INFO_LARGE = 4
  3579. Global Const $TTI_WARNING_LARGE = 5
  3580. Global Const $TTI_ERROR_LARGE = 6
  3581. Global Const $__EDITCONSTANT_WS_VSCROLL = 2097152
  3582. Global Const $__EDITCONSTANT_WS_HSCROLL = 1048576
  3583. Global Const $GUI_SS_DEFAULT_EDIT = BitOR($ES_WANTRETURN, $__EDITCONSTANT_WS_VSCROLL, $__EDITCONSTANT_WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL)
  3584. Global Const $GUI_SS_DEFAULT_INPUT = BitOR($ES_LEFT, $ES_AUTOHSCROLL)
  3585. Global $_GHEDITLASTWND
  3586. Global $DEBUG_ED = False
  3587. Global Const $__EDITCONSTANT_CLASSNAME = "Edit"
  3588. Global Const $__EDITCONSTANT_GUI_CHECKED = 1
  3589. Global Const $__EDITCONSTANT_GUI_HIDE = 32
  3590. Global Const $__EDITCONSTANT_GUI_EVENT_CLOSE = -3
  3591. Global Const $__EDITCONSTANT_GUI_ENABLE = 64
  3592. Global Const $__EDITCONSTANT_GUI_DISABLE = 128
  3593. Global Const $__EDITCONSTANT_SS_CENTER = 1
  3594. Global Const $__EDITCONSTANT_WM_SETREDRAW = 11
  3595. Global Const $__EDITCONSTANT_WS_CAPTION = 12582912
  3596. Global Const $__EDITCONSTANT_WS_POPUP = -2147483648
  3597. Global Const $__EDITCONSTANT_WS_TABSTOP = 65536
  3598. Global Const $__EDITCONSTANT_WS_SYSMENU = 524288
  3599. Global Const $__EDITCONSTANT_WS_MINIMIZEBOX = 131072
  3600. Global Const $__EDITCONSTANT_DEFAULT_GUI_FONT = 17
  3601. Global Const $__EDITCONSTANT_WM_SETFONT = 48
  3602. Global Const $__EDITCONSTANT_WM_GETTEXTLENGTH = 14
  3603. Global Const $__EDITCONSTANT_WM_GETTEXT = 13
  3604. Global Const $__EDITCONSTANT_WM_SETTEXT = 12
  3605. Global Const $__EDITCONSTANT_SB_LINEUP = 0
  3606. Global Const $__EDITCONSTANT_SB_LINEDOWN = 1
  3607. Global Const $__EDITCONSTANT_SB_PAGEDOWN = 3
  3608. Global Const $__EDITCONSTANT_SB_PAGEUP = 2
  3609. Global Const $__EDITCONSTANT_SB_SCROLLCARET = 4
  3610. Global Const $TAGEDITBALLOONTIP = "dword Size;ptr Title;ptr Text;int Icon"
  3611. Func _GUICTRLEDIT_APPENDTEXT($HWND, $STEXT)
  3612. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3613. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3614. Local $ILENGTH = _GUICTRLEDIT_GETTEXTLEN($HWND)
  3615. _GUICTRLEDIT_SETSEL($HWND, $ILENGTH, $ILENGTH)
  3616. _SENDMESSAGE($HWND, $EM_REPLACESEL, True, $STEXT, 0, "wparam", "wstr")
  3617. EndFunc
  3618. Func _GUICTRLEDIT_BEGINUPDATE($HWND)
  3619. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3620. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3621. Return _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_SETREDRAW) = 0
  3622. EndFunc
  3623. Func _GUICTRLEDIT_CANUNDO($HWND)
  3624. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3625. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3626. Return _SENDMESSAGE($HWND, $EM_CANUNDO) <> 0
  3627. EndFunc
  3628. Func _GUICTRLEDIT_CHARFROMPOS($HWND, $IX, $IY)
  3629. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3630. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3631. Local $ARETURN[2]
  3632. Local $IRET = _SENDMESSAGE($HWND, $EM_CHARFROMPOS, 0, _WINAPI_MAKELONG($IX, $IY))
  3633. $ARETURN[0] = _WINAPI_LOWORD($IRET)
  3634. $ARETURN[1] = _WINAPI_HIWORD($IRET)
  3635. Return $ARETURN
  3636. EndFunc
  3637. Func _GUICTRLEDIT_CREATE($HWND, $STEXT, $IX, $IY, $IWIDTH = 150, $IHEIGHT = 150, $ISTYLE = 3150020, $IEXSTYLE = 512)
  3638. If Not IsHWnd($HWND) Then Return SetError(1, 0, 0)
  3639. If Not IsString($STEXT) Then Return SetError(2, 0, 0)
  3640. If $IWIDTH = -1 Then $IWIDTH = 150
  3641. If $IHEIGHT = -1 Then $IHEIGHT = 150
  3642. If $ISTYLE = -1 Then $ISTYLE = 3150020
  3643. If $IEXSTYLE = -1 Then $IEXSTYLE = 512
  3644. If BitAND($ISTYLE, $ES_READONLY) = $ES_READONLY Then
  3645. $ISTYLE = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE, $ISTYLE)
  3646. Else
  3647. $ISTYLE = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE, $__EDITCONSTANT_WS_TABSTOP, $ISTYLE)
  3648. EndIf
  3649. Local $NCTRLID = __UDF_GETNEXTGLOBALID($HWND)
  3650. If @error Then Return SetError(@error, @extended, 0)
  3651. Local $HEDIT = _WINAPI_CREATEWINDOWEX($IEXSTYLE, $__EDITCONSTANT_CLASSNAME, "", $ISTYLE, $IX, $IY, $IWIDTH, $IHEIGHT, $HWND, $NCTRLID)
  3652. _SENDMESSAGE($HEDIT, $__EDITCONSTANT_WM_SETFONT, _WINAPI_GETSTOCKOBJECT($__EDITCONSTANT_DEFAULT_GUI_FONT), True)
  3653. _GUICTRLEDIT_SETTEXT($HEDIT, $STEXT)
  3654. _GUICTRLEDIT_SETLIMITTEXT($HEDIT, 0)
  3655. Return $HEDIT
  3656. EndFunc
  3657. Func _GUICTRLEDIT_DESTROY(ByRef $HWND)
  3658. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3659. If Not _WINAPI_ISCLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME) Then Return SetError(2, 2, False)
  3660. Local $DESTROYED = 0
  3661. If IsHWnd($HWND) Then
  3662. If _WINAPI_INPROCESS($HWND, $_GHEDITLASTWND) Then
  3663. Local $NCTRLID = _WINAPI_GETDLGCTRLID($HWND)
  3664. Local $HPARENT = _WINAPI_GETPARENT($HWND)
  3665. $DESTROYED = _WINAPI_DESTROYWINDOW($HWND)
  3666. Local $IRET = __UDF_FREEGLOBALID($HPARENT, $NCTRLID)
  3667. If Not $IRET Then
  3668. EndIf
  3669. Else
  3670. Return SetError(1, 1, False)
  3671. EndIf
  3672. Else
  3673. $DESTROYED = GUICtrlDelete($HWND)
  3674. EndIf
  3675. If $DESTROYED Then $HWND = 0
  3676. Return $DESTROYED <> 0
  3677. EndFunc
  3678. Func _GUICTRLEDIT_EMPTYUNDOBUFFER($HWND)
  3679. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3680. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3681. _SENDMESSAGE($HWND, $EM_EMPTYUNDOBUFFER)
  3682. EndFunc
  3683. Func _GUICTRLEDIT_ENDUPDATE($HWND)
  3684. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3685. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3686. Return _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_SETREDRAW, 1) = 0
  3687. EndFunc
  3688. Func _GUICTRLEDIT_FMTLINES($HWND, $FSOFTBREAK = False)
  3689. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3690. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3691. Return _SENDMESSAGE($HWND, $EM_FMTLINES, $FSOFTBREAK)
  3692. EndFunc
  3693. Func _GUICTRLEDIT_FIND($HWND, $FREPLACE = False)
  3694. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3695. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3696. Local $IPOS = 0, $ICASE, $IOCCURANCE = 0, $IREPLACEMENTS = 0
  3697. Local $APARTSRIGHTEDGE[3] = [125, 225, -1]
  3698. Local $OLDMODE = Opt("GUIOnEventMode", 0)
  3699. Local $ASEL = _GUICTRLEDIT_GETSEL($HWND)
  3700. Local $STEXT = _GUICTRLEDIT_GETTEXT($HWND)
  3701. Local $GUISEARCH = GUICreate("Find", 349, 177, -1, -1, BitOR($__UDFGUICONSTANT_WS_CHILD, $__EDITCONSTANT_WS_MINIMIZEBOX, $__EDITCONSTANT_WS_CAPTION, $__EDITCONSTANT_WS_POPUP, $__EDITCONSTANT_WS_SYSMENU))
  3702. Local $STATUSBAR1 = _GUICTRLSTATUSBAR_CREATE($GUISEARCH, $APARTSRIGHTEDGE)
  3703. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: ")
  3704. GUISetIcon(@SystemDir & "\shell32.dll", 22, $GUISEARCH)
  3705. GUICtrlCreateLabel("Find what:", 9, 10, 53, 16, $__EDITCONSTANT_SS_CENTER)
  3706. Local $INPUTSEARCH = GUICtrlCreateInput("", 80, 8, 257, 21)
  3707. Local $LBLREPLACE = GUICtrlCreateLabel("Replace with:", 9, 42, 69, 17, $__EDITCONSTANT_SS_CENTER)
  3708. Local $INPUTREPLACE = GUICtrlCreateInput("", 80, 40, 257, 21)
  3709. Local $CHKWHOLEONLY = GUICtrlCreateCheckbox("Match whole word only", 9, 72, 145, 17)
  3710. Local $CHKMATCHCASE = GUICtrlCreateCheckbox("Match case", 9, 96, 145, 17)
  3711. Local $BTNFINDNEXT = GUICtrlCreateButton("Find Next", 168, 72, 161, 21, 0)
  3712. Local $BTNREPLACE = GUICtrlCreateButton("Replace", 168, 96, 161, 21, 0)
  3713. Local $BTNCLOSE = GUICtrlCreateButton("Close", 104, 130, 161, 21, 0)
  3714. If (IsArray($ASEL) And $ASEL <> $EC_ERR) Then
  3715. GUICtrlSetData($INPUTSEARCH, StringMid($STEXT, $ASEL[0] + 1, $ASEL[1] - $ASEL[0]))
  3716. If $ASEL[0] <> $ASEL[1] Then
  3717. $IPOS = $ASEL[0]
  3718. If BitAND(GUICtrlRead($CHKMATCHCASE), $__EDITCONSTANT_GUI_CHECKED) = $__EDITCONSTANT_GUI_CHECKED Then $ICASE = 1
  3719. $IOCCURANCE = 1
  3720. Local $ITPOSE
  3721. While 1
  3722. $ITPOSE = StringInStr($STEXT, GUICtrlRead($INPUTSEARCH), $ICASE, $IOCCURANCE)
  3723. If Not $ITPOSE Then
  3724. $IOCCURANCE = 0
  3725. ExitLoop
  3726. ElseIf $ITPOSE = $IPOS + 1 Then
  3727. ExitLoop
  3728. EndIf
  3729. $IOCCURANCE += 1
  3730. WEnd
  3731. EndIf
  3732. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: " & GUICtrlRead($INPUTSEARCH))
  3733. EndIf
  3734. If $FREPLACE = False Then
  3735. GUICtrlSetState($LBLREPLACE, $__EDITCONSTANT_GUI_HIDE)
  3736. GUICtrlSetState($INPUTREPLACE, $__EDITCONSTANT_GUI_HIDE)
  3737. GUICtrlSetState($BTNREPLACE, $__EDITCONSTANT_GUI_HIDE)
  3738. Else
  3739. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Replacements: " & $IREPLACEMENTS, 1)
  3740. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "With: ", 2)
  3741. EndIf
  3742. GUISetState(@SW_SHOW)
  3743. Local $MSGFIND
  3744. While 1
  3745. $MSGFIND = GUIGetMsg()
  3746. Select
  3747. Case $MSGFIND = $__EDITCONSTANT_GUI_EVENT_CLOSE Or $MSGFIND = $BTNCLOSE
  3748. ExitLoop
  3749. Case $MSGFIND = $BTNFINDNEXT
  3750. GUICtrlSetState($BTNFINDNEXT, $__EDITCONSTANT_GUI_DISABLE)
  3751. GUICtrlSetCursor($BTNFINDNEXT, 15)
  3752. Sleep(100)
  3753. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: " & GUICtrlRead($INPUTSEARCH))
  3754. If $FREPLACE = True Then
  3755. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: " & GUICtrlRead($INPUTSEARCH))
  3756. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "With: " & GUICtrlRead($INPUTREPLACE), 2)
  3757. EndIf
  3758. __GUICTRLEDIT_FINDTEXT($HWND, $INPUTSEARCH, $CHKMATCHCASE, $CHKWHOLEONLY, $IPOS, $IOCCURANCE, $IREPLACEMENTS)
  3759. Sleep(100)
  3760. GUICtrlSetState($BTNFINDNEXT, $__EDITCONSTANT_GUI_ENABLE)
  3761. GUICtrlSetCursor($BTNFINDNEXT, 2)
  3762. Case $MSGFIND = $BTNREPLACE
  3763. GUICtrlSetState($BTNREPLACE, $__EDITCONSTANT_GUI_DISABLE)
  3764. GUICtrlSetCursor($BTNREPLACE, 15)
  3765. Sleep(100)
  3766. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Find: " & GUICtrlRead($INPUTSEARCH))
  3767. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "With: " & GUICtrlRead($INPUTREPLACE), 2)
  3768. If $IPOS Then
  3769. _GUICTRLEDIT_REPLACESEL($HWND, GUICtrlRead($INPUTREPLACE))
  3770. $IREPLACEMENTS += 1
  3771. $IOCCURANCE -= 1
  3772. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR1, "Replacements: " & $IREPLACEMENTS, 1)
  3773. EndIf
  3774. __GUICTRLEDIT_FINDTEXT($HWND, $INPUTSEARCH, $CHKMATCHCASE, $CHKWHOLEONLY, $IPOS, $IOCCURANCE, $IREPLACEMENTS)
  3775. Sleep(100)
  3776. GUICtrlSetState($BTNREPLACE, $__EDITCONSTANT_GUI_ENABLE)
  3777. GUICtrlSetCursor($BTNREPLACE, 2)
  3778. EndSelect
  3779. WEnd
  3780. GUIDelete($GUISEARCH)
  3781. Opt("GUIOnEventMode", $OLDMODE)
  3782. EndFunc
  3783. Func __GUICTRLEDIT_FINDTEXT($HWND, $INPUTSEARCH, $CHKMATCHCASE, $CHKWHOLEONLY, ByRef $IPOS, ByRef $IOCCURANCE, ByRef $IREPLACEMENTS)
  3784. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3785. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3786. Local $ICASE = 0, $IWHOLE = 0
  3787. Local $FEXACT = False
  3788. Local $SFIND = GUICtrlRead($INPUTSEARCH)
  3789. Local $STEXT = _GUICTRLEDIT_GETTEXT($HWND)
  3790. If BitAND(GUICtrlRead($CHKMATCHCASE), $__EDITCONSTANT_GUI_CHECKED) = $__EDITCONSTANT_GUI_CHECKED Then $ICASE = 1
  3791. If BitAND(GUICtrlRead($CHKWHOLEONLY), $__EDITCONSTANT_GUI_CHECKED) = $__EDITCONSTANT_GUI_CHECKED Then $IWHOLE = 1
  3792. If $SFIND <> "" Then
  3793. $IOCCURANCE += 1
  3794. $IPOS = StringInStr($STEXT, $SFIND, $ICASE, $IOCCURANCE)
  3795. If $IWHOLE And $IPOS Then
  3796. Local $C_COMPARE2 = StringMid($STEXT, $IPOS + StringLen($SFIND), 1)
  3797. If $IPOS = 1 Then
  3798. 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
  3799. Else
  3800. Local $C_COMPARE1 = StringMid($STEXT, $IPOS - 1, 1)
  3801. If ($IPOS + StringLen($SFIND)) - 1 = StringLen($STEXT) Then
  3802. If ($C_COMPARE1 = " " Or $C_COMPARE1 = @LF Or $C_COMPARE1 = @CR Or $C_COMPARE1 = @CRLF Or $C_COMPARE1 = @TAB) Then $FEXACT = True
  3803. Else
  3804. 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
  3805. EndIf
  3806. EndIf
  3807. If $FEXACT = False Then
  3808. __GUICTRLEDIT_FINDTEXT($HWND, $INPUTSEARCH, $CHKMATCHCASE, $CHKWHOLEONLY, $IPOS, $IOCCURANCE, $IREPLACEMENTS)
  3809. Else
  3810. _GUICTRLEDIT_SETSEL($HWND, $IPOS - 1, ($IPOS + StringLen($SFIND)) - 1)
  3811. _GUICTRLEDIT_SCROLL($HWND, $__EDITCONSTANT_SB_SCROLLCARET)
  3812. EndIf
  3813. ElseIf $IWHOLE And Not $IPOS Then
  3814. $IOCCURANCE = 0
  3815. MsgBox(48, "Find", "Reached End of document, Can not find the string '" & $SFIND & "'")
  3816. ElseIf Not $IWHOLE Then
  3817. If Not $IPOS Then
  3818. $IOCCURANCE = 1
  3819. _GUICTRLEDIT_SETSEL($HWND, -1, 0)
  3820. _GUICTRLEDIT_SCROLL($HWND, $__EDITCONSTANT_SB_SCROLLCARET)
  3821. $IPOS = StringInStr($STEXT, $SFIND, $ICASE, $IOCCURANCE)
  3822. If Not $IPOS Then
  3823. $IOCCURANCE = 0
  3824. MsgBox(48, "Find", "Reached End of document, Can not find the string '" & $SFIND & "'")
  3825. Else
  3826. _GUICTRLEDIT_SETSEL($HWND, $IPOS - 1, ($IPOS + StringLen($SFIND)) - 1)
  3827. _GUICTRLEDIT_SCROLL($HWND, $__EDITCONSTANT_SB_SCROLLCARET)
  3828. EndIf
  3829. Else
  3830. _GUICTRLEDIT_SETSEL($HWND, $IPOS - 1, ($IPOS + StringLen($SFIND)) - 1)
  3831. _GUICTRLEDIT_SCROLL($HWND, $__EDITCONSTANT_SB_SCROLLCARET)
  3832. EndIf
  3833. EndIf
  3834. EndIf
  3835. EndFunc
  3836. Func _GUICTRLEDIT_GETFIRSTVISIBLELINE($HWND)
  3837. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3838. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3839. Return _SENDMESSAGE($HWND, $EM_GETFIRSTVISIBLELINE)
  3840. EndFunc
  3841. Func _GUICTRLEDIT_GETHANDLE($HWND)
  3842. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3843. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3844. Return _SENDMESSAGE($HWND, $EM_GETHANDLE)
  3845. EndFunc
  3846. Func _GUICTRLEDIT_GETIMESTATUS($HWND)
  3847. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3848. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3849. Return _SENDMESSAGE($HWND, $EM_GETIMESTATUS, $EMSIS_COMPOSITIONSTRING)
  3850. EndFunc
  3851. Func _GUICTRLEDIT_GETLIMITTEXT($HWND)
  3852. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3853. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3854. Return _SENDMESSAGE($HWND, $EM_GETLIMITTEXT)
  3855. EndFunc
  3856. Func _GUICTRLEDIT_GETLINE($HWND, $ILINE)
  3857. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3858. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3859. Local $ILENGTH = _GUICTRLEDIT_LINELENGTH($HWND, $ILINE)
  3860. If $ILENGTH = 0 Then Return ""
  3861. Local $TBUFFER = DllStructCreate("short Len;wchar Text[" & $ILENGTH & "]")
  3862. Local $PBUFFER = DllStructGetPtr($TBUFFER)
  3863. DllStructSetData($TBUFFER, "Len", $ILENGTH + 1)
  3864. Local $IRET = _SENDMESSAGE($HWND, $EM_GETLINE, $ILINE, $PBUFFER, 0, "wparam", "ptr")
  3865. If $IRET = 0 Then Return SetError($EC_ERR, $EC_ERR, "")
  3866. Local $TTEXT = DllStructCreate("wchar Text[" & $ILENGTH & "]", $PBUFFER)
  3867. Return DllStructGetData($TTEXT, "Text")
  3868. EndFunc
  3869. Func _GUICTRLEDIT_GETLINECOUNT($HWND)
  3870. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3871. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3872. Return _SENDMESSAGE($HWND, $EM_GETLINECOUNT)
  3873. EndFunc
  3874. Func _GUICTRLEDIT_GETMARGINS($HWND)
  3875. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3876. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3877. Local $AMARGINS[2]
  3878. Local $IMARGINS = _SENDMESSAGE($HWND, $EM_GETMARGINS)
  3879. $AMARGINS[0] = _WINAPI_LOWORD($IMARGINS)
  3880. $AMARGINS[1] = _WINAPI_HIWORD($IMARGINS)
  3881. Return $AMARGINS
  3882. EndFunc
  3883. Func _GUICTRLEDIT_GETMODIFY($HWND)
  3884. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3885. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3886. Return _SENDMESSAGE($HWND, $EM_GETMODIFY) <> 0
  3887. EndFunc
  3888. Func _GUICTRLEDIT_GETPASSWORDCHAR($HWND)
  3889. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3890. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3891. Return _SENDMESSAGE($HWND, $EM_GETPASSWORDCHAR)
  3892. EndFunc
  3893. Func _GUICTRLEDIT_GETRECT($HWND)
  3894. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3895. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3896. Local $ARECT[4]
  3897. Local $TRECT = _GUICTRLEDIT_GETRECTEX($HWND)
  3898. $ARECT[0] = DllStructGetData($TRECT, "Left")
  3899. $ARECT[1] = DllStructGetData($TRECT, "Top")
  3900. $ARECT[2] = DllStructGetData($TRECT, "Right")
  3901. $ARECT[3] = DllStructGetData($TRECT, "Bottom")
  3902. Return $ARECT
  3903. EndFunc
  3904. Func _GUICTRLEDIT_GETRECTEX($HWND)
  3905. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3906. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3907. Local $TRECT = DllStructCreate($TAGRECT)
  3908. _SENDMESSAGE($HWND, $EM_GETRECT, 0, DllStructGetPtr($TRECT), 0, "wparam", "ptr")
  3909. Return $TRECT
  3910. EndFunc
  3911. Func _GUICTRLEDIT_GETSEL($HWND)
  3912. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3913. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3914. Local $ASEL[2]
  3915. Local $WPARAM = DllStructCreate("uint Start")
  3916. Local $LPARAM = DllStructCreate("uint End")
  3917. _SENDMESSAGE($HWND, $EM_GETSEL, DllStructGetPtr($WPARAM), DllStructGetPtr($LPARAM), 0, "ptr", "ptr")
  3918. $ASEL[0] = DllStructGetData($WPARAM, "Start")
  3919. $ASEL[1] = DllStructGetData($LPARAM, "End")
  3920. Return $ASEL
  3921. EndFunc
  3922. Func _GUICTRLEDIT_GETTEXT($HWND)
  3923. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3924. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3925. Local $ITEXTLEN = _GUICTRLEDIT_GETTEXTLEN($HWND) + 1
  3926. Local $TTEXT = DllStructCreate("wchar Text[" & $ITEXTLEN & "]")
  3927. _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_GETTEXT, $ITEXTLEN, DllStructGetPtr($TTEXT), 0, "wparam", "ptr")
  3928. Return DllStructGetData($TTEXT, "Text")
  3929. EndFunc
  3930. Func _GUICTRLEDIT_GETTEXTLEN($HWND)
  3931. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3932. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3933. Return _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_GETTEXTLENGTH)
  3934. EndFunc
  3935. Func _GUICTRLEDIT_GETTHUMB($HWND)
  3936. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3937. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3938. Return _SENDMESSAGE($HWND, $EM_GETTHUMB)
  3939. EndFunc
  3940. Func _GUICTRLEDIT_GETWORDBREAKPROC($HWND)
  3941. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3942. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3943. Return _SENDMESSAGE($HWND, $EM_GETWORDBREAKPROC)
  3944. EndFunc
  3945. Func _GUICTRLEDIT_HIDEBALLOONTIP($HWND)
  3946. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3947. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3948. Return _SENDMESSAGE($HWND, $EM_HIDEBALLOONTIP)
  3949. EndFunc
  3950. Func _GUICTRLEDIT_INSERTTEXT($HWND, $STEXT, $IINDEX = -1)
  3951. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3952. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3953. If $IINDEX = -1 Then
  3954. _GUICTRLEDIT_APPENDTEXT($HWND, $STEXT)
  3955. Else
  3956. _GUICTRLEDIT_SETSEL($HWND, $IINDEX, $IINDEX)
  3957. _SENDMESSAGE($HWND, $EM_REPLACESEL, True, $STEXT, 0, "wparam", "wstr")
  3958. EndIf
  3959. EndFunc
  3960. Func _GUICTRLEDIT_LINEFROMCHAR($HWND, $IINDEX = -1)
  3961. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3962. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3963. Return _SENDMESSAGE($HWND, $EM_LINEFROMCHAR, $IINDEX)
  3964. EndFunc
  3965. Func _GUICTRLEDIT_LINEINDEX($HWND, $IINDEX = -1)
  3966. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3967. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3968. Return _SENDMESSAGE($HWND, $EM_LINEINDEX, $IINDEX)
  3969. EndFunc
  3970. Func _GUICTRLEDIT_LINELENGTH($HWND, $IINDEX = -1)
  3971. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3972. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3973. Local $CHARINDEX = _GUICTRLEDIT_LINEINDEX($HWND, $IINDEX)
  3974. Return _SENDMESSAGE($HWND, $EM_LINELENGTH, $CHARINDEX)
  3975. EndFunc
  3976. Func _GUICTRLEDIT_LINESCROLL($HWND, $IHORIZ, $IVERT)
  3977. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3978. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3979. Return _SENDMESSAGE($HWND, $EM_LINESCROLL, $IHORIZ, $IVERT) <> 0
  3980. EndFunc
  3981. Func _GUICTRLEDIT_POSFROMCHAR($HWND, $IINDEX)
  3982. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3983. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3984. Local $ACOORD[2]
  3985. Local $IRET = _SENDMESSAGE($HWND, $EM_POSFROMCHAR, $IINDEX)
  3986. $ACOORD[0] = _WINAPI_LOWORD($IRET)
  3987. $ACOORD[1] = _WINAPI_HIWORD($IRET)
  3988. Return $ACOORD
  3989. EndFunc
  3990. Func _GUICTRLEDIT_REPLACESEL($HWND, $STEXT, $FUNDO = True)
  3991. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3992. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3993. _SENDMESSAGE($HWND, $EM_REPLACESEL, $FUNDO, $STEXT, 0, "wparam", "wstr")
  3994. EndFunc
  3995. Func _GUICTRLEDIT_SCROLL($HWND, $IDIRECTION)
  3996. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  3997. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  3998. 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
  3999. If $IDIRECTION == $__EDITCONSTANT_SB_SCROLLCARET Then
  4000. Return _SENDMESSAGE($HWND, $EM_SCROLLCARET)
  4001. Else
  4002. Return _SENDMESSAGE($HWND, $EM_SCROLL, $IDIRECTION)
  4003. EndIf
  4004. EndFunc
  4005. Func _GUICTRLEDIT_SETHANDLE($HWND, $HMEMORY)
  4006. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4007. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4008. Return _SENDMESSAGE($HWND, $EM_SETHANDLE, $HMEMORY, 0, 0, "hwnd")
  4009. EndFunc
  4010. Func _GUICTRLEDIT_SETIMESTATUS($HWND, $ICOMPOSITION)
  4011. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4012. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4013. Return _SENDMESSAGE($HWND, $EM_SETIMESTATUS, $EMSIS_COMPOSITIONSTRING, $ICOMPOSITION)
  4014. EndFunc
  4015. Func _GUICTRLEDIT_SETLIMITTEXT($HWND, $ILIMIT)
  4016. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4017. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4018. _SENDMESSAGE($HWND, $EM_SETLIMITTEXT, $ILIMIT)
  4019. EndFunc
  4020. Func _GUICTRLEDIT_SETMARGINS($HWND, $IMARGIN = 1, $ILEFT = 65535, $IRIGHT = 65535)
  4021. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4022. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4023. _SENDMESSAGE($HWND, $EM_SETMARGINS, $IMARGIN, _WINAPI_MAKELONG($ILEFT, $IRIGHT))
  4024. EndFunc
  4025. Func _GUICTRLEDIT_SETMODIFY($HWND, $FMODIFIED)
  4026. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4027. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4028. _SENDMESSAGE($HWND, $EM_SETMODIFY, $FMODIFIED)
  4029. EndFunc
  4030. Func _GUICTRLEDIT_SETPASSWORDCHAR($HWND, $CDISPLAYCHAR = "0")
  4031. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4032. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4033. $CDISPLAYCHAR = StringLeft($CDISPLAYCHAR, 1)
  4034. If Asc($CDISPLAYCHAR) = 48 Then
  4035. _SENDMESSAGE($HWND, $EM_SETPASSWORDCHAR)
  4036. Else
  4037. _SENDMESSAGE($HWND, $EM_SETPASSWORDCHAR, Asc($CDISPLAYCHAR))
  4038. EndIf
  4039. EndFunc
  4040. Func _GUICTRLEDIT_SETREADONLY($HWND, $FREADONLY)
  4041. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4042. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4043. Return _SENDMESSAGE($HWND, $EM_SETREADONLY, $FREADONLY) <> 0
  4044. EndFunc
  4045. Func _GUICTRLEDIT_SETRECT($HWND, $ARECT)
  4046. Local $TRECT = DllStructCreate($TAGRECT)
  4047. DllStructSetData($TRECT, "Left", $ARECT[0])
  4048. DllStructSetData($TRECT, "Top", $ARECT[1])
  4049. DllStructSetData($TRECT, "Right", $ARECT[2])
  4050. DllStructSetData($TRECT, "Bottom", $ARECT[3])
  4051. _GUICTRLEDIT_SETRECTEX($HWND, $TRECT)
  4052. EndFunc
  4053. Func _GUICTRLEDIT_SETRECTEX($HWND, $TRECT)
  4054. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4055. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4056. _SENDMESSAGE($HWND, $EM_SETRECT, 0, DllStructGetPtr($TRECT), 0, "wparam", "ptr")
  4057. EndFunc
  4058. Func _GUICTRLEDIT_SETRECTNP($HWND, $ARECT)
  4059. Local $TRECT = DllStructCreate($TAGRECT)
  4060. DllStructSetData($TRECT, "Left", $ARECT[0])
  4061. DllStructSetData($TRECT, "Top", $ARECT[1])
  4062. DllStructSetData($TRECT, "Right", $ARECT[2])
  4063. DllStructSetData($TRECT, "Bottom", $ARECT[3])
  4064. _GUICTRLEDIT_SETRECTNPEX($HWND, $TRECT)
  4065. EndFunc
  4066. Func _GUICTRLEDIT_SETRECTNPEX($HWND, $TRECT)
  4067. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4068. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4069. _SENDMESSAGE($HWND, $EM_SETRECTNP, 0, DllStructGetPtr($TRECT), 0, "wparam", "ptr")
  4070. EndFunc
  4071. Func _GUICTRLEDIT_SETSEL($HWND, $ISTART, $IEND)
  4072. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4073. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4074. _SENDMESSAGE($HWND, $EM_SETSEL, $ISTART, $IEND)
  4075. EndFunc
  4076. Func _GUICTRLEDIT_SETTABSTOPS($HWND, $ATABSTOPS)
  4077. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4078. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4079. If Not IsArray($ATABSTOPS) Then Return SetError(-1, -1, False)
  4080. Local $STABSTOPS = ""
  4081. Local $INUMTABSTOPS = UBound($ATABSTOPS)
  4082. For $X = 0 To $INUMTABSTOPS - 1
  4083. $STABSTOPS &= "int;"
  4084. Next
  4085. $STABSTOPS = StringTrimRight($STABSTOPS, 1)
  4086. Local $TTABSTOPS = DllStructCreate($STABSTOPS)
  4087. For $X = 0 To $INUMTABSTOPS - 1
  4088. DllStructSetData($TTABSTOPS, $X + 1, $ATABSTOPS[$X])
  4089. Next
  4090. Local $IRET = _SENDMESSAGE($HWND, $EM_SETTABSTOPS, $INUMTABSTOPS, DllStructGetPtr($TTABSTOPS), 0, "wparam", "ptr") <> 0
  4091. _WINAPI_INVALIDATERECT($HWND)
  4092. Return $IRET
  4093. EndFunc
  4094. Func _GUICTRLEDIT_SETTEXT($HWND, $STEXT)
  4095. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4096. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4097. _SENDMESSAGE($HWND, $__EDITCONSTANT_WM_SETTEXT, 0, $STEXT, 0, "wparam", "wstr")
  4098. EndFunc
  4099. Func _GUICTRLEDIT_SETWORDBREAKPROC($HWND, $IADDRESSFUNC)
  4100. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4101. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4102. _SENDMESSAGE($HWND, $EM_SETWORDBREAKPROC, 0, $IADDRESSFUNC)
  4103. EndFunc
  4104. Func _GUICTRLEDIT_SHOWBALLOONTIP($HWND, $STITLE, $STEXT, $IICON)
  4105. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4106. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4107. Local $TTITLE = _WINAPI_MULTIBYTETOWIDECHAR($STITLE)
  4108. Local $TTEXT = _WINAPI_MULTIBYTETOWIDECHAR($STEXT)
  4109. Local $TTT = DllStructCreate($TAGEDITBALLOONTIP)
  4110. DllStructSetData($TTT, "Size", DllStructGetSize($TTT))
  4111. DllStructSetData($TTT, "Title", DllStructGetPtr($TTITLE))
  4112. DllStructSetData($TTT, "Text", DllStructGetPtr($TTEXT))
  4113. DllStructSetData($TTT, "Icon", $IICON)
  4114. Return _SENDMESSAGE($HWND, $EM_SHOWBALLOONTIP, 0, DllStructGetPtr($TTT), 0, "wparam", "ptr") <> 0
  4115. EndFunc
  4116. Func _GUICTRLEDIT_UNDO($HWND)
  4117. If $DEBUG_ED Then __UDF_VALIDATECLASSNAME($HWND, $__EDITCONSTANT_CLASSNAME)
  4118. If Not IsHWnd($HWND) Then $HWND = GUICtrlGetHandle($HWND)
  4119. Return _SENDMESSAGE($HWND, $EM_UNDO) <> 0
  4120. EndFunc
  4121. Global Const $SIF_POS = 4
  4122. Global Const $SIF_PAGE = 2
  4123. Global Const $SIF_RANGE = 1
  4124. Global Const $SIF_TRACKPOS = 16
  4125. Global Const $SIF_ALL = BitOR($SIF_RANGE, $SIF_PAGE, $SIF_POS, $SIF_TRACKPOS)
  4126. Global Const $SB_HORZ = 0
  4127. Global Const $SB_VERT = 1
  4128. Global Const $SB_CTL = 2
  4129. Global Const $SB_BOTH = 3
  4130. Global Const $SB_LINELEFT = 0
  4131. Global Const $SB_LINERIGHT = 1
  4132. Global Const $SB_PAGELEFT = 2
  4133. Global Const $SB_PAGERIGHT = 3
  4134. Global Const $SB_THUMBPOSITION = 4
  4135. Global Const $SB_THUMBTRACK = 5
  4136. Global Const $SB_LINEDOWN = 1
  4137. Global Const $SB_LINEUP = 0
  4138. Global Const $SB_PAGEDOWN = 3
  4139. Global Const $SB_PAGEUP = 2
  4140. Global Const $SB_SCROLLCARET = 4
  4141. Global Const $SB_TOP = 6
  4142. Global Const $SB_BOTTOM = 7
  4143. Global Const $ESB_DISABLE_BOTH = 3
  4144. Global Const $ESB_DISABLE_DOWN = 2
  4145. Global Const $ESB_DISABLE_LEFT = 1
  4146. Global Const $ESB_DISABLE_LTUP = $ESB_DISABLE_LEFT
  4147. Global Const $ESB_DISABLE_RIGHT = 2
  4148. Global Const $ESB_DISABLE_RTDN = $ESB_DISABLE_RIGHT
  4149. Global Const $ESB_DISABLE_UP = 1
  4150. Global Const $ESB_ENABLE_BOTH = 0
  4151. Global Const $OBJID_HSCROLL = -6
  4152. Global Const $OBJID_VSCROLL = -5
  4153. Global Const $OBJID_CLIENT = -4
  4154. Global Const $WS_TILED = 0
  4155. Global Const $WS_OVERLAPPED = 0
  4156. Global Const $WS_MAXIMIZEBOX = 65536
  4157. Global Const $WS_MINIMIZEBOX = 131072
  4158. Global Const $WS_TABSTOP = 65536
  4159. Global Const $WS_GROUP = 131072
  4160. Global Const $WS_SIZEBOX = 262144
  4161. Global Const $WS_THICKFRAME = 262144
  4162. Global Const $WS_SYSMENU = 524288
  4163. Global Const $WS_HSCROLL = 1048576
  4164. Global Const $WS_VSCROLL = 2097152
  4165. Global Const $WS_DLGFRAME = 4194304
  4166. Global Const $WS_BORDER = 8388608
  4167. Global Const $WS_CAPTION = 12582912
  4168. Global Const $WS_OVERLAPPEDWINDOW = 13565952
  4169. Global Const $WS_TILEDWINDOW = 13565952
  4170. Global Const $WS_MAXIMIZE = 16777216
  4171. Global Const $WS_CLIPCHILDREN = 33554432
  4172. Global Const $WS_CLIPSIBLINGS = 67108864
  4173. Global Const $WS_DISABLED = 134217728
  4174. Global Const $WS_VISIBLE = 268435456
  4175. Global Const $WS_MINIMIZE = 536870912
  4176. Global Const $WS_CHILD = 1073741824
  4177. Global Const $WS_POPUP = -2147483648
  4178. Global Const $WS_POPUPWINDOW = -2138570752
  4179. Global Const $DS_MODALFRAME = 128
  4180. Global Const $DS_SETFOREGROUND = 512
  4181. Global Const $DS_CONTEXTHELP = 8192
  4182. Global Const $WS_EX_ACCEPTFILES = 16
  4183. Global Const $WS_EX_MDICHILD = 64
  4184. Global Const $WS_EX_APPWINDOW = 262144
  4185. Global Const $WS_EX_COMPOSITED = 33554432
  4186. Global Const $WS_EX_CLIENTEDGE = 512
  4187. Global Const $WS_EX_CONTEXTHELP = 1024
  4188. Global Const $WS_EX_DLGMODALFRAME = 1
  4189. Global Const $WS_EX_LEFTSCROLLBAR = 16384
  4190. Global Const $WS_EX_OVERLAPPEDWINDOW = 768
  4191. Global Const $WS_EX_RIGHT = 4096
  4192. Global Const $WS_EX_STATICEDGE = 131072
  4193. Global Const $WS_EX_TOOLWINDOW = 128
  4194. Global Const $WS_EX_TOPMOST = 8
  4195. Global Const $WS_EX_TRANSPARENT = 32
  4196. Global Const $WS_EX_WINDOWEDGE = 256
  4197. Global Const $WS_EX_LAYERED = 524288
  4198. Global Const $WS_EX_CONTROLPARENT = 65536
  4199. Global Const $WS_EX_LAYOUTRTL = 4194304
  4200. Global Const $WS_EX_RTLREADING = 8192
  4201. Global Const $WM_GETTEXTLENGTH = 14
  4202. Global Const $WM_GETTEXT = 13
  4203. Global Const $WM_SIZE = 5
  4204. Global Const $WM_SIZING = 532
  4205. Global Const $WM_USER = 1024
  4206. Global Const $WM_CREATE = 1
  4207. Global Const $WM_DESTROY = 2
  4208. Global Const $WM_MOVE = 3
  4209. Global Const $WM_ACTIVATE = 6
  4210. Global Const $WM_SETFOCUS = 7
  4211. Global Const $WM_KILLFOCUS = 8
  4212. Global Const $WM_ENABLE = 10
  4213. Global Const $WM_SETREDRAW = 11
  4214. Global Const $WM_SETTEXT = 12
  4215. Global Const $WM_PAINT = 15
  4216. Global Const $WM_CLOSE = 16
  4217. Global Const $WM_QUIT = 18
  4218. Global Const $WM_ERASEBKGND = 20
  4219. Global Const $WM_SYSCOLORCHANGE = 21
  4220. Global Const $WM_SHOWWINDOW = 24
  4221. Global Const $WM_WININICHANGE = 26
  4222. Global Const $WM_DEVMODECHANGE = 27
  4223. Global Const $WM_ACTIVATEAPP = 28
  4224. Global Const $WM_FONTCHANGE = 29
  4225. Global Const $WM_TIMECHANGE = 30
  4226. Global Const $WM_CANCELMODE = 31
  4227. Global Const $WM_SETCURSOR = 32
  4228. Global Const $WM_MOUSEACTIVATE = 33
  4229. Global Const $WM_CHILDACTIVATE = 34
  4230. Global Const $WM_QUEUESYNC = 35
  4231. Global Const $WM_GETMINMAXINFO = 36
  4232. Global Const $WM_PAINTICON = 38
  4233. Global Const $WM_ICONERASEBKGND = 39
  4234. Global Const $WM_NEXTDLGCTL = 40
  4235. Global Const $WM_SPOOLERSTATUS = 42
  4236. Global Const $WM_DRAWITEM = 43
  4237. Global Const $WM_MEASUREITEM = 44
  4238. Global Const $WM_DELETEITEM = 45
  4239. Global Const $WM_VKEYTOITEM = 46
  4240. Global Const $WM_CHARTOITEM = 47
  4241. Global Const $WM_SETFONT = 48
  4242. Global Const $WM_GETFONT = 49
  4243. Global Const $WM_SETHOTKEY = 50
  4244. Global Const $WM_GETHOTKEY = 51
  4245. Global Const $WM_QUERYDRAGICON = 55
  4246. Global Const $WM_COMPAREITEM = 57
  4247. Global Const $WM_GETOBJECT = 61
  4248. Global Const $WM_COMPACTING = 65
  4249. Global Const $WM_COMMNOTIFY = 68
  4250. Global Const $WM_WINDOWPOSCHANGING = 70
  4251. Global Const $WM_WINDOWPOSCHANGED = 71
  4252. Global Const $WM_POWER = 72
  4253. Global Const $WM_NOTIFY = 78
  4254. Global Const $WM_COPYDATA = 74
  4255. Global Const $WM_CANCELJOURNAL = 75
  4256. Global Const $WM_INPUTLANGCHANGEREQUEST = 80
  4257. Global Const $WM_INPUTLANGCHANGE = 81
  4258. Global Const $WM_TCARD = 82
  4259. Global Const $WM_HELP = 83
  4260. Global Const $WM_USERCHANGED = 84
  4261. Global Const $WM_NOTIFYFORMAT = 85
  4262. Global Const $WM_CUT = 768
  4263. Global Const $WM_COPY = 769
  4264. Global Const $WM_PASTE = 770
  4265. Global Const $WM_CLEAR = 771
  4266. Global Const $WM_UNDO = 772
  4267. Global Const $WM_CONTEXTMENU = 123
  4268. Global Const $WM_STYLECHANGING = 124
  4269. Global Const $WM_STYLECHANGED = 125
  4270. Global Const $WM_DISPLAYCHANGE = 126
  4271. Global Const $WM_GETICON = 127
  4272. Global Const $WM_SETICON = 128
  4273. Global Const $WM_NCCREATE = 129
  4274. Global Const $WM_NCDESTROY = 130
  4275. Global Const $WM_NCCALCSIZE = 131
  4276. Global Const $WM_NCHITTEST = 132
  4277. Global Const $WM_NCPAINT = 133
  4278. Global Const $WM_NCACTIVATE = 134
  4279. Global Const $WM_GETDLGCODE = 135
  4280. Global Const $WM_SYNCPAINT = 136
  4281. Global Const $WM_NCMOUSEMOVE = 160
  4282. Global Const $WM_NCLBUTTONDOWN = 161
  4283. Global Const $WM_NCLBUTTONUP = 162
  4284. Global Const $WM_NCLBUTTONDBLCLK = 163
  4285. Global Const $WM_NCRBUTTONDOWN = 164
  4286. Global Const $WM_NCRBUTTONUP = 165
  4287. Global Const $WM_NCRBUTTONDBLCLK = 166
  4288. Global Const $WM_NCMBUTTONDOWN = 167
  4289. Global Const $WM_NCMBUTTONUP = 168
  4290. Global Const $WM_NCMBUTTONDBLCLK = 169
  4291. Global Const $WM_KEYDOWN = 256
  4292. Global Const $WM_KEYUP = 257
  4293. Global Const $WM_CHAR = 258
  4294. Global Const $WM_DEADCHAR = 259
  4295. Global Const $WM_SYSKEYDOWN = 260
  4296. Global Const $WM_SYSKEYUP = 261
  4297. Global Const $WM_SYSCHAR = 262
  4298. Global Const $WM_SYSDEADCHAR = 263
  4299. Global Const $WM_INITDIALOG = 272
  4300. Global Const $WM_COMMAND = 273
  4301. Global Const $WM_SYSCOMMAND = 274
  4302. Global Const $WM_TIMER = 275
  4303. Global Const $WM_HSCROLL = 276
  4304. Global Const $WM_VSCROLL = 277
  4305. Global Const $WM_INITMENU = 278
  4306. Global Const $WM_INITMENUPOPUP = 279
  4307. Global Const $WM_MENUSELECT = 287
  4308. Global Const $WM_MENUCHAR = 288
  4309. Global Const $WM_ENTERIDLE = 289
  4310. Global Const $WM_MENURBUTTONUP = 290
  4311. Global Const $WM_MENUDRAG = 291
  4312. Global Const $WM_MENUGETOBJECT = 292
  4313. Global Const $WM_UNINITMENUPOPUP = 293
  4314. Global Const $WM_MENUCOMMAND = 294
  4315. Global Const $WM_CHANGEUISTATE = 295
  4316. Global Const $WM_UPDATEUISTATE = 296
  4317. Global Const $WM_QUERYUISTATE = 297
  4318. Global Const $WM_CTLCOLORMSGBOX = 306
  4319. Global Const $WM_CTLCOLOREDIT = 307
  4320. Global Const $WM_CTLCOLORLISTBOX = 308
  4321. Global Const $WM_CTLCOLORBTN = 309
  4322. Global Const $WM_CTLCOLORDLG = 310
  4323. Global Const $WM_CTLCOLORSCROLLBAR = 311
  4324. Global Const $WM_CTLCOLORSTATIC = 312
  4325. Global Const $WM_CTLCOLOR = 25
  4326. Global Const $MN_GETHMENU = 481
  4327. Global Const $NM_FIRST = 0
  4328. Global Const $NM_OUTOFMEMORY = $NM_FIRST - 1
  4329. Global Const $NM_CLICK = $NM_FIRST - 2
  4330. Global Const $NM_DBLCLK = $NM_FIRST - 3
  4331. Global Const $NM_RETURN = $NM_FIRST - 4
  4332. Global Const $NM_RCLICK = $NM_FIRST - 5
  4333. Global Const $NM_RDBLCLK = $NM_FIRST - 6
  4334. Global Const $NM_SETFOCUS = $NM_FIRST - 7
  4335. Global Const $NM_KILLFOCUS = $NM_FIRST - 8
  4336. Global Const $NM_CUSTOMDRAW = $NM_FIRST - 12
  4337. Global Const $NM_HOVER = $NM_FIRST - 13
  4338. Global Const $NM_NCHITTEST = $NM_FIRST - 14
  4339. Global Const $NM_KEYDOWN = $NM_FIRST - 15
  4340. Global Const $NM_RELEASEDCAPTURE = $NM_FIRST - 16
  4341. Global Const $NM_SETCURSOR = $NM_FIRST - 17
  4342. Global Const $NM_CHAR = $NM_FIRST - 18
  4343. Global Const $NM_TOOLTIPSCREATED = $NM_FIRST - 19
  4344. Global Const $NM_LDOWN = $NM_FIRST - 20
  4345. Global Const $NM_RDOWN = $NM_FIRST - 21
  4346. Global Const $NM_THEMECHANGED = $NM_FIRST - 22
  4347. Global Const $WM_MOUSEMOVE = 512
  4348. Global Const $WM_LBUTTONDOWN = 513
  4349. Global Const $WM_LBUTTONUP = 514
  4350. Global Const $WM_LBUTTONDBLCLK = 515
  4351. Global Const $WM_RBUTTONDOWN = 516
  4352. Global Const $WM_RBUTTONUP = 517
  4353. Global Const $WM_RBUTTONDBLCK = 518
  4354. Global Const $WM_MBUTTONDOWN = 519
  4355. Global Const $WM_MBUTTONUP = 520
  4356. Global Const $WM_MBUTTONDBLCK = 521
  4357. Global Const $WM_MOUSEWHEEL = 522
  4358. Global Const $WM_XBUTTONDOWN = 523
  4359. Global Const $WM_XBUTTONUP = 524
  4360. Global Const $WM_XBUTTONDBLCLK = 525
  4361. Global Const $WM_MOUSEHWHEEL = 526
  4362. Global Const $PS_SOLID = 0
  4363. Global Const $PS_DASH = 1
  4364. Global Const $PS_DOT = 2
  4365. Global Const $PS_DASHDOT = 3
  4366. Global Const $PS_DASHDOTDOT = 4
  4367. Global Const $PS_NULL = 5
  4368. Global Const $PS_INSIDEFRAME = 6
  4369. Global Const $LWA_ALPHA = 2
  4370. Global Const $LWA_COLORKEY = 1
  4371. Global Const $RGN_AND = 1
  4372. Global Const $RGN_OR = 2
  4373. Global Const $RGN_XOR = 3
  4374. Global Const $RGN_DIFF = 4
  4375. Global Const $RGN_COPY = 5
  4376. Global Const $ERRORREGION = 0
  4377. Global Const $NULLREGION = 1
  4378. Global Const $SIMPLEREGION = 2
  4379. Global Const $COMPLEXREGION = 3
  4380. Global Const $TRANSPARENT = 1
  4381. Global Const $OPAQUE = 2
  4382. Global Const $CCM_FIRST = 8192
  4383. Global Const $CCM_GETUNICODEFORMAT = ($CCM_FIRST + 6)
  4384. Global Const $CCM_SETUNICODEFORMAT = ($CCM_FIRST + 5)
  4385. Global Const $CCM_SETBKCOLOR = $CCM_FIRST + 1
  4386. Global Const $CCM_SETCOLORSCHEME = $CCM_FIRST + 2
  4387. Global Const $CCM_GETCOLORSCHEME = $CCM_FIRST + 3
  4388. Global Const $CCM_GETDROPTARGET = $CCM_FIRST + 4
  4389. Global Const $CCM_SETWINDOWTHEME = $CCM_FIRST + 11
  4390. Global Const $GA_PARENT = 1
  4391. Global Const $GA_ROOT = 2
  4392. Global Const $GA_ROOTOWNER = 3
  4393. Global Const $SM_CXSCREEN = 0
  4394. Global Const $SM_CYSCREEN = 1
  4395. Global Const $SM_CXVSCROLL = 2
  4396. Global Const $SM_CYHSCROLL = 3
  4397. Global Const $SM_CYCAPTION = 4
  4398. Global Const $SM_CXBORDER = 5
  4399. Global Const $SM_CYBORDER = 6
  4400. Global Const $SM_CXDLGFRAME = 7
  4401. Global Const $SM_CYDLGFRAME = 8
  4402. Global Const $SM_CYVTHUMB = 9
  4403. Global Const $SM_CXHTHUMB = 10
  4404. Global Const $SM_CXICON = 11
  4405. Global Const $SM_CYICON = 12
  4406. Global Const $SM_CXCURSOR = 13
  4407. Global Const $SM_CYCURSOR = 14
  4408. Global Const $SM_CYMENU = 15
  4409. Global Const $SM_CXFULLSCREEN = 16
  4410. Global Const $SM_CYFULLSCREEN = 17
  4411. Global Const $SM_CYKANJIWINDOW = 18
  4412. Global Const $SM_MOUSEPRESENT = 19
  4413. Global Const $SM_CYVSCROLL = 20
  4414. Global Const $SM_CXHSCROLL = 21
  4415. Global Const $SM_DEBUG = 22
  4416. Global Const $SM_SWAPBUTTON = 23
  4417. Global Const $SM_RESERVED1 = 24
  4418. Global Const $SM_RESERVED2 = 25
  4419. Global Const $SM_RESERVED3 = 26
  4420. Global Const $SM_RESERVED4 = 27
  4421. Global Const $SM_CXMIN = 28
  4422. Global Const $SM_CYMIN = 29
  4423. Global Const $SM_CXSIZE = 30
  4424. Global Const $SM_CYSIZE = 31
  4425. Global Const $SM_CXFRAME = 32
  4426. Global Const $SM_CYFRAME = 33
  4427. Global Const $SM_CXMINTRACK = 34
  4428. Global Const $SM_CYMINTRACK = 35
  4429. Global Const $SM_CXDOUBLECLK = 36
  4430. Global Const $SM_CYDOUBLECLK = 37
  4431. Global Const $SM_CXICONSPACING = 38
  4432. Global Const $SM_CYICONSPACING = 39
  4433. Global Const $SM_MENUDROPALIGNMENT = 40
  4434. Global Const $SM_PENWINDOWS = 41
  4435. Global Const $SM_DBCSENABLED = 42
  4436. Global Const $SM_CMOUSEBUTTONS = 43
  4437. Global Const $SM_SECURE = 44
  4438. Global Const $SM_CXEDGE = 45
  4439. Global Const $SM_CYEDGE = 46
  4440. Global Const $SM_CXMINSPACING = 47
  4441. Global Const $SM_CYMINSPACING = 48
  4442. Global Const $SM_CXSMICON = 49
  4443. Global Const $SM_CYSMICON = 50
  4444. Global Const $SM_CYSMCAPTION = 51
  4445. Global Const $SM_CXSMSIZE = 52
  4446. Global Const $SM_CYSMSIZE = 53
  4447. Global Const $SM_CXMENUSIZE = 54
  4448. Global Const $SM_CYMENUSIZE = 55
  4449. Global Const $SM_ARRANGE = 56
  4450. Global Const $SM_CXMINIMIZED = 57
  4451. Global Const $SM_CYMINIMIZED = 58
  4452. Global Const $SM_CXMAXTRACK = 59
  4453. Global Const $SM_CYMAXTRACK = 60
  4454. Global Const $SM_CXMAXIMIZED = 61
  4455. Global Const $SM_CYMAXIMIZED = 62
  4456. Global Const $SM_NETWORK = 63
  4457. Global Const $SM_CLEANBOOT = 67
  4458. Global Const $SM_CXDRAG = 68
  4459. Global Const $SM_CYDRAG = 69
  4460. Global Const $SM_SHOWSOUNDS = 70
  4461. Global Const $SM_CXMENUCHECK = 71
  4462. Global Const $SM_CYMENUCHECK = 72
  4463. Global Const $SM_SLOWMACHINE = 73
  4464. Global Const $SM_MIDEASTENABLED = 74
  4465. Global Const $SM_MOUSEWHEELPRESENT = 75
  4466. Global Const $SM_XVIRTUALSCREEN = 76
  4467. Global Const $SM_YVIRTUALSCREEN = 77
  4468. Global Const $SM_CXVIRTUALSCREEN = 78
  4469. Global Const $SM_CYVIRTUALSCREEN = 79
  4470. Global Const $SM_CMONITORS = 80
  4471. Global Const $SM_SAMEDISPLAYFORMAT = 81
  4472. Global Const $SM_IMMENABLED = 82
  4473. Global Const $SM_CXFOCUSBORDER = 83
  4474. Global Const $SM_CYFOCUSBORDER = 84
  4475. Global Const $SM_TABLETPC = 86
  4476. Global Const $SM_MEDIACENTER = 87
  4477. Global Const $SM_STARTER = 88
  4478. Global Const $SM_SERVERR2 = 89
  4479. Global Const $SM_CMETRICS = 90
  4480. Global Const $SM_REMOTESESSION = 4096
  4481. Global Const $SM_SHUTTINGDOWN = 8192
  4482. Global Const $SM_REMOTECONTROL = 8193
  4483. Global Const $SM_CARETBLINKINGENABLED = 8194
  4484. Global Const $BLACKNESS = 66
  4485. Global Const $CAPTUREBLT = 1073741824
  4486. Global Const $DSTINVERT = 5570569
  4487. Global Const $MERGECOPY = 12583114
  4488. Global Const $MERGEPAINT = 12255782
  4489. Global Const $NOMIRRORBITMAP = -2147483648
  4490. Global Const $NOTSRCCOPY = 3342344
  4491. Global Const $NOTSRCERASE = 1114278
  4492. Global Const $PATCOPY = 15728673
  4493. Global Const $PATINVERT = 5898313
  4494. Global Const $PATPAINT = 16452105
  4495. Global Const $SRCAND = 8913094
  4496. Global Const $SRCCOPY = 13369376
  4497. Global Const $SRCERASE = 4457256
  4498. Global Const $SRCINVERT = 6684742
  4499. Global Const $SRCPAINT = 15597702
  4500. Global Const $WHITENESS = 16711778
  4501. Global Const $DT_BOTTOM = 8
  4502. Global Const $DT_CALCRECT = 1024
  4503. Global Const $DT_CENTER = 1
  4504. Global Const $DT_EDITCONTROL = 8192
  4505. Global Const $DT_END_ELLIPSIS = 32768
  4506. Global Const $DT_EXPANDTABS = 64
  4507. Global Const $DT_EXTERNALLEADING = 512
  4508. Global Const $DT_HIDEPREFIX = 1048576
  4509. Global Const $DT_INTERNAL = 4096
  4510. Global Const $DT_LEFT = 0
  4511. Global Const $DT_MODIFYSTRING = 65536
  4512. Global Const $DT_NOCLIP = 256
  4513. Global Const $DT_NOFULLWIDTHCHARBREAK = 524288
  4514. Global Const $DT_NOPREFIX = 2048
  4515. Global Const $DT_PATH_ELLIPSIS = 16384
  4516. Global Const $DT_PREFIXONLY = 2097152
  4517. Global Const $DT_RIGHT = 2
  4518. Global Const $DT_RTLREADING = 131072
  4519. Global Const $DT_SINGLELINE = 32
  4520. Global Const $DT_TABSTOP = 128
  4521. Global Const $DT_TOP = 0
  4522. Global Const $DT_VCENTER = 4
  4523. Global Const $DT_WORDBREAK = 16
  4524. Global Const $DT_WORD_ELLIPSIS = 262144
  4525. Global Const $RDW_ERASE = 4
  4526. Global Const $RDW_FRAME = 1024
  4527. Global Const $RDW_INTERNALPAINT = 2
  4528. Global Const $RDW_INVALIDATE = 1
  4529. Global Const $RDW_NOERASE = 32
  4530. Global Const $RDW_NOFRAME = 2048
  4531. Global Const $RDW_NOINTERNALPAINT = 16
  4532. Global Const $RDW_VALIDATE = 8
  4533. Global Const $RDW_ERASENOW = 512
  4534. Global Const $RDW_UPDATENOW = 256
  4535. Global Const $RDW_ALLCHILDREN = 128
  4536. Global Const $RDW_NOCHILDREN = 64
  4537. Global Const $WM_RENDERFORMAT = 773
  4538. Global Const $WM_RENDERALLFORMATS = 774
  4539. Global Const $WM_DESTROYCLIPBOARD = 775
  4540. Global Const $WM_DRAWCLIPBOARD = 776
  4541. Global Const $WM_PAINTCLIPBOARD = 777
  4542. Global Const $WM_VSCROLLCLIPBOARD = 778
  4543. Global Const $WM_SIZECLIPBOARD = 779
  4544. Global Const $WM_ASKCBFORMATNAME = 780
  4545. Global Const $WM_CHANGECBCHAIN = 781
  4546. Global Const $WM_HSCROLLCLIPBOARD = 782
  4547. Global Const $HTERROR = -2
  4548. Global Const $HTTRANSPARENT = -1
  4549. Global Const $HTNOWHERE = 0
  4550. Global Const $HTCLIENT = 1
  4551. Global Const $HTCAPTION = 2
  4552. Global Const $HTSYSMENU = 3
  4553. Global Const $HTGROWBOX = 4
  4554. Global Const $HTSIZE = $HTGROWBOX
  4555. Global Const $HTMENU = 5
  4556. Global Const $HTHSCROLL = 6
  4557. Global Const $HTVSCROLL = 7
  4558. Global Const $HTMINBUTTON = 8
  4559. Global Const $HTMAXBUTTON = 9
  4560. Global Const $HTLEFT = 10
  4561. Global Const $HTRIGHT = 11
  4562. Global Const $HTTOP = 12
  4563. Global Const $HTTOPLEFT = 13
  4564. Global Const $HTTOPRIGHT = 14
  4565. Global Const $HTBOTTOM = 15
  4566. Global Const $HTBOTTOMLEFT = 16
  4567. Global Const $HTBOTTOMRIGHT = 17
  4568. Global Const $HTBORDER = 18
  4569. Global Const $HTREDUCE = $HTMINBUTTON
  4570. Global Const $HTZOOM = $HTMAXBUTTON
  4571. Global Const $HTSIZEFIRST = $HTLEFT
  4572. Global Const $HTSIZELAST = $HTBOTTOMRIGHT
  4573. Global Const $HTOBJECT = 19
  4574. Global Const $HTCLOSE = 20
  4575. Global Const $HTHELP = 21
  4576. Global Const $COLOR_SCROLLBAR = 0
  4577. Global Const $COLOR_BACKGROUND = 1
  4578. Global Const $COLOR_ACTIVECAPTION = 2
  4579. Global Const $COLOR_INACTIVECAPTION = 3
  4580. Global Const $COLOR_MENU = 4
  4581. Global Const $COLOR_WINDOW = 5
  4582. Global Const $COLOR_WINDOWFRAME = 6
  4583. Global Const $COLOR_MENUTEXT = 7
  4584. Global Const $COLOR_WINDOWTEXT = 8
  4585. Global Const $COLOR_CAPTIONTEXT = 9
  4586. Global Const $COLOR_ACTIVEBORDER = 10
  4587. Global Const $COLOR_INACTIVEBORDER = 11
  4588. Global Const $COLOR_APPWORKSPACE = 12
  4589. Global Const $COLOR_HIGHLIGHT = 13
  4590. Global Const $COLOR_HIGHLIGHTTEXT = 14
  4591. Global Const $COLOR_BTNFACE = 15
  4592. Global Const $COLOR_BTNSHADOW = 16
  4593. Global Const $COLOR_GRAYTEXT = 17
  4594. Global Const $COLOR_BTNTEXT = 18
  4595. Global Const $COLOR_INACTIVECAPTIONTEXT = 19
  4596. Global Const $COLOR_BTNHIGHLIGHT = 20
  4597. Global Const $COLOR_3DDKSHADOW = 21
  4598. Global Const $COLOR_3DLIGHT = 22
  4599. Global Const $COLOR_INFOTEXT = 23
  4600. Global Const $COLOR_INFOBK = 24
  4601. Global Const $COLOR_HOTLIGHT = 26
  4602. Global Const $COLOR_GRADIENTACTIVECAPTION = 27
  4603. Global Const $COLOR_GRADIENTINACTIVECAPTION = 28
  4604. Global Const $COLOR_MENUHILIGHT = 29
  4605. Global Const $COLOR_MENUBAR = 30
  4606. Global Const $COLOR_DESKTOP = 1
  4607. Global Const $COLOR_3DFACE = 15
  4608. Global Const $COLOR_3DSHADOW = 16
  4609. Global Const $COLOR_3DHIGHLIGHT = 20
  4610. Global Const $COLOR_3DHILIGHT = 20
  4611. Global Const $COLOR_BTNHILIGHT = 20
  4612. Global Const $HINST_COMMCTRL = -1
  4613. Global Const $IDB_STD_SMALL_COLOR = 0
  4614. Global Const $IDB_STD_LARGE_COLOR = 1
  4615. Global Const $IDB_VIEW_SMALL_COLOR = 4
  4616. Global Const $IDB_VIEW_LARGE_COLOR = 5
  4617. Global Const $IDB_HIST_SMALL_COLOR = 8
  4618. Global Const $IDB_HIST_LARGE_COLOR = 9
  4619. Global Const $STARTF_FORCEOFFFEEDBACK = 128
  4620. Global Const $STARTF_FORCEONFEEDBACK = 64
  4621. Global Const $STARTF_RUNFULLSCREEN = 32
  4622. Global Const $STARTF_USECOUNTCHARS = 8
  4623. Global Const $STARTF_USEFILLATTRIBUTE = 16
  4624. Global Const $STARTF_USEHOTKEY = 512
  4625. Global Const $STARTF_USEPOSITION = 4
  4626. Global Const $STARTF_USESHOWWINDOW = 1
  4627. Global Const $STARTF_USESIZE = 2
  4628. Global Const $STARTF_USESTDHANDLES = 256
  4629. Global Const $CDDS_PREPAINT = 1
  4630. Global Const $CDDS_POSTPAINT = 2
  4631. Global Const $CDDS_PREERASE = 3
  4632. Global Const $CDDS_POSTERASE = 4
  4633. Global Const $CDDS_ITEM = 65536
  4634. Global Const $CDDS_ITEMPREPAINT = 65537
  4635. Global Const $CDDS_ITEMPOSTPAINT = 65538
  4636. Global Const $CDDS_ITEMPREERASE = 65539
  4637. Global Const $CDDS_ITEMPOSTERASE = 65540
  4638. Global Const $CDDS_SUBITEM = 131072
  4639. Global Const $CDIS_SELECTED = 1
  4640. Global Const $CDIS_GRAYED = 2
  4641. Global Const $CDIS_DISABLED = 4
  4642. Global Const $CDIS_CHECKED = 8
  4643. Global Const $CDIS_FOCUS = 16
  4644. Global Const $CDIS_DEFAULT = 32
  4645. Global Const $CDIS_HOT = 64
  4646. Global Const $CDIS_MARKED = 128
  4647. Global Const $CDIS_INDETERMINATE = 256
  4648. Global Const $CDIS_SHOWKEYBOARDCUES = 512
  4649. Global Const $CDIS_NEARHOT = 1024
  4650. Global Const $CDIS_OTHERSIDEHOT = 2048
  4651. Global Const $CDIS_DROPHILITED = 4096
  4652. Global Const $CDRF_DODEFAULT = 0
  4653. Global Const $CDRF_NEWFONT = 2
  4654. Global Const $CDRF_SKIPDEFAULT = 4
  4655. Global Const $CDRF_NOTIFYPOSTPAINT = 16
  4656. Global Const $CDRF_NOTIFYITEMDRAW = 32
  4657. Global Const $CDRF_NOTIFYSUBITEMDRAW = 32
  4658. Global Const $CDRF_NOTIFYPOSTERASE = 64
  4659. Global Const $CDRF_DOERASE = 8
  4660. Global Const $CDRF_SKIPPOSTPAINT = 256
  4661. Global Const $GUI_SS_DEFAULT_GUI = BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU)
  4662. Func FILEREADHEX0001($FF_FILE, $FF_ADDRESS, $FF_BYTES)
  4663. $FF_FILESIZE = FileGetSize($FF_FILE)
  4664. If $FF_ADDRESS > $FF_FILESIZE Or $FF_BYTES = 0 Then Return ""
  4665. Local $HFILE, $SDATA, $TDATA, $IREAD
  4666. If $FF_ADDRESS + $FF_BYTES > $FF_FILESIZE Then $FF_BYTES -= $FF_ADDRESS + $FF_BYTES - $FF_FILESIZE
  4667. $TDATA = DllStructCreate("byte[" & $FF_BYTES & "]")
  4668. $HFILE = _WINAPI_CREATEFILE($FF_FILE, 2, 2, 2)
  4669. _WINAPI_SETFILEPOINTER($HFILE, $FF_ADDRESS)
  4670. _WINAPI_READFILE($HFILE, DllStructGetPtr($TDATA), $FF_BYTES, $IREAD)
  4671. _WINAPI_CLOSEHANDLE($HFILE)
  4672. Return DllStructGetData($TDATA, 1)
  4673. EndFunc
  4674. Func FILEREADHEX0002($FF_FILE, $FF_ADDRESS, $FF_BYTES)
  4675. $FF_FILESIZE = _WINAPI_GETFILESIZEEX($FF_FILE)
  4676. If $FF_ADDRESS >= $FF_FILESIZE Or $FF_BYTES = 0 Then Return ""
  4677. Local $HFILE, $SDATA, $TDATA, $IREAD
  4678. If $FF_ADDRESS + $FF_BYTES > $FF_FILESIZE Then $FF_BYTES -= $FF_ADDRESS + $FF_BYTES - $FF_FILESIZE
  4679. $TDATA = DllStructCreate("byte[" & $FF_BYTES & "]")
  4680. _WINAPI_SETFILEPOINTER($FF_FILE, $FF_ADDRESS)
  4681. _WINAPI_READFILE($FF_FILE, DllStructGetPtr($TDATA), $FF_BYTES, $IREAD)
  4682. Return DllStructGetData($TDATA, 1)
  4683. EndFunc
  4684. Func FILEREADHEX0003($FF_FILE, $FF_ADDRESS, $FF_BYTES = 0, $FF_SIZE = 0)
  4685. If IsDllStruct($FF_FILE) Then Return DllStructGetData($FF_FILE, "data", $FF_ADDRESS)
  4686. Local $FF_IREAD
  4687. $FF_TDATA = DllStructCreate("" & $FF_SIZE & " data[" & $FF_BYTES & "]")
  4688. $FF_HFILE = _WINAPI_CREATEFILE($FF_FILE, 2, 2, 2)
  4689. _WINAPI_SETFILEPOINTER($FF_HFILE, $FF_ADDRESS)
  4690. _WINAPI_READFILE($FF_HFILE, DllStructGetPtr($FF_TDATA, "data"), $FF_BYTES, $FF_IREAD)
  4691. _WINAPI_CLOSEHANDLE($FF_HFILE)
  4692. Return $FF_TDATA
  4693. EndFunc
  4694. Func SWAPENDIAN($FF_HEXVALUE, $FF_BYTES = 2)
  4695. If $FF_BYTES = 2 Then
  4696. $FF_RETURN = StringRegExpReplace($FF_HEXVALUE, "([0-9A-F]{2})([0-9A-F]{2})", "${2}${1}")
  4697. ElseIf $FF_BYTES = 4 Then
  4698. $FF_RETURN = StringRegExpReplace($FF_HEXVALUE, "([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", "${4}${3}${2}${1}")
  4699. Else
  4700. $FF_RETURN = ""
  4701. EndIf
  4702. Return $FF_RETURN
  4703. EndFunc
  4704. Func TIMERDIFF2($FF_TIMERINIT, $FF_MSGBOX = 0)
  4705. Local $FF_MILLISECONDS = Int(TimerDiff($FF_TIMERINIT)), $FF_SECONDS = Int($FF_MILLISECONDS / 1000), $FF_MINUTES = Int($FF_SECONDS / 60), $FF_HOURS = Int($FF_MINUTES / 60), $FF_DAYS = Int($FF_HOURS / 24)
  4706. $FF_MILLISECONDS -= $FF_SECONDS * 1000
  4707. $FF_SECONDS -= $FF_MINUTES * 60
  4708. $FF_MINUTES -= $FF_HOURS * 60
  4709. $FF_HOURS -= $FF_DAYS * 24
  4710. If $FF_MILLISECONDS < 100 Then $FF_MILLISECONDS = "0" & $FF_MILLISECONDS
  4711. If $FF_MILLISECONDS < 10 Then $FF_MILLISECONDS = "0" & $FF_MILLISECONDS
  4712. If $FF_SECONDS < 10 Then $FF_SECONDS = "0" & $FF_SECONDS
  4713. If $FF_MINUTES < 10 Then $FF_MINUTES = "0" & $FF_MINUTES
  4714. If $FF_HOURS < 10 Then $FF_HOURS = "0" & $FF_HOURS
  4715. If $FF_DAYS < 10 Then $FF_DAYS = "0" & $FF_DAYS
  4716. Local $FF_RETURN[5] = [$FF_MILLISECONDS, $FF_SECONDS, $FF_MINUTES, $FF_HOURS, $FF_DAYS]
  4717. If $FF_MSGBOX = 1 Then MsgBox(4096, "Timer", "Milliseconds:" & $FF_RETURN[0] & @CRLF & "Seconds:" & $FF_RETURN[1] & @CRLF & "Minutes :" & $FF_RETURN[2] & @CRLF & "Hours:" & $FF_RETURN[3] & @CRLF & "Days:" & $FF_RETURN[4])
  4718. Return $FF_RETURN
  4719. EndFunc
  4720. Func _JOYGETPOS($UJOYID)
  4721. Local $RETURN[8], $LPINFO
  4722. $LPINFO = DllStructCreate("dword[13]")
  4723. If @error Then Return 0
  4724. DllStructSetData($LPINFO, 1, DllStructGetSize($LPINFO), 1)
  4725. DllStructSetData($LPINFO, 1, 255, 2)
  4726. DllCall("Winmm.dll", "int", "joyGetPosEx", "int", $UJOYID, "ptr", DllStructGetPtr($LPINFO))
  4727. If Not @error Then
  4728. $RETURN[0] = DllStructGetData($LPINFO, 1, 3)
  4729. $RETURN[1] = DllStructGetData($LPINFO, 1, 4)
  4730. $RETURN[2] = DllStructGetData($LPINFO, 1, 5)
  4731. $RETURN[3] = DllStructGetData($LPINFO, 1, 6)
  4732. $RETURN[4] = DllStructGetData($LPINFO, 1, 7)
  4733. $RETURN[5] = DllStructGetData($LPINFO, 1, 8)
  4734. $RETURN[6] = DllStructGetData($LPINFO, 1, 11)
  4735. $RETURN[7] = DllStructGetData($LPINFO, 1, 9)
  4736. EndIf
  4737. $LPINFO = 0
  4738. Return $RETURN
  4739. EndFunc
  4740. Func COLORCONVERT1555TO8888($FF_VALUE, $FF_COLOR1 = 1, $FF_COLOR2 = 2, $FF_COLOR3 = 3, $FF_COLOR4 = 4)
  4741. Local $FF_COLORS[5] = ["", Hex(BitAND($FF_VALUE, 31) * 8, 2), Hex(BitAND($FF_VALUE / 32, 31) * 8, 2), Hex(BitAND($FF_VALUE / 1024, 31) * 8, 2), Hex(BitAND($FF_VALUE, 32768), 2)]
  4742. Return "0x" & $FF_COLORS[$FF_COLOR1] & $FF_COLORS[$FF_COLOR2] & $FF_COLORS[$FF_COLOR3] & $FF_COLORS[$FF_COLOR4]
  4743. EndFunc
  4744. Func MOUSEGETPOS2($FF_WINHANDLE = "", $FF_CTRLHANDLE = "")
  4745. Local $FF_RETURN[2], $FF_CONTROLPOS
  4746. If $FF_WINHANDLE = "" Then
  4747. $FF_RETURN[0] = MouseGetPos(0)
  4748. $FF_RETURN[1] = MouseGetPos(1)
  4749. Else
  4750. $FF_RETURN[0] = _WINAPI_GETMOUSEPOSX(True, $FF_WINHANDLE)
  4751. $FF_RETURN[1] = _WINAPI_GETMOUSEPOSY(True, $FF_WINHANDLE)
  4752. If $FF_CTRLHANDLE = "" Then
  4753. Else
  4754. $FF_CONTROLPOS = ControlGetPos($FF_WINHANDLE, $FF_WINHANDLE, $FF_CTRLHANDLE)
  4755. $FF_RETURN[0] = -$FF_CONTROLPOS[0] + $FF_RETURN[0]
  4756. $FF_RETURN[1] = -$FF_CONTROLPOS[1] + $FF_RETURN[1]
  4757. EndIf
  4758. EndIf
  4759. Return $FF_RETURN
  4760. EndFunc
  4761. Func FILEARCGETHEADER($FF_FILE, $FF_CHECKONLY = 0)
  4762. $FF_FILEOPEN = FileOpen($FF_FILE, 4)
  4763. $FF_FOLDERCOUNT = Dec(Hex(StringRegExpReplace(FileRead($FF_FILEOPEN, 4), "([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", "${4}${3}${2}${1}")))
  4764. $FF_FILECOUNT = 0
  4765. $FF_FILEGETSIZE = FileGetSize($FF_FILE)
  4766. If 4 + $FF_FOLDERCOUNT * 12 > $FF_FILEGETSIZE Or 4 + $FF_FOLDERCOUNT * 12 < 0 Then
  4767. FileClose($FF_FILEOPEN)
  4768. Return SetError(1)
  4769. EndIf
  4770. Dim $FF_RETURN[1 + $FF_FOLDERCOUNT][4]
  4771. For $I = 1 To $FF_FOLDERCOUNT Step 1
  4772. $FF_FOLDERNAME = String(BinaryToString(FileRead($FF_FILEOPEN, 4)))
  4773. $FF_FOLDERFILECOUNT = Dec(Hex(StringRegExpReplace(FileRead($FF_FILEOPEN, 4), "([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", "${4}${3}${2}${1}")))
  4774. $FF_FOLDERFILESLISTADDRESS = Hex(StringRegExpReplace(FileRead($FF_FILEOPEN, 4), "([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", "${4}${3}${2}${1}"))
  4775. $FF_RETURN[$I][0] = $FF_FOLDERNAME
  4776. $FF_RETURN[$I][1] = $FF_FOLDERFILECOUNT
  4777. $FF_RETURN[$I][2] = $FF_FOLDERFILESLISTADDRESS
  4778. $FF_RETURN[$I][3] = "Directory"
  4779. $FF_FILECOUNT += $FF_FOLDERFILECOUNT
  4780. Next
  4781. If 4 + $FF_FOLDERCOUNT * 12 + $FF_FILECOUNT * 17 > $FF_FILEGETSIZE Or 4 + $FF_FOLDERCOUNT * 12 + $FF_FILECOUNT * 17 < 0 Then
  4782. FileClose($FF_FILEOPEN)
  4783. Return SetError(2)
  4784. EndIf
  4785. $FF_FILESDATASIZE = 0
  4786. ReDim $FF_RETURN[1 + $FF_FOLDERCOUNT + $FF_FILECOUNT][4]
  4787. For $I = 1 + $FF_FOLDERCOUNT To $FF_FILECOUNT + $FF_FOLDERCOUNT Step 1
  4788. $FF_FILENAME = String(BinaryToString(FileRead($FF_FILEOPEN, 9)))
  4789. $FF_FILESIZE = Dec(Hex(StringRegExpReplace(FileRead($FF_FILEOPEN, 4), "([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", "${4}${3}${2}${1}")))
  4790. $FF_FILEDATAADDRESS = Hex(StringRegExpReplace(FileRead($FF_FILEOPEN, 4), "([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", "${4}${3}${2}${1}"))
  4791. $FF_RETURN[$I][0] = $FF_FILENAME
  4792. $FF_RETURN[$I][1] = $FF_FILESIZE
  4793. $FF_RETURN[$I][2] = $FF_FILEDATAADDRESS
  4794. $FF_RETURN[$I][3] = "File"
  4795. $FF_FILESDATASIZE += $FF_FILESIZE
  4796. Next
  4797. $FF_HEADERSIZE = 4 + $FF_FOLDERCOUNT * 12 + $FF_FILECOUNT * 17
  4798. If $FF_HEADERSIZE + $FF_FILESDATASIZE <> $FF_FILEGETSIZE Then
  4799. FileClose($FF_FILEOPEN)
  4800. Return SetError(3)
  4801. EndIf
  4802. $FF_RETURN[0][0] = $FF_FOLDERCOUNT
  4803. $FF_RETURN[0][1] = $FF_FILECOUNT
  4804. $FF_RETURN[0][2] = $FF_HEADERSIZE
  4805. $FF_RETURN[0][3] = $FF_FILESDATASIZE
  4806. FileClose($FF_FILEOPEN)
  4807. If $FF_CHECKONLY = 1 Then Return SetError(0)
  4808. Return $FF_RETURN
  4809. EndFunc
  4810. Func ANVILOFDAWN_DATAFILEGETHEADER($FF_FILE, $FF_CHECKONLY = 0)
  4811. $FF_FILEOPEN = FileOpen($FF_FILE, 4)
  4812. $FF_FILECOUNT = Dec(Hex(StringRegExpReplace(FileRead($FF_FILEOPEN, 4), "([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", "${4}${3}${2}${1}")))
  4813. $FF_FILEGETSIZE = FileGetSize($FF_FILE)
  4814. If 4 + $FF_FILECOUNT * 4 > $FF_FILEGETSIZE Or 4 + $FF_FILECOUNT * 4 < 0 Then
  4815. FileClose($FF_FILEOPEN)
  4816. Return SetError(1)
  4817. EndIf
  4818. Dim $FF_RETURN[1 + $FF_FILECOUNT][3]
  4819. For $I = 1 To $FF_FILECOUNT Step 1
  4820. $FF_FILEADDRESS = Hex(StringRegExpReplace(FileRead($FF_FILEOPEN, 4), "([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", "${4}${3}${2}${1}"))
  4821. $FF_RETURN[$I][0] = StringFormat("File_%006u", $I)
  4822. $FF_RETURN[$I][2] = $FF_FILEADDRESS
  4823. Next
  4824. $FF_FILESDATASIZE = 0
  4825. For $I = 1 To $FF_FILECOUNT Step 1
  4826. If $I + 1 > $FF_FILECOUNT Then
  4827. $FF_FILESIZE = $FF_FILEGETSIZE - Dec($FF_RETURN[$I][2])
  4828. Else
  4829. $FF_FILESIZE = Dec($FF_RETURN[$I + 1][2]) - Dec($FF_RETURN[$I][2])
  4830. EndIf
  4831. $FF_RETURN[$I][1] = $FF_FILESIZE
  4832. $FF_FILESDATASIZE += $FF_FILESIZE
  4833. Next
  4834. $FF_FILESIZEADDRESS = Dec(Hex(StringRegExpReplace(FileRead($FF_FILEOPEN, 4), "([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", "${4}${3}${2}${1}")))
  4835. $FF_HEADERSIZE = 4 + $FF_FILECOUNT * 4 + 4
  4836. If $FF_FILESIZEADDRESS <> $FF_FILEGETSIZE Then $FF_HEADERSIZE -= 4
  4837. If $FF_HEADERSIZE + $FF_FILESDATASIZE <> $FF_FILEGETSIZE Then
  4838. FileClose($FF_FILEOPEN)
  4839. Return SetError(2)
  4840. EndIf
  4841. $FF_RETURN[0][0] = $FF_FILECOUNT
  4842. $FF_RETURN[0][1] = $FF_HEADERSIZE
  4843. $FF_RETURN[0][2] = $FF_FILESDATASIZE
  4844. FileClose($FF_FILEOPEN)
  4845. If $FF_CHECKONLY = 1 Then Return SetError(0)
  4846. Return $FF_RETURN
  4847. EndFunc
  4848. Func FILEHMPCHECK($FF_FILE)
  4849. $FF_FILEOPEN = FileOpen($FF_FILE, 4)
  4850. $FF_FILEREAD = FileRead($FF_FILEOPEN, 14)
  4851. FileClose($FF_FILEOPEN)
  4852. If $FF_FILEREAD = "0x484D494D49444950303133313935" Then
  4853. Return SetError(0)
  4854. EndIf
  4855. Return SetError(1)
  4856. EndFunc
  4857. Func PS1DRACULAX_FILECHECK($FF_FILE, $FF_CHECKONLY = 0)
  4858. Local $FF_FILESIZE, $FF_FILEOPEN, $FF_FILEREAD, $FF_IMAGECOUNT, $FF_DATA = "0x"
  4859. $FF_FILESIZE = FileGetSize($FF_FILE)
  4860. If $FF_FILESIZE < 22528 Then Return SetError(1)
  4861. $FF_IMAGECOUNT = Int($FF_FILESIZE / 22528)
  4862. If $FF_IMAGECOUNT * 22528 <> $FF_FILESIZE Then Return SetError(2)
  4863. $FF_FILEOPEN = FileOpen($FF_FILE, 4)
  4864. For $FF_LOOP = 1 To 128
  4865. $FF_DATA &= "44524143554C4158"
  4866. Next
  4867. For $FF_LOOP = 1 To $FF_IMAGECOUNT
  4868. $FF_FILEREAD = FileRead($FF_FILEOPEN, 21504)
  4869. $FF_FILEREAD = FileRead($FF_FILEOPEN, 1024)
  4870. If $FF_FILEREAD <> $FF_DATA Then Return SetError(3)
  4871. Next
  4872. FileClose($FF_FILEOPEN)
  4873. If $FF_CHECKONLY = 1 Then Return SetError(0)
  4874. Local $FF_RETURN[$FF_IMAGECOUNT + 1][3]
  4875. $FF_RETURN[0][0] = $FF_IMAGECOUNT
  4876. $FF_RETURN[0][1] = $FF_IMAGECOUNT * 1024
  4877. $FF_RETURN[0][2] = $FF_IMAGECOUNT * 21504
  4878. For $FF_LOOP = 1 To $FF_IMAGECOUNT
  4879. $FF_RETURN[$FF_LOOP][0] = StringFormat("Image_%006u", $FF_LOOP)
  4880. $FF_RETURN[$FF_LOOP][1] = 21504
  4881. $FF_RETURN[$FF_LOOP][2] = Hex(($FF_LOOP - 1) * (22528))
  4882. Next
  4883. Return $FF_RETURN
  4884. EndFunc
  4885. Func SIZECONVERT($FF_SIZE)
  4886. If $FF_SIZE <= 1023 Then
  4887. $RETURN = Round($FF_SIZE, 2) & " B"
  4888. ElseIf $FF_SIZE <= 1048575 Then
  4889. $RETURN = Round($FF_SIZE / 1024, 2) & " KB"
  4890. ElseIf $FF_SIZE <= 1073741823 Then
  4891. $RETURN = Round($FF_SIZE / 1024 / 1024, 2) & " MB"
  4892. ElseIf $FF_SIZE <= 1099511627775 Then
  4893. $RETURN = Round($FF_SIZE / 1024 / 1024, 2) & " GB"
  4894. EndIf
  4895. Return $RETURN
  4896. EndFunc
  4897. Func BITTEST($FF_VALUE, $FF_BIT)
  4898. Return BitAND(BitShift($FF_VALUE, $FF_BIT), 1)
  4899. EndFunc
  4900. Func _QUICKFILEOPTIONS($FF_OPT0 = "", $FF_OPT1 = "", $FF_OPT2 = "", $FF_OPT3 = "", $FF_OPT4 = 16)
  4901. Switch $FF_OPT0
  4902. Case "Open"
  4903. If Not FileExists($FF_OPT1) Then Return
  4904. $FF_OPEN = FileOpen($FF_OPT1, $FF_OPT4 + 1)
  4905. Return $FF_OPEN
  4906. Case "Close"
  4907. FileClose($FF_OPT1)
  4908. Return
  4909. Case "Read"
  4910. FileSetPos($FF_OPT1, $FF_OPT2, 0)
  4911. $FF_READ = FileRead($FF_OPT1, $FF_OPT3)
  4912. Return $FF_READ
  4913. Case "QuickRead"
  4914. $FF_OPEN = FileOpen($FF_OPT1, $FF_OPT4 + 1)
  4915. FileSetPos($FF_OPEN, $FF_OPT2, 0)
  4916. $FF_READ = FileRead($FF_OPEN, $FF_OPT3)
  4917. FileClose($FF_OPEN)
  4918. Return $FF_READ
  4919. Case "Write"
  4920. FileSetPos($FF_OPT1, $FF_OPT2, 0)
  4921. FileWrite($FF_OPT1, $FF_OPT3)
  4922. Return
  4923. Case "QuickWrite"
  4924. If Not FileExists($FF_OPT1) Then Return
  4925. $FF_OPEN = FileOpen($FF_OPT1, $FF_OPT4 + 1)
  4926. FileSetPos($FF_OPEN, $FF_OPT2, 0)
  4927. FileWrite($FF_OPEN, $FF_OPT3)
  4928. FileClose($FF_OPEN)
  4929. Return
  4930. EndSwitch
  4931. EndFunc
  4932. Func _FILECOUNTLINES($SFILEPATH)
  4933. Local $HFILE = FileOpen($SFILEPATH, $FO_READ)
  4934. If $HFILE = -1 Then Return SetError(1, 0, 0)
  4935. Local $SFILECONTENT = StringStripWS(FileRead($HFILE), 2)
  4936. FileClose($HFILE)
  4937. Local $ATMP
  4938. If StringInStr($SFILECONTENT, @LF) Then
  4939. $ATMP = StringSplit(StringStripCR($SFILECONTENT), @LF)
  4940. ElseIf StringInStr($SFILECONTENT, @CR) Then
  4941. $ATMP = StringSplit($SFILECONTENT, @CR)
  4942. Else
  4943. If StringLen($SFILECONTENT) Then
  4944. Return 1
  4945. Else
  4946. Return SetError(2, 0, 0)
  4947. EndIf
  4948. EndIf
  4949. Return $ATMP[0]
  4950. EndFunc
  4951. Func _FILECREATE($SFILEPATH)
  4952. Local $HOPENFILE = FileOpen($SFILEPATH, $FO_OVERWRITE)
  4953. If $HOPENFILE = -1 Then Return SetError(1, 0, 0)
  4954. Local $HWRITEFILE = FileWrite($HOPENFILE, "")
  4955. FileClose($HOPENFILE)
  4956. If $HWRITEFILE = -1 Then Return SetError(2, 0, 0)
  4957. Return 1
  4958. EndFunc
  4959. Func _FILELISTTOARRAY($SPATH, $SFILTER = "*", $IFLAG = 0)
  4960. Local $HSEARCH, $SFILE, $SFILELIST, $SDELIM = "|"
  4961. $SPATH = StringRegExpReplace($SPATH, "[\\/]+\z", "") & "\"
  4962. If Not FileExists($SPATH) Then Return SetError(1, 1, "")
  4963. If StringRegExp($SFILTER, "[\\/:><\|]|(?s)\A\s*\z") Then Return SetError(2, 2, "")
  4964. If Not ($IFLAG = 0 Or $IFLAG = 1 Or $IFLAG = 2) Then Return SetError(3, 3, "")
  4965. $HSEARCH = FileFindFirstFile($SPATH & $SFILTER)
  4966. If @error Then Return SetError(4, 4, "")
  4967. While 1
  4968. $SFILE = FileFindNextFile($HSEARCH)
  4969. If @error Then ExitLoop
  4970. If ($IFLAG + @extended = 2) Then ContinueLoop
  4971. $SFILELIST &= $SDELIM & $SFILE
  4972. WEnd
  4973. FileClose($HSEARCH)
  4974. If Not $SFILELIST Then Return SetError(4, 4, "")
  4975. Return StringSplit(StringTrimLeft($SFILELIST, 1), "|")
  4976. EndFunc
  4977. Func _FILEPRINT($S_FILE, $I_SHOW = @SW_HIDE)
  4978. Local $A_RET = DllCall("shell32.dll", "int", "ShellExecuteW", "hwnd", 0, "wstr", "print", "wstr", $S_FILE, "wstr", "", "wstr", "", "int", $I_SHOW)
  4979. If @error Then Return SetError(@error, @extended, 0)
  4980. If $A_RET[0] <= 32 Then Return SetError(10, $A_RET[0], 0)
  4981. Return 1
  4982. EndFunc
  4983. Func _FILEREADTOARRAY($SFILEPATH, ByRef $AARRAY)
  4984. Local $HFILE = FileOpen($SFILEPATH, $FO_READ)
  4985. If $HFILE = -1 Then Return SetError(1, 0, 0)
  4986. Local $AFILE = FileRead($HFILE, FileGetSize($SFILEPATH))
  4987. If StringRight($AFILE, 1) = @LF Then $AFILE = StringTrimRight($AFILE, 1)
  4988. If StringRight($AFILE, 1) = @CR Then $AFILE = StringTrimRight($AFILE, 1)
  4989. FileClose($HFILE)
  4990. If StringInStr($AFILE, @LF) Then
  4991. $AARRAY = StringSplit(StringStripCR($AFILE), @LF)
  4992. ElseIf StringInStr($AFILE, @CR) Then
  4993. $AARRAY = StringSplit($AFILE, @CR)
  4994. Else
  4995. If StringLen($AFILE) Then
  4996. Dim $AARRAY[2] = [1, $AFILE]
  4997. Else
  4998. Return SetError(2, 0, 0)
  4999. EndIf
  5000. EndIf
  5001. Return 1
  5002. EndFunc
  5003. Func _FILEWRITEFROMARRAY($FILE, $A_ARRAY, $I_BASE = 0, $I_UBOUND = 0)
  5004. If Not IsArray($A_ARRAY) Then Return SetError(2, 0, 0)
  5005. Local $LAST = UBound($A_ARRAY) - 1
  5006. If $I_UBOUND < 1 Or $I_UBOUND > $LAST Then $I_UBOUND = $LAST
  5007. If $I_BASE < 0 Or $I_BASE > $LAST Then $I_BASE = 0
  5008. Local $HFILE
  5009. If IsString($FILE) Then
  5010. $HFILE = FileOpen($FILE, $FO_OVERWRITE)
  5011. Else
  5012. $HFILE = $FILE
  5013. EndIf
  5014. If $HFILE = -1 Then Return SetError(1, 0, 0)
  5015. Local $ERRORSAV = 0
  5016. For $X = $I_BASE To $I_UBOUND
  5017. If FileWrite($HFILE, $A_ARRAY[$X] & @CRLF) = 0 Then
  5018. $ERRORSAV = 3
  5019. ExitLoop
  5020. EndIf
  5021. Next
  5022. If IsString($FILE) Then FileClose($HFILE)
  5023. If $ERRORSAV Then Return SetError($ERRORSAV, 0, 0)
  5024. Return 1
  5025. EndFunc
  5026. Func _FILEWRITELOG($SLOGPATH, $SLOGMSG, $IFLAG = -1)
  5027. Local $IOPENMODE = $FO_APPEND
  5028. Local $SDATENOW = @YEAR & "-" & @MON & "-" & @MDAY
  5029. Local $STIMENOW = @HOUR & ":" & @MIN & ":" & @SEC
  5030. Local $SMSG = $SDATENOW & " " & $STIMENOW & " : " & $SLOGMSG
  5031. If $IFLAG <> -1 Then
  5032. $SMSG &= @CRLF & FileRead($SLOGPATH)
  5033. $IOPENMODE = $FO_OVERWRITE
  5034. EndIf
  5035. Local $HOPENFILE = FileOpen($SLOGPATH, $IOPENMODE)
  5036. If $HOPENFILE = -1 Then Return SetError(1, 0, 0)
  5037. Local $IWRITEFILE = FileWriteLine($HOPENFILE, $SMSG)
  5038. Local $IRET = FileClose($HOPENFILE)
  5039. If $IWRITEFILE = -1 Then Return SetError(2, $IRET, 0)
  5040. Return $IRET
  5041. EndFunc
  5042. Func _FILEWRITETOLINE($SFILE, $ILINE, $STEXT, $FOVERWRITE = 0)
  5043. If $ILINE <= 0 Then Return SetError(4, 0, 0)
  5044. If Not IsString($STEXT) Then
  5045. $STEXT = String($STEXT)
  5046. If $STEXT = "" Then Return SetError(6, 0, 0)
  5047. EndIf
  5048. If $FOVERWRITE <> 0 And $FOVERWRITE <> 1 Then Return SetError(5, 0, 0)
  5049. If Not FileExists($SFILE) Then Return SetError(2, 0, 0)
  5050. Local $SREAD_FILE = FileRead($SFILE)
  5051. Local $ASPLIT_FILE = StringSplit(StringStripCR($SREAD_FILE), @LF)
  5052. If UBound($ASPLIT_FILE) < $ILINE Then Return SetError(1, 0, 0)
  5053. Local $HFILE = FileOpen($SFILE, $FO_OVERWRITE)
  5054. If $HFILE = -1 Then Return SetError(3, 0, 0)
  5055. $SREAD_FILE = ""
  5056. For $I = 1 To $ASPLIT_FILE[0]
  5057. If $I = $ILINE Then
  5058. If $FOVERWRITE = 1 Then
  5059. If $STEXT <> "" Then $SREAD_FILE &= $STEXT & @CRLF
  5060. Else
  5061. $SREAD_FILE &= $STEXT & @CRLF & $ASPLIT_FILE[$I] & @CRLF
  5062. EndIf
  5063. ElseIf $I < $ASPLIT_FILE[0] Then
  5064. $SREAD_FILE &= $ASPLIT_FILE[$I] & @CRLF
  5065. ElseIf $I = $ASPLIT_FILE[0] Then
  5066. $SREAD_FILE &= $ASPLIT_FILE[$I]
  5067. EndIf
  5068. Next
  5069. FileWrite($HFILE, $SREAD_FILE)
  5070. FileClose($HFILE)
  5071. Return 1
  5072. EndFunc
  5073. Func _PATHFULL($SRELATIVEPATH, $SBASEPATH = @WorkingDir)
  5074. If Not $SRELATIVEPATH Or $SRELATIVEPATH = "." Then Return $SBASEPATH
  5075. Local $SFULLPATH = StringReplace($SRELATIVEPATH, "/", "\")
  5076. Local Const $SFULLPATHCONST = $SFULLPATH
  5077. Local $SPATH
  5078. Local $BROOTONLY = StringLeft($SFULLPATH, 1) = "\" And StringMid($SFULLPATH, 2, 1) <> "\"
  5079. For $I = 1 To 2
  5080. $SPATH = StringLeft($SFULLPATH, 2)
  5081. If $SPATH = "\\" Then
  5082. $SFULLPATH = StringTrimLeft($SFULLPATH, 2)
  5083. Local $NSERVERLEN = StringInStr($SFULLPATH, "\") - 1
  5084. $SPATH = "\\" & StringLeft($SFULLPATH, $NSERVERLEN)
  5085. $SFULLPATH = StringTrimLeft($SFULLPATH, $NSERVERLEN)
  5086. ExitLoop
  5087. ElseIf StringRight($SPATH, 1) = ":" Then
  5088. $SFULLPATH = StringTrimLeft($SFULLPATH, 2)
  5089. ExitLoop
  5090. Else
  5091. $SFULLPATH = $SBASEPATH & "\" & $SFULLPATH
  5092. EndIf
  5093. Next
  5094. If $I = 3 Then Return ""
  5095. If StringLeft($SFULLPATH, 1) <> "\" Then
  5096. If StringLeft($SFULLPATHCONST, 2) = StringLeft($SBASEPATH, 2) Then
  5097. $SFULLPATH = $SBASEPATH & "\" & $SFULLPATH
  5098. Else
  5099. $SFULLPATH = "\" & $SFULLPATH
  5100. EndIf
  5101. EndIf
  5102. Local $ATEMP = StringSplit($SFULLPATH, "\")
  5103. Local $APATHPARTS[$ATEMP[0]], $J = 0
  5104. For $I = 2 To $ATEMP[0]
  5105. If $ATEMP[$I] = ".." Then
  5106. If $J Then $J -= 1
  5107. ElseIf Not ($ATEMP[$I] = "" And $I <> $ATEMP[0]) And $ATEMP[$I] <> "." Then
  5108. $APATHPARTS[$J] = $ATEMP[$I]
  5109. $J += 1
  5110. EndIf
  5111. Next
  5112. $SFULLPATH = $SPATH
  5113. If Not $BROOTONLY Then
  5114. For $I = 0 To $J - 1
  5115. $SFULLPATH &= "\" & $APATHPARTS[$I]
  5116. Next
  5117. Else
  5118. $SFULLPATH &= $SFULLPATHCONST
  5119. If StringInStr($SFULLPATH, "..") Then $SFULLPATH = _PATHFULL($SFULLPATH)
  5120. EndIf
  5121. While StringInStr($SFULLPATH, ".\")
  5122. $SFULLPATH = StringReplace($SFULLPATH, ".\", "\")
  5123. WEnd
  5124. Return $SFULLPATH
  5125. EndFunc
  5126. Func _PATHGETRELATIVE($SFROM, $STO)
  5127. If StringRight($SFROM, 1) <> "\" Then $SFROM &= "\"
  5128. If StringRight($STO, 1) <> "\" Then $STO &= "\"
  5129. If $SFROM = $STO Then Return SetError(1, 0, StringTrimRight($STO, 1))
  5130. Local $ASFROM = StringSplit($SFROM, "\")
  5131. Local $ASTO = StringSplit($STO, "\")
  5132. If $ASFROM[1] <> $ASTO[1] Then Return SetError(2, 0, StringTrimRight($STO, 1))
  5133. Local $I = 2
  5134. Local $IDIFF = 1
  5135. While 1
  5136. If $ASFROM[$I] <> $ASTO[$I] Then
  5137. $IDIFF = $I
  5138. ExitLoop
  5139. EndIf
  5140. $I += 1
  5141. WEnd
  5142. $I = 1
  5143. Local $SRELPATH = ""
  5144. For $J = 1 To $ASTO[0]
  5145. If $I >= $IDIFF Then
  5146. $SRELPATH &= "\" & $ASTO[$I]
  5147. EndIf
  5148. $I += 1
  5149. Next
  5150. $SRELPATH = StringTrimLeft($SRELPATH, 1)
  5151. $I = 1
  5152. For $J = 1 To $ASFROM[0]
  5153. If $I > $IDIFF Then
  5154. $SRELPATH = "..\" & $SRELPATH
  5155. EndIf
  5156. $I += 1
  5157. Next
  5158. If StringRight($SRELPATH, 1) == "\" Then $SRELPATH = StringTrimRight($SRELPATH, 1)
  5159. Return $SRELPATH
  5160. EndFunc
  5161. Func _PATHMAKE($SZDRIVE, $SZDIR, $SZFNAME, $SZEXT)
  5162. If StringLen($SZDRIVE) Then
  5163. If Not (StringLeft($SZDRIVE, 2) = "\\") Then $SZDRIVE = StringLeft($SZDRIVE, 1) & ":"
  5164. EndIf
  5165. If StringLen($SZDIR) Then
  5166. If Not (StringRight($SZDIR, 1) = "\") And Not (StringRight($SZDIR, 1) = "/") Then $SZDIR = $SZDIR & "\"
  5167. EndIf
  5168. If StringLen($SZEXT) Then
  5169. If Not (StringLeft($SZEXT, 1) = ".") Then $SZEXT = "." & $SZEXT
  5170. EndIf
  5171. Return $SZDRIVE & $SZDIR & $SZFNAME & $SZEXT
  5172. EndFunc
  5173. Func _PATHSPLIT($SZPATH, ByRef $SZDRIVE, ByRef $SZDIR, ByRef $SZFNAME, ByRef $SZEXT)
  5174. Local $DRIVE = ""
  5175. Local $DIR = ""
  5176. Local $FNAME = ""
  5177. Local $EXT = ""
  5178. Local $POS
  5179. Local $ARRAY[5]
  5180. $ARRAY[0] = $SZPATH
  5181. If StringMid($SZPATH, 2, 1) = ":" Then
  5182. $DRIVE = StringLeft($SZPATH, 2)
  5183. $SZPATH = StringTrimLeft($SZPATH, 2)
  5184. ElseIf StringLeft($SZPATH, 2) = "\\" Then
  5185. $SZPATH = StringTrimLeft($SZPATH, 2)
  5186. $POS = StringInStr($SZPATH, "\")
  5187. If $POS = 0 Then $POS = StringInStr($SZPATH, "/")
  5188. If $POS = 0 Then
  5189. $DRIVE = "\\" & $SZPATH
  5190. $SZPATH = ""
  5191. Else
  5192. $DRIVE = "\\" & StringLeft($SZPATH, $POS - 1)
  5193. $SZPATH = StringTrimLeft($SZPATH, $POS - 1)
  5194. EndIf
  5195. EndIf
  5196. Local $NPOSFORWARD = StringInStr($SZPATH, "/", 0, -1)
  5197. Local $NPOSBACKWARD = StringInStr($SZPATH, "\", 0, -1)
  5198. If $NPOSFORWARD >= $NPOSBACKWARD Then
  5199. $POS = $NPOSFORWARD
  5200. Else
  5201. $POS = $NPOSBACKWARD
  5202. EndIf
  5203. $DIR = StringLeft($SZPATH, $POS)
  5204. $FNAME = StringRight($SZPATH, StringLen($SZPATH) - $POS)
  5205. If StringLen($DIR) = 0 Then $FNAME = $SZPATH
  5206. $POS = StringInStr($FNAME, ".", 0, -1)
  5207. If $POS Then
  5208. $EXT = StringRight($FNAME, StringLen($FNAME) - ($POS - 1))
  5209. $FNAME = StringLeft($FNAME, $POS - 1)
  5210. EndIf
  5211. $SZDRIVE = $DRIVE
  5212. $SZDIR = $DIR
  5213. $SZFNAME = $FNAME
  5214. $SZEXT = $EXT
  5215. $ARRAY[1] = $DRIVE
  5216. $ARRAY[2] = $DIR
  5217. $ARRAY[3] = $FNAME
  5218. $ARRAY[4] = $EXT
  5219. Return $ARRAY
  5220. EndFunc
  5221. Func _REPLACESTRINGINFILE($SZFILENAME, $SZSEARCHSTRING, $SZREPLACESTRING, $FCASENESS = 0, $FOCCURANCE = 1)
  5222. Local $IRETVAL = 0
  5223. Local $NCOUNT, $SENDSWITH
  5224. If StringInStr(FileGetAttrib($SZFILENAME), "R") Then Return SetError(6, 0, -1)
  5225. Local $HFILE = FileOpen($SZFILENAME, $FO_READ)
  5226. If $HFILE = -1 Then Return SetError(1, 0, -1)
  5227. Local $S_TOTFILE = FileRead($HFILE, FileGetSize($SZFILENAME))
  5228. If StringRight($S_TOTFILE, 2) = @CRLF Then
  5229. $SENDSWITH = @CRLF
  5230. ElseIf StringRight($S_TOTFILE, 1) = @CR Then
  5231. $SENDSWITH = @CR
  5232. ElseIf StringRight($S_TOTFILE, 1) = @LF Then
  5233. $SENDSWITH = @LF
  5234. Else
  5235. $SENDSWITH = ""
  5236. EndIf
  5237. Local $AFILELINES = StringSplit(StringStripCR($S_TOTFILE), @LF)
  5238. FileClose($HFILE)
  5239. Local $HWRITEHANDLE = FileOpen($SZFILENAME, $FO_OVERWRITE)
  5240. If $HWRITEHANDLE = -1 Then Return SetError(2, 0, -1)
  5241. For $NCOUNT = 1 To $AFILELINES[0]
  5242. If StringInStr($AFILELINES[$NCOUNT], $SZSEARCHSTRING, $FCASENESS) Then
  5243. $AFILELINES[$NCOUNT] = StringReplace($AFILELINES[$NCOUNT], $SZSEARCHSTRING, $SZREPLACESTRING, 1 - $FOCCURANCE, $FCASENESS)
  5244. $IRETVAL = $IRETVAL + 1
  5245. If $FOCCURANCE = 0 Then
  5246. $IRETVAL = 1
  5247. ExitLoop
  5248. EndIf
  5249. EndIf
  5250. Next
  5251. For $NCOUNT = 1 To $AFILELINES[0] - 1
  5252. If FileWriteLine($HWRITEHANDLE, $AFILELINES[$NCOUNT]) = 0 Then
  5253. FileClose($HWRITEHANDLE)
  5254. Return SetError(3, 0, -1)
  5255. EndIf
  5256. Next
  5257. If $AFILELINES[$NCOUNT] <> "" Then FileWrite($HWRITEHANDLE, $AFILELINES[$NCOUNT] & $SENDSWITH)
  5258. FileClose($HWRITEHANDLE)
  5259. Return $IRETVAL
  5260. EndFunc
  5261. Func _TEMPFILE($S_DIRECTORYNAME = @TempDir, $S_FILEPREFIX = "~", $S_FILEEXTENSION = ".tmp", $I_RANDOMLENGTH = 7)
  5262. If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @TempDir
  5263. If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @ScriptDir
  5264. If StringRight($S_DIRECTORYNAME, 1) <> "\" Then $S_DIRECTORYNAME = $S_DIRECTORYNAME & "\"
  5265. Local $S_TEMPNAME
  5266. Do
  5267. $S_TEMPNAME = ""
  5268. While StringLen($S_TEMPNAME) < $I_RANDOMLENGTH
  5269. $S_TEMPNAME = $S_TEMPNAME & Chr(Random(97, 122, 1))
  5270. WEnd
  5271. $S_TEMPNAME = $S_DIRECTORYNAME & $S_FILEPREFIX & $S_TEMPNAME & $S_FILEEXTENSION
  5272. Until Not FileExists($S_TEMPNAME)
  5273. Return $S_TEMPNAME
  5274. EndFunc
  5275. Opt("TrayMenuMode", 1)
  5276. Opt("GUIOnEventMode", 1)
  5277. $MAINWINDOW = GUICreate("Sonic Heroes Tool v2.1 By Lee", 640, 504 + 45, -1, -1)
  5278. GUISetOnEvent(-3, "CLOSEClicked", $MAINWINDOW)
  5279. $MENU_FILE = GUICtrlCreateMenu("File")
  5280. $MENU_FILE_OPEN = GUICtrlCreateMenuItem("Open", $MENU_FILE)
  5281. GUICtrlSetOnEvent($MENU_FILE_OPEN, "Menu")
  5282. $MENU_FILE_SAVE = GUICtrlCreateMenuItem("Save", $MENU_FILE)
  5283. GUICtrlSetOnEvent($MENU_FILE_SAVE, "Menu")
  5284. GUICtrlSetState(-1, $GUI_DISABLE)
  5285. $MENU_FILE_SAVEAS = GUICtrlCreateMenuItem("Save As", $MENU_FILE)
  5286. GUICtrlSetOnEvent($MENU_FILE_SAVEAS, "Menu")
  5287. GUICtrlSetState(-1, $GUI_DISABLE)
  5288. $MENU_FILE_SEPARATOR = GUICtrlCreateMenuItem("", $MENU_FILE)
  5289. $MENU_FILE_EXIT = GUICtrlCreateMenuItem("Exit", $MENU_FILE)
  5290. GUICtrlSetOnEvent($MENU_FILE_EXIT, "Menu")
  5291. $MENU_HELP = GUICtrlCreateMenu("Help")
  5292. $MENU_HELP_ABOUT = GUICtrlCreateMenuItem("About", $MENU_HELP)
  5293. GUICtrlSetOnEvent($MENU_HELP_ABOUT, "Menu")
  5294. $EDIT = GUICtrlCreateEdit("", 0, 0, 640, 460)
  5295. GUICtrlSetLimit($EDIT, 2147483647)
  5296. GUICtrlSetBkColor($EDIT, 14737632)
  5297. $SEARCH_CHECKBOX = GUICtrlCreateCheckbox("Search", 557, 465, 80, 14, 547)
  5298. GUICtrlSetOnEvent($SEARCH_CHECKBOX, "CheckBox")
  5299. $SEARCH_LABEL = GUICtrlCreateLabel("Current: 0 of 0", 150, 465, 400, 14)
  5300. GUICtrlSetState($SEARCH_LABEL, $GUI_DISABLE)
  5301. $SEARCH_INPUT = GUICtrlCreateInput("", 2, 484, 636, 20)
  5302. GUICtrlSetState($SEARCH_INPUT, $GUI_DISABLE)
  5303. GUICtrlSetBkColor($SEARCH_INPUT, 14737632)
  5304. $SEARCH_BUTTON_P = GUICtrlCreateButton("<", 2, 462, 20, 20)
  5305. GUICtrlSetState($SEARCH_BUTTON_P, $GUI_DISABLE)
  5306. GUICtrlSetOnEvent($SEARCH_BUTTON_P, "Button")
  5307. $SEARCH_BUTTON_N = GUICtrlCreateButton(">", 72, 462, 20, 20)
  5308. GUICtrlSetState($SEARCH_BUTTON_N, $GUI_DISABLE)
  5309. GUICtrlSetOnEvent($SEARCH_BUTTON_N, "Button")
  5310. $SEARCH_BUTTON_C = GUICtrlCreateButton("Search", 22, 462, 50, 20)
  5311. GUICtrlSetState($SEARCH_BUTTON_C, $GUI_DISABLE)
  5312. GUICtrlSetOnEvent($SEARCH_BUTTON_C, "Button")
  5313. $SEARCH_BUTTON_CHECKBOX = GUICtrlCreateCheckbox("Auto", 93, 465, 50, 14)
  5314. GUICtrlSetState($SEARCH_BUTTON_CHECKBOX, $GUI_DISABLE)
  5315. GUICtrlSetOnEvent($SEARCH_BUTTON_CHECKBOX, "CheckBox")
  5316. Global $STATUSBARPARTS[5] = [700]
  5317. Global $STATUSBARTEXTS[5] = [""]
  5318. $STATUSBAR = _GUICTRLSTATUSBAR_CREATE($MAINWINDOW, $STATUSBARPARTS, $STATUSBARTEXTS)
  5319. GUISetState(@SW_SHOW)
  5320. Global $UNKNOWN1, $UNKNOWN2, $UNKNOWN3, $UNKNOWN4, $UNKNOWN5, $FILE1, $FF_FILECOUNT
  5321. Dim $FF_STRINGSARRAY[2]
  5322. Dim $FF_STRINGDATAUNKNOWN1ARRAY[2]
  5323. Dim $FF_STRINGDATAUNKNOWN2ARRAY[2]
  5324. Global $SEARCH_ON = 0, $SEARCH_CURRENT = 0, $SEARCH_LAST = 0, $SEARCH_FIRST = 0
  5325. Global $SEARCH_LABEL_DATA = "", $SEARCH_LABEL_DATA_OLD = "", $SEARCH_BUTTON_AUTO
  5326. Global $FF_COUNT, $MODE, $FF_GROUP_COUNT, $FF_POINTER_COUNT, $FF_HEADER_1
  5327. While 1
  5328. SEARCH()
  5329. Sleep(1)
  5330. WEnd
  5331. Func SEARCH()
  5332. If $SEARCH_ON = 1 Then
  5333. $SEARCH_EDIT_GUICTRLREAD = GUICtrlRead($EDIT)
  5334. $SEARCH_INPUT_GUICTRLREAD = GUICtrlRead($SEARCH_INPUT)
  5335. $SEARCH_INPUT_STRINGINSTR_SP = 0
  5336. $SEARCH_LAST = 0
  5337. While 1
  5338. $SEARCH_INPUT_STRINGINSTR = StringInStr($SEARCH_EDIT_GUICTRLREAD, $SEARCH_INPUT_GUICTRLREAD, 0, 1, $SEARCH_INPUT_STRINGINSTR_SP + 1)
  5339. If $SEARCH_INPUT_STRINGINSTR >= 1 Then
  5340. $SEARCH_INPUT_STRINGINSTR_SP = $SEARCH_INPUT_STRINGINSTR + StringLen($SEARCH_INPUT_STRINGINSTR)
  5341. $SEARCH_LAST += 1
  5342. Else
  5343. EndIf
  5344. If $SEARCH_INPUT_STRINGINSTR = 0 Then ExitLoop
  5345. WEnd
  5346. If $SEARCH_LAST = 0 Then
  5347. $SEARCH_FIRST = 0
  5348. Else
  5349. $SEARCH_FIRST = 1
  5350. If $SEARCH_CURRENT = 0 Then $SEARCH_CURRENT = 1
  5351. EndIf
  5352. If $SEARCH_CURRENT > $SEARCH_LAST Then $SEARCH_CURRENT = $SEARCH_LAST
  5353. $SEARCH_LABEL_DATA = "Current: " & $SEARCH_CURRENT & " of " & $SEARCH_LAST
  5354. If $SEARCH_LABEL_DATA_OLD <> $SEARCH_LABEL_DATA Then
  5355. GUICtrlSetData($SEARCH_LABEL, $SEARCH_LABEL_DATA)
  5356. $SEARCH_LABEL_DATA_OLD = $SEARCH_LABEL_DATA
  5357. Else
  5358. EndIf
  5359. Else
  5360. EndIf
  5361. EndFunc
  5362. Func XDUWRITE($FF_FILE)
  5363. If $SEARCH_ON = 1 Then
  5364. GUICtrlSetState($SEARCH_LABEL, $GUI_DISABLE)
  5365. GUICtrlSetState($SEARCH_BUTTON_P, $GUI_DISABLE)
  5366. GUICtrlSetState($SEARCH_BUTTON_N, $GUI_DISABLE)
  5367. GUICtrlSetState($SEARCH_BUTTON_C, $GUI_DISABLE)
  5368. GUICtrlSetState($SEARCH_INPUT, $GUI_DISABLE)
  5369. GUICtrlSetState($SEARCH_BUTTON_CHECKBOX, $GUI_DISABLE)
  5370. Else
  5371. EndIf
  5372. GUICtrlSetState($SEARCH_CHECKBOX, $GUI_DISABLE)
  5373. GUICtrlSetState($MENU_FILE, $GUI_DISABLE)
  5374. GUICtrlSetState($MENU_HELP, $GUI_DISABLE)
  5375. GUICtrlSetState($EDIT, $GUI_DISABLE)
  5376. Switch $MODE
  5377. Case 0
  5378. $FF_DATAARRAY1 = StringRegExp(GUICtrlRead($EDIT), "(?:################)(?:[\x20]+Group:)([\d]+)(?:[\x20]+Index:)([\d]+)()(?:[\x20]+Time:)([\d]+)(?:[\x20]+Next:)([\d]+)", 3)
  5379. $FF_DATAARRAY2 = StringSplit(StringRegExpReplace(GUICtrlRead($EDIT), "(################)([\x20]+Group:)([\d]+)([\x20]+Index:)([\d]+)()([\x20]+Time:)([\d]+)([\x20]+Next:)([\d]+)", "################"), @CRLF & "################" & @CRLF, 1)
  5380. $FF_STRINGBINARY = Binary("0x")
  5381. $FF_DATAARRAY1[2] = 0
  5382. For $I = 2 To $FF_COUNT + 1 Step 1
  5383. $FF_STRINGBINARY &= StringToBinary(StringReplace($FF_DATAARRAY2[$I], @CRLF, "\n", 0, 1) & Chr(0))
  5384. If $I = $FF_COUNT + 1 Then
  5385. Else
  5386. $FF_DATAARRAY1[($I - 1) * 5 + 2] = BinaryLen($FF_STRINGBINARY)
  5387. EndIf
  5388. Next
  5389. $FF_HEADERBINARY = Binary("0x")
  5390. For $I = 0 To $FF_COUNT - 1 Step 1
  5391. $FF_HEADERBINARY &= Binary("0x" & SWAPENDIAN(Hex($FF_DATAARRAY1[$I * 5 + 0], 4), 2)) & Binary("0x" & SWAPENDIAN(Hex($FF_DATAARRAY1[$I * 5 + 1], 4), 2)) & Binary("0x" & SWAPENDIAN(Hex($FF_DATAARRAY1[$I * 5 + 2], 8), 4)) & Binary("0x" & SWAPENDIAN(Hex($FF_DATAARRAY1[$I * 5 + 3], 4), 2)) & Binary("0x" & SWAPENDIAN(Hex($FF_DATAARRAY1[$I * 5 + 4], 4), 2))
  5392. Next
  5393. $FE_DATAALL = $FF_HEADERBINARY & Binary("0x000000000000000000000000") & $FF_STRINGBINARY
  5394. $FF_FILE_OUT = FileOpen($FF_FILE, 2)
  5395. FileWrite($FF_FILE_OUT, $FE_DATAALL)
  5396. FileClose($FF_FILE_OUT)
  5397. Case 1
  5398. $FF_DATAARRAY1 = StringSplit(GUICtrlRead($EDIT), @CRLF & "################" & @CRLF, 1)
  5399. _ARRAYDELETE($FF_DATAARRAY1, 1)
  5400. $FF_POINTER = BinaryLen($FF_HEADER_1) + $FF_POINTER_COUNT * 4
  5401. $FF_POINTER2 = $FF_POINTER
  5402. $FF_STRINGBINARY = Binary("0x")
  5403. For $I = 1 To $FF_POINTER_COUNT Step 1
  5404. $FF_HEADER_1 &= Binary("0x" & SWAPENDIAN(Hex($FF_POINTER, 8), 4))
  5405. $FF_STRINGBINARY &= StringToBinary(StringReplace($FF_DATAARRAY1[$I], @CRLF, Chr(10), 0, 1) & Chr(0) & Chr(0), 2)
  5406. $FF_POINTER = $FF_POINTER2 + BinaryLen($FF_STRINGBINARY)
  5407. Next
  5408. $FE_DATAALL = $FF_HEADER_1 & $FF_STRINGBINARY
  5409. $FF_FILE_OUT = FileOpen($FF_FILE, 2)
  5410. FileWrite($FF_FILE_OUT, $FE_DATAALL)
  5411. FileClose($FF_FILE_OUT)
  5412. Case Else
  5413. EndSwitch
  5414. If $SEARCH_ON = 1 Then
  5415. GUICtrlSetState($SEARCH_LABEL, $GUI_ENABLE)
  5416. GUICtrlSetState($SEARCH_BUTTON_P, $GUI_ENABLE)
  5417. GUICtrlSetState($SEARCH_BUTTON_N, $GUI_ENABLE)
  5418. GUICtrlSetState($SEARCH_BUTTON_C, $GUI_ENABLE)
  5419. GUICtrlSetState($SEARCH_INPUT, $GUI_ENABLE)
  5420. GUICtrlSetState($SEARCH_BUTTON_CHECKBOX, $GUI_ENABLE)
  5421. Else
  5422. EndIf
  5423. GUICtrlSetState($SEARCH_CHECKBOX, $GUI_ENABLE)
  5424. GUICtrlSetState($MENU_FILE, $GUI_ENABLE)
  5425. GUICtrlSetState($MENU_HELP, $GUI_ENABLE)
  5426. GUICtrlSetState($EDIT, $GUI_ENABLE)
  5427. EndFunc
  5428. Func XDUREAD($FF_FILE)
  5429. If $SEARCH_ON = 1 Then
  5430. GUICtrlSetState($SEARCH_LABEL, $GUI_DISABLE)
  5431. GUICtrlSetState($SEARCH_BUTTON_P, $GUI_DISABLE)
  5432. GUICtrlSetState($SEARCH_BUTTON_N, $GUI_DISABLE)
  5433. GUICtrlSetState($SEARCH_BUTTON_C, $GUI_DISABLE)
  5434. GUICtrlSetState($SEARCH_INPUT, $GUI_DISABLE)
  5435. GUICtrlSetState($SEARCH_BUTTON_CHECKBOX, $GUI_DISABLE)
  5436. Else
  5437. EndIf
  5438. GUICtrlSetState($SEARCH_CHECKBOX, $GUI_DISABLE)
  5439. GUICtrlSetState($MENU_FILE, $GUI_DISABLE)
  5440. GUICtrlSetState($MENU_HELP, $GUI_DISABLE)
  5441. GUICtrlSetState($EDIT, $GUI_DISABLE)
  5442. Dim $SZDRIVE, $SZDIR, $SZFNAME, $SZEXT
  5443. $FF_FILENAME = _PATHSPLIT($FF_FILE, $SZDRIVE, $SZDIR, $SZFNAME, $SZEXT)
  5444. $FF_FILENAME = $FF_FILENAME[UBound($FF_FILENAME) - 2] & $FF_FILENAME[UBound($FF_FILENAME) - 1]
  5445. Select
  5446. Case StringRegExp($FF_FILENAME, "hint[[:word:][:graph:]]+.bin") = 1
  5447. $MODE = 0
  5448. Case StringRegExp($FF_FILENAME, "Text[[:word:][:graph:]]+.utx") = 1
  5449. $MODE = 1
  5450. Case Else
  5451. $MODE = 0
  5452. EndSelect
  5453. Switch $MODE
  5454. Case 0
  5455. $FF_FILE_OPEN = FileOpen($FF_FILE, 16)
  5456. FileSetPos($FF_FILE_OPEN, 0, 0)
  5457. $FF_ARRAY_1 = ""
  5458. Do
  5459. $FF_READ_1 = Dec(Hex(SWAPENDIAN(FileRead($FF_FILE_OPEN, 2), 2), 4))
  5460. $FF_READ_2 = Dec(Hex(SWAPENDIAN(FileRead($FF_FILE_OPEN, 2), 2), 4))
  5461. $FF_READ_3 = Dec(Hex(SWAPENDIAN(FileRead($FF_FILE_OPEN, 4), 4), 8))
  5462. $FF_READ_4 = Dec(Hex(SWAPENDIAN(FileRead($FF_FILE_OPEN, 2), 2), 4))
  5463. $FF_READ_5 = Dec(Hex(SWAPENDIAN(FileRead($FF_FILE_OPEN, 2), 2), 4))
  5464. $FF_ARRAY_1 &= $FF_READ_1 & "|" & $FF_READ_2 & "|" & $FF_READ_3 & "|" & $FF_READ_4 & "|" & $FF_READ_5 & "|"
  5465. Until $FF_READ_1 = 0 And $FF_READ_2 = 0 And $FF_READ_3 = 0 And $FF_READ_4 = 0 And $FF_READ_5 = 0
  5466. $FF_ARRAY_1 = StringSplit($FF_ARRAY_1, "|", 1)
  5467. $FF_COUNT = ($FF_ARRAY_1[0] - 6) / 5
  5468. $FF_DATA = @CRLF
  5469. For $I = 1 To $FF_ARRAY_1[0] - 6 Step 5
  5470. FileSetPos($FF_FILE_OPEN, $FF_COUNT * 12 + 12 + $FF_ARRAY_1[$I + 2], 0)
  5471. $FF_STRING = StringReplace(String(BinaryToString(FileRead($FF_FILE_OPEN))), "\n", @CRLF, 0, 1)
  5472. $FF_DATA &= "################" & " Group:" & $FF_ARRAY_1[$I + 0] & " Index:" & $FF_ARRAY_1[$I + 1] & " Time:" & $FF_ARRAY_1[$I + 3] & " Next:" & $FF_ARRAY_1[$I + 4] & @CRLF & $FF_STRING & @CRLF
  5473. Next
  5474. FileClose($FF_FILE_OPEN)
  5475. $FF_DATA &= "################" & @CRLF
  5476. Case 1
  5477. $FF_FILE_OPEN = FileOpen($FF_FILE, 16)
  5478. FileSetPos($FF_FILE_OPEN, 0, 0)
  5479. $FF_DATA = @CRLF
  5480. $FF_GROUP_COUNT = Dec(Hex(SWAPENDIAN(FileRead($FF_FILE_OPEN, 4), 4), 8))
  5481. $FF_POINTER_COUNT = 0
  5482. For $I = 1 To $FF_GROUP_COUNT Step 1
  5483. $FF_POINTER_COUNT += Dec(Hex(SWAPENDIAN(FileRead($FF_FILE_OPEN, 4), 4), 8))
  5484. Next
  5485. $FF_POINTER = ""
  5486. For $I = 1 To $FF_POINTER_COUNT Step 1
  5487. $FF_POINTER &= Dec(Hex(SWAPENDIAN(FileRead($FF_FILE_OPEN, 4), 4), 8)) & "|"
  5488. Next
  5489. $FF_POINTER = StringSplit($FF_POINTER, "|", 1)
  5490. For $I = 1 To $FF_POINTER_COUNT Step 1
  5491. FileSetPos($FF_FILE_OPEN, $FF_POINTER[$I], 0)
  5492. $FF_DATA &= "################" & @CRLF & StringReplace(String(BinaryToString(FileRead($FF_FILE_OPEN), 2)), Chr(10), @CRLF, 0, 1) & @CRLF
  5493. Next
  5494. FileSetPos($FF_FILE_OPEN, 0, 0)
  5495. $FF_HEADER_1 = FileRead($FF_FILE_OPEN, 4 + $FF_GROUP_COUNT * 4)
  5496. FileClose($FF_FILE_OPEN)
  5497. $FF_DATA &= "################" & @CRLF
  5498. Case Else
  5499. $FF_DATA = ""
  5500. EndSwitch
  5501. GUICtrlSetData($EDIT, $FF_DATA)
  5502. If $SEARCH_ON = 1 Then
  5503. GUICtrlSetState($SEARCH_LABEL, $GUI_ENABLE)
  5504. GUICtrlSetState($SEARCH_BUTTON_P, $GUI_ENABLE)
  5505. GUICtrlSetState($SEARCH_BUTTON_N, $GUI_ENABLE)
  5506. GUICtrlSetState($SEARCH_BUTTON_C, $GUI_ENABLE)
  5507. GUICtrlSetState($SEARCH_INPUT, $GUI_ENABLE)
  5508. GUICtrlSetState($SEARCH_BUTTON_CHECKBOX, $GUI_ENABLE)
  5509. Else
  5510. EndIf
  5511. GUICtrlSetState($SEARCH_CHECKBOX, $GUI_ENABLE)
  5512. GUICtrlSetState($MENU_FILE, $GUI_ENABLE)
  5513. GUICtrlSetState($MENU_HELP, $GUI_ENABLE)
  5514. GUICtrlSetState($EDIT, $GUI_ENABLE)
  5515. GUICtrlSetState($MENU_FILE_SAVE, $GUI_ENABLE)
  5516. EndFunc
  5517. Func MENU()
  5518. Switch @GUI_CtrlId
  5519. Case $MENU_FILE_OPEN
  5520. $FILEOPEN = FileOpenDialog("Open", ".\", "Sonic Heroes Files (hint*.bin;Text*.utx)|All Files (*.*)", 1)
  5521. If @error Then
  5522. Else
  5523. $FILEOPENNAME = StringSplit($FILEOPEN, "\", @CRLF)
  5524. $FILEOPENNAME = $FILEOPENNAME[$FILEOPENNAME[0]]
  5525. XDUREAD($FILEOPEN)
  5526. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR, $FILEOPEN, 0)
  5527. $FILE1 = $FILEOPEN
  5528. EndIf
  5529. Case $MENU_FILE_SAVE
  5530. XDUWRITE($FILE1)
  5531. _GUICTRLSTATUSBAR_SETTEXT($STATUSBAR, $FILE1, 0)
  5532. Case $MENU_FILE_SAVEAS
  5533. $FILESAVE = FileSaveDialog("SaveAs", ".\", "Images (*.jpg;*.bmp)|All Files (*.*)", 2)
  5534. MsgBox(4096, "SaveAs", $FILESAVE)
  5535. Case $MENU_FILE_EXIT
  5536. Exit
  5537. Case $MENU_HELP_ABOUT
  5538. MsgBox(4096, "About", "Created by Lee Rekka")
  5539. Case Else
  5540. EndSwitch
  5541. EndFunc
  5542. Func CHECKBOX()
  5543. Switch @GUI_CtrlId
  5544. Case $SEARCH_CHECKBOX
  5545. Switch GUICtrlRead(@GUI_CtrlId)
  5546. Case $GUI_UNCHECKED
  5547. $SEARCH_ON = 0
  5548. GUICtrlSetState($SEARCH_LABEL, $GUI_DISABLE)
  5549. GUICtrlSetState($SEARCH_BUTTON_P, $GUI_DISABLE)
  5550. GUICtrlSetState($SEARCH_BUTTON_N, $GUI_DISABLE)
  5551. GUICtrlSetState($SEARCH_BUTTON_C, $GUI_DISABLE)
  5552. GUICtrlSetState($SEARCH_INPUT, $GUI_DISABLE)
  5553. GUICtrlSetState($SEARCH_BUTTON_CHECKBOX, $GUI_DISABLE)
  5554. Case $GUI_CHECKED
  5555. $SEARCH_ON = 1
  5556. GUICtrlSetState($SEARCH_LABEL, $GUI_ENABLE)
  5557. GUICtrlSetState($SEARCH_BUTTON_P, $GUI_ENABLE)
  5558. GUICtrlSetState($SEARCH_BUTTON_N, $GUI_ENABLE)
  5559. GUICtrlSetState($SEARCH_BUTTON_C, $GUI_ENABLE)
  5560. GUICtrlSetState($SEARCH_INPUT, $GUI_ENABLE)
  5561. GUICtrlSetState($SEARCH_BUTTON_CHECKBOX, $GUI_ENABLE)
  5562. EndSwitch
  5563. Case $SEARCH_BUTTON_CHECKBOX
  5564. Switch GUICtrlRead(@GUI_CtrlId)
  5565. Case $GUI_UNCHECKED
  5566. $SEARCH_BUTTON_AUTO = 0
  5567. Case $GUI_CHECKED
  5568. $SEARCH_BUTTON_AUTO = 1
  5569. EndSwitch
  5570. Case Else
  5571. EndSwitch
  5572. EndFunc
  5573. Func BUTTON()
  5574. Switch @GUI_CtrlId
  5575. Case $SEARCH_BUTTON_P
  5576. If $SEARCH_CURRENT > $SEARCH_FIRST Then $SEARCH_CURRENT -= 1
  5577. If $SEARCH_BUTTON_AUTO = 1 Then SEARCH_SELECT()
  5578. Case $SEARCH_BUTTON_N
  5579. If $SEARCH_CURRENT < $SEARCH_LAST Then $SEARCH_CURRENT += 1
  5580. If $SEARCH_BUTTON_AUTO = 1 Then SEARCH_SELECT()
  5581. Case $SEARCH_BUTTON_C
  5582. SEARCH_SELECT()
  5583. Case Else
  5584. EndSwitch
  5585. EndFunc
  5586. Func SEARCH_SELECT()
  5587. If $SEARCH_CURRENT = 0 Then
  5588. Else
  5589. $SEARCH_BUTTON_C_EDIT_GUICTRLREAD = GUICtrlRead($EDIT)
  5590. $SEARCH_BUTTON_C_INPUT_GUICTRLREAD = GUICtrlRead($SEARCH_INPUT)
  5591. $SEARCH_BUTTON_C_INPUT_STRINGLEN = StringLen($SEARCH_BUTTON_C_INPUT_GUICTRLREAD)
  5592. $SEARCH_BUTTON_C_EDIT_STRINGINSTR = StringInStr($SEARCH_BUTTON_C_EDIT_GUICTRLREAD, $SEARCH_BUTTON_C_INPUT_GUICTRLREAD, 0, $SEARCH_CURRENT, 1)
  5593. GUICtrlSetState($EDIT, $GUI_FOCUS)
  5594. _GUICTRLEDIT_SETSEL($EDIT, $SEARCH_BUTTON_C_EDIT_STRINGINSTR - 1, $SEARCH_BUTTON_C_EDIT_STRINGINSTR + $SEARCH_BUTTON_C_INPUT_STRINGLEN - 1)
  5595. _GUICTRLEDIT_SCROLL($EDIT, $SB_SCROLLCARET)
  5596. EndIf
  5597. EndFunc
  5598. Func _EXIT()
  5599. Exit
  5600. EndFunc
  5601. Func CLOSECLICKED()
  5602. If @GUI_WinHandle = $MAINWINDOW Then
  5603. _EXIT()
  5604. EndIf
  5605. EndFunc
  5606. ; DeTokenise by myAut2Exe >The Open Source AutoIT/AutoHotKey script decompiler< 2.10 build(161)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement