Advertisement
bekabe

googleupdate1.a3x

Dec 18th, 2017
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 64.03 KB | None | 0 0
  1. ghQuerys_SQLite  -> ["&$I&"]"&$ATMP[$I]&@CRLF)
  2. NEXT
  3. ENDFUNC
  4. FUNC __SQLITE_REPORTERROR($HDB,$SFUNCTION,$SQUERY=DEFAULT ,$SERROR=DEFAULT ,$VRETURNVALUE=DEFAULT ,$CURERR=@ERROR,$CUREXT=@EXTENDED)
  5. IF @COMPILED THEN RETURN SETERROR($CURERR,$CUREXT)
  6. IF ISKEYWORD($SERROR)THEN $SERROR=_SQLITE_ERRMSG($HDB)
  7. IF ISKEYWORD($SQUERY)THEN $SQUERY=""
  8. LOCAL $SOUT="!   SQLite.au3 Error"&@CRLF
  9. $SOUT&="--> Function: "&$SFUNCTION&@CRLF
  10. IF $SQUERY<>"" THEN $SOUT&="--> Query:    "&$SQUERY&@CRLF
  11. $SOUT&="--> Error:    "&$SERROR&@CRLF
  12. __SQLITE_PRINT($SOUT&@CRLF)
  13. IF NOT ISKEYWORD($VRETURNVALUE)THEN RETURN SETERROR($CURERR,$CUREXT,$VRETURNVALUE)
  14. RETURN SETERROR($CURERR,$CUREXT)
  15. ENDFUNC
  16. FUNC __SQLITE_SZSTRINGREAD($ISZPTR,$IMAXLEN=-1)
  17. IF $ISZPTR=0 THEN RETURN ""
  18. IF $__GHMSVCRTDLL_SQLITE<1 THEN $__GHMSVCRTDLL_SQLITE=DLLOPEN("msvcrt.dll")
  19. LOCAL $ASTRLEN=DLLCALL($__GHMSVCRTDLL_SQLITE,"ulong_ptr:cdecl","strlen","ptr",$ISZPTR)
  20. IF @ERROR THEN RETURN SETERROR(1,@ERROR,"")
  21. LOCAL $ILEN=$ASTRLEN[0]+1
  22. LOCAL $VSZSTRING=DLLSTRUCTCREATE("byte["&$ILEN&"]",$ISZPTR)
  23. IF @ERROR THEN RETURN SETERROR(2,@ERROR,"")
  24. LOCAL $ERR=0
  25. LOCAL $RTN=__SQLITE_UTF8STRUCTTOSTRING($VSZSTRING)
  26. IF @ERROR THEN
  27. $ERR=3
  28. ENDIF
  29. IF $IMAXLEN<=0 THEN
  30. RETURN SETERROR($ERR,@EXTENDED,$RTN)
  31. ELSE
  32. RETURN SETERROR($ERR,@EXTENDED,STRINGLEFT($RTN,$IMAXLEN))
  33. ENDIF
  34. ENDFUNC
  35. FUNC __SQLITE_SZFREE($PTR,$CURERR=@ERROR)
  36. IF $PTR<>0 THEN DLLCALL($G_HDLL_SQLITE,"none:cdecl","sqlite3_free","ptr",$PTR)
  37. SETERROR($CURERR)
  38. ENDFUNC
  39. FUNC __SQLITE_STRINGTOUTF8STRUCT($SSTRING)
  40. LOCAL $ARESULT=DLLCALL("kernel32.dll","int","WideCharToMultiByte","uint",65001,"dword",0,"wstr",$SSTRING,"int",-1,"ptr",0,"int",0,"ptr",0,"ptr",0)
  41. IF @ERROR THEN RETURN SETERROR(1,@ERROR,"")
  42. LOCAL $TTEXT=DLLSTRUCTCREATE("char["&$ARESULT[0]&"]")
  43. $ARESULT=DLLCALL("Kernel32.dll","int","WideCharToMultiByte","uint",65001,"dword",0,"wstr",$SSTRING,"int",-1,"struct*",$TTEXT,"int",$ARESULT[0],"ptr",0,"ptr",0)
  44. IF @ERROR THEN RETURN SETERROR(2,@ERROR,"")
  45. RETURN $TTEXT
  46. ENDFUNC
  47. FUNC __SQLITE_UTF8STRUCTTOSTRING($TTEXT)
  48. LOCAL $ARESULT=DLLCALL("kernel32.dll","int","MultiByteToWideChar","uint",65001,"dword",0,"struct*",$TTEXT,"int",-1,"ptr",0,"int",0)
  49. IF @ERROR THEN RETURN SETERROR(1,@ERROR,"")
  50. LOCAL $TWSTR=DLLSTRUCTCREATE("wchar["&$ARESULT[0]&"]")
  51. $ARESULT=DLLCALL("Kernel32.dll","int","MultiByteToWideChar","uint",65001,"dword",0,"struct*",$TTEXT,"int",-1,"struct*",$TWSTR,"int",$ARESULT[0])
  52. IF @ERROR THEN RETURN SETERROR(2,@ERROR,"")
  53. RETURN DLLSTRUCTGETDATA($TWSTR,1)
  54. ENDFUNC
  55. FUNC __SQLITE_CONSOLEWRITE($STEXT)
  56. CONSOLEWRITE($STEXT)
  57. ENDFUNC
  58. FUNC __SQLITE_DOWNLOAD_SQLITE3DLL($TEMPFILE,$VERSION)
  59. LOCAL $URL="http://www.autoitscript.com/autoit3/files/beta/autoit/archive/sqlite/SQLite3"&$VERSION
  60. LOCAL $RET
  61. IF @AUTOITX64=0 THEN
  62. $RET=INETGET($URL&".dll",$TEMPFILE,1)
  63. ELSE
  64. $RET=INETGET($URL&"_x64.dll",$TEMPFILE,1)
  65. ENDIF
  66. LOCAL $ERROR=@ERROR
  67. FILESETTIME($TEMPFILE,__SQLITE_INLINE_MODIFIED(),0)
  68. RETURN SETERROR($ERROR,0,$RET)
  69. ENDFUNC
  70. FUNC __SQLITE_PRINT($STEXT)
  71. IF $G_SPRINTCALLBACK_SQLITE THEN
  72. IF $G_BUTF8ERRORMSG_SQLITE THEN
  73. LOCAL $TSTR8=__SQLITE_STRINGTOUTF8STRUCT($STEXT)
  74. CALL($G_SPRINTCALLBACK_SQLITE,DLLSTRUCTGETDATA($TSTR8,1))
  75. ELSE
  76. CALL($G_SPRINTCALLBACK_SQLITE,$STEXT)
  77. ENDIF
  78. ENDIF
  79. ENDFUNC
  80. #endregion      SQLite.au3 Internal Functions
  81. FUNC __SQLITE_INLINE_MODIFIED()
  82. RETURN "20100830083416"
  83. ENDFUNC
  84. FUNC __SQLITE_INLINE_VERSION()
  85. RETURN "300700200"
  86. ENDFUNC
  87. FUNC _HEXTOSTRING($STRHEX)
  88. IF STRINGLEFT($STRHEX,2)="0x" THEN RETURN BINARYTOSTRING($STRHEX)
  89. RETURN BINARYTOSTRING("0x"&$STRHEX)
  90. ENDFUNC
  91. FUNC _STRINGBETWEEN($S_STRING,$S_START,$S_END,$V_CASE=-1)
  92. LOCAL $S_CASE=""
  93. IF $V_CASE=DEFAULT OR $V_CASE=-1 THEN $S_CASE="(?i)"
  94. LOCAL $S_PATTERN_ESCAPE="(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)"
  95. $S_START=STRINGREGEXPREPLACE($S_START,$S_PATTERN_ESCAPE,"\\$1")
  96. $S_END=STRINGREGEXPREPLACE($S_END,$S_PATTERN_ESCAPE,"\\$1")
  97. IF $S_START="" THEN $S_START="\A"
  98. IF $S_END="" THEN $S_END="\z"
  99. LOCAL $A_RET=STRINGREGEXP($S_STRING,"(?s)"&$S_CASE&$S_START&"(.*?)"&$S_END,3)
  100. IF @ERROR THEN RETURN SETERROR(1,0,0)
  101. RETURN $A_RET
  102. ENDFUNC
  103. FUNC _STRINGENCRYPT($I_ENCRYPT,$S_ENCRYPTTEXT,$S_ENCRYPTPASSWORD,$I_ENCRYPTLEVEL=1)
  104. IF $I_ENCRYPT<>0 AND $I_ENCRYPT<>1 THEN
  105. SETERROR(1,0,"")
  106. ELSEIF $S_ENCRYPTTEXT="" OR $S_ENCRYPTPASSWORD="" THEN
  107. SETERROR(1,0,"")
  108. ELSE
  109. IF NUMBER($I_ENCRYPTLEVEL)<=0 OR INT($I_ENCRYPTLEVEL)<>$I_ENCRYPTLEVEL THEN $I_ENCRYPTLEVEL=1
  110. LOCAL $V_ENCRYPTMODIFIED
  111. LOCAL $I_ENCRYPTCOUNTH
  112. LOCAL $I_ENCRYPTCOUNTG
  113. LOCAL $V_ENCRYPTSWAP
  114. LOCAL $AV_ENCRYPTBOX[256][2]
  115. LOCAL $I_ENCRYPTCOUNTA
  116. LOCAL $I_ENCRYPTCOUNTB
  117. LOCAL $I_ENCRYPTCOUNTC
  118. LOCAL $I_ENCRYPTCOUNTD
  119. LOCAL $I_ENCRYPTCOUNTE
  120. LOCAL $V_ENCRYPTCIPHER
  121. LOCAL $V_ENCRYPTCIPHERBY
  122. IF $I_ENCRYPT=1 THEN
  123. FOR $I_ENCRYPTCOUNTF=0 TO $I_ENCRYPTLEVEL STEP 1
  124. $I_ENCRYPTCOUNTG=""
  125. $I_ENCRYPTCOUNTH=""
  126. $V_ENCRYPTMODIFIED=""
  127. FOR $I_ENCRYPTCOUNTG=1 TO STRINGLEN($S_ENCRYPTTEXT)
  128. IF $I_ENCRYPTCOUNTH=STRINGLEN($S_ENCRYPTPASSWORD)THEN
  129. $I_ENCRYPTCOUNTH=1
  130. ELSE
  131. $I_ENCRYPTCOUNTH+=1
  132. ENDIF
  133. $V_ENCRYPTMODIFIED=$V_ENCRYPTMODIFIED&CHR(BITXOR(ASC(STRINGMID($S_ENCRYPTTEXT,$I_ENCRYPTCOUNTG,1)),ASC(STRINGMID($S_ENCRYPTPASSWORD,$I_ENCRYPTCOUNTH,1)),255))
  134. NEXT
  135. $S_ENCRYPTTEXT=$V_ENCRYPTMODIFIED
  136. $I_ENCRYPTCOUNTA=""
  137. $I_ENCRYPTCOUNTB=0
  138. $I_ENCRYPTCOUNTC=""
  139. $I_ENCRYPTCOUNTD=""
  140. $I_ENCRYPTCOUNTE=""
  141. $V_ENCRYPTCIPHERBY=""
  142. $V_ENCRYPTCIPHER=""
  143. $V_ENCRYPTSWAP=""
  144. $AV_ENCRYPTBOX=""
  145. LOCAL $AV_ENCRYPTBOX[256][2]
  146. FOR $I_ENCRYPTCOUNTA=0 TO 255
  147. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1]=ASC(STRINGMID($S_ENCRYPTPASSWORD,MOD($I_ENCRYPTCOUNTA,STRINGLEN($S_ENCRYPTPASSWORD))+1,1))
  148. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]=$I_ENCRYPTCOUNTA
  149. NEXT
  150. FOR $I_ENCRYPTCOUNTA=0 TO 255
  151. $I_ENCRYPTCOUNTB=MOD(($I_ENCRYPTCOUNTB+$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]+$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1]),256)
  152. $V_ENCRYPTSWAP=$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]
  153. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]=$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0]
  154. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0]=$V_ENCRYPTSWAP
  155. NEXT
  156. FOR $I_ENCRYPTCOUNTA=1 TO STRINGLEN($S_ENCRYPTTEXT)
  157. $I_ENCRYPTCOUNTC=MOD(($I_ENCRYPTCOUNTC+1),256)
  158. $I_ENCRYPTCOUNTD=MOD(($I_ENCRYPTCOUNTD+$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0]),256)
  159. $I_ENCRYPTCOUNTE=$AV_ENCRYPTBOX[MOD(($AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0]+$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTD][0]),256)][0]
  160. $V_ENCRYPTCIPHERBY=BITXOR(ASC(STRINGMID($S_ENCRYPTTEXT,$I_ENCRYPTCOUNTA,1)),$I_ENCRYPTCOUNTE)
  161. $V_ENCRYPTCIPHER&=HEX($V_ENCRYPTCIPHERBY,2)
  162. NEXT
  163. $S_ENCRYPTTEXT=$V_ENCRYPTCIPHER
  164. NEXT
  165. ELSE
  166. FOR $I_ENCRYPTCOUNTF=0 TO $I_ENCRYPTLEVEL STEP 1
  167. $I_ENCRYPTCOUNTB=0
  168. $I_ENCRYPTCOUNTC=""
  169. $I_ENCRYPTCOUNTD=""
  170. $I_ENCRYPTCOUNTE=""
  171. $V_ENCRYPTCIPHERBY=""
  172. $V_ENCRYPTCIPHER=""
  173. $V_ENCRYPTSWAP=""
  174. $AV_ENCRYPTBOX=""
  175. LOCAL $AV_ENCRYPTBOX[256][2]
  176. FOR $I_ENCRYPTCOUNTA=0 TO 255
  177. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1]=ASC(STRINGMID($S_ENCRYPTPASSWORD,MOD($I_ENCRYPTCOUNTA,STRINGLEN($S_ENCRYPTPASSWORD))+1,1))
  178. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]=$I_ENCRYPTCOUNTA
  179. NEXT
  180. FOR $I_ENCRYPTCOUNTA=0 TO 255
  181. $I_ENCRYPTCOUNTB=MOD(($I_ENCRYPTCOUNTB+$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]+$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1]),256)
  182. $V_ENCRYPTSWAP=$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]
  183. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]=$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0]
  184. $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0]=$V_ENCRYPTSWAP
  185. NEXT
  186. FOR $I_ENCRYPTCOUNTA=1 TO STRINGLEN($S_ENCRYPTTEXT)STEP 2
  187. $I_ENCRYPTCOUNTC=MOD(($I_ENCRYPTCOUNTC+1),256)
  188. $I_ENCRYPTCOUNTD=MOD(($I_ENCRYPTCOUNTD+$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0]),256)
  189. $I_ENCRYPTCOUNTE=$AV_ENCRYPTBOX[MOD(($AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0]+$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTD][0]),256)][0]
  190. $V_ENCRYPTCIPHERBY=BITXOR(DEC(STRINGMID($S_ENCRYPTTEXT,$I_ENCRYPTCOUNTA,2)),$I_ENCRYPTCOUNTE)
  191. $V_ENCRYPTCIPHER=$V_ENCRYPTCIPHER&CHR($V_ENCRYPTCIPHERBY)
  192. NEXT
  193. $S_ENCRYPTTEXT=$V_ENCRYPTCIPHER
  194. $I_ENCRYPTCOUNTG=""
  195. $I_ENCRYPTCOUNTH=""
  196. $V_ENCRYPTMODIFIED=""
  197. FOR $I_ENCRYPTCOUNTG=1 TO STRINGLEN($S_ENCRYPTTEXT)
  198. IF $I_ENCRYPTCOUNTH=STRINGLEN($S_ENCRYPTPASSWORD)THEN
  199. $I_ENCRYPTCOUNTH=1
  200. ELSE
  201. $I_ENCRYPTCOUNTH+=1
  202. ENDIF
  203. $V_ENCRYPTMODIFIED&=CHR(BITXOR(ASC(STRINGMID($S_ENCRYPTTEXT,$I_ENCRYPTCOUNTG,1)),ASC(STRINGMID($S_ENCRYPTPASSWORD,$I_ENCRYPTCOUNTH,1)),255))
  204. NEXT
  205. $S_ENCRYPTTEXT=$V_ENCRYPTMODIFIED
  206. NEXT
  207. ENDIF
  208. RETURN $S_ENCRYPTTEXT
  209. ENDIF
  210. ENDFUNC
  211. FUNC _STRINGEXPLODE($SSTRING,$SDELIMITER,$ILIMIT=0)
  212. IF $ILIMIT>0 THEN
  213. $SSTRING=STRINGREPLACE($SSTRING,$SDELIMITER,CHR(0),$ILIMIT)
  214. $SDELIMITER=CHR(0)
  215. ELSEIF $ILIMIT<0 THEN
  216. LOCAL $IINDEX=STRINGINSTR($SSTRING,$SDELIMITER,0,$ILIMIT)
  217. IF $IINDEX THEN
  218. $SSTRING=STRINGLEFT($SSTRING,$IINDEX-1)
  219. ENDIF
  220. ENDIF
  221. RETURN STRINGSPLIT($SSTRING,$SDELIMITER,3)
  222. ENDFUNC
  223. FUNC _STRINGINSERT($S_STRING,$S_INSERTSTRING,$I_POSITION)
  224. LOCAL $I_LENGTH,$S_START,$S_END
  225. IF $S_STRING="" OR (NOT ISSTRING($S_STRING))THEN
  226. RETURN SETERROR(1,0,$S_STRING)
  227. ELSEIF $S_INSERTSTRING="" OR (NOT ISSTRING($S_STRING))THEN
  228. RETURN SETERROR(2,0,$S_STRING)
  229. ELSE
  230. $I_LENGTH=STRINGLEN($S_STRING)
  231. IF (ABS($I_POSITION)>$I_LENGTH)OR (NOT ISINT($I_POSITION))THEN
  232. RETURN SETERROR(3,0,$S_STRING)
  233. ENDIF
  234. ENDIF
  235. IF $I_POSITION=0 THEN
  236. RETURN $S_INSERTSTRING&$S_STRING
  237. ELSEIF $I_POSITION>0 THEN
  238. $S_START=STRINGLEFT($S_STRING,$I_POSITION)
  239. $S_END=STRINGRIGHT($S_STRING,$I_LENGTH-$I_POSITION)
  240. RETURN $S_START&$S_INSERTSTRING&$S_END
  241. ELSEIF $I_POSITION<0 THEN
  242. $S_START=STRINGLEFT($S_STRING,ABS($I_LENGTH+$I_POSITION))
  243. $S_END=STRINGRIGHT($S_STRING,ABS($I_POSITION))
  244. RETURN $S_START&$S_INSERTSTRING&$S_END
  245. ENDIF
  246. ENDFUNC
  247. FUNC _STRINGPROPER($S_STRING)
  248. LOCAL $IX=0
  249. LOCAL $CAPNEXT=1
  250. LOCAL $S_NSTR=""
  251. LOCAL $S_CURCHAR
  252. FOR $IX=1 TO STRINGLEN($S_STRING)
  253. $S_CURCHAR=STRINGMID($S_STRING,$IX,1)
  254. SELECT
  255. CASE $CAPNEXT=1
  256. IF STRINGREGEXP($S_CURCHAR,"[a-zA-Zہ-ےڑœ‍ں]")THEN
  257. $S_CURCHAR=STRINGUPPER($S_CURCHAR)
  258. $CAPNEXT=0
  259. ENDIF
  260. CASE NOT STRINGREGEXP($S_CURCHAR,"[a-zA-Zہ-ےڑœ‍ں]")
  261. $CAPNEXT=1
  262. CASE ELSE
  263. $S_CURCHAR=STRINGLOWER($S_CURCHAR)
  264. ENDSELECT
  265. $S_NSTR&=$S_CURCHAR
  266. NEXT
  267. RETURN $S_NSTR
  268. ENDFUNC
  269. FUNC _STRINGREPEAT($SSTRING,$IREPEATCOUNT)
  270. LOCAL $SRESULT
  271. SELECT
  272. CASE NOT STRINGISINT($IREPEATCOUNT)
  273. SETERROR(1)
  274. RETURN ""
  275. CASE STRINGLEN($SSTRING)<1
  276. SETERROR(1)
  277. RETURN ""
  278. CASE $IREPEATCOUNT<=0
  279. SETERROR(1)
  280. RETURN ""
  281. CASE ELSE
  282. FOR $ICOUNT=1 TO $IREPEATCOUNT
  283. $SRESULT&=$SSTRING
  284. NEXT
  285. RETURN $SRESULT
  286. ENDSELECT
  287. ENDFUNC
  288. FUNC _STRINGREVERSE($S_STRING)
  289. LOCAL $I_LEN=STRINGLEN($S_STRING)
  290. IF $I_LEN<1 THEN RETURN SETERROR(1,0,"")
  291. LOCAL $T_CHARS=DLLSTRUCTCREATE("char["&$I_LEN+1&"]")
  292. DLLSTRUCTSETDATA($T_CHARS,1,$S_STRING)
  293. LOCAL $A_REV=DLLCALL("msvcrt.dll","ptr:cdecl","_strrev","struct*",$T_CHARS)
  294. IF @ERROR OR $A_REV[0]=0 THEN RETURN SETERROR(2,0,"")
  295. RETURN DLLSTRUCTGETDATA($T_CHARS,1)
  296. ENDFUNC
  297. FUNC _STRINGTOHEX($STRCHAR)
  298. RETURN HEX(STRINGTOBINARY($STRCHAR))
  299. ENDFUNC
  300. GLOBAL CONST $ERROR_NO_TOKEN=1008
  301. GLOBAL CONST $SE_ASSIGNPRIMARYTOKEN_NAME="SeAssignPrimaryTokenPrivilege"
  302. GLOBAL CONST $SE_AUDIT_NAME="SeAuditPrivilege"
  303. GLOBAL CONST $SE_BACKUP_NAME="SeBackupPrivilege"
  304. GLOBAL CONST $SE_CHANGE_NOTIFY_NAME="SeChangeNotifyPrivilege"
  305. GLOBAL CONST $SE_CREATE_GLOBAL_NAME="SeCreateGlobalPrivilege"
  306. GLOBAL CONST $SE_CREATE_PAGEFILE_NAME="SeCreatePagefilePrivilege"
  307. GLOBAL CONST $SE_CREATE_PERMANENT_NAME="SeCreatePermanentPrivilege"
  308. GLOBAL CONST $SE_CREATE_TOKEN_NAME="SeCreateTokenPrivilege"
  309. GLOBAL CONST $SE_DEBUG_NAME="SeDebugPrivilege"
  310. GLOBAL CONST $SE_ENABLE_DELEGATION_NAME="SeEnableDelegationPrivilege"
  311. GLOBAL CONST $SE_IMPERSONATE_NAME="SeImpersonatePrivilege"
  312. GLOBAL CONST $SE_INC_BASE_PRIORITY_NAME="SeIncreaseBasePriorityPrivilege"
  313. GLOBAL CONST $SE_INCREASE_QUOTA_NAME="SeIncreaseQuotaPrivilege"
  314. GLOBAL CONST $SE_LOAD_DRIVER_NAME="SeLoadDriverPrivilege"
  315. GLOBAL CONST $SE_LOCK_MEMORY_NAME="SeLockMemoryPrivilege"
  316. GLOBAL CONST $SE_MACHINE_ACCOUNT_NAME="SeMachineAccountPrivilege"
  317. GLOBAL CONST $SE_MANAGE_VOLUME_NAME="SeManageVolumePrivilege"
  318. GLOBAL CONST $SE_PROF_SINGLE_PROCESS_NAME="SeProfileSingleProcessPrivilege"
  319. GLOBAL CONST $SE_REMOTE_SHUTDOWN_NAME="SeRemoteShutdownPrivilege"
  320. GLOBAL CONST $SE_RESTORE_NAME="SeRestorePrivilege"
  321. GLOBAL CONST $SE_SECURITY_NAME="SeSecurityPrivilege"
  322. GLOBAL CONST $SE_SHUTDOWN_NAME="SeShutdownPrivilege"
  323. GLOBAL CONST $SE_SYNC_AGENT_NAME="SeSyncAgentPrivilege"
  324. GLOBAL CONST $SE_SYSTEM_ENVIRONMENT_NAME="SeSystemEnvironmentPrivilege"
  325. GLOBAL CONST $SE_SYSTEM_PROFILE_NAME="SeSystemProfilePrivilege"
  326. GLOBAL CONST $SE_SYSTEMTIME_NAME="SeSystemtimePrivilege"
  327. GLOBAL CONST $SE_TAKE_OWNERSHIP_NAME="SeTakeOwnershipPrivilege"
  328. GLOBAL CONST $SE_TCB_NAME="SeTcbPrivilege"
  329. GLOBAL CONST $SE_UNSOLICITED_INPUT_NAME="SeUnsolicitedInputPrivilege"
  330. GLOBAL CONST $SE_UNDOCK_NAME="SeUndockPrivilege"
  331. GLOBAL CONST $SE_PRIVILEGE_ENABLED_BY_DEFAULT=1
  332. GLOBAL CONST $SE_PRIVILEGE_ENABLED=2
  333. GLOBAL CONST $SE_PRIVILEGE_REMOVED=4
  334. GLOBAL CONST $SE_PRIVILEGE_USED_FOR_ACCESS=-2147483648
  335. GLOBAL CONST $SE_GROUP_MANDATORY=1
  336. GLOBAL CONST $SE_GROUP_ENABLED_BY_DEFAULT=2
  337. GLOBAL CONST $SE_GROUP_ENABLED=4
  338. GLOBAL CONST $SE_GROUP_OWNER=8
  339. GLOBAL CONST $SE_GROUP_USE_FOR_DENY_ONLY=16
  340. GLOBAL CONST $SE_GROUP_INTEGRITY=32
  341. GLOBAL CONST $SE_GROUP_INTEGRITY_ENABLED=64
  342. GLOBAL CONST $SE_GROUP_RESOURCE=536870912
  343. GLOBAL CONST $SE_GROUP_LOGON_ID=-1073741824
  344. GLOBAL ENUM $TOKENPRIMARY=1,$TOKENIMPERSONATION
  345. GLOBAL ENUM $SECURITYANONYMOUS=0,$SECURITYIDENTIFICATION,$SECURITYIMPERSONATION,$SECURITYDELEGATION
  346. GLOBAL ENUM $TOKENUSER=1,$TOKENGROUPS,$TOKENPRIVILEGES,$TOKENOWNER,$TOKENPRIMARYGROUP,$TOKENDEFAULTDACL,$TOKENSOURCE,$TOKENTYPE,$TOKENIMPERSONATIONLEVEL,$TOKENSTATISTICS,$TOKENRESTRICTEDSIDS,$TOKENSESSIONID,$TOKENGROUPSANDPRIVILEGES,$TOKENSESSIONREFERENCE,$TOKENSANDBOXINERT,$TOKENAUDITPOLICY,$TOKENORIGIN,$TOKENELEVATIONTYPE,$TOKENLINKEDTOKEN,$TOKENELEVATION,$TOKENHASRESTRICTIONS,$TOKENACCESSINFORMATION,$TOKENVIRTUALIZATIONALLOWED,$TOKENVIRTUALIZATIONENABLED,$TOKENINTEGRITYLEVEL,$TOKENUIACCESS,$TOKENMANDATORYPOLICY,$TOKENLOGONSID
  347. GLOBAL CONST $TOKEN_ASSIGN_PRIMARY=1
  348. GLOBAL CONST $TOKEN_DUPLICATE=2
  349. GLOBAL CONST $TOKEN_IMPERSONATE=4
  350. GLOBAL CONST $TOKEN_QUERY=8
  351. GLOBAL CONST $TOKEN_QUERY_SOURCE=16
  352. GLOBAL CONST $TOKEN_ADJUST_PRIVILEGES=32
  353. GLOBAL CONST $TOKEN_ADJUST_GROUPS=64
  354. GLOBAL CONST $TOKEN_ADJUST_DEFAULT=128
  355. GLOBAL CONST $TOKEN_ADJUST_SESSIONID=256
  356. GLOBAL CONST $TOKEN_ALL_ACCESS=983551
  357. GLOBAL CONST $TOKEN_READ=131080
  358. GLOBAL CONST $TOKEN_WRITE=131296
  359. GLOBAL CONST $TOKEN_EXECUTE=131072
  360. GLOBAL CONST $TOKEN_HAS_TRAVERSE_PRIVILEGE=1
  361. GLOBAL CONST $TOKEN_HAS_BACKUP_PRIVILEGE=2
  362. GLOBAL CONST $TOKEN_HAS_RESTORE_PRIVILEGE=4
  363. GLOBAL CONST $TOKEN_HAS_ADMIN_GROUP=8
  364. GLOBAL CONST $TOKEN_IS_RESTRICTED=16
  365. GLOBAL CONST $TOKEN_SESSION_NOT_REFERENCED=32
  366. GLOBAL CONST $TOKEN_SANDBOX_INERT=64
  367. GLOBAL CONST $TOKEN_HAS_IMPERSONATE_PRIVILEGE=128
  368. GLOBAL CONST $RIGHTS_DELETE=65536
  369. GLOBAL CONST $READ_CONTROL=131072
  370. GLOBAL CONST $WRITE_DAC=262144
  371. GLOBAL CONST $WRITE_OWNER=524288
  372. GLOBAL CONST $SYNCHRONIZE=1048576
  373. GLOBAL CONST $STANDARD_RIGHTS_REQUIRED=983040
  374. GLOBAL CONST $STANDARD_RIGHTS_READ=$READ_CONTROL
  375. GLOBAL CONST $STANDARD_RIGHTS_WRITE=$READ_CONTROL
  376. GLOBAL CONST $STANDARD_RIGHTS_EXECUTE=$READ_CONTROL
  377. GLOBAL CONST $STANDARD_RIGHTS_ALL=2031616
  378. GLOBAL CONST $SPECIFIC_RIGHTS_ALL=65535
  379. GLOBAL ENUM $NOT_USED_ACCESS=0,$GRANT_ACCESS,$SET_ACCESS,$DENY_ACCESS,$REVOKE_ACCESS,$SET_AUDIT_SUCCESS,$SET_AUDIT_FAILURE
  380. GLOBAL ENUM $TRUSTEE_IS_UNKNOWN=0,$TRUSTEE_IS_USER,$TRUSTEE_IS_GROUP,$TRUSTEE_IS_DOMAIN,$TRUSTEE_IS_ALIAS,$TRUSTEE_IS_WELL_KNOWN_GROUP,$TRUSTEE_IS_DELETED,$TRUSTEE_IS_INVALID,$TRUSTEE_IS_COMPUTER
  381. GLOBAL CONST $LOGON_WITH_PROFILE=1
  382. GLOBAL CONST $LOGON_NETCREDENTIALS_ONLY=2
  383. GLOBAL ENUM $SIDTYPEUSER=1,$SIDTYPEGROUP,$SIDTYPEDOMAIN,$SIDTYPEALIAS,$SIDTYPEWELLKNOWNGROUP,$SIDTYPEDELETEDACCOUNT,$SIDTYPEINVALID,$SIDTYPEUNKNOWN,$SIDTYPECOMPUTER,$SIDTYPELABEL
  384. GLOBAL CONST $SID_ADMINISTRATORS="S-1-5-32-544"
  385. GLOBAL CONST $SID_USERS="S-1-5-32-545"
  386. GLOBAL CONST $SID_GUESTS="S-1-5-32-546"
  387. GLOBAL CONST $SID_ACCOUNT_OPERATORS="S-1-5-32-548"
  388. GLOBAL CONST $SID_SERVER_OPERATORS="S-1-5-32-549"
  389. GLOBAL CONST $SID_PRINT_OPERATORS="S-1-5-32-550"
  390. GLOBAL CONST $SID_BACKUP_OPERATORS="S-1-5-32-551"
  391. GLOBAL CONST $SID_REPLICATOR="S-1-5-32-552"
  392. GLOBAL CONST $SID_OWNER="S-1-3-0"
  393. GLOBAL CONST $SID_EVERYONE="S-1-1-0"
  394. GLOBAL CONST $SID_NETWORK="S-1-5-2"
  395. GLOBAL CONST $SID_INTERACTIVE="S-1-5-4"
  396. GLOBAL CONST $SID_SYSTEM="S-1-5-18"
  397. GLOBAL CONST $SID_AUTHENTICATED_USERS="S-1-5-11"
  398. GLOBAL CONST $SID_SCHANNEL_AUTHENTICATION="S-1-5-64-14"
  399. GLOBAL CONST $SID_DIGEST_AUTHENTICATION="S-1-5-64-21"
  400. GLOBAL CONST $SID_NT_SERVICE="S-1-5-80"
  401. GLOBAL CONST $SID_UNTRUSTED_MANDATORY_LEVEL="S-1-16-0"
  402. GLOBAL CONST $SID_LOW_MANDATORY_LEVEL="S-1-16-4096"
  403. GLOBAL CONST $SID_MEDIUM_MANDATORY_LEVEL="S-1-16-8192"
  404. GLOBAL CONST $SID_MEDIUM_PLUS_MANDATORY_LEVEL="S-1-16-8448"
  405. GLOBAL CONST $SID_HIGH_MANDATORY_LEVEL="S-1-16-12288"
  406. GLOBAL CONST $SID_SYSTEM_MANDATORY_LEVEL="S-1-16-16384"
  407. GLOBAL CONST $SID_PROTECTED_PROCESS_MANDATORY_LEVEL="S-1-16-20480"
  408. GLOBAL CONST $SID_SECURE_PROCESS_MANDATORY_LEVEL="S-1-16-28672"
  409. GLOBAL CONST $SID_ALL_SERVICES="S-1-5-80-0"
  410. FUNC _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN,$FDISABLEALL,$PNEWSTATE,$IBUFFERLEN,$PPREVSTATE=0,$PREQUIRED=0)
  411. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","AdjustTokenPrivileges","handle",$HTOKEN,"bool",$FDISABLEALL,"struct*",$PNEWSTATE,"dword",$IBUFFERLEN,"struct*",$PPREVSTATE,"struct*",$PREQUIRED)
  412. IF @ERROR THEN RETURN SETERROR(1,@EXTENDED,FALSE )
  413. RETURN NOT ($ACALL[0]=0)
  414. ENDFUNC
  415. FUNC _SECURITY__CREATEPROCESSWITHTOKEN($HTOKEN,$ILOGONFLAGS,$SCOMMANDLINE,$ICREATIONFLAGS,$SCURDIR,$TSTARTUPINFO,$TPROCESS_INFORMATION)
  416. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","CreateProcessWithTokenW","handle",$HTOKEN,"dword",$ILOGONFLAGS,"ptr",0,"wstr",$SCOMMANDLINE,"dword",$ICREATIONFLAGS,"struct*",0,"wstr",$SCURDIR,"struct*",$TSTARTUPINFO,"struct*",$TPROCESS_INFORMATION)
  417. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(1,@EXTENDED,FALSE )
  418. RETURN TRUE
  419. ENDFUNC
  420. FUNC _SECURITY__DUPLICATETOKENEX($HEXISTINGTOKEN,$IDESIREDACCESS,$IIMPERSONATIONLEVEL,$ITOKENTYPE)
  421. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","DuplicateTokenEx","handle",$HEXISTINGTOKEN,"dword",$IDESIREDACCESS,"struct*",0,"int",$IIMPERSONATIONLEVEL,"int",$ITOKENTYPE,"handle*",0)
  422. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(1,@EXTENDED,0)
  423. RETURN $ACALL[6]
  424. ENDFUNC
  425. FUNC _SECURITY__GETACCOUNTSID($SACCOUNT,$SSYSTEM="")
  426. LOCAL $AACCT=_SECURITY__LOOKUPACCOUNTNAME($SACCOUNT,$SSYSTEM)
  427. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  428. IF ISARRAY($AACCT)THEN RETURN _SECURITY__STRINGSIDTOSID($AACCT[0])
  429. RETURN ""
  430. ENDFUNC
  431. FUNC _SECURITY__GETLENGTHSID($PSID)
  432. IF NOT _SECURITY__ISVALIDSID($PSID)THEN RETURN SETERROR(1,@EXTENDED,0)
  433. LOCAL $ACALL=DLLCALL("advapi32.dll","dword","GetLengthSid","struct*",$PSID)
  434. IF @ERROR THEN RETURN SETERROR(2,@EXTENDED,0)
  435. RETURN $ACALL[0]
  436. ENDFUNC
  437. FUNC _SECURITY__GETTOKENINFORMATION($HTOKEN,$ICLASS)
  438. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","GetTokenInformation","handle",$HTOKEN,"int",$ICLASS,"struct*",0,"dword",0,"dword*",0)
  439. IF @ERROR OR NOT $ACALL[5]THEN RETURN SETERROR(1,@EXTENDED,0)
  440. LOCAL $ILEN=$ACALL[5]
  441. LOCAL $TBUFFER=DLLSTRUCTCREATE("byte["&$ILEN&"]")
  442. $ACALL=DLLCALL("advapi32.dll","bool","GetTokenInformation","handle",$HTOKEN,"int",$ICLASS,"struct*",$TBUFFER,"dword",DLLSTRUCTGETSIZE($TBUFFER),"dword*",0)
  443. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(2,@EXTENDED,0)
  444. RETURN $TBUFFER
  445. ENDFUNC
  446. FUNC _SECURITY__IMPERSONATESELF($ILEVEL=$SECURITYIMPERSONATION)
  447. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","ImpersonateSelf","int",$ILEVEL)
  448. IF @ERROR THEN RETURN SETERROR(1,@EXTENDED,FALSE )
  449. RETURN NOT ($ACALL[0]=0)
  450. ENDFUNC
  451. FUNC _SECURITY__ISVALIDSID($PSID)
  452. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","IsValidSid","struct*",$PSID)
  453. IF @ERROR THEN RETURN SETERROR(1,@EXTENDED,FALSE )
  454. RETURN NOT ($ACALL[0]=0)
  455. ENDFUNC
  456. FUNC _SECURITY__LOOKUPACCOUNTNAME($SACCOUNT,$SSYSTEM="")
  457. LOCAL $TDATA=DLLSTRUCTCREATE("byte SID[256]")
  458. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","LookupAccountNameW","wstr",$SSYSTEM,"wstr",$SACCOUNT,"struct*",$TDATA,"dword*",DLLSTRUCTGETSIZE($TDATA),"wstr","","dword*",DLLSTRUCTGETSIZE($TDATA),"int*",0)
  459. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(1,@EXTENDED,0)
  460. LOCAL $AACCT[3]
  461. $AACCT[0]=_SECURITY__SIDTOSTRINGSID(DLLSTRUCTGETPTR($TDATA,"SID"))
  462. $AACCT[1]=$ACALL[5]
  463. $AACCT[2]=$ACALL[7]
  464. RETURN $AACCT
  465. ENDFUNC
  466. FUNC _SECURITY__LOOKUPACCOUNTSID($VSID,$SSYSTEM="")
  467. LOCAL $PSID,$AACCT[3]
  468. IF ISSTRING($VSID)THEN
  469. $PSID=_SECURITY__STRINGSIDTOSID($VSID)
  470. ELSE
  471. $PSID=$VSID
  472. ENDIF
  473. IF NOT _SECURITY__ISVALIDSID($PSID)THEN RETURN SETERROR(1,@EXTENDED,0)
  474. LOCAL $TYPESYSTEM="ptr"
  475. IF $SSYSTEM THEN $TYPESYSTEM="wstr"
  476. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","LookupAccountSidW",$TYPESYSTEM,$SSYSTEM,"struct*",$PSID,"wstr","","dword*",65536,"wstr","","dword*",65536,"int*",0)
  477. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(2,@EXTENDED,0)
  478. LOCAL $AACCT[3]
  479. $AACCT[0]=$ACALL[3]
  480. $AACCT[1]=$ACALL[5]
  481. $AACCT[2]=$ACALL[7]
  482. RETURN $AACCT
  483. ENDFUNC
  484. FUNC _SECURITY__LOOKUPPRIVILEGEVALUE($SSYSTEM,$SNAME)
  485. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","LookupPrivilegeValueW","wstr",$SSYSTEM,"wstr",$SNAME,"int64*",0)
  486. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(1,@EXTENDED,0)
  487. RETURN $ACALL[3]
  488. ENDFUNC
  489. FUNC _SECURITY__OPENPROCESSTOKEN($HPROCESS,$IACCESS)
  490. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","OpenProcessToken","handle",$HPROCESS,"dword",$IACCESS,"handle*",0)
  491. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(1,@EXTENDED,0)
  492. RETURN $ACALL[3]
  493. ENDFUNC
  494. FUNC _SECURITY__OPENTHREADTOKEN($IACCESS,$HTHREAD=0,$FOPENASSELF=FALSE )
  495. IF $HTHREAD=0 THEN $HTHREAD=_WINAPI_GETCURRENTTHREAD()
  496. IF @ERROR THEN RETURN SETERROR(1,@EXTENDED,0)
  497. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","OpenThreadToken","handle",$HTHREAD,"dword",$IACCESS,"bool",$FOPENASSELF,"handle*",0)
  498. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(2,@EXTENDED,0)
  499. RETURN $ACALL[4]
  500. ENDFUNC
  501. FUNC _SECURITY__OPENTHREADTOKENEX($IACCESS,$HTHREAD=0,$FOPENASSELF=FALSE )
  502. LOCAL $HTOKEN=_SECURITY__OPENTHREADTOKEN($IACCESS,$HTHREAD,$FOPENASSELF)
  503. IF $HTOKEN=0 THEN
  504. IF _WINAPI_GETLASTERROR()<>$ERROR_NO_TOKEN THEN RETURN SETERROR(3,_WINAPI_GETLASTERROR(),0)
  505. IF NOT _SECURITY__IMPERSONATESELF()THEN RETURN SETERROR(1,_WINAPI_GETLASTERROR(),0)
  506. $HTOKEN=_SECURITY__OPENTHREADTOKEN($IACCESS,$HTHREAD,$FOPENASSELF)
  507. IF $HTOKEN=0 THEN RETURN SETERROR(2,_WINAPI_GETLASTERROR(),0)
  508. ENDIF
  509. RETURN $HTOKEN
  510. ENDFUNC
  511. FUNC _SECURITY__SETPRIVILEGE($HTOKEN,$SPRIVILEGE,$FENABLE)
  512. LOCAL $ILUID=_SECURITY__LOOKUPPRIVILEGEVALUE("",$SPRIVILEGE)
  513. IF $ILUID=0 THEN RETURN SETERROR(1,@EXTENDED,FALSE )
  514. LOCAL $TCURRSTATE=DLLSTRUCTCREATE($TAGTOKEN_PRIVILEGES)
  515. LOCAL $ICURRSTATE=DLLSTRUCTGETSIZE($TCURRSTATE)
  516. LOCAL $TPREVSTATE=DLLSTRUCTCREATE($TAGTOKEN_PRIVILEGES)
  517. LOCAL $IPREVSTATE=DLLSTRUCTGETSIZE($TPREVSTATE)
  518. LOCAL $TREQUIRED=DLLSTRUCTCREATE("int Data")
  519. DLLSTRUCTSETDATA($TCURRSTATE,"Count",1)
  520. DLLSTRUCTSETDATA($TCURRSTATE,"LUID",$ILUID)
  521. IF NOT _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN,FALSE ,$TCURRSTATE,$ICURRSTATE,$TPREVSTATE,$TREQUIRED)THEN RETURN SETERROR(2,@ERROR,FALSE )
  522. DLLSTRUCTSETDATA($TPREVSTATE,"Count",1)
  523. DLLSTRUCTSETDATA($TPREVSTATE,"LUID",$ILUID)
  524. LOCAL $IATTRIBUTES=DLLSTRUCTGETDATA($TPREVSTATE,"Attributes")
  525. IF $FENABLE THEN
  526. $IATTRIBUTES=BITOR($IATTRIBUTES,$SE_PRIVILEGE_ENABLED)
  527. ELSE
  528. $IATTRIBUTES=BITAND($IATTRIBUTES,BITNOT($SE_PRIVILEGE_ENABLED))
  529. ENDIF
  530. DLLSTRUCTSETDATA($TPREVSTATE,"Attributes",$IATTRIBUTES)
  531. IF NOT _SECURITY__ADJUSTTOKENPRIVILEGES($HTOKEN,FALSE ,$TPREVSTATE,$IPREVSTATE,$TCURRSTATE,$TREQUIRED)THEN RETURN SETERROR(3,@ERROR,FALSE )
  532. RETURN TRUE
  533. ENDFUNC
  534. FUNC _SECURITY__SETTOKENINFORMATION($HTOKEN,$ITOKENINFORMATION,$VTOKENINFORMATION,$ITOKENINFORMATIONLENGTH)
  535. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","SetTokenInformation","handle",$HTOKEN,"int",$ITOKENINFORMATION,"struct*",$VTOKENINFORMATION,"dword",$ITOKENINFORMATIONLENGTH)
  536. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(1,@EXTENDED,FALSE )
  537. RETURN TRUE
  538. ENDFUNC
  539. FUNC _SECURITY__SIDTOSTRINGSID($PSID)
  540. IF NOT _SECURITY__ISVALIDSID($PSID)THEN RETURN SETERROR(1,0,"")
  541. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","ConvertSidToStringSidW","struct*",$PSID,"ptr*",0)
  542. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(2,@EXTENDED,"")
  543. LOCAL $PSTRINGSID=$ACALL[2]
  544. LOCAL $SSID=DLLSTRUCTGETDATA(DLLSTRUCTCREATE("wchar Text["&_WINAPI_STRINGLENW($PSTRINGSID)+1&"]",$PSTRINGSID),"Text")
  545. _WINAPI_LOCALFREE($PSTRINGSID)
  546. RETURN $SSID
  547. ENDFUNC
  548. FUNC _SECURITY__SIDTYPESTR($ITYPE)
  549. SWITCH $ITYPE
  550. CASE $SIDTYPEUSER
  551. RETURN "User"
  552. CASE $SIDTYPEGROUP
  553. RETURN "Group"
  554. CASE $SIDTYPEDOMAIN
  555. RETURN "Domain"
  556. CASE $SIDTYPEALIAS
  557. RETURN "Alias"
  558. CASE $SIDTYPEWELLKNOWNGROUP
  559. RETURN "Well Known Group"
  560. CASE $SIDTYPEDELETEDACCOUNT
  561. RETURN "Deleted Account"
  562. CASE $SIDTYPEINVALID
  563. RETURN "Invalid"
  564. CASE $SIDTYPEUNKNOWN
  565. RETURN "Unknown Type"
  566. CASE $SIDTYPECOMPUTER
  567. RETURN "Computer"
  568. CASE $SIDTYPELABEL
  569. RETURN "A mandatory integrity label SID"
  570. CASE ELSE
  571. RETURN "Unknown SID Type"
  572. ENDSWITCH
  573. ENDFUNC
  574. FUNC _SECURITY__STRINGSIDTOSID($SSID)
  575. LOCAL $ACALL=DLLCALL("advapi32.dll","bool","ConvertStringSidToSidW","wstr",$SSID,"ptr*",0)
  576. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(1,@EXTENDED,0)
  577. LOCAL $PSID=$ACALL[2]
  578. LOCAL $TBUFFER=DLLSTRUCTCREATE("byte Data["&_SECURITY__GETLENGTHSID($PSID)&"]",$PSID)
  579. LOCAL $TSID=DLLSTRUCTCREATE("byte Data["&DLLSTRUCTGETSIZE($TBUFFER)&"]")
  580. DLLSTRUCTSETDATA($TSID,"Data",DLLSTRUCTGETDATA($TBUFFER,"Data"))
  581. _WINAPI_LOCALFREE($PSID)
  582. RETURN $TSID
  583. ENDFUNC
  584. FUNC _SENDMESSAGE($HWND,$IMSG,$WPARAM=0,$LPARAM=0,$IRETURN=0,$WPARAMTYPE="wparam",$LPARAMTYPE="lparam",$SRETURNTYPE="lresult")
  585. LOCAL $ARESULT=DLLCALL("user32.dll",$SRETURNTYPE,"SendMessageW","hwnd",$HWND,"uint",$IMSG,$WPARAMTYPE,$WPARAM,$LPARAMTYPE,$LPARAM)
  586. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,"")
  587. IF $IRETURN>=0 AND $IRETURN<=4 THEN RETURN $ARESULT[$IRETURN]
  588. RETURN $ARESULT
  589. ENDFUNC
  590. FUNC _SENDMESSAGEA($HWND,$IMSG,$WPARAM=0,$LPARAM=0,$IRETURN=0,$WPARAMTYPE="wparam",$LPARAMTYPE="lparam",$SRETURNTYPE="lresult")
  591. LOCAL $ARESULT=DLLCALL("user32.dll",$SRETURNTYPE,"SendMessageA","hwnd",$HWND,"uint",$IMSG,$WPARAMTYPE,$WPARAM,$LPARAMTYPE,$LPARAM)
  592. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,"")
  593. IF $IRETURN>=0 AND $IRETURN<=4 THEN RETURN $ARESULT[$IRETURN]
  594. RETURN $ARESULT
  595. ENDFUNC
  596. GLOBAL $__GAINPROCESS_WINAPI[64][2]=[[0,0]]
  597. GLOBAL $__GAWINLIST_WINAPI[64][2]=[[0,0]]
  598. GLOBAL CONST $__WINAPICONSTANT_WM_SETFONT=48
  599. GLOBAL CONST $__WINAPICONSTANT_FW_NORMAL=400
  600. GLOBAL CONST $__WINAPICONSTANT_DEFAULT_CHARSET=1
  601. GLOBAL CONST $__WINAPICONSTANT_OUT_DEFAULT_PRECIS=0
  602. GLOBAL CONST $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS=0
  603. GLOBAL CONST $__WINAPICONSTANT_DEFAULT_QUALITY=0
  604. GLOBAL CONST $__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER=256
  605. GLOBAL CONST $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM=4096
  606. GLOBAL CONST $__WINAPICONSTANT_LOGPIXELSX=88
  607. GLOBAL CONST $__WINAPICONSTANT_LOGPIXELSY=90
  608. GLOBAL CONST $HGDI_ERROR=PTR(-1)
  609. GLOBAL CONST $INVALID_HANDLE_VALUE=PTR(-1)
  610. GLOBAL CONST $CLR_INVALID=-1
  611. GLOBAL CONST $__WINAPICONSTANT_FLASHW_CAPTION=1
  612. GLOBAL CONST $__WINAPICONSTANT_FLASHW_TRAY=2
  613. GLOBAL CONST $__WINAPICONSTANT_FLASHW_TIMER=4
  614. GLOBAL CONST $__WINAPICONSTANT_FLASHW_TIMERNOFG=12
  615. GLOBAL CONST $__WINAPICONSTANT_GW_HWNDNEXT=2
  616. GLOBAL CONST $__WINAPICONSTANT_GW_CHILD=5
  617. GLOBAL CONST $__WINAPICONSTANT_DI_MASK=1
  618. GLOBAL CONST $__WINAPICONSTANT_DI_IMAGE=2
  619. GLOBAL CONST $__WINAPICONSTANT_DI_NORMAL=3
  620. GLOBAL CONST $__WINAPICONSTANT_DI_COMPAT=4
  621. GLOBAL CONST $__WINAPICONSTANT_DI_DEFAULTSIZE=8
  622. GLOBAL CONST $__WINAPICONSTANT_DI_NOMIRROR=16
  623. GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP=1
  624. GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE=4
  625. GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER=8
  626. GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE=16
  627. GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE=32
  628. GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED=134217728
  629. GLOBAL CONST $NULL_BRUSH=5
  630. GLOBAL CONST $NULL_PEN=8
  631. GLOBAL CONST $BLACK_BRUSH=4
  632. GLOBAL CONST $DKGRAY_BRUSH=3
  633. GLOBAL CONST $DC_BRUSH=18
  634. GLOBAL CONST $GRAY_BRUSH=2
  635. GLOBAL CONST $HOLLOW_BRUSH=$NULL_BRUSH
  636. GLOBAL CONST $LTGRAY_BRUSH=1
  637. GLOBAL CONST $WHITE_BRUSH=0
  638. GLOBAL CONST $BLACK_PEN=7
  639. GLOBAL CONST $DC_PEN=19
  640. GLOBAL CONST $WHITE_PEN=6
  641. GLOBAL CONST $ANSI_FIXED_FONT=11
  642. GLOBAL CONST $ANSI_VAR_FONT=12
  643. GLOBAL CONST $DEVICE_DEFAULT_FONT=14
  644. GLOBAL CONST $DEFAULT_GUI_FONT=17
  645. GLOBAL CONST $OEM_FIXED_FONT=10
  646. GLOBAL CONST $SYSTEM_FONT=13
  647. GLOBAL CONST $SYSTEM_FIXED_FONT=16
  648. GLOBAL CONST $DEFAULT_PALETTE=15
  649. GLOBAL CONST $MB_PRECOMPOSED=1
  650. GLOBAL CONST $MB_COMPOSITE=2
  651. GLOBAL CONST $MB_USEGLYPHCHARS=4
  652. GLOBAL CONST $ULW_ALPHA=2
  653. GLOBAL CONST $ULW_COLORKEY=1
  654. GLOBAL CONST $ULW_OPAQUE=4
  655. GLOBAL CONST $WH_CALLWNDPROC=4
  656. GLOBAL CONST $WH_CALLWNDPROCRET=12
  657. GLOBAL CONST $WH_CBT=5
  658. GLOBAL CONST $WH_DEBUG=9
  659. GLOBAL CONST $WH_FOREGROUNDIDLE=11
  660. GLOBAL CONST $WH_GETMESSAGE=3
  661. GLOBAL CONST $WH_JOURNALPLAYBACK=1
  662. GLOBAL CONST $WH_JOURNALRECORD=0
  663. GLOBAL CONST $WH_KEYBOARD=2
  664. GLOBAL CONST $WH_KEYBOARD_LL=13
  665. GLOBAL CONST $WH_MOUSE=7
  666. GLOBAL CONST $WH_MOUSE_LL=14
  667. GLOBAL CONST $WH_MSGFILTER=-1
  668. GLOBAL CONST $WH_SHELL=10
  669. GLOBAL CONST $WH_SYSMSGFILTER=6
  670. GLOBAL CONST $WPF_ASYNCWINDOWPLACEMENT=4
  671. GLOBAL CONST $WPF_RESTORETOMAXIMIZED=2
  672. GLOBAL CONST $WPF_SETMINPOSITION=1
  673. GLOBAL CONST $KF_EXTENDED=256
  674. GLOBAL CONST $KF_ALTDOWN=8192
  675. GLOBAL CONST $KF_UP=32768
  676. GLOBAL CONST $LLKHF_EXTENDED=BITSHIFT($KF_EXTENDED,8)
  677. GLOBAL CONST $LLKHF_INJECTED=16
  678. GLOBAL CONST $LLKHF_ALTDOWN=BITSHIFT($KF_ALTDOWN,8)
  679. GLOBAL CONST $LLKHF_UP=BITSHIFT($KF_UP,8)
  680. GLOBAL CONST $OFN_ALLOWMULTISELECT=512
  681. GLOBAL CONST $OFN_CREATEPROMPT=8192
  682. GLOBAL CONST $OFN_DONTADDTORECENT=33554432
  683. GLOBAL CONST $OFN_ENABLEHOOK=32
  684. GLOBAL CONST $OFN_ENABLEINCLUDENOTIFY=4194304
  685. GLOBAL CONST $OFN_ENABLESIZING=8388608
  686. GLOBAL CONST $OFN_ENABLETEMPLATE=64
  687. GLOBAL CONST $OFN_ENABLETEMPLATEHANDLE=128
  688. GLOBAL CONST $OFN_EXPLORER=524288
  689. GLOBAL CONST $OFN_EXTENSIONDIFFERENT=1024
  690. GLOBAL CONST $OFN_FILEMUSTEXIST=4096
  691. GLOBAL CONST $OFN_FORCESHOWHIDDEN=268435456
  692. GLOBAL CONST $OFN_HIDEREADONLY=4
  693. GLOBAL CONST $OFN_LONGNAMES=2097152
  694. GLOBAL CONST $OFN_NOCHANGEDIR=8
  695. GLOBAL CONST $OFN_NODEREFERENCELINKS=1048576
  696. GLOBAL CONST $OFN_NOLONGNAMES=262144
  697. GLOBAL CONST $OFN_NONETWORKBUTTON=131072
  698. GLOBAL CONST $OFN_NOREADONLYRETURN=32768
  699. GLOBAL CONST $OFN_NOTESTFILECREATE=65536
  700. GLOBAL CONST $OFN_NOVALIDATE=256
  701. GLOBAL CONST $OFN_OVERWRITEPROMPT=2
  702. GLOBAL CONST $OFN_PATHMUSTEXIST=2048
  703. GLOBAL CONST $OFN_READONLY=1
  704. GLOBAL CONST $OFN_SHAREAWARE=16384
  705. GLOBAL CONST $OFN_SHOWHELP=16
  706. GLOBAL CONST $OFN_EX_NOPLACESBAR=1
  707. GLOBAL CONST $TMPF_FIXED_PITCH=1
  708. GLOBAL CONST $TMPF_VECTOR=2
  709. GLOBAL CONST $TMPF_TRUETYPE=4
  710. GLOBAL CONST $TMPF_DEVICE=8
  711. GLOBAL CONST $DUPLICATE_CLOSE_SOURCE=1
  712. GLOBAL CONST $DUPLICATE_SAME_ACCESS=2
  713. GLOBAL CONST $TAGCURSORINFO="dword Size;dword Flags;handle hCursor;"&$TAGPOINT
  714. GLOBAL CONST $TAGDISPLAY_DEVICE="dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]"
  715. GLOBAL CONST $TAGFLASHWINFO="uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut"
  716. GLOBAL CONST $TAGICONINFO="bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
  717. GLOBAL CONST $TAGMEMORYSTATUSEX="dword Length;dword MemoryLoad;"&"uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;"&"uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"
  718. FUNC _WINAPI_ATTACHCONSOLE($IPROCESSID=-1)
  719. LOCAL $ARESULT=DLLCALL("kernel32.dll","bool","AttachConsole","dword",$IPROCESSID)
  720. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  721. RETURN $ARESULT[0]
  722. ENDFUNC
  723. FUNC _WINAPI_ATTACHTHREADINPUT($IATTACH,$IATTACHTO,$FATTACH)
  724. LOCAL $ARESULT=DLLCALL("user32.dll","bool","AttachThreadInput","dword",$IATTACH,"dword",$IATTACHTO,"bool",$FATTACH)
  725. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  726. RETURN $ARESULT[0]
  727. ENDFUNC
  728. FUNC _WINAPI_BEEP($IFREQ=500,$IDURATION=1000)
  729. LOCAL $ARESULT=DLLCALL("kernel32.dll","bool","Beep","dword",$IFREQ,"dword",$IDURATION)
  730. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  731. RETURN $ARESULT[0]
  732. ENDFUNC
  733. FUNC _WINAPI_BITBLT($HDESTDC,$IXDEST,$IYDEST,$IWIDTH,$IHEIGHT,$HSRCDC,$IXSRC,$IYSRC,$IROP)
  734. 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)
  735. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  736. RETURN $ARESULT[0]
  737. ENDFUNC
  738. FUNC _WINAPI_CALLNEXTHOOKEX($HHK,$ICODE,$WPARAM,$LPARAM)
  739. LOCAL $ARESULT=DLLCALL("user32.dll","lresult","CallNextHookEx","handle",$HHK,"int",$ICODE,"wparam",$WPARAM,"lparam",$LPARAM)
  740. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,-1)
  741. RETURN $ARESULT[0]
  742. ENDFUNC
  743. FUNC _WINAPI_CALLWINDOWPROC($LPPREVWNDFUNC,$HWND,$MSG,$WPARAM,$LPARAM)
  744. LOCAL $ARESULT=DLLCALL("user32.dll","lresult","CallWindowProc","ptr",$LPPREVWNDFUNC,"hwnd",$HWND,"uint",$MSG,"wparam",$WPARAM,"lparam",$LPARAM)
  745. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,-1)
  746. RETURN $ARESULT[0]
  747. ENDFUNC
  748. FUNC _WINAPI_CLIENTTOSCREEN($HWND,BYREF $TPOINT)
  749. DLLCALL("user32.dll","bool","ClientToScreen","hwnd",$HWND,"struct*",$TPOINT)
  750. RETURN SETERROR(@ERROR,@EXTENDED,$TPOINT)
  751. ENDFUNC
  752. FUNC _WINAPI_CLOSEHANDLE($HOBJECT)
  753. LOCAL $ARESULT=DLLCALL("kernel32.dll","bool","CloseHandle","handle",$HOBJECT)
  754. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  755. RETURN $ARESULT[0]
  756. ENDFUNC
  757. FUNC _WINAPI_COMBINERGN($HRGNDEST,$HRGNSRC1,$HRGNSRC2,$ICOMBINEMODE)
  758. LOCAL $ARESULT=DLLCALL("gdi32.dll","int","CombineRgn","handle",$HRGNDEST,"handle",$HRGNSRC1,"handle",$HRGNSRC2,"int",$ICOMBINEMODE)
  759. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  760. RETURN $ARESULT[0]
  761. ENDFUNC
  762. FUNC _WINAPI_COMMDLGEXTENDEDERROR()
  763. LOCAL CONST $CDERR_DIALOGFAILURE=65535
  764. LOCAL CONST $CDERR_FINDRESFAILURE=6
  765. LOCAL CONST $CDERR_INITIALIZATION=2
  766. LOCAL CONST $CDERR_LOADRESFAILURE=7
  767. LOCAL CONST $CDERR_LOADSTRFAILURE=5
  768. LOCAL CONST $CDERR_LOCKRESFAILURE=8
  769. LOCAL CONST $CDERR_MEMALLOCFAILURE=9
  770. LOCAL CONST $CDERR_MEMLOCKFAILURE=10
  771. LOCAL CONST $CDERR_NOHINSTANCE=4
  772. LOCAL CONST $CDERR_NOHOOK=11
  773. LOCAL CONST $CDERR_NOTEMPLATE=3
  774. LOCAL CONST $CDERR_REGISTERMSGFAIL=12
  775. LOCAL CONST $CDERR_STRUCTSIZE=1
  776. LOCAL CONST $FNERR_BUFFERTOOSMALL=12291
  777. LOCAL CONST $FNERR_INVALIDFILENAME=12290
  778. LOCAL CONST $FNERR_SUBCLASSFAILURE=12289
  779. LOCAL $ARESULT=DLLCALL("comdlg32.dll","dword","CommDlgExtendedError")
  780. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  781. SWITCH $ARESULT[0]
  782. CASE $CDERR_DIALOGFAILURE
  783. 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.")
  784. CASE $CDERR_FINDRESFAILURE
  785. RETURN SETERROR($ARESULT[0],0,"The common dialog box function failed to find a specified resource.")
  786. CASE $CDERR_INITIALIZATION
  787. RETURN SETERROR($ARESULT[0],0,"The common dialog box function failed during initialization."&@LF&"This error often occurs when sufficient memory is not available.")
  788. CASE $CDERR_LOADRESFAILURE
  789. RETURN SETERROR($ARESULT[0],0,"The common dialog box function failed to load a specified resource.")
  790. CASE $CDERR_LOADSTRFAILURE
  791. RETURN SETERROR($ARESULT[0],0,"The common dialog box function failed to load a specified string.")
  792. CASE $CDERR_LOCKRESFAILURE
  793. RETURN SETERROR($ARESULT[0],0,"The common dialog box function failed to lock a specified resource.")
  794. CASE $CDERR_MEMALLOCFAILURE
  795. RETURN SETERROR($ARESULT[0],0,"The common dialog box function was unable to allocate memory for internal structures.")
  796. CASE $CDERR_MEMLOCKFAILURE
  797. RETURN SETERROR($ARESULT[0],0,"The common dialog box function was unable to lock the memory associated with a handle.")
  798. CASE $CDERR_NOHINSTANCE
  799. 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.")
  800. CASE $CDERR_NOHOOK
  801. 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.")
  802. CASE $CDERR_NOTEMPLATE
  803. 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.")
  804. CASE $CDERR_REGISTERMSGFAIL
  805. RETURN SETERROR($ARESULT[0],0,"The RegisterWindowMessage function returned an error code when it was called by the common dialog box function.")
  806. CASE $CDERR_STRUCTSIZE
  807. RETURN SETERROR($ARESULT[0],0,"The lStructSize member of the initialization structure for the corresponding common dialog box is invalid")
  808. CASE $FNERR_BUFFERTOOSMALL
  809. 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.")
  810. CASE $FNERR_INVALIDFILENAME
  811. RETURN SETERROR($ARESULT[0],0,"A file name is invalid.")
  812. CASE $FNERR_SUBCLASSFAILURE
  813. RETURN SETERROR($ARESULT[0],0,"An attempt to subclass a list box failed because sufficient memory was not available.")
  814. ENDSWITCH
  815. RETURN HEX($ARESULT[0])
  816. ENDFUNC
  817. FUNC _WINAPI_COPYICON($HICON)
  818. LOCAL $ARESULT=DLLCALL("user32.dll","handle","CopyIcon","handle",$HICON)
  819. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  820. RETURN $ARESULT[0]
  821. ENDFUNC
  822. FUNC _WINAPI_CREATEBITMAP($IWIDTH,$IHEIGHT,$IPLANES=1,$IBITSPERPEL=1,$PBITS=0)
  823. LOCAL $ARESULT=DLLCALL("gdi32.dll","handle","CreateBitmap","int",$IWIDTH,"int",$IHEIGHT,"uint",$IPLANES,"uint",$IBITSPERPEL,"ptr",$PBITS)
  824. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  825. RETURN $ARESULT[0]
  826. ENDFUNC
  827. FUNC _WINAPI_CREATECOMPATIBLEBITMAP($HDC,$IWIDTH,$IHEIGHT)
  828. LOCAL $ARESULT=DLLCALL("gdi32.dll","handle","CreateCompatibleBitmap","handle",$HDC,"int",$IWIDTH,"int",$IHEIGHT)
  829. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  830. RETURN $ARESULT[0]
  831. ENDFUNC
  832. FUNC _WINAPI_CREATECOMPATIBLEDC($HDC)
  833. LOCAL $ARESULT=DLLCALL("gdi32.dll","handle","CreateCompatibleDC","handle",$HDC)
  834. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  835. RETURN $ARESULT[0]
  836. ENDFUNC
  837. FUNC _WINAPI_CREATEEVENT($PATTRIBUTES=0,$FMANUALRESET=TRUE ,$FINITIALSTATE=TRUE ,$SNAME="")
  838. LOCAL $SNAMETYPE="wstr"
  839. IF $SNAME="" THEN
  840. $SNAME=0
  841. $SNAMETYPE="ptr"
  842. ENDIF
  843. LOCAL $ARESULT=DLLCALL("kernel32.dll","handle","CreateEventW","ptr",$PATTRIBUTES,"bool",$FMANUALRESET,"bool",$FINITIALSTATE,$SNAMETYPE,$SNAME)
  844. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  845. RETURN $ARESULT[0]
  846. ENDFUNC
  847. FUNC _WINAPI_CREATEFILE($SFILENAME,$ICREATION,$IACCESS=4,$ISHARE=0,$IATTRIBUTES=0,$PSECURITY=0)
  848. LOCAL $IDA=0,$ISM=0,$ICD=0,$IFA=0
  849. IF BITAND($IACCESS,1)<>0 THEN $IDA=BITOR($IDA,$GENERIC_EXECUTE)
  850. IF BITAND($IACCESS,2)<>0 THEN $IDA=BITOR($IDA,$GENERIC_READ)
  851. IF BITAND($IACCESS,4)<>0 THEN $IDA=BITOR($IDA,$GENERIC_WRITE)
  852. IF BITAND($ISHARE,1)<>0 THEN $ISM=BITOR($ISM,$FILE_SHARE_DELETE)
  853. IF BITAND($ISHARE,2)<>0 THEN $ISM=BITOR($ISM,$FILE_SHARE_READ)
  854. IF BITAND($ISHARE,4)<>0 THEN $ISM=BITOR($ISM,$FILE_SHARE_WRITE)
  855. SWITCH $ICREATION
  856. CASE 0
  857. $ICD=$CREATE_NEW
  858. CASE 1
  859. $ICD=$CREATE_ALWAYS
  860. CASE 2
  861. $ICD=$OPEN_EXISTING
  862. CASE 3
  863. $ICD=$OPEN_ALWAYS
  864. CASE 4
  865. $ICD=$TRUNCATE_EXISTING
  866. ENDSWITCH
  867. IF BITAND($IATTRIBUTES,1)<>0 THEN $IFA=BITOR($IFA,$FILE_ATTRIBUTE_ARCHIVE)
  868. IF BITAND($IATTRIBUTES,2)<>0 THEN $IFA=BITOR($IFA,$FILE_ATTRIBUTE_HIDDEN)
  869. IF BITAND($IATTRIBUTES,4)<>0 THEN $IFA=BITOR($IFA,$FILE_ATTRIBUTE_READONLY)
  870. IF BITAND($IATTRIBUTES,8)<>0 THEN $IFA=BITOR($IFA,$FILE_ATTRIBUTE_SYSTEM)
  871. LOCAL $ARESULT=DLLCALL("kernel32.dll","handle","CreateFileW","wstr",$SFILENAME,"dword",$IDA,"dword",$ISM,"ptr",$PSECURITY,"dword",$ICD,"dword",$IFA,"ptr",0)
  872. IF @ERROR OR $ARESULT[0]=PTR(-1)THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  873. RETURN $ARESULT[0]
  874. ENDFUNC
  875. 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")
  876. 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)
  877. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  878. RETURN $ARESULT[0]
  879. ENDFUNC
  880. FUNC _WINAPI_CREATEFONTINDIRECT($TLOGFONT)
  881. LOCAL $ARESULT=DLLCALL("gdi32.dll","handle","CreateFontIndirectW","struct*",$TLOGFONT)
  882. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  883. RETURN $ARESULT[0]
  884. ENDFUNC
  885. FUNC _WINAPI_CREATEPEN($IPENSTYLE,$IWIDTH,$NCOLOR)
  886. LOCAL $ARESULT=DLLCALL("gdi32.dll","handle","CreatePen","int",$IPENSTYLE,"int",$IWIDTH,"dword",$NCOLOR)
  887. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  888. RETURN $ARESULT[0]
  889. ENDFUNC
  890. FUNC _WINAPI_CREATEPROCESS($SAPPNAME,$SCOMMAND,$PSECURITY,$PTHREAD,$FINHERIT,$IFLAGS,$PENVIRON,$SDIR,$PSTARTUPINFO,$PPROCESS)
  891. LOCAL $TCOMMAND=0
  892. LOCAL $SAPPNAMETYPE="wstr",$SDIRTYPE="wstr"
  893. IF $SAPPNAME="" THEN
  894. $SAPPNAMETYPE="ptr"
  895. $SAPPNAME=0
  896. ENDIF
  897. IF $SCOMMAND<>"" THEN
  898. $TCOMMAND=DLLSTRUCTCREATE("wchar Text["&260+1&"]")
  899. DLLSTRUCTSETDATA($TCOMMAND,"Text",$SCOMMAND)
  900. ENDIF
  901. IF $SDIR="" THEN
  902. $SDIRTYPE="ptr"
  903. $SDIR=0
  904. ENDIF
  905. LOCAL $ARESULT=DLLCALL("kernel32.dll","bool","CreateProcessW",$SAPPNAMETYPE,$SAPPNAME,"struct*",$TCOMMAND,"ptr",$PSECURITY,"ptr",$PTHREAD,"bool",$FINHERIT,"dword",$IFLAGS,"ptr",$PENVIRON,$SDIRTYPE,$SDIR,"ptr",$PSTARTUPINFO,"ptr",$PPROCESS)
  906. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  907. RETURN $ARESULT[0]
  908. ENDFUNC
  909. FUNC _WINAPI_CREATERECTRGN($ILEFTRECT,$ITOPRECT,$IRIGHTRECT,$IBOTTOMRECT)
  910. LOCAL $ARESULT=DLLCALL("gdi32.dll","handle","CreateRectRgn","int",$ILEFTRECT,"int",$ITOPRECT,"int",$IRIGHTRECT,"int",$IBOTTOMRECT)
  911. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  912. RETURN $ARESULT[0]
  913. ENDFUNC
  914. FUNC _WINAPI_CREATEROUNDRECTRGN($ILEFTRECT,$ITOPRECT,$IRIGHTRECT,$IBOTTOMRECT,$IWIDTHELLIPSE,$IHEIGHTELLIPSE)
  915. LOCAL $ARESULT=DLLCALL("gdi32.dll","handle","CreateRoundRectRgn","int",$ILEFTRECT,"int",$ITOPRECT,"int",$IRIGHTRECT,"int",$IBOTTOMRECT,"int",$IWIDTHELLIPSE,"int",$IHEIGHTELLIPSE)
  916. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  917. RETURN $ARESULT[0]
  918. ENDFUNC
  919. FUNC _WINAPI_CREATESOLIDBITMAP($HWND,$ICOLOR,$IWIDTH,$IHEIGHT,$BRGB=1)
  920. LOCAL $HDC=_WINAPI_GETDC($HWND)
  921. LOCAL $HDESTDC=_WINAPI_CREATECOMPATIBLEDC($HDC)
  922. LOCAL $HBITMAP=_WINAPI_CREATECOMPATIBLEBITMAP($HDC,$IWIDTH,$IHEIGHT)
  923. LOCAL $HOLD=_WINAPI_SELECTOBJECT($HDESTDC,$HBITMAP)
  924. LOCAL $TRECT=DLLSTRUCTCREATE($TAGRECT)
  925. DLLSTRUCTSETDATA($TRECT,1,0)
  926. DLLSTRUCTSETDATA($TRECT,2,0)
  927. DLLSTRUCTSETDATA($TRECT,3,$IWIDTH)
  928. DLLSTRUCTSETDATA($TRECT,4,$IHEIGHT)
  929. IF $BRGB THEN
  930. $ICOLOR=BITOR(BITAND($ICOLOR,65280),BITSHIFT(BITAND($ICOLOR,255),-16),BITSHIFT(BITAND($ICOLOR,16711680),16))
  931. ENDIF
  932. LOCAL $HBRUSH=_WINAPI_CREATESOLIDBRUSH($ICOLOR)
  933. _WINAPI_FILLRECT($HDESTDC,$TRECT,$HBRUSH)
  934. IF @ERROR THEN
  935. _WINAPI_DELETEOBJECT($HBITMAP)
  936. $HBITMAP=0
  937. ENDIF
  938. _WINAPI_DELETEOBJECT($HBRUSH)
  939. _WINAPI_RELEASEDC($HWND,$HDC)
  940. _WINAPI_SELECTOBJECT($HDESTDC,$HOLD)
  941. _WINAPI_DELETEDC($HDESTDC)
  942. IF NOT $HBITMAP THEN RETURN SETERROR(1,0,0)
  943. RETURN $HBITMAP
  944. ENDFUNC
  945. FUNC _WINAPI_CREATESOLIDBRUSH($NCOLOR)
  946. LOCAL $ARESULT=DLLCALL("gdi32.dll","handle","CreateSolidBrush","dword",$NCOLOR)
  947. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  948. RETURN $ARESULT[0]
  949. ENDFUNC
  950. FUNC _WINAPI_CREATEWINDOWEX($IEXSTYLE,$SCLASS,$SNAME,$ISTYLE,$IX,$IY,$IWIDTH,$IHEIGHT,$HPARENT,$HMENU=0,$HINSTANCE=0,$PPARAM=0)
  951. IF $HINSTANCE=0 THEN $HINSTANCE=_WINAPI_GETMODULEHANDLE("")
  952. 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)
  953. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  954. RETURN $ARESULT[0]
  955. ENDFUNC
  956. FUNC _WINAPI_DEFWINDOWPROC($HWND,$IMSG,$IWPARAM,$ILPARAM)
  957. LOCAL $ARESULT=DLLCALL("user32.dll","lresult","DefWindowProc","hwnd",$HWND,"uint",$IMSG,"wparam",$IWPARAM,"lparam",$ILPARAM)
  958. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  959. RETURN $ARESULT[0]
  960. ENDFUNC
  961. FUNC _WINAPI_DELETEDC($HDC)
  962. LOCAL $ARESULT=DLLCALL("gdi32.dll","bool","DeleteDC","handle",$HDC)
  963. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  964. RETURN $ARESULT[0]
  965. ENDFUNC
  966. FUNC _WINAPI_DELETEOBJECT($HOBJECT)
  967. LOCAL $ARESULT=DLLCALL("gdi32.dll","bool","DeleteObject","handle",$HOBJECT)
  968. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  969. RETURN $ARESULT[0]
  970. ENDFUNC
  971. FUNC _WINAPI_DESTROYICON($HICON)
  972. LOCAL $ARESULT=DLLCALL("user32.dll","bool","DestroyIcon","handle",$HICON)
  973. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  974. RETURN $ARESULT[0]
  975. ENDFUNC
  976. FUNC _WINAPI_DESTROYWINDOW($HWND)
  977. LOCAL $ARESULT=DLLCALL("user32.dll","bool","DestroyWindow","hwnd",$HWND)
  978. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  979. RETURN $ARESULT[0]
  980. ENDFUNC
  981. FUNC _WINAPI_DRAWEDGE($HDC,$PTRRECT,$NEDGETYPE,$GRFFLAGS)
  982. LOCAL $ARESULT=DLLCALL("user32.dll","bool","DrawEdge","handle",$HDC,"ptr",$PTRRECT,"uint",$NEDGETYPE,"uint",$GRFFLAGS)
  983. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  984. RETURN $ARESULT[0]
  985. ENDFUNC
  986. FUNC _WINAPI_DRAWFRAMECONTROL($HDC,$PTRRECT,$NTYPE,$NSTATE)
  987. LOCAL $ARESULT=DLLCALL("user32.dll","bool","DrawFrameControl","handle",$HDC,"ptr",$PTRRECT,"uint",$NTYPE,"uint",$NSTATE)
  988. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  989. RETURN $ARESULT[0]
  990. ENDFUNC
  991. FUNC _WINAPI_DRAWICON($HDC,$IX,$IY,$HICON)
  992. LOCAL $ARESULT=DLLCALL("user32.dll","bool","DrawIcon","handle",$HDC,"int",$IX,"int",$IY,"handle",$HICON)
  993. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  994. RETURN $ARESULT[0]
  995. ENDFUNC
  996. FUNC _WINAPI_DRAWICONEX($HDC,$IX,$IY,$HICON,$IWIDTH=0,$IHEIGHT=0,$ISTEP=0,$HBRUSH=0,$IFLAGS=3)
  997. LOCAL $IOPTIONS
  998. SWITCH $IFLAGS
  999. CASE 1
  1000. $IOPTIONS=$__WINAPICONSTANT_DI_MASK
  1001. CASE 2
  1002. $IOPTIONS=$__WINAPICONSTANT_DI_IMAGE
  1003. CASE 3
  1004. $IOPTIONS=$__WINAPICONSTANT_DI_NORMAL
  1005. CASE 4
  1006. $IOPTIONS=$__WINAPICONSTANT_DI_COMPAT
  1007. CASE 5
  1008. $IOPTIONS=$__WINAPICONSTANT_DI_DEFAULTSIZE
  1009. CASE ELSE
  1010. $IOPTIONS=$__WINAPICONSTANT_DI_NOMIRROR
  1011. ENDSWITCH
  1012. 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)
  1013. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1014. RETURN $ARESULT[0]
  1015. ENDFUNC
  1016. FUNC _WINAPI_DRAWLINE($HDC,$IX1,$IY1,$IX2,$IY2)
  1017. _WINAPI_MOVETO($HDC,$IX1,$IY1)
  1018. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1019. _WINAPI_LINETO($HDC,$IX2,$IY2)
  1020. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1021. RETURN TRUE
  1022. ENDFUNC
  1023. FUNC _WINAPI_DRAWTEXT($HDC,$STEXT,BYREF $TRECT,$IFLAGS)
  1024. LOCAL $ARESULT=DLLCALL("user32.dll","int","DrawTextW","handle",$HDC,"wstr",$STEXT,"int",-1,"struct*",$TRECT,"uint",$IFLAGS)
  1025. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1026. RETURN $ARESULT[0]
  1027. ENDFUNC
  1028. FUNC _WINAPI_DUPLICATEHANDLE($HSOURCEPROCESSHANDLE,$HSOURCEHANDLE,$HTARGETPROCESSHANDLE,$IDESIREDACCESS,$FINHERITHANDLE,$IOPTIONS)
  1029. LOCAL $ACALL=DLLCALL("kernel32.dll","bool","DuplicateHandle","handle",$HSOURCEPROCESSHANDLE,"handle",$HSOURCEHANDLE,"handle",$HTARGETPROCESSHANDLE,"handle*",0,"dword",$IDESIREDACCESS,"bool",$FINHERITHANDLE,"dword",$IOPTIONS)
  1030. IF @ERROR OR NOT $ACALL[0]THEN RETURN SETERROR(1,@EXTENDED,0)
  1031. RETURN $ACALL[4]
  1032. ENDFUNC
  1033. FUNC _WINAPI_ENABLEWINDOW($HWND,$FENABLE=TRUE )
  1034. LOCAL $ARESULT=DLLCALL("user32.dll","bool","EnableWindow","hwnd",$HWND,"bool",$FENABLE)
  1035. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1036. RETURN $ARESULT[0]
  1037. ENDFUNC
  1038. FUNC _WINAPI_ENUMDISPLAYDEVICES($SDEVICE,$IDEVNUM)
  1039. LOCAL $TNAME=0,$IFLAGS=0,$ADEVICE[5]
  1040. IF $SDEVICE<>"" THEN
  1041. $TNAME=DLLSTRUCTCREATE("wchar Text["&STRINGLEN($SDEVICE)+1&"]")
  1042. DLLSTRUCTSETDATA($TNAME,"Text",$SDEVICE)
  1043. ENDIF
  1044. LOCAL $TDEVICE=DLLSTRUCTCREATE($TAGDISPLAY_DEVICE)
  1045. LOCAL $IDEVICE=DLLSTRUCTGETSIZE($TDEVICE)
  1046. DLLSTRUCTSETDATA($TDEVICE,"Size",$IDEVICE)
  1047. DLLCALL("user32.dll","bool","EnumDisplayDevicesW","struct*",$TNAME,"dword",$IDEVNUM,"struct*",$TDEVICE,"dword",1)
  1048. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1049. LOCAL $IN=DLLSTRUCTGETDATA($TDEVICE,"Flags")
  1050. IF BITAND($IN,$__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKTOP)<>0 THEN $IFLAGS=BITOR($IFLAGS,1)
  1051. IF BITAND($IN,$__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE)<>0 THEN $IFLAGS=BITOR($IFLAGS,2)
  1052. IF BITAND($IN,$__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER)<>0 THEN $IFLAGS=BITOR($IFLAGS,4)
  1053. IF BITAND($IN,$__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE)<>0 THEN $IFLAGS=BITOR($IFLAGS,8)
  1054. IF BITAND($IN,$__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE)<>0 THEN $IFLAGS=BITOR($IFLAGS,16)
  1055. IF BITAND($IN,$__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED)<>0 THEN $IFLAGS=BITOR($IFLAGS,32)
  1056. $ADEVICE[0]=TRUE
  1057. $ADEVICE[1]=DLLSTRUCTGETDATA($TDEVICE,"Name")
  1058. $ADEVICE[2]=DLLSTRUCTGETDATA($TDEVICE,"String")
  1059. $ADEVICE[3]=$IFLAGS
  1060. $ADEVICE[4]=DLLSTRUCTGETDATA($TDEVICE,"ID")
  1061. RETURN $ADEVICE
  1062. ENDFUNC
  1063. FUNC _WINAPI_ENUMWINDOWS($FVISIBLE=TRUE ,$HWND=DEFAULT )
  1064. __WINAPI_ENUMWINDOWSINIT()
  1065. IF $HWND=DEFAULT THEN $HWND=_WINAPI_GETDESKTOPWINDOW()
  1066. __WINAPI_ENUMWINDOWSCHILD($HWND,$FVISIBLE)
  1067. RETURN $__GAWINLIST_WINAPI
  1068. ENDFUNC
  1069. FUNC __WINAPI_ENUMWINDOWSADD($HWND,$SCLASS="")
  1070. IF $SCLASS="" THEN $SCLASS=_WINAPI_GETCLASSNAME($HWND)
  1071. $__GAWINLIST_WINAPI[0][0]+=1
  1072. LOCAL $ICOUNT=$__GAWINLIST_WINAPI[0][0]
  1073. IF $ICOUNT>=$__GAWINLIST_WINAPI[0][1]THEN
  1074. REDIM $__GAWINLIST_WINAPI[$ICOUNT+64][2]
  1075. $__GAWINLIST_WINAPI[0][1]+=64
  1076. ENDIF
  1077. $__GAWINLIST_WINAPI[$ICOUNT][0]=$HWND
  1078. $__GAWINLIST_WINAPI[$ICOUNT][1]=$SCLASS
  1079. ENDFUNC
  1080. FUNC __WINAPI_ENUMWINDOWSCHILD($HWND,$FVISIBLE=TRUE )
  1081. $HWND=_WINAPI_GETWINDOW($HWND,$__WINAPICONSTANT_GW_CHILD)
  1082. WHILE $HWND<>0
  1083. IF (NOT $FVISIBLE)OR _WINAPI_ISWINDOWVISIBLE($HWND)THEN
  1084. __WINAPI_ENUMWINDOWSCHILD($HWND,$FVISIBLE)
  1085. __WINAPI_ENUMWINDOWSADD($HWND)
  1086. ENDIF
  1087. $HWND=_WINAPI_GETWINDOW($HWND,$__WINAPICONSTANT_GW_HWNDNEXT)
  1088. WEND
  1089. ENDFUNC
  1090. FUNC __WINAPI_ENUMWINDOWSINIT()
  1091. REDIM $__GAWINLIST_WINAPI[64][2]
  1092. $__GAWINLIST_WINAPI[0][0]=0
  1093. $__GAWINLIST_WINAPI[0][1]=64
  1094. ENDFUNC
  1095. FUNC _WINAPI_ENUMWINDOWSPOPUP()
  1096. __WINAPI_ENUMWINDOWSINIT()
  1097. LOCAL $HWND=_WINAPI_GETWINDOW(_WINAPI_GETDESKTOPWINDOW(),$__WINAPICONSTANT_GW_CHILD)
  1098. LOCAL $SCLASS
  1099. WHILE $HWND<>0
  1100. IF _WINAPI_ISWINDOWVISIBLE($HWND)THEN
  1101. $SCLASS=_WINAPI_GETCLASSNAME($HWND)
  1102. IF $SCLASS="#32768" THEN
  1103. __WINAPI_ENUMWINDOWSADD($HWND)
  1104. ELSEIF $SCLASS="ToolbarWindow32" THEN
  1105. __WINAPI_ENUMWINDOWSADD($HWND)
  1106. ELSEIF $SCLASS="ToolTips_Class32" THEN
  1107. __WINAPI_ENUMWINDOWSADD($HWND)
  1108. ELSEIF $SCLASS="BaseBar" THEN
  1109. __WINAPI_ENUMWINDOWSCHILD($HWND)
  1110. ENDIF
  1111. ENDIF
  1112. $HWND=_WINAPI_GETWINDOW($HWND,$__WINAPICONSTANT_GW_HWNDNEXT)
  1113. WEND
  1114. RETURN $__GAWINLIST_WINAPI
  1115. ENDFUNC
  1116. FUNC _WINAPI_ENUMWINDOWSTOP()
  1117. __WINAPI_ENUMWINDOWSINIT()
  1118. LOCAL $HWND=_WINAPI_GETWINDOW(_WINAPI_GETDESKTOPWINDOW(),$__WINAPICONSTANT_GW_CHILD)
  1119. WHILE $HWND<>0
  1120. IF _WINAPI_ISWINDOWVISIBLE($HWND)THEN __WINAPI_ENUMWINDOWSADD($HWND)
  1121. $HWND=_WINAPI_GETWINDOW($HWND,$__WINAPICONSTANT_GW_HWNDNEXT)
  1122. WEND
  1123. RETURN $__GAWINLIST_WINAPI
  1124. ENDFUNC
  1125. FUNC _WINAPI_EXPANDENVIRONMENTSTRINGS($SSTRING)
  1126. LOCAL $ARESULT=DLLCALL("kernel32.dll","dword","ExpandEnvironmentStringsW","wstr",$SSTRING,"wstr","","dword",4096)
  1127. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,"")
  1128. RETURN $ARESULT[2]
  1129. ENDFUNC
  1130. FUNC _WINAPI_EXTRACTICONEX($SFILE,$IINDEX,$PLARGE,$PSMALL,$IICONS)
  1131. LOCAL $ARESULT=DLLCALL("shell32.dll","uint","ExtractIconExW","wstr",$SFILE,"int",$IINDEX,"struct*",$PLARGE,"struct*",$PSMALL,"uint",$IICONS)
  1132. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1133. RETURN $ARESULT[0]
  1134. ENDFUNC
  1135. FUNC _WINAPI_FATALAPPEXIT($SMESSAGE)
  1136. DLLCALL("kernel32.dll","none","FatalAppExitW","uint",0,"wstr",$SMESSAGE)
  1137. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED)
  1138. ENDFUNC
  1139. FUNC _WINAPI_FILLRECT($HDC,$PTRRECT,$HBRUSH)
  1140. LOCAL $ARESULT
  1141. IF ISPTR($HBRUSH)THEN
  1142. $ARESULT=DLLCALL("user32.dll","int","FillRect","handle",$HDC,"struct*",$PTRRECT,"handle",$HBRUSH)
  1143. ELSE
  1144. $ARESULT=DLLCALL("user32.dll","int","FillRect","handle",$HDC,"struct*",$PTRRECT,"dword_ptr",$HBRUSH)
  1145. ENDIF
  1146. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1147. RETURN $ARESULT[0]
  1148. ENDFUNC
  1149. FUNC _WINAPI_FINDEXECUTABLE($SFILENAME,$SDIRECTORY="")
  1150. LOCAL $ARESULT=DLLCALL("shell32.dll","INT","FindExecutableW","wstr",$SFILENAME,"wstr",$SDIRECTORY,"wstr","")
  1151. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1152. RETURN SETEXTENDED($ARESULT[0],$ARESULT[3])
  1153. ENDFUNC
  1154. FUNC _WINAPI_FINDWINDOW($SCLASSNAME,$SWINDOWNAME)
  1155. LOCAL $ARESULT=DLLCALL("user32.dll","hwnd","FindWindowW","wstr",$SCLASSNAME,"wstr",$SWINDOWNAME)
  1156. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1157. RETURN $ARESULT[0]
  1158. ENDFUNC
  1159. FUNC _WINAPI_FLASHWINDOW($HWND,$FINVERT=TRUE )
  1160. LOCAL $ARESULT=DLLCALL("user32.dll","bool","FlashWindow","hwnd",$HWND,"bool",$FINVERT)
  1161. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1162. RETURN $ARESULT[0]
  1163. ENDFUNC
  1164. FUNC _WINAPI_FLASHWINDOWEX($HWND,$IFLAGS=3,$ICOUNT=3,$ITIMEOUT=0)
  1165. LOCAL $TFLASH=DLLSTRUCTCREATE($TAGFLASHWINFO)
  1166. LOCAL $IFLASH=DLLSTRUCTGETSIZE($TFLASH)
  1167. LOCAL $IMODE=0
  1168. IF BITAND($IFLAGS,1)<>0 THEN $IMODE=BITOR($IMODE,$__WINAPICONSTANT_FLASHW_CAPTION)
  1169. IF BITAND($IFLAGS,2)<>0 THEN $IMODE=BITOR($IMODE,$__WINAPICONSTANT_FLASHW_TRAY)
  1170. IF BITAND($IFLAGS,4)<>0 THEN $IMODE=BITOR($IMODE,$__WINAPICONSTANT_FLASHW_TIMER)
  1171. IF BITAND($IFLAGS,8)<>0 THEN $IMODE=BITOR($IMODE,$__WINAPICONSTANT_FLASHW_TIMERNOFG)
  1172. DLLSTRUCTSETDATA($TFLASH,"Size",$IFLASH)
  1173. DLLSTRUCTSETDATA($TFLASH,"hWnd",$HWND)
  1174. DLLSTRUCTSETDATA($TFLASH,"Flags",$IMODE)
  1175. DLLSTRUCTSETDATA($TFLASH,"Count",$ICOUNT)
  1176. DLLSTRUCTSETDATA($TFLASH,"Timeout",$ITIMEOUT)
  1177. LOCAL $ARESULT=DLLCALL("user32.dll","bool","FlashWindowEx","struct*",$TFLASH)
  1178. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1179. RETURN $ARESULT[0]
  1180. ENDFUNC
  1181. FUNC _WINAPI_FLOATTOINT($NFLOAT)
  1182. LOCAL $TFLOAT=DLLSTRUCTCREATE("float")
  1183. LOCAL $TINT=DLLSTRUCTCREATE("int",DLLSTRUCTGETPTR($TFLOAT))
  1184. DLLSTRUCTSETDATA($TFLOAT,1,$NFLOAT)
  1185. RETURN DLLSTRUCTGETDATA($TINT,1)
  1186. ENDFUNC
  1187. FUNC _WINAPI_FLUSHFILEBUFFERS($HFILE)
  1188. LOCAL $ARESULT=DLLCALL("kernel32.dll","bool","FlushFileBuffers","handle",$HFILE)
  1189. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1190. RETURN $ARESULT[0]
  1191. ENDFUNC
  1192. FUNC _WINAPI_FORMATMESSAGE($IFLAGS,$PSOURCE,$IMESSAGEID,$ILANGUAGEID,BYREF $PBUFFER,$ISIZE,$VARGUMENTS)
  1193. LOCAL $SBUFFERTYPE="struct*"
  1194. IF ISSTRING($PBUFFER)THEN $SBUFFERTYPE="wstr"
  1195. LOCAL $ARESULT=DLLCALL("Kernel32.dll","dword","FormatMessageW","dword",$IFLAGS,"ptr",$PSOURCE,"dword",$IMESSAGEID,"dword",$ILANGUAGEID,$SBUFFERTYPE,$PBUFFER,"dword",$ISIZE,"ptr",$VARGUMENTS)
  1196. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1197. IF $SBUFFERTYPE="wstr" THEN $PBUFFER=$ARESULT[5]
  1198. RETURN $ARESULT[0]
  1199. ENDFUNC
  1200. FUNC _WINAPI_FRAMERECT($HDC,$PTRRECT,$HBRUSH)
  1201. LOCAL $ARESULT=DLLCALL("user32.dll","int","FrameRect","handle",$HDC,"ptr",$PTRRECT,"handle",$HBRUSH)
  1202. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1203. RETURN $ARESULT[0]
  1204. ENDFUNC
  1205. FUNC _WINAPI_FREELIBRARY($HMODULE)
  1206. LOCAL $ARESULT=DLLCALL("kernel32.dll","bool","FreeLibrary","handle",$HMODULE)
  1207. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1208. RETURN $ARESULT[0]
  1209. ENDFUNC
  1210. FUNC _WINAPI_GETANCESTOR($HWND,$IFLAGS=1)
  1211. LOCAL $ARESULT=DLLCALL("user32.dll","hwnd","GetAncestor","hwnd",$HWND,"uint",$IFLAGS)
  1212. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1213. RETURN $ARESULT[0]
  1214. ENDFUNC
  1215. FUNC _WINAPI_GETASYNCKEYSTATE($IKEY)
  1216. LOCAL $ARESULT=DLLCALL("user32.dll","short","GetAsyncKeyState","int",$IKEY)
  1217. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1218. RETURN $ARESULT[0]
  1219. ENDFUNC
  1220. FUNC _WINAPI_GETBKMODE($HDC)
  1221. LOCAL $ARESULT=DLLCALL("gdi32.dll","int","GetBkMode","handle",$HDC)
  1222. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1223. RETURN $ARESULT[0]
  1224. ENDFUNC
  1225. FUNC _WINAPI_GETCLASSNAME($HWND)
  1226. IF NOT ISHWND($HWND)THEN $HWND=GUICTRLGETHANDLE($HWND)
  1227. LOCAL $ARESULT=DLLCALL("user32.dll","int","GetClassNameW","hwnd",$HWND,"wstr","","int",4096)
  1228. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1229. RETURN SETEXTENDED($ARESULT[0],$ARESULT[2])
  1230. ENDFUNC
  1231. FUNC _WINAPI_GETCLIENTHEIGHT($HWND)
  1232. LOCAL $TRECT=_WINAPI_GETCLIENTRECT($HWND)
  1233. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1234. RETURN DLLSTRUCTGETDATA($TRECT,"Bottom")-DLLSTRUCTGETDATA($TRECT,"Top")
  1235. ENDFUNC
  1236. FUNC _WINAPI_GETCLIENTWIDTH($HWND)
  1237. LOCAL $TRECT=_WINAPI_GETCLIENTRECT($HWND)
  1238. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1239. RETURN DLLSTRUCTGETDATA($TRECT,"Right")-DLLSTRUCTGETDATA($TRECT,"Left")
  1240. ENDFUNC
  1241. FUNC _WINAPI_GETCLIENTRECT($HWND)
  1242. LOCAL $TRECT=DLLSTRUCTCREATE($TAGRECT)
  1243. DLLCALL("user32.dll","bool","GetClientRect","hwnd",$HWND,"struct*",$TRECT)
  1244. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1245. RETURN $TRECT
  1246. ENDFUNC
  1247. FUNC _WINAPI_GETCURRENTPROCESS()
  1248. LOCAL $ARESULT=DLLCALL("kernel32.dll","handle","GetCurrentProcess")
  1249. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1250. RETURN $ARESULT[0]
  1251. ENDFUNC
  1252. FUNC _WINAPI_GETCURRENTPROCESSID()
  1253. LOCAL $ARESULT=DLLCALL("kernel32.dll","dword","GetCurrentProcessId")
  1254. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1255. RETURN $ARESULT[0]
  1256. ENDFUNC
  1257. FUNC _WINAPI_GETCURRENTTHREAD()
  1258. LOCAL $ARESULT=DLLCALL("kernel32.dll","handle","GetCurrentThread")
  1259. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1260. RETURN $ARESULT[0]
  1261. ENDFUNC
  1262. FUNC _WINAPI_GETCURRENTTHREADID()
  1263. LOCAL $ARESULT=DLLCALL("kernel32.dll","dword","GetCurrentThreadId")
  1264. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1265. RETURN $ARESULT[0]
  1266. ENDFUNC
  1267. FUNC _WINAPI_GETCURSORINFO()
  1268. LOCAL $TCURSOR=DLLSTRUCTCREATE($TAGCURSORINFO)
  1269. LOCAL $ICURSOR=DLLSTRUCTGETSIZE($TCURSOR)
  1270. DLLSTRUCTSETDATA($TCURSOR,"Size",$ICURSOR)
  1271. DLLCALL("user32.dll","bool","GetCursorInfo","struct*",$TCURSOR)
  1272. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1273. LOCAL $ACURSOR[5]
  1274. $ACURSOR[0]=TRUE
  1275. $ACURSOR[1]=DLLSTRUCTGETDATA($TCURSOR,"Flags")<>0
  1276. $ACURSOR[2]=DLLSTRUCTGETDATA($TCURSOR,"hCursor")
  1277. $ACURSOR[3]=DLLSTRUCTGETDATA($TCURSOR,"X")
  1278. $ACURSOR[4]=DLLSTRUCTGETDATA($TCURSOR,"Y")
  1279. RETURN $ACURSOR
  1280. ENDFUNC
  1281. FUNC _WINAPI_GETDC($HWND)
  1282. LOCAL $ARESULT=DLLCALL("user32.dll","handle","GetDC","hwnd",$HWND)
  1283. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1284. RETURN $ARESULT[0]
  1285. ENDFUNC
  1286. FUNC _WINAPI_GETDESKTOPWINDOW()
  1287. LOCAL $ARESULT=DLLCALL("user32.dll","hwnd","GetDesktopWindow")
  1288. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1289. RETURN $ARESULT[0]
  1290. ENDFUNC
  1291. FUNC _WINAPI_GETDEVICECAPS($HDC,$IINDEX)
  1292. LOCAL $ARESULT=DLLCALL("gdi32.dll","int","GetDeviceCaps","handle",$HDC,"int",$IINDEX)
  1293. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1294. RETURN $ARESULT[0]
  1295. ENDFUNC
  1296. FUNC _WINAPI_GETDIBITS($HDC,$HBMP,$ISTARTSCAN,$ISCANLINES,$PBITS,$PBI,$IUSAGE)
  1297. LOCAL $ARESULT=DLLCALL("gdi32.dll","int","GetDIBits","handle",$HDC,"handle",$HBMP,"uint",$ISTARTSCAN,"uint",$ISCANLINES,"ptr",$PBITS,"ptr",$PBI,"uint",$IUSAGE)
  1298. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,FALSE )
  1299. RETURN $ARESULT[0]
  1300. ENDFUNC
  1301. FUNC _WINAPI_GETDLGCTRLID($HWND)
  1302. LOCAL $ARESULT=DLLCALL("user32.dll","int","GetDlgCtrlID","hwnd",$HWND)
  1303. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1304. RETURN $ARESULT[0]
  1305. ENDFUNC
  1306. FUNC _WINAPI_GETDLGITEM($HWND,$IITEMID)
  1307. LOCAL $ARESULT=DLLCALL("user32.dll","hwnd","GetDlgItem","hwnd",$HWND,"int",$IITEMID)
  1308. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1309. RETURN $ARESULT[0]
  1310. ENDFUNC
  1311. FUNC _WINAPI_GETFOCUS()
  1312. LOCAL $ARESULT=DLLCALL("user32.dll","hwnd","GetFocus")
  1313. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1314. RETURN $ARESULT[0]
  1315. ENDFUNC
  1316. FUNC _WINAPI_GETFOREGROUNDWINDOW()
  1317. LOCAL $ARESULT=DLLCALL("user32.dll","hwnd","GetForegroundWindow")
  1318. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1319. RETURN $ARESULT[0]
  1320. ENDFUNC
  1321. FUNC _WINAPI_GETGUIRESOURCES($IFLAG=0,$HPROCESS=-1)
  1322. IF $HPROCESS=-1 THEN $HPROCESS=_WINAPI_GETCURRENTPROCESS()
  1323. LOCAL $ARESULT=DLLCALL("user32.dll","dword","GetGuiResources","handle",$HPROCESS,"dword",$IFLAG)
  1324. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1325. RETURN $ARESULT[0]
  1326. ENDFUNC
  1327. FUNC _WINAPI_GETICONINFO($HICON)
  1328. LOCAL $TINFO=DLLSTRUCTCREATE($TAGICONINFO)
  1329. DLLCALL("user32.dll","bool","GetIconInfo","handle",$HICON,"struct*",$TINFO)
  1330. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1331. LOCAL $AICON[6]
  1332. $AICON[0]=TRUE
  1333. $AICON[1]=DLLSTRUCTGETDATA($TINFO,"Icon")<>0
  1334. $AICON[2]=DLLSTRUCTGETDATA($TINFO,"XHotSpot")
  1335. $AICON[3]=DLLSTRUCTGETDATA($TINFO,"YHotSpot")
  1336. $AICON[4]=DLLSTRUCTGETDATA($TINFO,"hMask")
  1337. $AICON[5]=DLLSTRUCTGETDATA($TINFO,"hColor")
  1338. RETURN $AICON
  1339. ENDFUNC
  1340. FUNC _WINAPI_GETFILESIZEEX($HFILE)
  1341. LOCAL $ARESULT=DLLCALL("kernel32.dll","bool","GetFileSizeEx","handle",$HFILE,"int64*",0)
  1342. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1343. RETURN $ARESULT[2]
  1344. ENDFUNC
  1345. FUNC _WINAPI_GETLASTERRORMESSAGE()
  1346. LOCAL $TBUFFERPTR=DLLSTRUCTCREATE("ptr")
  1347. LOCAL $NCOUNT=_WINAPI_FORMATMESSAGE(BITOR($__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER,$__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM),0,_WINAPI_GETLASTERROR(),0,$TBUFFERPTR,0,0)
  1348. IF @ERROR THEN RETURN SETERROR(@ERROR,0,"")
  1349. LOCAL $STEXT=""
  1350. LOCAL $PBUFFER=DLLSTRUCTGETDATA($TBUFFERPTR,1)
  1351. IF $PBUFFER THEN
  1352. IF $NCOUNT>0 THEN
  1353. LOCAL $TBUFFER=DLLSTRUCTCREATE("wchar["&($NCOUNT+1)&"]",$PBUFFER)
  1354. $STEXT=DLLSTRUCTGETDATA($TBUFFER,1)
  1355. ENDIF
  1356. _WINAPI_LOCALFREE($PBUFFER)
  1357. ENDIF
  1358. RETURN $STEXT
  1359. ENDFUNC
  1360. FUNC _WINAPI_GETLAYEREDWINDOWATTRIBUTES($HWND,BYREF $I_TRANSCOLOR,BYREF $TRANSPARENCY,$ASCOLORREF=FALSE )
  1361. $I_TRANSCOLOR=-1
  1362. $TRANSPARENCY=-1
  1363. LOCAL $ARESULT=DLLCALL("user32.dll","bool","GetLayeredWindowAttributes","hwnd",$HWND,"dword*",$I_TRANSCOLOR,"byte*",$TRANSPARENCY,"dword*",0)
  1364. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1365. IF NOT $ASCOLORREF THEN
  1366. $ARESULT[2]=INT(BINARYMID($ARESULT[2],3,1)&BINARYMID($ARESULT[2],2,1)&BINARYMID($ARESULT[2],1,1))
  1367. ENDIF
  1368. $I_TRANSCOLOR=$ARESULT[2]
  1369. $TRANSPARENCY=$ARESULT[3]
  1370. RETURN $ARESULT[4]
  1371. ENDFUNC
  1372. FUNC _WINAPI_GETMODULEHANDLE($SMODULENAME)
  1373. LOCAL $SMODULENAMETYPE="wstr"
  1374. IF $SMODULENAME="" THEN
  1375. $SMODULENAME=0
  1376. $SMODULENAMETYPE="ptr"
  1377. ENDIF
  1378. LOCAL $ARESULT=DLLCALL("kernel32.dll","handle","GetModuleHandleW",$SMODULENAMETYPE,$SMODULENAME)
  1379. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1380. RETURN $ARESULT[0]
  1381. ENDFUNC
  1382. FUNC _WINAPI_GETMOUSEPOS($FTOCLIENT=FALSE ,$HWND=0)
  1383. LOCAL $IMODE=OPT("MouseCoordMode",1)
  1384. LOCAL $APOS=MOUSEGETPOS()
  1385. OPT("MouseCoordMode",$IMODE)
  1386. LOCAL $TPOINT=DLLSTRUCTCREATE($TAGPOINT)
  1387. DLLSTRUCTSETDATA($TPOINT,"X",$APOS[0])
  1388. DLLSTRUCTSETDATA($TPOINT,"Y",$APOS[1])
  1389. IF $FTOCLIENT THEN
  1390. _WINAPI_SCREENTOCLIENT($HWND,$TPOINT)
  1391. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1392. ENDIF
  1393. RETURN $TPOINT
  1394. ENDFUNC
  1395. FUNC _WINAPI_GETMOUSEPOSX($FTOCLIENT=FALSE ,$HWND=0)
  1396. LOCAL $TPOINT=_WINAPI_GETMOUSEPOS($FTOCLIENT,$HWND)
  1397. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1398. RETURN DLLSTRUCTGETDATA($TPOINT,"X")
  1399. ENDFUNC
  1400. FUNC _WINAPI_GETMOUSEPOSY($FTOCLIENT=FALSE ,$HWND=0)
  1401. LOCAL $TPOINT=_WINAPI_GETMOUSEPOS($FTOCLIENT,$HWND)
  1402. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1403. RETURN DLLSTRUCTGETDATA($TPOINT,"Y")
  1404. ENDFUNC
  1405. FUNC _WINAPI_GETOBJECT($HOBJECT,$ISIZE,$POBJECT)
  1406. LOCAL $ARESULT=DLLCALL("gdi32.dll","int","GetObjectW","handle",$HOBJECT,"int",$ISIZE,"ptr",$POBJECT)
  1407. IF @ERROR THEN RETURN SETERROR(@ERROR,@EXTENDED,0)
  1408. RETURN $ARESULT[0]
  1409. ENDFUNC
  1410. FUNC _WINAPI_GETOPENFILENAME($STITLE="",$SFILTER="All files (*.*)",$SINITALDIR=".",$SDEFAULTFILE="",$SDEFAULTEXT="",$IFILTERINDEX=1,$IFLAGS=0,$IFLAGSEX=0,$HWNDOWNER=0)
  1411. LOCAL $IPATHLEN=4096
  1412. LOCAL $INULLS=0
  1413. LOCAL $TOFN=DLLSTRUCTCREATE($TAGOPENFILENAME)
  1414. LOCAL $AFILES[1]=[0]
  1415. LOCAL $IFLAG=$IFLAGS
  1416. LOCAL $ASFLINES=STRINGSPLIT($SFILTER,"|")
  1417. LOCAL $ASFILTER[$ASFLINES[0]*2+1]
  1418. LOCAL $ISTART,$IFINAL,$STFILTER
  1419. $ASFILTER[0]=$ASFLINES[0]*2
  1420. FOR $I=1 TO $ASFLINES[0]
  1421. $ISTART=STRINGINSTR($ASFLINES[$I],"(",0,1)
  1422. $IFINAL=STRINGINSTR($ASFLINES[$I],")",0,-1)
  1423. $ASFILTER[$I*2-1]=STRINGSTRIPWS(STRINGLEFT($ASFLINES[$I],$ISTART-1),3)
  1424. $ASFILTER[$I*2]=STRINGSTRIPWS(STRINGTRIMRIGHT(STRINGTRIMLEFT($ASFLINES[$I],$ISTART),STRINGLEN($ASFLINES[$I])-$IFINAL+1),3)
  1425. $STFILTER&="wchar["&STRINGLEN($ASFILTER[$I*2-1])+1&"];wchar["&STRINGLEN($ASFILTER[$I*2])+1&"];"
  1426. NEXT
  1427. LOCAL $TTITLE=DLLSTRUCTCREATE("wchar Title["&STRINGLEN($STITLE)+1&"]")
  1428. LOCAL $TINITIALDIR=DLLSTRUCTCREATE("wchar InitDir["&STRINGLEN($SINITALDIR)+1&"]")
  1429. LOCAL $TFILTER=DLLSTRUCTCREATE($STFILTER&"wchar")
  1430. LOCAL $TPATH=DLLSTRUCTCREATE("wchar Path["&$IPATHLEN&"]")
  1431. LOCAL $TEXTN=DLLSTRUCTCREATE("wchar Extension["&STRINGLEN($SDEFAULTEXT)+1&"]")
  1432. FOR $I=1 TO $ASFILTER[0]
  1433. DLLSTRUCTSETDATA($TFILTER,$I,$ASFILTER[$I])
  1434. NEXT
  1435. DLLSTRUCTSETDATA($TTITLE,"Title",$STITLE)
  1436. DLLSTRUCTSETDATA($TINITIALDIR,"InitDir",$SINITALDIR)
  1437. DLLSTRUCTSETDATA($TPATH,"Path",$SDEFAULTFILE)
  1438. DLLSTRUCTSETDATA($TEXTN,"Extension",$SDEFAULTEXT)
  1439. DLLSTRUCTSETDATA($TOFN,"StructSize",DLLSTRUCTGETSIZE($TOFN))
  1440. DLLSTRUCTSETDATA($TOFN,"hwndOwner",$HWNDOWNER)
  1441. DLLSTRUCTSETDATA($TOFN,"lpstrFilter",DLLSTRUCTGETPTR($TFILTER))
  1442. DLLSTRUCTSETDATA($TOFN,"nFilterIndex",$IFILTERINDEX)
  1443. DLLSTRUCTSETDATA($TOFN,"lpstrFile",DLLSTRUCTGETPTR($TPATH))
  1444. DLLSTRUCTSETDATA($TOFN,"nMaxFile",$IPATHLEN)
  1445. DLLSTRUCTSETDATA($TOFN,"lpstrInitialDir",DLLSTRUCTGETPTR($TINITIALDIR))
  1446. DLLSTRUCTSETDATA($TOFN,"lpstrTitle",DLLSTRUCTGETPTR($TTITLE))
  1447. DLLSTRUCTSETDATA($TOFN,"Flags",$IFLAG)
  1448. DLLSTRUCTSETDATA($TOFN,"lpstrDefExt",DLLSTRUCTGETPTR($TEXTN))
  1449. DLLSTRUCTSETDATA($TOFN,"FlagsEx",$IFLAGSEX)
  1450. DLLCALL("comdlg32.dll","bool","GetOpenFileNameW","struct*",$TOFN)
  1451. IF @ERRO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement