You are on page 1of 179

GII THIU V AUTOIT

AutoIt v3 l mt ngn ng lp trnh c cung cp min ph, c dng kch bn


ging nh BASIC c thit k t ng ha cc GUI (Graphic User Interface :
giao din ngi dng) v cc thao tc thng dng. N l s phi hp ca vic gi
lp nhn phm , di chuyn chut v thao tc trn ca s/control (control l cc i
tng tng tc c trn ca s, v d nh l button - nt bm) thc hin t
ng cc tc v theo cch thc m cc ngn ng khc khng th lm hoc lm
khng chun xc. AutoIt c dung lng rt nh gn, c th chy c lp trn tt c
cc phin bn ca Windows m khng cn cc runtime lm nn. Tuy nhin, k
t phin bn v3.3, AutoIt khng cn h tr cho Windows 9x v Win NT 4.0.
Ban u AutoIt c thit k t ng cu hnh cho hng ngn my PC. Theo
thi gian, AutoIt tr thnh mt ngn ng y sc mnh vi s h tr cc biu thc
phc tp, hm do ngi dng t nh ngha, cc vng lp v mi th m mt ngi
lp trnh kch bn dy dn mong i.
y l cc tnh nng chnh :
D hc v cc c php n gin
Gi lp c vic nhn phm v di chuyn chut
Thao tc c vi cc tin trnh v ca s
Tng tc c vi cc control trn ca s
File m c th c bin dch thnh mt file thi hnh duy nht
Cho php to GUI - giao din ngi dng
H tr COM (Component Object Model)
H tr biu thc thng thng
Gi mt cch c nh hng cc DLL m rng v cc hm API
Ti liu chi tit v cng ng rng h tr ln
Tng thch vi tt c phn h ca Windows
H tr Unicode v x64
Lm vic vi User Account Control (UAC) trn Vista
AutoIt c thit k sao cho nh nht c th v khng cn dng n cc file DLL
m rng hoc Registry n c th an ton khi chy trn cc Server. Cc file
script (m, kch bn) c th c bin dch thnh file exe vi cng c Aut2Exe.
S kt hp cc COM v DLL t vic gi AutoItX cho php bn thm cc tnh nng
c nht vo cc on script hay ngn ng lp trnh yu thch.
CU TRC TH MC CI T AUTOIT
Cc file v th mc Miu t
(Th mc cp trn)
AutoIt3.exe Chng trnh chnh ca AutoIt chy cc file script
AutoIt3_x64.exe Phin bn x64 ca AutoIt (nu c ci t).
AU3Info.exe
AutoIt Window Info Tool cung cp thng tin t ca
s.
AU3Info_x64.exe Phin bn x64 ca AutoIt (nu c ci t).
AU3Check.exe Trnh kim tra c php.
AutoIt.chm File tr gip, s dng AutoIt3.chm v UDFs3.chm
Uninstall.exe Trnh g b AutoIt
AutoIt v3 Website.url
Shortcut truy cp vo website
: http://www.autoitscript.com/autoit3/
Aut2Exe
Icons\ Cha cc icon (*.ico) dng cho file au3.
Aut2Exe.exe Trnh bin dch file ngun thnh file exe
Aut2Exe_x64.exe Phin bn x64 ca AutoIt (nu c ci t).
AutoItSC.bin Mu c th thc thi cho m c bin dch
AutoItSC_x64.bin Mu c th thc thi x64 cho m c bin dch.
UPX.exe
Trnh nn UPX nn kch thc ca file m khi dch
sang file exe
Examples
GUI\ Cc v d v GUI c vit trong AutoIt.
Helpfile\ Cha cc file script v d c dng trong file help
Extras
AutoUpdateIt\
Cha mt script gip cho vic cp nht phin bn mi
ca AutoIt3.
Editors\
Cha cc nh ngha mu c php cho vi trnh son
tho ph bin.
Exe2Aut\
Cha cc cng c chuyn file exe sang file script
ngun.
SQLite\ Cha tin ch dng lnh SQLite v file tr gip
v2_to_v3_Converter\
Cha cng c gip chuyn i c php AutoIt t
v2.64 sang AutoIt v3.
Icons
Cha icon c dng cho file au3
Include
Cha cc file th vin vi cc hm c nh ngha sn
AutoItX

Cha mt phin bn DLL ca AutoIt v3 cung cp mt tp hp con cc tnh
nng ca giao din ActiveX/COM v DLL.
SciTe
Cha trnh bin son vn bn SciTe vit script
Xin nhc li l chy c cc on script ca AutoIt, ch yu cu c file
AutoIt3.exe. Nu bn bin dch mt file script sang file c th thc thi th ngi
dng khc khng cn phi ci t AutoIt m vn c th chy c file script
bin dch.
(Ngoi l : di Windows NT4, file PSAPI.dll th cn thit trong ng dn hoc
trong th mc ci t AutoIt cho cc hm Process() lm vic.)
VIT SCRIPT
Trong AutoIt c tch hp sn trnh son tho SciTe cho php ta vit v chy
cc on script mt cch t ng. Tuy nhin y l bn rt gn cho nn c
lt b vi tnh nng v cng c b sung. Phin bn y cc bn c th ti v t
http://www.autoitscript.com/autoit3/scite/.
y ti xin ni thm vi im lu trong vic son m.
Khi vit script trong SciTe, bn cn phi lu li trc khi nhn
phm F5 chy. File ngun c ui l au3.
vit v hin th c ting Vit, bn vo "File >Encoding" sau
chn UCS -2 Little Endian hoc UCS-2 Big Endian.
SciTe s hin th cc dng lnh ca bn vi nhiu mu sc khc
nhau, ty theo thnh phn c php. Nu bn cm thy cc mu sc hin th
khng va th c th s dng cng c SciTeConfig chnh li. Cng c
ny c sn trong phin bn full ca SciTe hoc ti ring l t
www.autoitscript.com.
Nu bn khng thch dng SciTe son script th c th dng cc
cng c bin son min ph khc nh Crimson Editor
(http://www.crimsoneditor.com/) hoc Source Edit
(http://www.sourceedit.com/) nhng s phi thc hin cu hnh vic khai
bo chng trnh chy file au3 v trnh bin dch.Cc file c php c vit
sn do AutoIt cung cp c th dng cho nhiu trnh son tho v chng c
cha trong trong th mc Extra (...\AutoIt v3\Extra)
BIN DCH FILE SCRIPT THNH FILE EXE
Khi bin dch mt file script thnh file exe, bn c th yn tm rng n s chy
c trn mi my tnh ci h iu hnh Windows m khng cn bt c mt
runtime no lm nn. Bi v tt c cc #include cng s c nn, m ha v
kt hp vo trong mt file duy nht. Nhng bn cn phi chc chn mt iu rng
file script ca bn khng c li c php, bi v compiler khng thc hin kim tra
c php khi bin dch sang file *.exe.
Mun thc hin vic bin dch file script, c 3 cch :
Cch 1 : Bn cn gi cng c Aut2Exe. Vo menu "Start > All programs >
AutoIt v3 > Compile scritpt to exe" v lm theo hng dn ca mu form.
Error!



Cch 2 : T trnh son tho SciTe bn vo Tool >Compile hoc nhn Ctrl +
F7
Cch 3 : Nhp phi chut vo file ngun (au3) v chn Compile Script.
Error!

cch 2 v 3, file thi hnh s c to ra ngay ti th mc cha file ngun. Ngoi
ra cn c thm mt cch bin dch khc l dng command promt gi aut2exe
vi cc tham s ch nh. Cch ny kh di dng v phc tp nn khng cp
y.
CC TON T
AutoIt h tr cc ton t gn, tnh s hc, so snh, v logic.
Ton t Miu t
= Php gn. Vd : $var =5 (gn 5 vo bin $var)
+= Tng. Vd : $var +=2 (tng bin $var ln 2 n v, tng ng vi
$var = $var+2)
-= Gim. Vd : $var -=1 (gim bin $var xung 1 n v, tng ng
$var = $var -1)
*= Nhn.
/= Chia
&= Ni thm chui. Vd : $var ="one", v sau $var &= 10 ($var s
bng "one10" )

+ Cng hai s. Vd : 10 + 20 (bng 30)
- Tr hai s. Vd : 20 - 10 (bng 10)
* Nhn hai s. Vd : 20 * 10 (bng 200)
/ Chia hai s. Vd : 20 / 10 (bng 2)
& Ghp hai chui vi nhau. Vd : "one" & 10 (bng "one10" )
^ Ly tha. Vd : 2 ^ 4 (bng 16)

=
So snh bng (khng phn bit ch hoa v ch thng khi so snh
chui). Vd : If $var= 5 Then (tr v true nu bin $var mang gi tr
5)
== So snh bng (c phn bit ch hoa, ch thng khi so snh chui.
<> Khc hoc Khng bng.
> Ln hn.
>= Ln hn hoc bng
< Nh hn
<= Nh hn hoc bng

AND
Logic V (c hai). Vd : If $var =5 AND $var2 >6 Then (iu kin
tr v True nu $var bng 5 V $var2 ln hn 6 )
OR
Logic Hoc. Vd : If $var =5 OR $var2 >6 Then (Tr v True nu
$var bng 5 Hoc $var2 ln hn 6)
NOT Logic Ph nh. Vd : NOT 1 (tr v False)

Nu trong biu thc cn x l c s dng nhiu ton t th chng s c thc
hin theo th t trc sau. Vic tnh ton thng c thc hin t tri qua phi v
tun theo cc qui tc chung ca i s. Bn di l th t u tin ca cc ton t :
NOT
^
* /
+ -
&
< > <= >= = <> ==
AND OR
V d : 2 + 4 * 10 s c kt qu l 42:
Bi v php nhn * c u tin cao hn php cng + , nn 4 * 10 (bng
40) v 2 +40 (bng 42).
c kt qu tnh ton chnh xc bn nn s dng cp du ngoc n ( ) nhm
cc biu thc con mt cch thch hp.. Mc d khng c cp, song, du
ngoc n l ton t c u tin cao nht trong tt c cc ton t.
Vd : (2 + 4) * 10 bng 60. NOT (12+3)/5 s bng 0
i vi ton t logic AND, OR, ta c v d sau :
Vd 1 : If MyFunc1() OR MyFunc2() Then
(MyFunc2() s khng c gi nu nh MyFunc1() tr v True)
Vd 2 : If MyFunc1() AND MyFunc2() Then
(MyFunc2() s khng c gi nu MyFunc1() tr v False)
KIU D LIU
Trong AutoIt ch c mt loi d liu gi l Variant (tm dch l bin). Mt bin c
th cha d liu theo kiu chui (string) hoc l kiu s (number) ty vo tnh
hung s dng. V d nh nu bn nhn hai bin vi nhau th lc ny bin c kiu
number, cn nu bn s dng php ton ghp chui vi hai bin th chng s c
i x nh cc chui k t.
V d :
10 * 20 s bng s 200 (* l nhn hai bin vi nhau)
10* "20" cng s bng s 200
hoc "10" * "20" cng bng s 200
10 & 20 s tr v mt chui l "1020" (& l php ton ghp chui)
Nu mt chui c s dng nh mt s, mt php gi hm Number()nn c
thc hin. V nu nh k t u tin ca chui khng phi l mt k s th s tr
v mt s 0. V d :
10 * "abc" s tr v s 0
10* number("abc") cng tr v 0
10* number("25ghj") s tr v 250
Nu mt chui c s dng trong kiu boolean (True/False) v n l mt chui
rng "" th s c xem nh bng 0 (False).
KIU S - NUMBER
Number c th l s thp phn nh : 3, 5.642 v -8
cng c th l s thp phn theo dng khoa hc, v d nh 1.5e3 s thay cho 1500
(v 1.5*10^3)
hay h thp lc phn (hexa) : 0x409 hoc 0xff4a.
Ch :
H hexa trong AutoIt phi bt u vi 0x v theo sau l cc k s t 0 n
9 hoc/v cc k t a, b, c, d, e, f.
Khi tnh ton cc biu thc s, bn khng cn quan tm n vic gii hn
ca kiu d liu. Nu kt qu l s nguyn, AutoIt s tr v cho bn s
nguyn. Nu kt qu l s thp phn, AutoIt s tr v gi tr thp phn. dng
thp phn, gi tr ln nht c th cha l (2
64
- 1)/2.
Mt s hm trong AutoIt ch lm vic vi s nguyn 32 bit (mang gi tr
t 0 n 2
32
-1) v cc s ny s c chuyn i t ng, ty vo hm s
dng. V d nh BitAnd.
KIU CHUI - STRING
Chui k t c ro trong cp du ngoc kp " " hoc cp du nhy n ' '. V
d :
"this is a string"
' Welcome to AutoIt ! '
Mc d AutoIt h tr hai phng thc biu din chui nhng khi s dng bn phi
s dng thng nht c trt t, khng th bt u ro chui vi du ngoc kp, kt
thc chui vi du nhy n v ngc li. V d sau cho thy chui khng hp l :
" doctor for pc '(s bo li khi chy)
Tuy nhin, trong trng hp bn mun nhn mnh mt ni dung no trong
chui bng du ngoc kp hoc du nhy n th AutoIt cng h tr vic trn hai
dng k t ny. V bn phi nh tnh trt t v y trong khi s dng. V d :
' It is a "black" web '
"This "sentence" contains "lots" of "double-quotes". "
" It 's a dog "
nhng ' it 's a dog ' (l mt chui b li)

Mt bin kiu chui c th cha n 2,147,483,647 k t (tng ng vi 1651
quyn sch dy 500 trang, mi trang c 40 dng, mi dng c 65 k t)
KIU BOOLEAN
Kiu boolean ch mang hai gi tr ng hoc sai (True/False). Trong nhiu trng
hp s dng th mt kiu boolean tr v False khi gi tr ca bin l 0 hoc l
chui rng "". Tt c cc trng hp khc 0 u c xem nh True, theo mc
nh th True bng 1. Thng thng, cc php ton logic AND, OR hoc NOT
thng c dng vi kiu boolean trong vic thm nh iu kin.
V d :
$b1 =true
$b2 =false
$b3 =$b1 And $b2-->($b3 s bng False)
$b2 =5
$b3 =$b1 And $b2-->($b3 s bng True)
$b3 =$b1 +$b2 -->($b3 s bng 6)
$b3 =NOT $b3 -->($b3 s bng 0)
Trong trng hp bn x l mt bin boolean nh mt chui th :
mt boolean l true s cha chui "True"
mt boolean l false s cha chui "False"
v d :
$b1 =true
$str ="test is : "
$string =$str & $b1 ($string s cha chui "Test is : True")
KIU NH PHN - BINARY
Kiu binary c th lu gi mi byte gi tr, chng c chuyn i sang dng hexa
khi lu trong mt bin chui. V d :
$bin =Binary("abc")
$str =string($bin) -->"0x616263"
KIU CON TR - POINTER
Kiu con tr dng lu tr a ch b nh 32 bit hoc 64 bit ty vo phin bn
AutoIt c s dng. Thc cht con tr l mt s nguyn ch nh v tr ca thnh
phn d liu no trong b nh. Tuy nhin, khi truy xut trong AutoIt th con tr
s c lu dng hexa trong mt bin kiu chui. Handle (tm dch l knh hay
a ch trong b nh) ca ca s c tr v bi hm WinGetHandle l mt kiu
con tr, mang gi tr dng hexa. Nu mun xem dng thp phn bnh thng ta
dng hm Number .
--------------------------------
Mc d phn ny trnh by nhiu kiu d liu m AutoIt h tr nhng trn thc
t, bn ch cn quan tm n hai kiu chnh l number v string. y chnh l
hai kiu d liu thng dng nht khi vit script. Cc kiu khc dng tham kho
cho bit ch thc cht chng cng c to nn t hai kiu trn v thng chng t
khi c dng n. Nu bn l mt ngi snh si v lp trnh th vic ny
khng cn phi bn.
DNG CHUNG
Mt chng trnh AutoIt do nhiu thnh phn cu thnh, trong , bin, biu thc,
hm, macro,... ng vai tr quan trng. Tuy nhin chng ch l nhng "c th" c
lp mang mt chc nng nht nh. Tt c chng phi c kt hp vi nhau theo
mt cch thc hp l th ta s c c mt chng trnh hon chnh. Cc cch thc
do chnh AutoIt qui nh v mt on m chy c c dng tng qut nh sau
:
<ch nh th vin>
<khai bo cc bin>
<cc cu lnh, biu thc>
<cc dng miu t, ghi ch>
<gi hm hoc nh ngha hm>
. . . .
V d :
; chng trnh n gin hin thng ip hello world
; v welcome to autoit
Global $m
$m ="Hello world"
MsgBox(0, "My Msg", $m)
MsgBox(0, "Msg", "Welcome to AutoIt")
Ty vo mc ch ca ngi dng m cc thnh phn c th c hoc khng trong
chng trnh. Nh v d trn, ta thy khng c phn ch nh th vin bi v ta ch
s dng cc hm c thit k sn, lun c trong chng trnh chnh (nh hm
MsgBox ). Th vin ch cn thit khi ta gi cc hm m rng, thng thng l
trong vic thit k GUI (Graphic User Interface - giao din ngi dng) hoc cc
hm tin ch. Khai bo v s dng bin l cn thit nu nh ta mun lu cc d
liu, gi tr chng trnh hot ng. V hm, tt nhin l khng th thiu nu
nh bn vit cc chng trnh phc tp v c tn sut s dng li nhiu ln mt tc
v no .
V d nu trn ch l mt on m n gin, n khng th th hin ht tt c cc
chc nng trong AutoIt. Nhng ta cng phn tch s b hiu vn . Hai dng
lnh u tin l dng ghi ch, thng dng miu t gii thch chc nng ca
mt on m hay cu lnh no y. Dng th ba l khai bo bin. Dng th t l
gn gi tr cho bin. Hai dng cn li l gi v s dng hm hin th thng ip.
TH VIN
Ni theo kiu k thut, nu rnh v lp trnh bn c th t to ra mt chng trnh
hu ch, c tc dng ch cha ton nhng mnh ca chnh bn. Tuy nhin iu
ny l him hoi v n i hi rt nhiu cng sc v thi gian. Vi bt k mt ngn
ng lp trnh no, khng ring g AutoIt, nhng ngi to ra chng u cung cp
cho chng nhng chng trnh con, mi chng trnh con thc hin mt chc nng
nht nh m ta thng gi l hm. Tp hp tt c cc hm ny s c cha trong
mt file th vin, ty vo lnh vc x l ca hm m chng c lu trong cc file
th vin tng ng. V d nh th vin Array cha cc hm v qun l mng, th
vin Sound cha cc hm dng iu khin m thanh, th vin Math cho cc
hm ton hc....
Vi AutoIt th nhng ngi ci t trnh bin dch vit sn a s cc hm chung
m bn s dng. Cho nn s c rt nhiu hm m bn c th s dng, khng cn
khai bo th vin v theo mc nh chng l hm chun lun c a vo chng
trnh ca bn. Ch nhng hm m ngi ta lit k n vo UDF (User Defined
Function - hm do ngi s dng to sn, khng phi hm chun) hoc nhng hm
no c ghi ch th vin th bn mi ch nh th vin khi vit chng trnh. Nu
thch bn cng c th to mt th vin cha cc hm ca ring mnh sau khi bn
hiu c AutoIt.
CC CH
y l nhng ch quan trng m bn nn ghi nh c th s dng AutoIT mt
cch hiu qu.
AutoIt l mt ngn ng kch bn hot ng theo cch thng dch, cc lnh
c c v thc hin mt cch tun t. C ngha l c n u th thc
hin n , khng c ht mt lt nh cc ngn ng C hay Pascal.
AutoIt khng c k hiu ngn cch cc cu lnh vi nhau, cho nn mi cu
lnh phi c vit trn mt dng, cu lnh th hai phi c vit dng k
tip (trong c v pascal th s dng du chm phy ; ngn cch cc cu
lnh)
AutoIt khng phn bit ch hoa v ch thng i vi cc lnh c vit
(ngoi tr Title ca ca s, xem phn Window Title). V d, bin $var,
$VAR v $VaR ch l mt bin.
Tt c cc thnh phn lin quan n vic to v x l ca s c AutoIt h
tr rt mnh, chng l cc hm chc nng tng ng. Tuy nhin, trong gii
hn ca ebook, ti khng th hng dn tt c cc hm. Tham kho v t
dch trong file help l mt cch t hc hiu qu.
Comment hay ch thch l thnh phn rt hay dng khi lp trnh, i vi hu
ht cc ngn ng chng dng din t chc nng ca mt on lnh hay
nh du nhm d c, d quan st i vi vic trnh by. Chng khng h
c chc nng thi hnh v s c trnh iu khin b qua khi c n. V
AutoIt h tr hai dng ch thch. Ch thch theo dng (s dng du chm
phy bo hiu) v ch thch theo on (s dng cp #cs.. #ce) ro cc
dng ch thch bn trong. V d :
; this is a first comment line
; this is a second comment
#cs
.......comment start
Comment 1
Comment 2
........
comment end
#ce
MsgBox(0, "msg", "Welcome to AutoIT")
KHAI BO BIN

Bin l mt i din cho vng a ch no trong b nh, m d liu c
lu tr. Tuy nhin y ta khng cp n vn d liu c cha trong b
nh nh th no. Ta ch cn bit, bin l mt i din mang gi tr ta cn tnh ton.
Trong AutoIt, mt bin hp l phi c tn c bt u vi k t $ v sau l cc
k t alpha(a-z, A-Z), k s (0-9) v du gch di _. V d :
$var1 $my_variable $123 $String_temp
$abc@ $love.baby --> y l hai bin khng hp l
khai bo mt bin, bin phi c to vi mt trong cc t kha Global,
Local hay Dim. Cc t kha ny c chc nng gii hn phm vi tn ti v s dng
ca bin. V d :
Global $var1, $title
Dim $m, $name
Global: ch nh khai bo mt bin c phm vi ton cc. Ngha l mi ni
trong chng trnh u c th truy xut, chnh sa ni dung ca bin
ny. V bin ny s tn ti cho n khi chng trnh thot ra. V d :
Global $m ="Hello world"
MsgBox(0, "MSG", $m)
_RepText()
MsgBox(0, "MSG", $m)
; nh ngha hm
Func _RepText()
$m &=", " &$m
EndFunc
u tin ta to ra mt bin $m v cho hin th ni dung ca n l " Hello world".
Sau hm _RepText() c gi lp li ni dung ca bin $m. Hm MsgBox
th hai s hin th "Hello world, Hello world". Do $m l bin ton cc nn ta c
th sa i ty gi tr ca n.
Local: ch nh khai bo mt bin c phm vi cc b. Tc l n ch c
php s dng, thao tc phm vi gii hn trong chng trnh, thng l
bn trong cc hm. N s c khi to khi hm c gi v s b
hy khi hm kt thc. Nhng ni khc trong chng trnh khng h bit
s tn ti ca bin Local ny. V d :
; chng trnh sau s chy command line
_ExeProg() ; s thc thi cmd
Run($prog) ; dng ny s bo li
Func _ExeProg()
Local $prog ="cmd"
Run($prog)
EndFunc
Trong chng trnh trn, sau khi hm _ExeProg() c gi v thc hin xong th
bin cc b $prog b hy, cho nn lnh Run($prog) khng c thc thi v $prog
bn ngoi khng mang mt gi tr no. Ni cch khc $prog bn trong hm
_ExeProg v $prog bn ngoi hon ton khc nhau.
Bn ch mt iu l, nu bn trong mt hm, bn khai bo mt bin cc b cng
tn vi mt bin ton cc th bin cc b s c u tin s dng thay v bin ton
cc. Khi no tm hiu n phn nh ngha hm, bn s hiu r hn v bin cc b.
V trong hm rt thng s dng bin local tnh ton, lu tr gi tr.
Dim : To ra mt bin c phm vi cc b (local) nu nh bin ny cha
c khai bo trc dng ton cc (global). C ngha l :
Nu khai bo bin bn ngoi hm th n c phm vi ton cc.
V d :
; on m sau s cho gi calculator thay v notepad
Dim $p ="notepad"
_modify()
Run($p)
Func _modify()
$p ="calc"
EndFunc
Nu khai bo bn trong hm th phm vi l cc b. Tuy nhin, nu bin Dim ny
cng tn vi mt bin Global, th ni dung ca bin Global s b vit . iu
ny bn nn ch .
V d :
; on m ny s duyt th mc Temp thay v th mc Windows
Global $explore ="Explorer " & @WindowsDir
function()
Run($explore)
Func function()
Dim $explore ="Explorer " & @TempDir
EndFunc
Trong cc v d trn, ta thy rng vic khai bo mt bin c th kt hp vi vic
khi to gi tr ban u cho bin . Theo mc nh, nu bn khng gn gi tr khi
khai bo th bin mang gi tr 0 (nu s dng nh mt kiu number) hoc ""
(nu s dng nh mt kiu string).
D rng AutoIt cho php bn s dng mt bin khng cn khai bo, nhng s tht
khng hay khi chng trnh ca bn c nhiu bin c to ri-rc nhiu ni.
Tnh trt t v thng nht s khng t hiu qu v bn kh kim sot c cc i
tng ca mnh trong hng t dng lnh an xen nhau. Cng xin ni thm, nu bn
s dng mt bin khng c khai bo trc , ty trng hp vn dng, th hoc l
chng trnh s bo li, hoc l bin s c to t ng vi phm vi cc b
(Local). Nu bn khai bo mt bin Local bn ngoi hm th n vn c phm vi
nh Global.
Khi khai bo mt bin, bn nn ch nh r phm vi l Local hoc Global, nn hn
ch dng Dim. Tr khi bn nm r c tt c cc bin trong chng trnh ca
mnh, nhm trnh cc li v vic chnh sa d liu khng mong mun c th xy
ra.
KHAI BO HNG S
Hng s l mt bin mang gi tr c nh v gi tr ny ch c gn mt ln khi
khi to. Bt k thao tc no c gng thay i ni dung ca hng s u l thao tc
khng hp l.
Vic khai bo hng s cng ging nh vic khai bo bin, nhng bn cn t thm
t kha Const. sau Dim, Global hoc Local. C dng nh sau :
Const $pi =3.14 ; hng s cc b
Local $text ="Hello" ; hng s cc b
Global Const $e =exp(1) ; hng s ton cc
Ch : bn khng th khai bo mt hng s trng tn vi mt bin ang tn ti.
KHAI BO MT MNG
Mng thc cht l mt tp hp cc bin c cng kiu d liu c gi chung
bng mt tn. Cc bin trong mt mng thng c gi l "phn t" v c
truy cp n bi ch mc. Cc mng c th c mt hay nhiu chiu, thng
dng nht l mng mt chiu (danh sch) v mng hai chiu (ma trn gm
hng v ct).
MNG MT CHIU (DANH SCH)
Mng mt chiu l dy gm nhiu mc lin tip nhau. Bn c hnh dung n nh
l mt ci danh sch. Cng c s th t, cng c thng tin (d liu) ng vi th t
.
Hnh thc c bn cho vic khai bo mng mt chiu l :
<scope> <var_name>[<size>]
<scope> : cho bit y l bin Local, Global hay Dim
<var_name>: l tn bin i din cho tt c cc phn t trong mng.
Tun th theo cc qui tc t tn nh khai bo bin.
<size> : cho bit c ti a bao nhiu phn t s cha trong mng.
V d nh, khai bo mt mng ton cc c 100 phn t gi tn l List v sau
gn cc gi tr cho mng, ta s dng cu lnh :
Error!
Global List[100]
List[0] ="Ant"
List[1] ="Bird"
List[2] ="Cat"
.....
List[99] ="Zebra"
Trong AutoIt, ch mc u tin ca mng phi bt u t 0. Vi v d trn, nu ta
dng List[0], List[1] l ta ang truy cp n phn t th nht, th hai. Dng
List[99] l ta ang truy cp n phn t th 100. Vic s dng ch mc vt qu
ch mc ti a cho php khi khai bo l khng hp l.
Mun ly mt gi tr t mt phn t trong mng, ta phi bit c ch mc ca
phn t cha gi tr . V d :
$animal =$List[2] ; $animal s cha chui "Cat"
MNG HAI CHIU (MA TRN)
Mt mng hai chiu chnh l mt ma trn c to thnh bi hng v ct. Nu bn
bit qua Excel th bng tnh trong Excel chnh l mt ma trn. Hnh thc chung
cho vic khai bo mng hai chiu cng tng t nh mng mt chiu, nhng c
thm vic khai bo ch mc th hai. Trong mng hai chiu, ch mc th nht cho
bit hng v ch mc th hai l ct.. C th l :
<scope> <var_name> [<size_row>][<size_column>]
Trong :

<scope>cng dng ch nh phm vi
<var_name>ch nh tn mng
<size_row>ch nh s dng ti a
<size_column>ch nh s ct ti a
V d :
Error!
Dim $matrix[2][3] ; to mt ma trn c 2 dng v 3 ct
$matrix[0][0] =2
$matrix[0][1] =4
$matrix[0][2] =6
$matrix[1][0] =1
$matrix[1][1] =3
$matrix[1][2] =5
truy cp n mt phn t trong mng ta cng s dng ch mc cho dng v ct.
V d :
; ang truy cp n phn t dng th nht, ct th hai.
$n =$matrix[0][1] ; $n s bng 4
CC VN LIN QUAN
Vn 1 : Khi to gi tr cho mng
Khi khai bo mt mng bn cng c th khi to gi tr cho cc phn t bn trong
mng. Cc gi tr khi khi to cho mng phi c nm trong cp du ngoc vung
[ ], v mi gi tr phi c ngn cch bi du phy. i vi mng hai chiu th
cn thm mt cp du ngoc vung khc ro cc gi tr c cng ch mc dng.
V d :
Dim $array[5] =[10, 20, 30, 40, 50]
Local $test[4] =["a", "Hello", 500, 4.55]
Global $Grid[2][3] =[["sun", "moon", "earth"], [1000, cos(0), sqrt(900)]]
Vn 2 : Ly tng s phn t hin c trong mng
S c khng t tnh hung bn tip nhn v x l mt mng c nhiu phn t bn
trong. Tuy nhin c mt rc ri l bn khng bit mng ny hin ang c bao nhiu
phn t, v n thay i theo chu k hay mt l do no . Vi trng hp ny, s
dng hm UBound l mt li gii v n s cho bit mt mng c ch nh c bao
nhiu phn t. C php nh sau :
UBound( $array, $dimension)
Trong ,
$array : l tn ca mt bin mng
$dimension : cho bit cn ly chiu th my. Mc nh l 1, tc mng mt
chiu. Nu gn bng 0, th UBound khng tr v tng s phn t hin c, m s tr
v mt s tng ng vi s chiu ca mng.
V d :
Dim $myArray[10][20] ;element 0,0 to 9,19
$rows =UBound($myArray) ; ly chiu th nht
$cols =UBound($myArray, 2) ; ly chiu th hai
$dims =UBound($myArray, 0) ; ly s chiu ca mng
$info ="This Array has " & $dims &" dimension(s) : " &@CRLF & _
$rows & " rows, " & $cols & " columns"
MsgBox(0, "Msg of Array", $info)
Du _ t cui dng lnh $info = ... cho bit, phn tip theo ca dng lnh hin
hnh c vit dng k tip. Thng thng vic ny xy ra do mt lnh qu di,
khi vit trn mt dng th vt qu trang mn hnh, rt kh quan st. Cho nn cch
ny c dng nh mt gii php.
Vn 3 : Thit lp li kch thc ca mt mng
Theo qui nh, nu mun s dng mt bin mng th trc phi khai bo tn, s
chiu v kch thc ti a cha cc phn t. Trong trng hp bn mun nh
li kch thc cho mng (tng hoc gim kch thc) th vic bn cn lm l s
dng t kha ReDim . C php chung :
ReDim $array [new index 1] ... [new index n]
$array : l tn ca mng cn nh li kch thc
New index : kch thc mi cho tng s phn t i a s c trong mng. [new
index n] p dng cho chiu th n ca mng.
Bn xem v d sau hiu r hn cch thc lm vic. on m bn di s minh
ha vic thit lp li kch thc ti a cho mng mt chiu.
; khai bo kch thc ban u
Dim $a[5] =[2, 4, 6, 8, 10]
ConsoleWrite("Before : ")
For $i=0 to UBound($a)-1
ConsoleWrite($a[$i] & " ")
Next
; nh li kch thc mng
ReDim $a[3]
ConsoleWrite(@crlf & "After rediming : " )
For $i=0 To 2
ConsoleWrite($a[$i] & " ")
Next
u tin ta khai bo mng $a c nm phn t, sau dng vng lp For th nht
in ni dung ra console. n dng lnh ReDim $a[3] s nh li kch thc ca
mng t ban u l nm phn t xung cn ba phn t. Khi kch thc mi nh
hn kch thc c, th phn ni dung pha sau s b ct b. Cho nn vng lp For
th hai s ch in cc gi tr 2, 4 v 6.
Ch : Khi thit lp li kch thc cho mt bin mng, nu bn thay i s chiu
ca mng t mng mt chiu thnh hai chiu, hoc ngc li, th tt c d liu
ang c trong mng s b xa hon ton.
Vn 4 : Cc ch
+ Ch mc ca mng c th l mt bin hoc mt biu thc, sao cho n tr v mt
ch mc hp l. V th bn c th lm nhiu cch khc nhau truy xut n cc
phn t bn trong mng. Cng xin nhc li rng, tt c cc mng u c 0 lm ch
mc cho phn t th nht.
V d sau minh ha cho vic khi to cc gi tr ngu nhin cho mng mt v hai
chiu.
; khi to v in gi tr cho mng mt chiu
Dim $a[10]
ConsoleWrite("---- A list : "& @crlf)
For $i=0 To 9
$a[$i] =Int(Random(0, 100))
ConsoleWrite($a[$i] & " ")
Next
; khi to v in gi tr cho mng hai chiu
Dim $m [4] [5]
ConsoleWrite(@crlf & "---- A matrix : " & @crlf)
For $i=0 To 3
For $j=0 to 4
$m[$i][$j] =Int(Random(0,10))
ConsoleWrite($m[$i][$j] & " ")
Next
ConsoleWrite(@crlf)
Next
+ Theo l thuyt, cc phn t trong mng phi c cng kiu d liu, hoc l s,
hoc l chui. Nhng trong AutoIt, mt mng c th cha mi th, t mt s cho
n mt boolean. Ni n gin l c th cha cc phn t c kiu d liu khc
nhau. Tuy nhin, iu ny khng c khuyn khch. V d :
$arr[0] =1
$arr[1] =true
$arr[2] ="my text"
$arr[3] =$another_array
+ Mt mng trong AutoIt ch cho php cha ti a 2
24
(16 777 216) phn t.
MACRO
Macro hiu n gin l cc lnh ngn gn c thit k sn ly cc thng tin t
h thng hoc ng dng. Gi tr ca chng c th khng c nh v ph thuc vo
vo h thng. Trong AutoIt, cc macro c bt u vi k t @ v theo sau tn
ca macro. Bn di l cc Macro thng c dng .
Macro thi gian

@MSEC Mili giy hin ti ca ng h h thng. Vng gi tr t 00 n 999
@SEC Giy hin ti. Vng gi tr t 00 n 59
@MIN Pht hin ti. Vng gi tr t 00 n 59
@HOUR Gi hin ti, theo dng 24 gi. Vng gi tr t 00 n 23
@MDAY Ngy hin ti trong thng. Vng gi tr t 01 n 31
@MON Thng hin ti. Vng gi tr t 01 n 12
@YEAR Bn k s ca nm hin hnh

@WDAY
Th trong tun. Vng gi tr t 01 n 7, tng ng : 1=CN, 2=
Th 2,...
@YDAY
Ngy hin ti l ngy th bao nhiu trong nm. Vng gi tr t 01
n 366 (hoc 365 nu khng phi nm nhun)

Macro th mc

p dng cho tt c ngi dng (All User). Cc gi tr c t :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
@AppDataCommonDir ng dn n th mc Application Data
@DesktopCommonDir ng dn n th mc Desktop
@DocumentsCommonDir ng dn n th mc Documents
@FavoritesCommonDir ng dn n th mc Favorites
@ProgramsCommonDir ng dn n th mc Start Menu's Programs
@StartMenuCommonDir ng dn n th mc Start Menu
@StartupCommonDir ng dn n th mc Startup

Phn ny p dng cho ngi dng hin hnh. Cc gi tr c t :
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion
@AppDataDir ng dn n th mc Application Data ca ngi dng.
@DesktopDir ng dn n th mc Desktop ca ngi dng
@MyDocumentsDir ng dn n th mc My Document
@FavoritesDir ng dn n th mc Favorites
@ProgramsDir
ng dn n th mc Programs (th mc trn Start
Menu)
@StartMenuDir ng dn n th mc Start Menu
@StartupDir ng dn n th mc Startup
@UserProfileDir ng dn n th mc Profile

Phn ny ly cc thng tin lin quan n h thng my tnh
@HomeDrive K t ca a cha th mc home ca user
@HomePath
Mt phn ng dn n th mc home. S dng thm
@HomeDrive&"\" c ng dn y
@HomeShare Th mc home cha tn Server v tn chia s.
@LogonDNSDomain DNS Domain ng nhp
@LogonDomain Domain ng nhp.
@LogonServer Server ng nhp
@ProgramFilesDir ng dn n th mc Program Files
@CommonFilesDir ng dn n th mc Common Files
@WindowsDir ng dn n th mc Windows
@SystemDir
ng dn n th mc System ca Windows (hoc
System32)
@TempDir ng dn n th mc cha cc file tm
@ComSpec
Gi tr ca %comspec%, (SPECified secondary
COMmand interpreter) dng cho command line, v d
: Run(@ComSpec & " /k help | more")

Macro h thng

@CPUArch Tr v "x86" cho CPU 32 bit v "x64" cho CPU 64 bit
@KBLayout
Tr v m hin th ca bn phm. Xem trong Appendix
bit gi tr
@OSArch
Tr v mt trong cc gi tr sau : "X86", "IA64", "X64" - cho
bit kin trc ca h iu hnh ang chy.
@OSLang Tr v m hin th ca h iu hnh. Xem trong Appendix
@OSType
Tr v "WIN32_NT" cho Windows
NT/2000/XP/2003/Vista/2008.
@OSVersion
Tr v mt trong cc gi tr sau : "WIN_2008",
"WIN_VISTA", "WIN_2003", "WIN_XP", "WIN_2000".
@OSBuild
Tr v s xy dng ca H iu hnh. V d, Windows 2003
Server tr v 3790
@OSServicePack
Gi dch v ca h iu hnh dng nh "Service Pack 3"
hoc, i vi Windows 95, n c th tr v "B"
@ComputerName Tn mng ca my tnh.
@UserName ID ca ngi dng ng nhp hin hnh .
@IPAddress1
a ch IP ca card mng th nht. C th tr v 127.0.0.1
trn vi my tnh
@IPAddress2
a ch IP ca card mng th hai. Returns 0.0.0.0 nu khng
dng c
@IPAddress3
a ch IP ca card mng th ba. Returns 0.0.0.0 nu khng
dng c
@IPAddress4
a ch IP ca card mng th t. Returns 0.0.0.0 nu khng
dng c

@DesktopHeight Chiu cao ca mn hnh desktop (pixel)
@DesktopWidth Chiu rng ca mn hnh desktop (pixel)
@DesktopDepth su ca mn hnh desktop (tnh theo bit)
@DesktopRefresh Tn s lm ti ca mn hnh, tnh theo hezt (hz)

Macro lin quan n AutoIt
Phn ny ch trnh by mt s Macro thng dng. Cc macro cn li cc bn t
xem.
@compiled Tr v 1 nu m c bin dch, ngc li tr v 0
@error C biu th trng thi li. Xem hm SetError
@exitCode M thot c thit lp bi lnh Exit
@exitMethod Xem Func OnAutoItExit()
@extended
Mt gi tr m rng c tr v t mt hm. Xem hm
StringReplace
@NumParams
Tng s thng s s dng trong vic gi hm ca ngi
dng..
@ScriptName Tn ca file script ang chy
@ScriptDir
ng dn n th mc cha file script ang chy. (khng
cha du "\" cui )
@ScriptFullPath Bng vi @ScriptDir & "\" & @ScriptName
@ScriptLineNumber
S th t ca dng lnh ang c thi hnh. Thch hp
cho vic debug.
@WorkingDir Th mc lm vic hin ti (khng cha du "\" cui)
@AutoItExe
ng dn v tn ca file AutoIt ang chy. Nu l m
bin dch th tr v ng dn v tn ca file exe ang
chy

@AutoItPID ID ca on chng trnh script ang chy trong b nh
@AutoItVersion S phin bn ca AutoIt nh 3.0.102.0
@AutoItX64 Tr v 1 nu ang chy di AutoIT phin bn x64
@InetGetActive
L 1 nu mt InetGet download c kch hot, ngc
li l 0.
@InetGetBytesRead
Sut qu trnh InetGet download, macro ny cho s byte
c. Cho -1 nu c mt li download.

@CR
Phm xung dng, Chr(13); i lc hu dng cho cc ngt
dng
@LF
Tn hiu xung dng, Chr(10); c trng cho vic ngt
dng
@CRLF = @CR & @LF ; i lc hu dng cho cc ngt dng
@TAB Phm Tab, Chr(9)

CU LNH IU KIN IF
Cu lnh if l mt cu lnh iu kin ph bin nht trong cc ngn ng lp trnh
bc cao. N c dng kim tra mt iu kin no , nu dng th thc hin
cng vic tng ng, ngc li th lm mt vic khc. Nu bn hc qua Excel
th chc chn phi bit hm If bn . Vi AutoIt, cu lnh iu kin if c thnh
lp thnh mt khi. n gin, ta chia thnh cc phn nh d trnh by.
Dng chung ca If :
If <iu kin> Then
<cc cu lnh>
............
Else
<cc cu lnh>
.........
EndIf
Nh trnh by trn ta thy rng, mt khi lnh If phi c bt u vi If... Then
v kt thc vi EndIf.
<iu kin> l mt biu thc so snh (c s dng cc ton t so snh, logic nh :
<, >, <>, =,...And, Or, Not) hoc mt biu thc thng c tr v gi tr. Nu iu
kin tr v True th <cc cu lnh> sau Then c thc hin. Nu ngc li th
<cc cu lnh> sau Else c thc hin, khng bao gi xy ra hai trng hp cng
mt lc. Cng xin nhc li, nu <iu kin> tr v mt gi khc 0 th c ngha
True, bng 0 l False.
<cc cu lnh> c th l mt hay nhiu dng lnh, hoc cng c th l lnh rng.
Hoc cng c th l mt khi iu kin If khc.
Mnh Else th t chn, c th c hoc khng. Nu Else khng tn ti th khi
<iu kin> l False th chng trnh s thc hin tip cc lnh nm sau EndIf.
V d n gin sau xt xem s ch nh l chn hay l.
$n =101
If Mod($n, 2)=0 Then
MsgBox(0, "Ket qua", $n & " l s chn")
Else
MsgBox(0, "Ket qua", $n & " l s l")
EndIf
Hm Mod c chc nng tm s d ca php chia gia $n v 2. C php chung l
Mod( a, b). Trong a l s b chia v b l s chia.
Cc If lng nhau :
If c lng nhau l mt If nm bn trong mt khi If...EndIf khc. Cc If lng
nhau c dng rt ph bin trong lp trnh, thng thng l trong trng hp
thm nh mt <iu kin> vi nhiu gi thit xy ra khc nhau. Trong cc If lng
nhau th lnh Else lun c mi quan h lin kt vi khi If (cha c EndIf ) nm
gn n nht.
V d sau l mt b sung ca v d pha trn, xt xem thm iu kin bit s
c phi l s c 3 ch s hay khng.
$n =1010
If Mod($n, 2)=0 Then
If 100<=$n And $n<=999 Then
MsgBox(0, "Ket qua", $n & " l s chn c 3 ch s")
Else
MsgBox(0, "Ket qua", $n & " l s chn khng phi 3 ch s")
EndIf
Else
If 100<=$n And $n<=999 Then
MsgBox(0, "Ket qua", $n & " l s l c 3 ch s")
Else
MsgBox(0, "Ket qua", $n & " l s l khng phi 3 ch s")
EndIf
EndIf
Bc thang If... ElseIf... Else... EndIf
Vi hai phn va c trnh by trn th c l bn hiu c phn no khi
lnh If v c th s dng n gii quyt nhiu bi ton c yu cu iu kin.
Trong phn cc khi If lng nhau, ch li lm l mt k thut ng. Tuy nhin, khi
c qu nhiu If c lng vo nhau th on m ca bn s b lm vo rt su. V
l do ny m bc thang If..ElseIf... c dng. ElseIf l mt t kha ca AutoIt,
bo hiu vic thm nh iu kin If tip theo. C php :
If <iu kin 1> Then
<cc cu lnh 1>
.........
ElseIf <iu kin 2> Then
<cc cu lnh 2>
..........
ElseIf <iu kin n> Then
<cc cu lnh n>
...........
Else
<cc cu lnh>
........
EndIf
Xin ni lun vi cc bn mt iu, c php ny mi chnh l c php tng qut
nht ca khi lnh If. Hai phn : Dng chung ca If v Cc if lng nhau thc
cht c tch t y m ra. Cho nn t y tr i, khi s dng If bn ch cn quan
tm n phn ny. n y cng xin gii thch li bn hiu v ghi nh.
Cc <iu kin> c thm nh t trn xung. Nu <iu kin 1> l True, th
<cc cu lnh 1> c thi hnh. Ngc li th kim tra <iu kin 2> , nu ng
th thi hnh <cc cu lnh 2>. Vic c lng c xt dn n <iu kin n>.
Nu sau tt c cc ln thm nh, khng mt iu kin no tha mn v Else c tn
ti, th cc lnh sau Else c thi hnh. V d sau minh ha r vic dng khi If
tng qut .
Dim $var ='-5'
If $var >0 Then
MsgBox(4096,"", "Value is positive.")
ElseIf $var <0 Then
MsgBox(4096,"", "Value is negative.")
Else
If StringIsXDigit ($var) Then
MsgBox(4096,"", "Value might be hexadecimal!")
Else
MsgBox(4096,"", "Value is either a string or is zero.")
EndIf
EndIf
Ch
Trong trng hp cu lnh If bn s dng, ch c mt lnh sau Then v
khng c phn Else th c th vit gn nh sau :
If <iu kin> Then <cu lnh>
V d :
$v='05'
if StringIsDigit($v) Then MsgBox(0,'msg','It is a number')
; cc lnh khng thuc If c th vit tip y
Trong cc cu lnh iu kin (nh If) th vic dng du ngoc n ( ) l
khng th thiu nu nh bn mun thm nh cc iu kin mt cch chnh
xc, vi bi ton yu cu c kim tra vi nhiu iu kin lng vo nhau,
mt kt qu khng mong mun c th c a ra nu nh bn khng gom
nhm cc iu kin hoc gom nhm khng ng. Bn xem v d sau cho
thy cch thc xt iu kin ca khi If th nht v khi If th hai l hon
ton khc nhau :

Dim $a=0, $b =2, $c=0
if ($a>0 And $b>0) Or $c=0 Then MsgBox(0,"msg", " Thng
ip 1")
if $a>0 And ($b>0 Or $c=0) Then MsgBox(0,"msg", " Thng
ip 2")
CU LNH IU KIN SELECT
Khi lnh Select thc cht l mt dng khc ca If lng nhau, c dng nh mt
dng trnh by c hiu qu hn trong vic thm nh nhiu iu kin lin tip.
Dng tng qut ca Select nh sau :
Select
Case <iu kin 1>
<cc cu lnh>
......
Case <iu kin 2>
<cc cu lnh>
........
Case Else
<cc cu lnh>
........
EndSelect
Gii thch
<iu kin> : cng tng t nh khi lnh If, cng s dng cc ton t so snh
v logic.
<cc cu lnh> : c th l bt c lnh g, k c cc khi Select , Switch hay If
khc u c.
Case Else : c th c hoc khng.
Hnh thc xt iu kin cng bt u t trn xung. Kim tra <iu kin 1> nu
tha th thc hin <cc cu lnh> sau n. Ngc li, th xt <iu kin 2>,
<iu kin 3>, cho n <iu kin th n>. Nu khng c <iu kin> no tha
th <cc cu lnh> sau Case Else s c thc thi, nu nh Case Else c thit
lp. Trong trng hp c nhiu <iu kin> ng, th ch <iu kin> ng u
tin c tm thy mi c thi hnh.
V d 1 :
$s =3
$n =5
Select
case IsString($s)
MsgBox(0,"msg", "$s l chui")
Case $n<>0
MsgBox(0,"msg", "$n l s khc 0")
Case Else
MsgBox(0,"msg", "$s khng l chui. $n khng l s")
EndSelect
Hm IsString xt xem mt gi tr no c phi l chui hay khng. Nu ng tr
v 1, ngc li tr v 0.
V d 2 :
; on m ny cho bit h iu hnh ang s dng
$ver =@OSVersion
Select
Case $ver ="WIN_2008"
MsgBox(0,"Version", "Your OS is Win 2008")
case $ver ="WIN_VISTA"
MsgBox(0,"Version", "Your OS is Win Vista")
Case $ver ="WIN_2003"
MsgBox(0,"Version", "Your OS is Win 2003")
Case $ver ="WIN_XP"
MsgBox(0,"Version", "Your OS is Win XP")
Case $ver ="WIN_2000"
MsgBox(0,"Version", "Your OS is Win 2000")
case Else
MsgBox(0,"Version", "Your OS is Win 9x")
EndSelect
CU LNH SWITCH
Khng ging nh khi lnh If hay Select thc hin thm nh nhiu iu kin ca
bi ton. Trong khi lnh Switch, ng vi mt bin cho php bn la chn nhiu
gi tr hoc l min gi tr lm iu kin x l. V vy m Switch cn c gi
l lnh la chn a nhnh. Thc cht vic xt tng gi tr cho mt bin vn c th
lm c vi hai khi lnh If hay Select , nhng Switch cch thc lm vic
c n gin c th thc hin nhanh chng v d hiu hn.
C php tng qut :
Switch <bin hoc biu thc>
Case <value1> To <Value2>, <value3>To <value4>, ....., <value
n-1>To <value n>
<cc cu lnh>
.......
Case <value1> To <Value2>, <value3>To <value4>, ....., <value
n-1>To <value n>
<cc cu lnh>
........
Case Else
<cc cu lnh>
.......
EndSwitch
Gii thch
Gi tr ca <bin hoc biu thc> s c ly v kim tra ln lt theo th t
cc Case. Khi mt gi tr trong Case ph hp gi tr ca <bin hoc biu thc>
th cc dy lnh lin hp vi Case c thi hnh. Cc Case ln lt c
duyt cho n khi gp mt Case tha iu kin hoc t kha EndSwitch cng
cp. Nu Case Else c ch nh, th khi tt c cc Case u khng tha, khi
lnh lin kt vi Case Else s c thc thi.
Ch
<value1> To <value2> hoc <value n-1> To <value n> l mt min gi
tr. Nu bn khng mun ch nh cc min gi tr cho Case th c th ch
nh nhng gi tr c th, mi gi tr cch nhau bi du phy. T kha To v
cc phn sau n th ty, c th c hoc khng.
<cc cu lnh> c th l bt c mt lnh g, thm ch l nhiu khi
Switch lng nhau.
V d :
on m sau s ly gi ca h thng v suy ra thi im hin ti trong ngy
Switch @HOUR
Case 6 To 11
$msg ="Good Morning"
Case 12 To 17
$msg ="Good Afternoon"
Case 18 To 21
$msg ="Good Evening"
Case Else
$msg ="What are you doing now ?"
EndSwitch
MsgBox(0, Default, $msg)
CONTINUECASE
Theo nh mc nh, th trong khi lnh Switch v Select s dng vic kim tra
iu kin v kt thc nu gp c mt Case tr v gi tr True. Tuy nhin trong
mt vi tnh hung, bn li khng mun kt thc khi lnh Select hay Switch khi
gp mt trng hp ng, bn mun n vn thc hin kim tra cc Case pha sau
lm mt cng vic no y. Thng thng, i vi mt Case tha iu kin v
ang thi hnh cc lnh lin kt vi n, th vic thi hnh ch dng li khi gp mt
lnh Case tip theo hoc lnh EndSwitch hay EndSelect.
Th y, AutoIt h tr cho bn t kha ContinueCase dng vic thc hin mt
Case hin ti v duyt n cc lnh nm trong Case tip theo.
C php : ContinueCase
V d sau s dng hm InputBox v c li @error ca n minh ha vic dng
ContinueCase.
$msg =""
$w =InputBox(Default, "Please enter a word.", "", " M", Default,
Default, Default, Default, 5)
Switch @error
Case 2
$msg ="Timeout "
ContinueCase
Case 1 ; Continuing previous case
$msg &="Cancellation"
Case 0
Switch $w

Case "a", "e", "i", "o", "u"
$msg ="Vowel"
Case "QP"
$msg ="Mathematics"
Case "Q" to "QZ"
$msg ="Science"
Case Else
$msg ="Others"
EndSwitch
Case Else
$msg ="Something went horribly wrong."
EndSwitch
MsgBox(0, Default, $msg)
Hm InputBox s hin ra trong vng 5 giy ch bn g mt k t. Sau 5 giy,
nu bn khng thao tc g, hp thoi s t ng v hin thng bo Timeout
Cancellation. Nu bn nhn nt Cancel th hin thng bo Cancellation. Nu
bn g mt t hay k t v nhn OK th cc khi lnh bt u t Case 0 s thc thi
hin thng bo tng ng vi t bn va g. C li @error cho bit trng thi
tc ng ca ngi dng i vi hm InputBox. Bn xem c php ca hm
InputBox trong file Help hoc trong mc Hm ca ebook ny hiu r thm.
VNG LP FOR
Trong AutoIt v tt c cc ngn ng lp trnh hin i khc, cc lnh lp (cng cn
c gi l vng lp) cho php thc hin lp i lp li cho n khi mt iu kin
no xy ra. Ty theo ngn ng v ty loi vng lp m cch din t iu kin
s khc nhau. Thng thng vng lp For l vng lp c bn, cho php thc hin
lp li vi s ln nh trc.
AutoIt h tr vng lp For vi dng tng qut sau :
For <var>=<start_value> To <stop_value> Step <step_value>
<cc cu lnh>
.........
Next
Gii thch
<var> : bin dng thc hin vic m
<start_value> : gi tr bt u cho bin m
<stop_value > : gi tr cui cng cho bin m
<step_value> : gi tr cng vo cho bin m sau mi ln lp. Mc nh l 1.
<cc cu lnh> : cng vic cn x l. Vn c th l For hay nhng vng lp
khc u c.
Vng lp For c bt u bi t kha For v kt thc bi t kha Next. u tin,
<start_value> s c gn vo bin m <var> , sau so snh vi <stop_value>.
Nu <var> nh hn hoc bng <stop_value> th thc hin <cc cu lnh> , sau
bin m <var> s c tng ln <step_value> n v. Tip tc so snh vi
<stop_value> , thc hin <cc cu lnh> ri sau tng bin m ln
<step_value> . Qu trnh lp li cho n khi bin m <var> ln hn
<stop_value>, vng lp kt thc.
Miu t c th i vi vng lp For nh trnh by trn xem ra c v di dng.
Bn ch cn hiu n gin l, vng lp For s cho bin m <var> chy t
<start_value> n <stop_value>, mi ln lp th cng <step_value> vo <var>.
Ch
Phn Step <step_value> c th c hoc khng. Nu khng c, th gi tr
mc nh cho <step_value> s bng 1. Trng hp <step_value> l mt s
m v <start_value>ln hn <stop_value> th ta c mt vng lp m
ngc.
Nu nh <stop_value> v <step_value> l cc bin, th gi tr ca cc
bin ny ch c c mt ln ln lp u tin. cc ln lp sau, cho d
bn thay i gi tr cho <stop_value> hay <step_value> th chu k lp vn
khng thay i.
Bn trong vng lp, nu bn s dng mt bin khng c khai bo, th
mc nh n s c to vi phm vi cc b (Local).
Vng lp For s khng thc hin bt k ln lp no nu nh :
start_value >stop_value v step_value >= 0
Hoc start_value < stop_value v step_value l mt s m.
V d
on m sau c dng in cc con s t 1 n 100 ln mn hnh console
ca sciTe.
For $i=1 to 100
ConsoleWrite($i & " ")
Next
MsgBox(0, "Thong bao", " Vng lp kt thc ")
on m sau thc hin vic m ngc v ch in cc con s chn t 100 v
0
For $i=100 to 0 step -2
ConsoleWrite($i & " ")
Next
MsgBox(0, "Thong bao", " Vng lp kt thc ")
VNG LP WHILE ... WEND
Nu nh vng lp For thc hin vic lp vi mt bin chy th vng lp While thc
hin vic lp bng vic kim tra iu kin.
C php chung :
While <iu kin>
<cc cu lnh>
......
WEnd
Gii thch
<iu kin> c th l mt mt biu thc iu kin v True l gi tr khc 0
<cc cu lnh > c th l rng, lnh n, khi lnh hoc l cc vng lp khc.
Trc khi cc lnh bn trong vng lp c thc thi, th <iu kin> c kim
tra. Nu tr v gi tr True, th <cc cu lnh> c duyt v thi hnh cho n khi
gp WEnd. Khi vng lp quay li thm nh <iu kin>. Qu trnh lp kt
thc khi <iu kin> tr v False (tc khng cn ng na).
Ch
S ln thc hin ca vng lp s l 0, nu nh ngay bc kim tra <iu
kin> ln u tin, <iu kin> cho mt gi tr False.
Mun to nn mt vng lp v tn, bn ch cn thay th <iu kin> bng
mt gi tr khc 0.
V d
on m ny s hin 5 ln thng bo cho bit gi tr ca bin $i
$i =0
While $i <=10
MsgBox(0, "Value of $i is:", $i)
$i =$i +1
WEnd
MsgBox(0, "Thong bao", "While loop stoped. Script is exiting")
VNG LP DO... UNTIL
Tng t nh While... WEnd, khi lnh Do ... Until cng thc hin vic lp da
trn vic kim tra biu thc iu kin.
C php :
Do
<cc cu lnh>
........
Until <iu kin>
Gii thch
Vng lp Do.. Until thc hin vic lp li cc lnh bn trong n khi <iu kin> tr
v gi tr False. C ngha l vng lp s kt thc nu nh <iu kin> l ng
(True).
Ch
Khng ging nh For v While, c hai vng lp ny u thc hin vic kim tra
iu kin phn u ca vng lp. Vng lp Do.. Until thc hin vic kim tra
iu kin sau khi <cc cu lnh> c thi hnh. iu ny c ngha l Do...Until
lun thc hin vic lp t nht mt ln.
V d
on chng trnh sau tnh gi tr trung bnh mt dy s (khng bit trc c bao
nhiu s) do ngi dng nhp vo. Qu trnh nhp s kt thc khi ngi dng nhp
vo s 0. Bin $sum s cng dn cc gi tr c nhp vo, $count s m xem
qua bao nhiu ln nhp s (tng ng vi s ln lp li).
Global $n, $count=0, $sum=0
Do
$n =InputBox("Get Data", "Please enter a number." &@crlf & "If
number is zero, stop entering data")
$sum +=$n
$count +=1
Until $n=0
$count -=1 ; b qua ln nhp s 0
MsgBox(0,"Result", "Average of sum : " & $sum/$count)

FOR ... IN... NEXT
Chc nng ca cu lnh ny l lit k cc phn t bn trong mt mng hoc mt
tp hp object (i tng) COM (component object model)
C php
For <var> In <expression>
<cc cu lnh>
........
Next
Gii thch
<var> : bin s c gn gi tr ca tng phn t trong <expression>
<expression> : mt i tng COM hoc mt mng c t nht mt phn t.
Ch
Nu <expression> l mt tp hp object khng c phn t, th on script
s b qua vic lp v <var>s cha mt chui rng.
Nu <expression> khng phi l object, cng khng phi l mng, th
on script s dng vi mt li c thng bo, tr khi bn c s dng trnh
iu khin COM Error.
Gi s trng hp <expression> bn dng l mt mng v bn c thay
i gi tr ca cc phn t trong mng khi For...In ang chy, th gi tr s
khng c nh x ngay vo trong mng. Ch khi For... In kt thc th thay
i mi c hiu lc.
Vng lp For...In cho php lng vo nhau.
V d 1
Global $array[4]
$array[0]="w"
$array[1]="x"
$array[2]="y"
$array[3]="z"
For $element In $array
MsgBox(0,"Current $array item",$element)
Next
V d 2
on m sau s thng bo cho bn bit cc ca s Explorer no ang m
$oShell =ObjCreate("shell.application")
$oShellWindows=$oShell.windows
if Isobj($oShellWindows) then
$string=""
for $Window in $oShellWindows
$String =$String & $Window.LocationName & @CRLF
next
msgbox(0,"","You have the following windows open:" & @CRLF &
$String)
else
msgbox(0,"","you have no open shell windows.")
endif
WITH... ENDWITH
Trn thc t cu lnh With..EndWith khng h c chc nng ca mt vng lp,
nhng do file Help ca AutoIt xp n vo phm tr ca mt vng lp nn y ta
vn xem xt n. Chc nng chnh ca cu lnh ny l n gin ha vic tham chiu
n cc bin kiu Object c tn di.
C php :
With <biu thc>
<cc cu lnh>
.......
EndWith
Gii thch
<biu thc> : l mt biu thc c kiu Object
<cc cu lnh> : thao tc trn cc bin c tham chiu n
Ch
Khi lnh With khng cho php lng vo nhau.
V d
on m sau s gi trnh duyt web Internet Explorer vi kch thc ca s l
1024 v 768. ng thi truy cp vo trang Google.com
; on m ny s dng object theo kiu thng thng
$object =ObjCreate("InternetExplorer.Application.1")
$object.Visible =1
$object.Height =768
$object.Width =1024
$object.Navigate("http://www.google.com/")
; on m ny s dng object vi With.. EndWith n gin m
lnh
$object =ObjCreate("InternetExplorer.Application.1")
With $object
.Visible =1
.Height =768
.Width =1024
.Navigate("http://www.google.com/")
EndWith
VNG LP V TN
Trong lp trnh, s c khng t tnh hung bn cn x l mt bi ton, m gii thut
bn cn dng l mt vng lp khng bit trc s ln lp. V vy, cch gii quyt
l dng mt vng lp v tn. Thng thng trn windows, cch s dng ph bin
nht ca vng lp v tn l dng x l giao din ngi dng GUI v cc tng
tc trn GUI, phn ny c cp r trong phn to giao din bng AutoIt (Tham
chiu GUI) ca ebook ny.
to mt vng lp v tn cho For, While hay Do th nguyn tc chung l lm cho
<iu kin> ca vng lp lun lun tha. C th l :


For $i =0 To 0 Step
0
<lnh>
.....
Next


While 1
<lnh>
.....
WEnd


Do
<lnh>
....
Until 0


Ch
Khi bn mun s dng mt vng lp v tn th nn dng While... WEnd
hoc Do.. Until v chng ngn gn hn For.
Vng lp While ch thc hin lp khi <iu kin> tr v True (mt gi tr
khc 0), cho nn y ta s dng mt gi tr i din l 1
Vng lp Do thc hin lp khi <iu kin> tr v l False (gi tr 0 -
zero), cho nn phn <iu kin> ta s thay bng s 0 n khng bao gi l
True.
Trong qu trnh cho chy vng lp v tn v x l cc lnh mt cch lin
tc nh vy s lm cho hiu sut ca CPU b chim dng rt cao, khong vi
chc % (xem th Performance trong Task Manager). V vy, khi s dng
vng lp v tn bn phi cn thn, v vi trng hp ta cn to ra khong
dng gia hai ln lp lin tip trnh qu ti cho CPU. Mun to khong
dng, ta s dng cu lnh Sleep <mili giy> , trong 1000 mili giy =1
giy. Tuy nhin s lm cho qu trnh lp b chm li, thi gian x l s di
hn.
c n y c l bn s thc mc mt iu, lm sao dng li vng lp v tn ?
Cu tr li nm ngay sau y.
EXITLOOP
ExitLoop cho php bn kt thc (ngt) vng lp ngay lp tc m khng cn quan
tm n iu kin ca vng lp. Dng y :
ExitLoop [which loop]
Gii thch
Tham s [which loop] l ty chn, c th c hoc khng. Nu khng c ch nh
th mc nh l 1. Chc nng ca tham s ny cho php ch nh vng lp no cn
phi ngt trong trng hp c nhiu vng lp lng nhau. Nu c nhiu vng lp
lng nhau, th vng lp cha lnh ExitLoop l vng lp cp 1 (vng lp hin hnh),
vng lp bao bn ngoi vng lp cp 1 l vng lp cp 2, bao bn ngoi vng lp
cp 2 l vng lp cp 3,... V vy nu [which loop]
= 1 tng ng vi vng lp cp 1 (vng lp hin hnh)
= 2 tng ng vi vng lp cp 2
= n tng ng vi vng lp cp n
=0 hoc mt s m th ExitLoop khng c tc dng ngt.
Ch
S dng ExitLoop bn ngoi vng lp l khng c php. Cng tng t nh
vy, nu bn ch nh cho tham s [which loop] mt cp vng lp khng c (hiu
n gin l gi s nh bn ch c vng lp cp 1, nhng li dng ExitLoop 2
hoc ExitLoop 3 th tt nhin s b bo li)
V d

on m sau minh ha vic dng ExitLoop cho vng lp hin hnh. Vng lp v
tn s cho xut hin hp thoi Running sum =... , yu cu bn nhp vo mt s
dng tnh tng, qu trnh lp li cho n khi no bn nhp mt s m. Kt qu
c thng bo ra mn hnh .
$sum =0
While 1 ;use infinite loop since ExitLoop will get called
$ans =InputBox("Running sum =" & $sum, _
" Enter a positive number. (A negative number exits)")
If $ans <0 Then ExitLoop
$sum =$sum +$ans
WEnd
MsgBox(0,"The sum was", $sum)
V d bn di minh ha vic dng ExitLoop ngt vng lp cp 2 (c th l
While). Sau khi chy s c hai ln xut hin thng bo trn mn hnh. Bn ch
cc gi tr $i v $j c thng bo hiu cch lm vic.
$i =1
While $i<=2 ;y l vng lp cp 2
For $j=1 To 5 ;y l vng lp cp 1
If $j=3 Then ExitLoop
MsgBox(0,"msg", "$i =" & $i &" $j =" & $j)
Next
$i +=1
WEnd

CONTINUELOOP
Khng nh ExitLoop, lnh ContinueLoop thc hin ngay ln lp k tip ca vng
lp, b qua tt c cc lnh ng sau n. C dng y
ContinueLoop [which loop]
Gii thch
Tham s [which loop] ca ContinueLoop hon ton nh ExitLoop. Cng c th c
hoc khng (mc nh l 1 - tc vng lp hin hnh). [which loop] bng n, th p
dng cho vng lp cp n. [which loop] bng 0 hoc s m th ContinueLoop cng
mt tc dng.
i vi vng lp For, ContinueLoop gy ra vic tng gi tr ca bin m, thc
hin so snh vi gi tr dng v chy cc lnh nh bnh thng.
i vi vng lp While v Do, ContinueLoop cng b qua cc lnh pha sau n v
quay tr ra xt iu kin ca vng lp.
Ch
Cng nh ExitLoop, nu bn s dng ContinueLoop bn ngoi vng lp hoc ch
nh cho tham s [which loop] mt vng lp khng c th s b bo li.
V d
on m sau minh ha vic dng ContinueLoop cho vng lp cp 1. Bng thng
bo gi tr $i=2 s khng xut hin.
For $i=1 To 4
If $i=2 Then ContinueLoop
MsgBox(0, "message", "$i =" & $i)
Next
VNG LP V TN
Trong lp trnh, s c khng t tnh hung bn cn x l mt bi ton, m gii thut
bn cn dng l mt vng lp khng bit trc s ln lp. V vy, cch gii quyt
l dng mt vng lp v tn. Thng thng trn windows, cch s dng ph bin
nht ca vng lp v tn l dng x l giao din ngi dng GUI v cc tng
tc trn GUI, phn ny c cp r trong phn to giao din bng AutoIt (Tham
chiu GUI) ca ebook ny.
to mt vng lp v tn cho For, While hay Do th nguyn tc chung l lm cho
<iu kin> ca vng lp lun lun tha. C th l :


For $i =0 To 0 Step
0
<lnh>
.....
Next


While 1
<lnh>
.....
WEnd


Do
<lnh>
....
Until 0


Ch
Khi bn mun s dng mt vng lp v tn th nn dng While... WEnd
hoc Do.. Until v chng ngn gn hn For.
Vng lp While ch thc hin lp khi <iu kin> tr v True (mt gi tr
khc 0), cho nn y ta s dng mt gi tr i din l 1
Vng lp Do thc hin lp khi <iu kin> tr v l False (gi tr 0 -
zero), cho nn phn <iu kin> ta s thay bng s 0 n khng bao gi l
True.
Trong qu trnh cho chy vng lp v tn v x l cc lnh mt cch lin
tc nh vy s lm cho hiu sut ca CPU b chim dng rt cao, khong vi
chc % (xem th Performance trong Task Manager). V vy, khi s dng
vng lp v tn bn phi cn thn, v vi trng hp ta cn to ra khong
dng gia hai ln lp lin tip trnh qu ti cho CPU. Mun to khong
dng, ta s dng cu lnh Sleep <mili giy> , trong 1000 mili giy = 1
giy. Tuy nhin s lm cho qu trnh lp b chm li, thi gian x l s di
hn.
c n y c l bn s thc mc mt iu, lm sao dng li vng lp v tn ?
Cu tr li nm ngay sau y.
EXITLOOP
ExitLoop cho php bn kt thc (ngt) vng lp ngay lp tc m khng cn quan
tm n iu kin ca vng lp. Dng y :
ExitLoop [which loop]
Gii thch
Tham s [which loop] l ty chn, c th c hoc khng. Nu khng c ch nh
th mc nh l 1. Chc nng ca tham s ny cho php ch nh vng lp no cn
phi ngt trong trng hp c nhiu vng lp lng nhau. Nu c nhiu vng lp
lng nhau, th vng lp cha lnh ExitLoop l vng lp cp 1 (vng lp hin hnh),
vng lp bao bn ngoi vng lp cp 1 l vng lp cp 2, bao bn ngoi vng lp
cp 2 l vng lp cp 3,... V vy nu [which loop]
= 1 tng ng vi vng lp cp 1 (vng lp hin hnh)
= 2 tng ng vi vng lp cp 2
= n tng ng vi vng lp cp n
=0 hoc mt s m th ExitLoop khng c tc dng ngt.
Ch
S dng ExitLoop bn ngoi vng lp l khng c php. Cng tng t nh
vy, nu bn ch nh cho tham s [which loop] mt cp vng lp khng c (hiu
n gin l gi s nh bn ch c vng lp cp 1, nhng li dng ExitLoop 2
hoc ExitLoop 3 th tt nhin s b bo li)
V d
on m sau minh ha vic dng ExitLoop cho vng lp hin hnh. Vng lp v
tn s cho xut hin hp thoi Running sum =... , yu cu bn nhp vo mt s
dng tnh tng, qu trnh lp li cho n khi no bn nhp mt s m. Kt qu
c thng bo ra mn hnh .
$sum =0
While 1 ;use infinite loop since ExitLoop will get called
$ans =InputBox("Running sum =" & $sum, _
" Enter a positive number. (A negative number exits)")
If $ans <0 Then ExitLoop
$sum =$sum +$ans
WEnd
MsgBox(0,"The sum was", $sum)
V d bn di minh ha vic dng ExitLoop ngt vng lp cp 2 (c th l
While). Sau khi chy s c hai ln xut hin thng bo trn mn hnh. Bn ch
cc gi tr $i v $j c thng bo hiu cch lm vic.
$i =1
While $i<=2 ;y l vng lp cp 2
For $j=1 To 5 ;y l vng lp cp 1
If $j=3 Then ExitLoop
MsgBox(0,"msg", "$i =" & $i &" $j =" & $j)
Next
$i +=1
WEnd

CONTINUELOOP
Khng nh ExitLoop, lnh ContinueLoop thc hin ngay ln lp k tip ca vng
lp, b qua tt c cc lnh ng sau n. C dng y
ContinueLoop [which loop]
Gii thch
Tham s [which loop] ca ContinueLoop hon ton nh ExitLoop. Cng c th c
hoc khng (mc nh l 1 - tc vng lp hin hnh). [which loop] bng n, th p
dng cho vng lp cp n. [which loop] bng 0 hoc s m th ContinueLoop cng
mt tc dng.
i vi vng lp For, ContinueLoop gy ra vic tng gi tr ca bin m, thc
hin so snh vi gi tr dng v chy cc lnh nh bnh thng.
i vi vng lp While v Do, ContinueLoop cng b qua cc lnh pha sau n v
quay tr ra xt iu kin ca vng lp.
Ch
Cng nh ExitLoop, nu bn s dng ContinueLoop bn ngoi vng lp hoc ch
nh cho tham s [which loop] mt vng lp khng c th s b bo li.
V d
on m sau minh ha vic dng ContinueLoop cho vng lp cp 1. Bng thng
bo gi tr $i=2 s khng xut hin.
For $i=1 To 4
If $i=2 Then ContinueLoop
MsgBox(0, "message", "$i =" & $i)
Next
Hm l g ?
Ni n gin, hm l mt chng trnh con thc hin mt chc nng c th no
trong chng trnh chnh.
Ti sao li gi l chng trnh con ? Bi v trong qu trnh vit mt ng dng, tt
nhin s c mt vi on chng trnh c dng i dng li nhiu ln. V d nh
bn cn hin th mt hp thoi cha thng bo ra mn hnh chng hn. Bn vit n
u chng trnh hin thng bo bt u chy chng trnh, n cui chng
trnh th vit li hin thng bo kt thc chng trnh. Bn th hnh dung nu c
rt nhiu ni trong chng trnh chnh ca bn mun hin th thng bo ra mn
hnh th cm gic ca bn s nh th no !? Tht chn ngy v ph thi gian khi
phi ngi g li tng dng lnh cho mt cng vic l hin th thng bo ra mn
hnh, trong khi ta vit n rt nhiu ni trong chng trnh ri. iu ny lm
cho cng vic ca bn khng hiu qu, chng trnh th di thm v cng ri mt.
gii quyt vn ny, cc nh tin hc a ra mt gii php. l, ch vit
on m x l cng vic mt ni no trong chng trnh chnh. Sau , t
cho n mt ci tn, a cho n cc bin i din tip nhn cc d kin cn x l
v ch cho n cch thc tr v kt qu. Do on m ny nm bn trong chng
trnh chnh, cho nn ta gi n l chng trnh con (theo ng ngha en) hay cn
gi l hm.
V cui cng, khi mun s dng mt hm bn ch cn quan tm n cch thc
truyn d kin cn x l cho n v cch n tr v mt kt qu. Bn khng cn phi
bn tm l bn trong n lm vic nh th no, cc dng lnh c vit ra sao. Bn
ch mun c kt qu cui cng, hm s lm vic cho bn.
i vi AutoIt, th hin th mt hp thoi thng bo ra mn hnh, AutoIt h tr
cho bn hm MsgBox m bn tng thy cc v d. Cng xin nhc li vi bn
mt iu, sc mnh ca AutoIt nm vic s dng cc hm c nh ngha sn,
cho nn nu bn mun to mt ng dng hiu qu th vic nh ngha v gi hm l
khng th thiu.
Thng thng trong cc ngn ng khc (nh Pascal) th mt hm c tr v gi tr
c th th vn gi l hm. Nhng nu hm khng tr v mt gi tr no c, cc
lnh bn trong ch x l nhng tc v mang tnh th tc nn cn c gi l th
tc. Tuy nhin, AutoIt khng c khi nim th tc, nn d hm c hay khng tr ra
gi tr th ta vn gi chung l hm.
Phm vi ca mt hm
Trong AutoIt, mi hm l mt khi m ring bit. M ca mt hm ch thuc ring
hm v cc cu lnh trong bt c mt hm no khc u khng th truy cp n
n c. Ni theo cch khc, cc m v d liu c nh ngha bn trong mt
hm th khng th tc ng, nh hng n cc m hay d liu c nh ngha
bn trong mt hm khc, v hai hm c hai phm vi khc nhau.
Cc bin c nh ngha bn trong mt hm th c gi l bin cc b (Local).
Chng c to ra khi hm c np vo , v s mt khi thot hm. Nh vy, mt
bin cc b khng th lu tr gi tr ca n gia hai ln gi hm. Trong trng hp
bn s dng mt bin ton cc (Global) bn trong hm th ni dung ca bin ton
cc s thay i, v gi tr ca n vn gi nguyn sau khi hm kt thc.
Tt c cc hm trong AutoIt u c cng tm vc, cho nn bn khng th nh
ngha mt hm bn trong mt hm khc.
NH NGHA HM
nh ngha mt hm, bn phi tun th cc qui tc m ngn ng lp trnh h
tr. Vi AutoIt, dng tng qut khai bo v nh ngha mt hm nh sau :
Func <tn_hm>( <cc tham bin> )
<cc lnh ni b>
. . . . .
Return <gi tr>
EndFunc
Gii thch
Func. . . EndFunc : l hai t kha bt buc, c nhim v ch ra im bt u
v kt thc ca mt hm
<tn_hm> : tn i din miu t ngn gn chc nng ca hm
<cc tham bin> : khai bo mt danh sch tn cc bin, mi bin c ngn
cch vi nhau bng du phy. Danh sch ny s nhn cc d kin c truyn vo
hm x l. Mt hm c th khng c <cc tham bin>, tc danh sch tham bin
s rng. Tuy th, ngay c khi khng c tham bin no th bn vn phi t du
ngoc n vo.
<cc lnh ni b> : y bn chnh l thn ca hm. Bn c th thc hin
vic khai bo cc bin cc b (Local), vit cc biu thc , . . . .
Return <gi tr> : ty chn, c th c hoc khng. Nu nh bn to mt hm
c tr v mt gi tr th phn ny c thm vo, ngc li th khng cn. V d
nh bn nh ngha hm Sin(x) tnh sin ca x, th khi thc hin cc tnh ton
xong. Bn dng lnh Return <gi tr> tr v kt qu va tnh c cho Sin(x).
Ch
Khi khai bo <cc tham bin>, bn khng cn t vo t kha ch phm
vi ca bin. Theo mc nh, chng lun l cc b (local). Thm ch nu bn
c ch nh Dim, Local hay Global th cng s b bo li. Tuy nhin, hai t
kha Const, ByRef li c php t vo pha trc mi bin trong danh
sch cc tham bin m rng chc nng ca hm (xem phn Truyn d
kin cho hm).
Lnh Return c chc nng chnh l chm dt ngay qu trnh x l bn
trong hm v tr v <gi tr> cho hm (nu c). Theo mc nh, AutoIt lun
tr v gi tr cho mt hm. Nu lnh Return <gi tr> c dng th hm s
tr v <gi tr>. Hm tr v 0 (hoc nu dng string) nu Return khng
tn ti hoc Return c gi m khng c phn <gi tr> theo sau.
V d
on m sau thc hin vic nh ngha hm _RepeatText lp li n ln mt chui
$str ="abc"
$new_str =_RepeatText($str, 10, "")
MsgBox(0,"_RepeatText 1", "Source : " & $str & @CRLF & "New string : "
& $new_str)
$str ="Love"
$new_str =_RepeatText($str, 5, " - ") ; ngn cch chui bng " - "
MsgBox(0,"_RepeatText 2", "Source : " & $str & @CRLF & "New string : "
& $new_str)
Func _RepeatText($string, $how_many, $delim)
; $string s cha chui d kin c truyn t ngoi vo
; $how_many cho bit s lp li bao nhiu ln
; $delim ch nh k t no dng ngn cch gia hai chui c lp li
Local $Rep_str =""
For $i=1 To $how_many
$Rep_str &=$string & $delim
Next
Return $Rep_str
EndFunc
TRUYN D KIN CHO HM
u tin ta c vi khi nim cn nhc li :
Tham bin : l cc bin cc b, i din cho chng trnh con tip
nhn d kin
i s : thc cht l cc d-kin-c-th m ta truyn cho tham bin ca
hm. Tuy nhin, cc d kin ta truyn cho tham bin khng phi lc no
cng l mt gi tr c th. Thng thng n l mt bin bn ngoi. Bin bn
ngoi ny cng chnh l i s ca hm.
Ni chung, truyn d kin cho chng trnh con ta c hai cch.
- Cch th nht l truyn bng tr, phng php ny sao chp gi tr ca mt i
s vo tham bin, v cc thao tc trn tham bin khng lm nh hng n i s.
V d :
Hi("Mary")
$nick ="Lovely Cat"
Hi($nick)

Func Hi($name)
$greeting ="Hello, "& $name& ". Have a nice day!"
MsgBox(0,"Hi", $greeting)
EndFunc
- Cch th hai l truyn bng tham chiu, tc l dng tham bin thao tc trc
tip trn i s c truyn vo. Mi thay i trn tham bin u nh hng n
i s. lm c u ny ta s dng t kha ByRef
BYREF
Nh ni trn, khi mun tham bin lin kt vi i s truyn vo, ta t ByRef
vo trc tham bin lc khai bo.
V d, on m ny thc hin vic tro i gi tr gia hai bin $var1 v $var2 :
$var1 =100
$var2 =50
MsgBox(0,"Orginal", "Orginal value : $var1 =" & $var1 & ", $var2
=" & $var2)
_Swap($var1, $var2)
MsgBox(0,"Modified", "Modified value : $var1 = " & $var1 &
", $var2 =" & $var2)
Func _Swap(ByRef $a, ByRef $b)
$temp =$a
$a =$b
$b =$temp
EndFunc
Ban u ta truyn vo hm _Swap hai i s l $var1 v $var2. Do hai tham s $a,
$b c s dng ByRef nn khi ta tro i gi tr gia $a v $b th cng lm cho gi
tr ca $var1 v $var2 tro i theo.
CONST
Bn tng bit rng, Const l t kha dng khai bo hng s. Th khi s dng
trong hm cng vy, vic t Const pha trc tham bin, s lm cho gi tr ca
tham bin khng th thay i trong sut qu trnh thc thi hm. Gi tr ny c
truyn ch mt ln t pha i s.
DEFAULT
T kha ny khng c dng trong cc biu thc tnh ton. N c dng nh
mt c thng bo rng s s dng gi tr mc nh ca tham bin bn trong
hm. Cc tham s s dng gi tr mc nh v cc tham s s dng gi tr bt buc
c th c khai bo xen k nhau, khng cn phi theo trt t. (xem thm ch s
3 bn di)
V d :
WinMove("[active]","",default, default, 200,300) ; just resize the
active window (no move)
MyFunc2(Default,Default)
Func MyFunc2($Param1 =Default, $Param2 = 'Two', $Param3 =
Default)
If $Param1 =Default Then $Param1 ='One'
If $Param3 =Default Then $Param3 ='Three'
MsgBox(0, 'Params', '1 =' & $Param1 & @LF & _
'2 =' & $Param2 & @LF & _
'3 =' & $Param3)
EndFunc
CC CH
Vic s dng cch truyn bng tr, bng tham chiu hay tt c nhng g
c nu trong phn ny th ty vo trng hp m ta dng. Khng nht
thit l phi vit ht khi nh ngha mt hm
truyn mt mng vo hm, th ta ch cn nu ra tn ca mng ,
khng cn dng cp du ngoc vung. Khi x l, nu bn xc nh chiu
di ca mng c truyn vo, ta cn gi hm UBound.
Lc khai bo tham bin, bn c th gn cho tham bin nhng gi tr mc
nh. Trong qu trnh gi hm, nu ngi dng khng truyn d kin cho
tham bin th gi tr mc nh s c dng. C mt lu quan trng l
cc tham bin c dng gi tr mc nh, th tt c phi c t pha sau
cc tham bin khng dng gi tr mc nh. Ngoi ra cn c cch dng t
kha Default nh nu trn.
CC TH VIN TRONG AUTOIT v3

Include Description
Array.au3 Functions that assist with array management
AVIConstants.au3 AVI Constants
ButtonConstants.au3 Button Constants
Color.au3 Functions that assist with color management
ComboConstants.au3 ComboBox Constants
Constants.au3 Various AutoIt Constants
Date.au3 Functions that assist with dates and times
DateTimeConstants.au3 DateTime Control Constants
EditConstants.au3 Edit Constants
File.au3 Functions that assist with files and directories
GuiCombo.au3 Functions that assist with ComboBox
GUIConstants.au3 Includes all GUI related constants
GUIConstantsEx.au3 Constants to be used in GUI applications
GUIDefaultConstants.au3 GUI default control styles
GuiEdit.au3 Functions that assist with Edit control
GuiIPAddress.au3 Used to create a GUI IP Address Control
GuiList.au3 Functions that assist with Listbox
GuiListView.au3 Functions that assist with ListView
GuiMonthCal.au3 Functions that assist with MonthCal
GuiSlider.au3 Functions that assist with Slider Control Trackbar
GuiStatusBar.au3 Functions that assist with the Statusbar control
GuiTab.au3 Functions that assist with the Tab Control
GuiTreeView.au3 Functions that assist with TreeView
IE.au3
Internet Explorer Automation UDF Library for
AutoIt3
Inet.au3 Functions that assist with the Internet
ListBoxConstants.au3 ListBox Constants
ListViewConstants.au3 ListView Constants
Math.au3 Functions that assist with mathematical calculations
Memory.au3 Memory management routines
Misc.au3 Functions that assist with Common Dialogs
Process.au3 Functions that assist with process management
ProgressConstants.au3 Progress Constants
SliderConstants.au3 Slider Constants
Sound.au3 Functions that assist with Sound files
SQLite.au3 Functions that assist access to an SQLite database
SQLite.dll.au3 Inline SQLite3.dll
StaticConstants.au3 Static Constants
StatusBarConstants.au3 StatusBar Constants
String.au3 Functions that assist with String manipulation
TabConstants.au3 Tab Constants
TreeViewConstants.au3 TreeView Constants
UpDownConstants.au3 UpDown Constants
Visa.au3 VISA (GPIB & TCP) library
WindowsConstants.au3 Windows Constants

CC HM MI TRNG THNG DNG
Do s lng cc hm trong AutoIt hin nay rt ln (trn 2200 hm), nn phn ny
khng trnh by tt c cc hm m ch ni s b chc nng ca mt s hm thng
dng lin quan n mi trng Windows. Cn cc hm lin quan n chui, ton
hc, chuyn i,...th cc bn tra cu trong file help ca AutoIt. Cc ch y
bao gm :
Qun l mi trng
Qun l th mc
Qun l tp tin
Qun l a.
1. ClipGet( )
2. ClipPut(<value>)
3. MemGetStats( )
4. DirCopy( ngun, ch [, flag])
5. DirMove( ngun, ch [,flag])
6. DirCreate( path)
7. DirRemove( path [, DelAll])
8. DirGetSize( path [,flag])
9. FileCopy( ngun, ch [,flag])

10. FileMove( file_ngun , ni n [, flag])
11. FileDelete( path)
12. FileRecycle( ngun)
13. FileRecycleEmpty( [ a])
14. FileGetSize( file_name)
15. FileExist( path)
16. FileInstall( source, dest [, flag])
17. FileOpenDialog ( "title", "init dir", "filter" [, options [, "def
name" [, hwnd]]] )
18. FileSaveDialog ( "title", "init dir", "filter" [, options [, "def
name" [, hwnd]]] )
19. FileSelectFolder ( "dialog text", "root dir" [, flag [, "initial dir"
[, hwnd]]] )
20. DriveGetDrive( "type")
21. DriveGetLabel( "path")
22. DriveGetSerial( "path")
23. DriveSetLabel( "path", "label")
24. DriveSpaceFree( "path")
25. DriveSpaceTotal( "path")
26. DriveStatus( "path")
Qun l mi trng
1. ClipGet( )
Ly vn bn t clipboard
Th. Cng : tr v mt chui cha on text trong clipboard
Hng : gn @error =1 nu clipboard rng
=2 nu cha mc nhp khng phi l text
=3 hoc 4 nu khng th truy cp clipboard
Ch : nu c nhiu file/th mc c lu trong clipboard, th ng dn
v tn file/th mc c tr v, mi tn c ngn cch bi k t @LF
2. ClipPut(<value>)
Ghi mt on text vo clipboard
<value> : l mt chui mun ghi vo clipboard
Th. Cng : tr v 1
Hng : tr v 0
Ch : ni dung c trc trong clipboard s b vit . Mt chui
rng s xa sch clipboard
3. MemGetStats( )
Ly cc thng tin lin quan n b nh v tr v mt mng gm by phn t vi
ni dung :
$array[0] =Memory Load (Percentage of memory in use)
$array[1] =Total physical RAM
$array[2] =Available physical RAM
$array[3] =Total Pagefile
$array[4] =Available Pagefile
$array[5] =Total virtual
$array[6] =Available virtual
n v tnh l Kilobyte (Kb)
Qun l th mc
1. DirCopy( ngun, ch [, flag])
Copy mt th mc v tt c cc file, cc th mc con bn trong th mc ngun
n th mc ch
ngun : ch nh th mc cn copy (khng c du \ cui)
ch : th mc s cha cc phn c sao chp n (khng cha du \
cui)
flag : (ty chn) nu flag = 0 th khng vit cc file c th mc
ch (mc nh)
=1 s vit cc file c
2. DirMove( ngun, ch [,flag])
Di mt th mc c ch nh trong ngun sang th mc c ch nh trong
ch
3. DirCreate( path)
To mt th mc
Path : ng dn y v tn ca th mc cn to. V d
: c:\test\folder1
Th. Cng : tr v 1
Hng : tr v 0
Ch : hm ny s t to cc th mc cha (cp trn) c ch nh bi
path, nu nh chng cha c trn a
4. DirRemove( path [, DelAll])
Xa mt th mc
Path : ng dn ca th mc cn xa
DelAll : =0 (mc nh) khng xa cc file v th mc con bn trong
=1 s xa tt c cc file v th mc con bn trong (ging nh lnh DelTree trong
DOS)
5. DirGetSize( path [,flag])
Tr v kch thc (tnh theo byte) ca th mc ch nh
Path : th mc cn ly kch thc. v d : c:\windows
Flag : [ty chn] tr v kt qu m rng hay khng
=0 (mc nh) khng tr v kt qu m rng
=1 tr v mt mng c ni dung sau :
$array[0] =Size
$array[1] =Tng s file tm thy
$array[2] =Tng s th mc tm thy
=2 khng ly kch thc ca cc file trong th mc con
Th. Cng : tr v kch thc ca th mc (>=0)
Hng : tr v -1 v gn @error =1 nu ng dn khng tn ti
Qun l tp tin
1. FileCopy( ngun, ch [,flag])
Sao chp mt hoc nhiu file t th mc ngun sang th mc ch
ngun : ng dn cha cc file cn copy
ch : th mc s cha cc file c sao chp n
Flag : [ty chn] nu flag
=0 (mc nh) khng vit cc file trng tn
=1 vit cc file trng tn trong th mc ch
=8 t to cu trc th mc ch nu nh ch n khng tn ti.
Th. Cng : tr v 1
Hng : tr v 0
Ch : nu bn gn flag = 9, th tng ng (1+8). Gi tr ny bo cho
bit rng s vit nu c file trng tn v t to cu trc th mc ch n. Mun
sao chp nhiu file, ta s dng k t * lm gi tr ty . V d : *.mp3 chn
tt c file mp3.
2. FileMove( file_ngun , ni n [, flag])
Di chuyn mt hoc nhiu file sang th mc khc
File_ngun : ng dn v tn tp tin cn di i
Ni n : ng dn cha cc file cn di i. Nu tham s ny nu ra
mt tn tp tin khc, th file_ngun sau khi di n th mc ch nh
s b i tn.
Flag : ging nh lnh FileCopy
Th. Cng : tr v 1
Hng : tr v 0
Ch : nu ng dn cha file ngun v ni n khng cng phn
vng, th mt tc v copy v mt tc v xa c thc hin.
3. FileDelete( path)
Xa mt hoc nhiu file c ch nh trong path
Path : ng dn ca cc file cn xa
Th. Cng : tr v 1
Hng : tr v 0 nu file khng tn ti hoc khng th xa
Ch : nu mun xa tt c file trong mt th mc, s dng mt n * .
* i din cho tt c cc file. rng, mt vi file c thit lp
thuc tnh s khng th xa c.
4. FileRecycle( ngun)
a mt file hoc th mc vo thng rc
Ngun : ng dn v tn file hoc th mc cn chuyn vo thng rc.
S dng * i din nhiu file.
Th. Cng : tr v 1
Hng : tr v 0
Ch : xa mt th mc th khng s dng k t \ cui ng
dn ch nh trong ngun
5. FileRecycleEmpty( [ a])
Lm rng thng rc
[ a] : tham s ny ty chn, cho bit cn thng rc a no. Nu
b qua s b tt c a.
Th. Cng : tr v 1
Hng : tr v 0
Ch : hm ny lm vic my bn phi IE t phin bn 4 tr ln.

6. FileGetSize( file_name)
Tr v kch thc ca tp tin (tnh theo byte)
File_name : ng dn v tn ca file cn ly
Th. Cng : tr v kch thc ca file (byte)
Hng : tr v 0 v gn @error =1
Ch : lnh ny khng lm vic vi th mc. Ly kt qu chia cho
1024 c c n v tnh theo kilobyte, chia cho 1048576 c
c kch thc megabyte.
7. FileExist( path)
Kim tra xem file hoc th mc c nu trong path c tn ti hay khng
Path : file hoc th mc cn kim tra
Th. Cng : tr v 1
Hng : tr v 0 nu ng dn cha trong path khng tn ti
Ch : hm ny cng s tr v 0 nu bn ch nh mt a mm m li
khng c cha a
8. FileInstall( source, dest [, flag])
Bao gm v ci t mt file vi on m bin dch
Source : ng dn ngun ca nhng file cn dch. ng dn ny phi l
mt chui r rng, khng c php l mt bin. C th s dng
ng dn lin quan nh .\ hoc ..\
Dest : ng dn ch n ca cc file cn extract. Nu mun ch nh
mt th mc th dng du \ cui. Cho php dest l bin s
Flag : cho bit c chp khi gp file trng tn hay khng.
=0 (mc nh) : khng vit
=1 : vit
Ch : hm ny c thi k l gom cc file vo trong mt on m
bin dch. Nhng file c gom vo c th c extract (x nn)
trong qu trnh chy ca file script bin dch v lnh ny c thc
thi. Bn c th hnh dung l nu bn a mt file nh vo trong file
script th kch thc ca file script sau khi bin dch s tng ln. Mt
iu na l cc thng tin gc v thi gian to, chnh sa cng s c
gi li khi ci t
9. FileOpenDialog ( "title", "init dir", "filter" [, options [, "def name" [, hwnd]]] )
Gi hp thoi Open File (hp thoi xut hin khi bn chn lnh File>Open.. trong
cc ng dng)
Title : tiu ca hp thoi khi xut hin
Init dir : th mc mc nh m khi hp thoi va xut hin
Filter : ch nh mt hay nhiu loi tp tin cn m. v d nh : All
(*.*) hoc Text files (*.txt) hoc All (*.*) | Text files (*.txt)
Options : [ty chn] cho php m rng mt vi iu kin, s dng gi tr
sau :
1 =file phi tn ti (nu ngi dng g tn file)
2 = ng dn phi tn ti (nu g ng dn)
4 =cho php chn nhiu file
8 =nhc nh to file mi nu file khng tn ti
Def name : tn ngh cho ngi dng. Mc nh l rng ()
Hwnd : handle ca ca s c xem nh l ca s m ca hp thoi
Open File
Th. Cng : tr v ng dn y v tn ca tp tin c chn. Nu c
nhiu file c chn th tr v chui c dng nh sau : th mc |
file1 | file2 |
Hng : gn @error =1
Ch : b lc phn m rng v kt qu tr v cho nhiu file c chn,
u c ngn cch mi phn bi du gch ng |.
Bn cng c th kt hp cc gi tr ca Options li vi nhau c nhiu la
chn. v d : 1+4 va c la chn l file phi tn ti v cho
php chn nhiu file
10. FileSaveDialog ( "title", "init dir", "filter" [, options [, "def name" [, hwnd]]] )
Gi hp thoi save file (hp thoi xut hin khi bn gi File > Save)
Title : tiu ca hp thoi
Init dir : th mc mc nh m khi hp thoi va xut hin
Filter : ch nh mt hay nhiu loi tp tin cn m
Options : [ty chn] 2 = ng dn phi tn ti (nu ngi dng g
ng dn kt thc vi du \ )
16 =nhc nh vic ghi file trng tn
Def name : tn nghj cho ng dng. Mc nh l rng
Hwnd : handle ca ca s c xem nh l ca s m ca hp thoi
Save File
Th. Cng : tr v ng dn y v tn ca tp tin c chn. Nu c
nhiu file c chn th tr v chui c dng nh sau : th mc |
file1 | file2 |
Hng : gn @error =1
Ch : b lc phn m rng v kt qu tr v cho nhiu file c chn,
u c ngn cch mi phn bi du gch ng |.

11. FileSelectFolder ( "dialog text", "root dir" [, flag [, "initial dir" [, hwnd]]] )
Gi hp thoi Browse For Folder (hp thoi ch hin cy th mc chn)
Dialog text : vn bn s hin th trn hp thoi, cho php bn nhc nh chc
nng
Root dir : th mc gc ca cy tp tin trong GUI. S dng chn
Desktop.
Flag : [ty chn] cho php thm mt vi mt la chn :
1 =hin th nt Create Folder (i hi c IE6 tr ln)
2 =s dng Kiu hp thoi mi (New Dialog style, i hi IE6 tr ln)
4 =hin th mt control Edit g tn th mc mi
Initial dir : Th mc mc nh s chn khi hp thoi xut hin. S dng
chn Desktop
Th. Cng : tr v ng dn y ca th mc c chn
Hng : tr v chui rng v gn @error =1 nu ngi dng ng
(cancel) ca s.
Qun l a
1. DriveGetDrive( "type")
Lit k tt c cc a c trn h thng
Type : loi a cn tm :
"ALL", "CDROM", "REMOVABLE", "FIXED", "NETWORK", "
RAMDISK" hoc "UNKNOWN"
Th. Cng : tr v mt mng, mi phn t l mt chui cha k t a c
tm thy (v d nh C: ). Phn t u tin trong mng (c ch mc 0)
s cho bit tng s a c tm thy.
Hng : tr v chui rng v gn @error =1
2. DriveGetLabel( "path")
Cho bit tn ca a
Path : a cn ly tn. V d : "C:\", "e:\"
Th. Cng : tr v chui l tn ca a
Hng : gn @error =1
3. DriveGetSerial( "path")
Cho bit s serial ca a
Path : a cn ly s serial
Th. Cng : tr v mt chui l s serial
Hng : gn @error =1
4. DriveSetLabel( "path", "label")
Gn nhn (tn) cho a
Path : a cn gn nhn (nh "c:\")
Label : nhn mi gn cho a (ti a 11 k t)
Th. Cng : tr v 1
Hng : tr v 0
5. DriveSpaceFree( "path")
Ly kch thc cn trng ca a
Path : a cn ly. v d : "C:\"
Th. Cng : tr v kch thc cn trng ca a (tnh theo megabyte)
Hng : tr v 0 v gn @error =1
6. DriveSpaceTotal( "path")
Cho bit tng dung lng ca a
Path : a cn ly. v d : "C:\"
Th. Cng : tr v tng dung lng ca a (tnh theo megabyte)
Hng : gn @error =1
7. DriveStatus( "path")
Tr v trng thi ca a
Path : a cn ly trng thi
Tr v mt trong cc gi tr sau :
"UNKNOWN" : a c th khng c nh dng
"READY" : a ang sn sng lm vic
"NOTREADY" : a mm hoc CD khng c a
"INVALID" : a c th khng tn ti
GII THIU V GUI

GUI l t vit tt ca Graphic User Interface giao din ngi dng bng ha.
iu ny c l khng cn phi nii nhiu v bn thy n ngay t khi tip xc vi
my tnh, chng l cc biu tng, ca s, nt bm, ... . Cch y vi chc nm,
ci thi m DOS cn ng tr trn my PC th c l bn s gp rc ri khi phi nh
v thao tc mt cch chm chp vi cc cu lnh di dng, lm c php. Cn n
ci thi m Windows bnh trng sc mnh ca mnh bng giao din ha v
cc tnh nng mi m, th vic bn cn lm khi s dng my tnh l nh cc thao
tc. Tt c cc lnh v hng dn u c trn mn hnh, bn ch cn chn v nhn
chut hoc phm. Tht l tuyt cho ngi s dng.
Cn i vi ngi lp trnh th sao ? Khi mi bt u tip xc vi vic lp trnh
ng dng trong windows , s khng t ngi trong chng ta ngn ngm . Ti sao?
n gin l v n c qu nhiu hm v cch t chc cu trc th chng d nh t
no. Nu bn tng hc qua C/C++ th bn s hiu ci cm gic . Th AutoIt
s gip cho cng vic ca ta d dng hn ? Xin tha l ng nh vy. Mc d
bn trong Windows c xy dng sn mt th vin s cho vic lp trnh
cc ng dng c giao din , nhng c php ca n qu l rc ri . V chng ta
nhng ngi s dng AutoIt c th khai thc th vin ny theo mt cch n gin
nht m AutoIt h tr. S h tr m AutoIt mang n cho ti v bn chnh l
cc hm to nn ca s , cc thnh phn con trn n (ta gi l cc control ) v
nhng th lin quan c thay th vi c php ngn gn, n gin v sng sa
hn.
n y bn c th yn tm rng , hc AutoIt s khng h v dng. Tuy nhin mi
th s khng phi l mu hng nh bn ngh v bn s tn kh nhiu thi gian
tm hiu v nhng g AutoIt ang c. Trc khi son ti liu ny , ti phi tn
n my thng tm hiu mt cch "li bing" v ngn ng ny. Hy vng rng cc
bn s khng phi tn qu nhiu thi gian nh ti. Ni vng vo nh th cng ri
, by gi l ni vo ni dung chnh.
Cc control m AutoIt h tr cho ta bao gm :

Label Mt mu vn bn n gin
Button Nt bm
Input Vng son tho vn bn ch c mt dng
Edit Vng son tho vn bn c nhiu dng
Checkbox
Mt vung cho php bn nh du hoc khng
nh du
Radio
Mt nt trn cho php bn ch c chn mt nt
trong s nhiu nt
Combo Mt danh sch c nt bm s xung
List Mt danh sch
Date Mt hp chn ngy
Pic Vng hin th nh
Icon Vng hin th Icon
Progress Thanh tin trnh
Tab Mt nhm cc control s c cha trong tab
UpDown
Mt control cho php nh km cnh bn control
input
Avi Hin th on clip AVI
Menu Menu chc nng trn ca s
ContextMenu
Mt menu ng cnh s xut hin khi bn nhn
chut phi (hoc tri, ty v tr)
TreeView Mt cy phn nhnh nh trong Windows Explorer
Slider Mt thanh trt nh thanh iu khin m lng
ListView Control hin th thng tin ca ct trong listview
ListViewItem Control hin th cc mc trong listview
Graphic
Control hin th ha c v vi hm
GUICtrlSetGraphic.
Dummy Control dummny (b nhn)

y l hnh nh v cc control m ta c th to lp c
Error!

Trc khi tm hiu v cch thc to mt GUI , y xin gii thiu s lc vi cc
bn cc hm c bn m ta s thng s dng thao tc vi mt ng dng c ca
s.
Hm Gii thch
GUICreate To mt ca s
GUICtrlCreate...
To ra cc control khc nhau trn ca s (du . s c thay
bng tn c th)
GUISetState Hin th hoc n ca s
GUIGetMsg Ly cc thng tin v cc s kin din ra trn gui
GUICtrlRead c d liu t control
GUICtrlSetData Gn/Thay i d liu trn control
GUICtrlSet... Thay i cc la chn trn control (v d nh mu sc , style,)

TO GIAO DIN NGI DNG
Phn ny s hng dn bn cch thc to nn mt ng dng c giao din hn
hoi. Mt iu quan trng m bn cn nh l mt ng dng trn windows khng
nht thit phi c giao din (v d nh cc dch v ca win) v cc thao tc x l
i vi mt ng dng trn Windows l tp trung vo x l s kin xy ra trn ca
s ca ng dng . y, cc bn cn nm c vi ch sau :
- Control ID : n thc cht l mt s nguyn (>0) i din cho
control. Thng thng ta khng bit s ny l bao nhiu (v do h iu
hnh cung cp khi chy ng dng) v khi to ra mt control ta thng
gn n vo mt bin, bin l tn i din, s cha ID ca control
. Do trn ca s ca bn s c nhiu thnh phn, mi thnh phn
cn phi c mt ci tn qun l v khai thc. V d bn c hai nt
bm trn ca s th bn phi t tn cho nt th nht l btn1 (hoc
btnOK) v nt th hai l btn2 (btnCancel) chng hn. khi ngi
dng nhp chut th ta bit rng nt bm no va c tc ng.
- Control ID : l mt s nguyn duy nht, khng bao gi c s trng
lp (do b nh c phn chia cha cc thnh phn ).
- Handle : ci t ny ti khng bit nn dch th no cho ng
ngha nhng c th tm hiu rng , n l mt gi tr c bit c to
ra v gn vo mt ca s khi ca s c to. Thng thng ,
handle ch c dng cho ca s , t khi dng cho control. Khi ni
n handle , ngi ta ngh ngay n nh danh ca mt ca s (hay
GUI). V handle l mt dng d liu c bit , n khng phi chui
hay s.
to c mt ng dng c giao din ha , th thnh phn bn cn to u
tin chnh l mt ca s. Sau khi c ca s th chng ta s to tip cc thnh phn
con trn n (cc control).
Mun to c ca s ta cn gi n hm GuiCreate. C c php hon chnh nh
sau :
GUICreate ( "title" [, width [, height [, left [, top [, style [, exStyle [,
parent]]]]]]] )
Cc phn c ro trong cp du ngoc vung [ ] l ty chn, c th c hoc
khng. Trong ,
Cc tham s
Title : l tiu ca ca s (vn bn ny s hin th trn thanh tiu
khi ca s xut hin).
Width : rng ca ca s (tnh theo pixel)
Heigh : chiu cao ca ca s (tnh theo pixel)
Left : v tr bn tri ca mn hnh (tng ng vi ta x). Gn -1 l
canh gia mn hnh. Nu gn gi tr cho left, th Top cng phi
c gn gi tr.
Top : v tr pha trn ca mn hnh (tng ng vi ta y). Gn -1
canh gia mn hnh
Style : xc nh style (kiu) ca s. Xem trong GUI Control Styles
Appendix ca file help.
S dng -1 dng style mc nh, bao gm cc gi tr sau
: $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP,
$WS_SYSMENU.
Cc style $WS_CLIPSIBLINGS, v $WS_SYSMENU lun c s dng
nu nh style $WS_MAXIMIZEBOX hoc $WS_SIZEBOX c ch
nh.
exStyle : xc nh style m rng cho ca s (xem bng Extended Style
Table bn di ). Mc nh l -1.
Parent : handle ca ca s c to ra trc . Ca s sp to ra s l
con ca ca s c handle va gn.
Tr v
Thnh cng : hm tr v handle ca ca s
Hng : hm tr v 0 v gn @error =1
Ch
Hai tham s Left v Top s xc nh v tr xut hin ca hp thoi trn
mn hnh. im giao nhau ca hai tham s ny chnh l gc tri trn ca hp
thoi.
Theo mc nh, cc ca s c to ra s khng th c chc nng resize
(dng chut ko ln hoc thu nh kch thc ca ca s) v phng ln cc i
(maximize). V th, khi bn mun s dng bt k tnh nng no
trn th c th thm vo tham s style cc gi tr
WS_SIZEBOX hoc WS_MAXIMIZEBOX.
Tuy nhin, khi s dng WS_SIZEBOX th cc style
WS_MINIMIZEBOX, WS_CAPTION, WS_POPUP, WS_SYSMENU li
khng c thit lp. Cch tt nht to nn mt hp thoi c th resize l
s dng WS_OVERLAPPEDWINDOW.
Khi dng $WS_EX_MDICHILD cho tham s style m rng , th v tr
ca s l v tr lin h n vng client ca ca s b-m (parent). Tham s
$WS_EX_LAYERED cho php c mt bc nh trong sut bn trn nh nn
nh ngha trong ca s parent.
kt hp cc style do bn ch nh vi style mc nh, ta s dng :
BitOr($GUI_SS_DEFAULT_GUI, newstyle,...).
Mun s dng c cc hng s lin quan n GUICreate, bn cn gi
#include <WindowsConstants.au3>
Bng cc style m rng (Extended style table)

Style m rng Kt qu
$WS_EX_ACCEPTFILES
Cho php mt control edit hoc input c
to trn GUI c th nhn c tn ca file
c ko v th vo. Control cng phi
c gn trng thi
$GUI_DROPACCEPTED bng hm
GUICtrlSetState. i v cc control khc,
thng tin ca vic drag&drop c th c
truy li vi @GUI_DRAGID,
@GUI_DRAGFILE, @GUIDROPID.
$WS_EX_APPWINDOW
Yu cu ca s lun ni -trn thanh
taskbar khi n xut hin.
$WS_EX_CLIENTEDGE
Ca s s c bao vi vin b trng xung
(sunken).
$WS_EX_CONTEXTHELP
Bao gm mt du chm hi thanh tiu
ca ca s. Khng dng c vi
WS_MAXIMIZEBOX hoc
WS_MINIMIZEBOX.
$WS_EX_DLGMODALFRAME
To mt ca s c vin ln gp i bnh
thng. Ty chn, ca s c th c to
vi mt thanh tiu bng cch ch nh
WS_CAPTION trong tham s style
$WS_EX_MDICHILD
To mt ca s con bn trong ca s b-m
(simulation not real MDI).
$WS_EX_OVERLAPPEDWINDOW
Kt hp style WS_EX_CLIENTEDGE v
WS_EX_WINDOWEDGE
$WS_EX_STATICEDGE
To mt ca s c vin ch bng mt phn
ba so vi bnh thng , style ny c s
dng cho cc mc khng chp nhn vic
nhp liu ca ngi dng
$WS_EX_TOPMOST
GUI c to vi style ny s lun trn
cc ca s khc, thm ch khi GUI khng
c kch hot.
$WS_EX_TRANSPARENT
Ca s s xut hin trong sut bi v cc
bit ca nhng ca s lin quan bn di
c v li
$WS_EX_TOOLWINDOW
To ra mt ca s cha cng c, ta cn gi
l floating toolbar (thanh cng c tri ni).
Ca s cha cng c s c mt thanh tiu
v font ch nh hn ca s bnh thng.
Ca s ny s khng xut hin trong
taskbar hoc trong hp thoi khi bn Alt-
Tab. Nu ca s cha cng c c mt menu
h thng, icon ca n s khng hin th trn
thanh tiu . Tuy nhin, bn c th p
chng hin th bng cch g phm Alt-
Space.
$WS_EX_WINDOWEDGE To ca s c bao vi vin ni
$WS_EX_LAYERED
To mt ca s c xp thnh lp (layer).
Ch rng ci ny khng s dng c cho
cc ca s con

V d 1
on m ny to ra mt ca s, trn c cha mt label v mt button. Khi bn
nhn vo Button s to ra mt s ngu nhin v hin th label.
#include <GUIConstantsEx.au3>
$gui =GUICreate("Random number", 200, 100) ;to gui chnh
;to nhn s hin th s va to
$label_num =GUICtrlCreateLabel("000", 20, 20, 160, 30)
;gn label ny dng font Arial, size l 14
GUICtrlSetFont(-1, 14, 400, 0, "Arial")
;to nt cp pht s ngu nhin
$button_gen =GUICtrlCreateButton("Generate random number", 20,
50, 160, 30)
GUISetState() ; hin th gui va to ln mn hnh
while 1 ; vng lp x l thng ip
$msg =GUIGetMsg() ;ghi nhn s kin xy ra trn gui
Switch $msg
Case $GUI_EVENT_CLOSE ;nu nhn nt Close hoc Alt-F4
ExitLoop ; th thot
Case $button_gen ;nu nhn nt cp pht th to s ngu nhin
$num =Int(Random(-10^9, 10^9))
; gn vo label hin th s va cp pht
GUICtrlSetData($label_num, $num)
EndSwitch
WEnd
V d 2
on m ny minh ha vic to ca s con c nn trong sut bng mt nh gif.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Example( )
Func Example2()
Local $gui, $background, $pic, $basti_stay, $msg
Local $sFile =
RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\A
utoIt v3\AutoIt", "InstallDir") &
"\Examples\GUI\logo4.gif"
$gui =GUICreate("Background", 400, 100)
; background picture
$background = GUICtrlCreatePic(@SystemDir &
"\oobe\images\mslogo.jpg", 0, 0, 400, 100)
GUISetState(@SW_SHOW)
; transparent MDI child window
$pic = GUICreate("", 169, 68, 0, 0, $WS_POPUP,
BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gui)
; transparent pic
$basti_stay =GUICtrlCreatePic($sFile, 0, 0, 169, 68)
GUISetState(@SW_SHOW)
Do
$msg =GUIGetMsg()
Until $msg =$GUI_EVENT_CLOSE
EndFunc
GUIDelete
Xa b mt ca s GUI v tt c cc control trn
GUIDelete ( [winhandle] )
Cc tham s
Winhandle
[ty chn] handle ca ca s cn xa , c tr v t hm GUICreate
(mc nh l GUI dng trc .)

Tr v
Th.
Cng :
Returns 1.
Hng : Returns 0.

Ch
None.
GUIGetCursorInfo
Ly thng tin v v tr ca con tr chut (tnh theo ca s GUI)
GUIGetCursorInfo ( [winhandle] )
Cc tham s
winhandle
[ty chn] handle ca ca s mun s dng. Nu b qun th ca s
hin hnh c s dng

Gi tr tr v
Th.
Cng :
Tr v mt mng c 5 phn t , cha cc thng tin sau :
$array[0] =ta X (chiu ngang)
$array[1] =ta Y (chiu dc)
$array[2] =nt th nht ca chut c nhn (thng l nt tri , 1 l c
nhn, 0 nu khng nhn)

$array[3] =nt th hai ca chut c nhn (thng l nt phi , 1 l c
nhn, 0 nu khng nhn)
$array[4] =ID ca control m con tr chut ang bay-ln trn. Cho 0
nu khng c control
Hng
:
Tr v 0 v gn @error=1

Ch
Ta ca con tr chut c tnh theo ta bn trong GUI , ch
khng phi tnh theo ta mn hnh
Nu tham s "winhandle" c dng th ca s c ch nh s tr
thnh ca -s-hin-hnh mi.
Vic ly thng tin v v tr ca con tr chut ch thnh cng khi dng trn
mt ca s c to ra bng hm GUICreate. Khi khng c winhandle th
hm ch thnh cng khi ca s GUI c kch hot
nh danh ca ListViewItem hoc TreeViewItem s khng bao gi c
tr v , ch tr v ID ca ListView hoc TreeView m thi.
GUIGetMsg
Ly v tr v cc s kin no xy trn GUI
GUIGetMsg ( [advanced] )
Cc tham s
Advanced
[ty chn] tr v thng tin m rng cha trong mt mng
0 =(default) tr v mt s kin n l.
1 =tr v mt mng cha s kin v thng tin m rng

Gi tr tr v
Tr v mt gi tr n hoc mt mng ty vo tham s Advanced
S kin s tr v nh danh (ID) ca control gi i thng ip , hoc n l mt
s kin c bit (nh l ng hoc thu nh ca s ,...). Hoc tr v 0 nu khng c
s kin no xy ra.

ID ca s kin ID ca control gi i s kin
0 Khng c s kin
$GUI_EVENT_CLOSE Hp thoi b ng (click nt close hoc
menu h thng hoc mt nt do ta to)
$GUI_EVENT_MINIMIZE Hp thoi b thu nh (minimize) bi click
nt bm t thanh tiu
$GUI_EVENT_RESTORE Hp thoi c phc hi do nhn nt
thanh taskbar
$GUI_EVENT_MAXIMIZE Hp thoi c phng ln cc i do
nhn nt maximize
$GUI_EVENT_MOUSEMOVE Con tr chut c di chuyn
$GUI_EVENT_PRIMARYDOWN Nt c bn ca chut c nhn gi
(thng l nt tri , n ty vo thit lp
trong win)
$GUI_EVENT_PRIMARYUP Nt c bn ca chut c nh ra
$GUI_EVENT_SECONDARYDOWN Nt th hai ca chut c nhn gi
(thng l nt phi)
$GUI_EVENT_SECONDARYUP Nt thc hai ca chut c nh ra
$GUI_EVENT_RESIZED Ca s c nh li kch thc (resize)
$GUI_EVENT_DROPPED Kt thc ca hnh ng
ko&th @GUI_DRAGID,
@GUI_DRAGFILE v @GUI_DROPID
s c s dng truy li ID hoc tp tin
cho cc control lin quan.


Khi s dng tham s Advanced th thng tin m rng c tr v trong mng nh
sau :
$array[0] =0 hoc ID ca s kin hoc ID ca control
$array[1] =Handle ca ca s pht ra s kin
$array[2] =handle ca control to ra s kin (nu c th p dng)
$array[3] =ta X hin hnh ca con tr chut (tnh theo GUI)
$array[4] =ta Y hin hnh ca con tr chut (tnh theo GUI)

Nu bn s dng ch GUIOnEventMode th
hm GUIGetMsg lun tr v 0 v @error c gn bng 1.
Cc nt minimize , restore v maximize s khng thc thi bt k hnh ng g
Ch
Hm ny s t ng to ra khong dng khng lm qu ti cho CPU nn n c
th s dng mt cch an ton trong vng lp khp kn m khng cn bt k lnh
sleep hay delay khc
Thng tin v v tr ca con tr chut v control ang c con tr "bay ln" pha
trn c th c truy li bng hm GUIGetCursorInfo. Khng c s kin no xy
ra khi con tr chut vt qua control v th GUIGetCursorInfo phi c gi
ly ID ca control .
GUIGetStyle
Truy li cc style ca GUI
GUIGetStyle ( [ winhandle] )
Cc tham s
winhandle
[ty chn] handle ca ca s , c tr v t hm GUICreate... (mc
nh l GUI trc )

Gi tr tr v
Th.
Cng :
Tr v mt mng gm hai phn t cha thng tin ca style
$array[0] =Style
$array[1] =style m rng
Hng : Tr v 0

Ch
Cn thn v nhng thay i ca style sau khi hm GUISetState c gi
GUIGetStyle
Truy li cc style ca GUI
GUIGetStyle ( [ winhandle] )
Cc tham s
winhandle
[ty chn] handle ca ca s , c tr v t hm GUICreate... (mc
nh l GUI trc )

Gi tr tr v
Th. Tr v mt mng gm hai phn t cha thng tin ca style
Cng :
$array[0] =Style
$array[1] =style m rng
Hng : Tr v 0

Ch
Cn thn v nhng thay i ca style sau khi hm GUISetState c gi
GUIRegisterMsg
ng k mt hm-do-ngi-dng-nh-ngha cho Windows Message ID
(WM_MSG) .
GUIRegisterMsg ( msgID, "function" )
Cc tham s
msgID
nh danh thng ip windows (Windows Message ID , Xem
Appendix: Windows Message Codes).
function
Tn ca hm s c gi khi thng ip xut hin , s dng chui
rng b qua , khng ng k.

Gi tr tr v
Th.
Cng :
1
Hng : 0

Ch
!!! hm do bn nh ngha c th lm vic c , cn gn cho n ti a 4 tham
s , ngc li c th n s khng c gi !!!

V d
Func MyUserFunction($hWndGUI, $MsgID, $WParam, $LParam)
...
EndFunc

hoc

Func MyUserFunction($hWndGUI, $MsgID)
...
EndFunc
Khi ngi dng gi hm th 4 tham s s mang nhng gi tr sau :
V tr Tham s ngha
1 hWnd Handle ca GUI m thng ip s xut hin
2 Msg nh danh (ID) ca thng ip Windows
3 wParam Tham s thng ip u tin (gi tr hex)
4 lParam Tham s thng ip th hai (gi tr hex)

C th ng k ti a 256 hm cho cc thng ip windows
Theo mc nh , sau khi hm ngi dng kt thc th trnh iu khin
thng ip ni b ca AutoIT s tip tc lm vic. iu s khng xy ra
nu nh lnh Return trong hm ca bn tr v mt gi tr hoc return m
khng c gi tr theo sau.
!!! Nu bn mun AutoIT chy trnh iu khin ni b i vi mt thng
ip , th hm-ngi-dng nn tr v bin $GUI_RUNDEFMSG (trong th
vin GUIConstantsEx.au3) !!!
V d : khi bn mun hm tr v sm hn so vi tin trnh kt thc ca
n v tip tc chy trnh iu khin thng ip ni b
Cn trng : cn tr vic chy mt hm-ngi-dng ang thc thi mt
thng ip ca s vi mt lnh nh MsgBox() th c th a n mt cch
chy khng mong i, h thng s tr v nhanh nh c th !!!
Vi control c s dng cc nh danh thng ip Windows c bit , cho
nn vic ng k chng khng c hiu qu. V d nh : WM_CHAR,
WM_KEYDOWN, WM_KEYUP c dng bi control edit.
GUISetAccelerators
Ci t mt bng tng tc cho GUI . Bng tng tc ny s cho php ngi dng s
dng cc phm nng
GUISetAccelerators ( accelerators [, winhandle] )
Cc tham s
Accelerators Mt mng hai chiu t chc bng tng tc (xem ch )
winhandle
[ty chn] handle ca ca s cn ci t , c tr v t hm
GUICreate (mc nh l gui trc ).

Gi tr tr v
Th.
Cng :
Returns 1.
Hng : Returns 0.

Ch
Mng ny c chc nng l cha phm nng (hotkey) v ID ca control cn gi .
Mng phi c nh ngha nh sau :
Dim $array[n][2] trong n l tng s phm tng tc cn thit lp

$array[0][0] = Hotkey (theo nh dng ca hm HotKeySet) u tin
$array[0][1] =Control ID s dng cho hotkey u tin, c tr v t hm
GUICtrlCreate...
$array[1][0] =Hotkey th hai
$array[1][1] =Control ID s dng cho hotkey th hai...
.........
$array[n][0] =Hotkey th n
$array[n][1] =Control ID s dng cho hotkey th n

Nu tham s truyn khng phi l mng hai chiu th s khng c trnh tng tc
no c to.
GUISetBkColor
Thit lp mu nn cho ca s
GUISetBkColor ( background [, winhandle] )
Cc tham s
Background Mu nn cn gn
winhandle
[ty chn] handle ca ca s m bn mun gn mu (mc nh l ca
s trc )

Gi tr tr v
Th.
Cng :
Returns 1.
Hng : Returns 0.

Ch
Nhng phin bn trc ca AutoIt (v3.0.102) s dng nh dng mu BGR ,
nhng phin bn mi hn s dng RGB theo mc nh. Tuy nhin bn c th thay
i iu ny bng la chn ColorMode.
GUISetFont
Thit lp font ch mc nh cho GUI
GUISetFont (size [, weight [, attribute [, fontname [, winhandle]]]] )
Cc tham s
Size Kch c ca font (mc nh l 8.5)
weight [ty chn] trng lng ca font (bnh thng = 400)
attribute
[ty chn] mun thit lp nh dng cho k t , ta c in nghing : 2 ,
gch chn : 4 , gch ngang (strike) : 8 . Mun kt hp nhiu nh dng
ta cng cc gi tr vi nhau. V d , mun c ch in nghing v gch
chn , ta dng 2+4.
fontname [ty chn] tn ca font ch s dng
winhandle
[ty chn] handle ca ca s , c tr v t hm GUICreate (mc
nh l ca s dng trc )

Gi tr tr v
Th.
Cng :
Returns 1.
Hng : Returns 0.

Ch
Size c th l mt s thp phn , nh 8.5
Vi control nh Label , mc nh gi tr 8.5 c th c thay bng 9 theo
ghi nhn t Windows Theme
Xem Appendix c c mt danh sch y v cc font ca
windows
GUISetHelp
Ci t mt file thi hnh gi khi phm F1 c nhn
GUISetHelp ( helpfile [, winhandle] )
Cc tham s
Helpfile File s chy khi m phm F1 c nhn (lc gui c kch hot)
Winhandle
[ty chn] handle ca ca s , c tr v t hm GuiCreate(mc nh
l Gui trc )

Gi tr tr v
Th.
Cng :
Returns 1.
Hng : Returns 0.

GUISetOnEvent
Thit lp mt hm cn gi khi c mt nt c nhn (hm do ngi vit m
son)
GUISetOnEvent ( specialID, "function" [, winhandle] )
Cc tham s
specialID Xem bng ID bn di

function Tn ca hm cn gi (hm ny do ngi vit script son)
winhandle
[ty chn] handle ca ca s cn thit lp , c tr v t hm
GUICreate (mc nh l gui trc )

Gi tr tr v
Th.
Cng :
Returns 1.
Hng : Returns 0.

Ch
Cc hm OnEvent ch c gi khi la chn ch x l gui l
GUIOnEventMode (ch vng lp thng ip s khng lm vic khi c la
chn Opt("GuiOnEventMode", 1) ) . ng thi cc nt minimize, maximize
v restore s khng a ra bt c phn ng no.
Nu function l mt chui rng "" , th khng c phn ng xy ra khi
ngi dng thao tc.
Bng ID c bit
Special Id Miu t
$GUI_EVENT_CLOSE Hp thoi b ng (click nt close hoc
menu h thng hoc mt nt do ta to)
$GUI_EVENT_MINIMIZE Hp thoi b thu nh (minimize) bi click
nt bm t thanh tiu
$GUI_EVENT_RESTORE Hp thoi c phc hi do nhn nt
thanh taskbar
$GUI_EVENT_MAXIMIZE Hp thoi c phng ln cc i do
nhn nt maximize
$GUI_EVENT_MOUSEMOVE Con tr chut c di chuyn
$GUI_EVENT_PRIMARYDOWN Nt c bn ca chut c nhn gi
(thng l nt tri , n ty vo thit lp
trong win)
$GUI_EVENT_PRIMARYUP Nt c bn ca chut c nh ra
$GUI_EVENT_SECONDARYDOWN Nt th hai ca chut c nhn gi
(thng l nt phi)
$GUI_EVENT_SECONDARYUP Nt thc hai ca chut c nh ra
$GUI_EVENT_RESIZED Ca s c nh li kch thc (resize)
$GUI_EVENT_DROPPED Kt thc ca hnh ng
ko&th @GUI_DRAGID,
@GUI_DRAGFILE v @GUI_DROPID
s c s dng truy li ID hoc tp tin
cho cc control lin quan.

GUISetState
Thay i trng thi ca ca s GUI
GUISetState ( [flag [, winhandle]] )
Cc tham s
flag
[ty chn]
@SW_SHOW =hin th ca s n trc (default)
@SW_HIDE =n ca s
@SW_MINIMIZE =Minimize (cc tiu) ca s
@SW_MAXIMIZE =Maximize (cc i) ca s
@SW_RESTORE =phc hi li ca s b cc tiu
@SW_DISABLE =V hiu ca s
@SW_ENABLE = kch hot ca s
@SW_LOCK =Kha ca s khng cho v li
@SW_UNLOCK =M kha ca s , cho php v li
winhandle
[ty chn] handle ca gui cn thit lp trng thi , tr v t hm
GUICreate (mc nh l GUI trc )

Gi tr tr v
Th.
Cng :
Returns 1.
Hng : Returns 0.

Ch
Khi ca s c to ra , chng s b n . Cho nn mun hin th ca s ta
phi gi hm ny vi tham s @SW_SHOW
Ch mt ca s l c th b kha vi @SW_LOCK. Cc @SW_LOCK
khc s kha ca s khi c yu cu. @SW_UNLOCK b qua "winhandle"
m kha bt k ca s no b kha..
GUISetStyle
Thay i style cho ca s
GUISetStyle ( Style [,ExStyle [, winhandle]] )
Cc tham s
Style
nh ngha style cho ca s. Xem GUI Control Styles Appendix.

s dng -1 b qua , khng thay i
exStyle
[ty chn] nh ngha style m rng cho gui. Xem bng Extended
Style Table bn di. -1 l mc nh
, khng thay i style
winhandle
[ty chn] handle ca ca s cn thit lp , c tr v t hm
GUICreate (mc nh l Gui trc )

Gi tr tr v
Th.
Cng :
Returns 1.
Hng : Returns 0.

Ch
S khng c s kim tra no trn gi tr ca style , cng khng c s tc ng no
i vi cc control nh ngha. l trch nhim ca ngi thit k m bo
tnh tng thch.
GUICtrlCreateLabel
Label l chnh l mt text box, n m nhim chc nng hin th ni dung ca vn
bn ln trn GUI. Vn bn hin th trn l vn bn tnh, m thng thng i
vi C++ hay vi ngn ng khc ngi ta gi l Static.
to mt Label , ta c hm vi c php sau :
GUICtrlCreateLabel ( "text", left, top [, width [, height [, style [, exStyle]]]] )
Cc tham s
Text Vn bn s hin th
left
Khong cch canh t l tri ca GUI (ta x). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
Top
Khong cch canh t l trn ca GUI (ta y). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
width [ty chn] rng ca control. Mc nh l rng dng trc
height
[ty chn] chiu cao ca control. Mc nh l chiu cao dng trc
.
style
[ty chn] nh ngha style cho control. Xem trong GUI Control
Styles Appendix.

default ( -1) : none.
cc style bt buc : $SS_NOTIFY, $SS_LEFT
exStyle
[ty chn] nh ngha style m rng cho control. Xem Extended Style
Table.

Gi tr tr v
Th.
Cng :
Tr v ID (nh danh) ca control Label va to
Hng : Tr v 0

Ch
thay i thng tin trn control, xem GUICtrlSet....
kt hp style mc nh vi cc style khc,
gi BitOr($GUI_SS_DEFAULT_LABEL, newstyle,...

Mun dng cc gi tr nu trn, phi gi #include <StaticConstants.au3>
trong file script ca bn
a v kch thc mc nh l $GUI_DOCKAUTO
Style m rng $GUI_WS_EX_PARENTDRAG cho php bn ko nhng
ca s b-m khng c thanh tiu (khng c $WS_CAPTION trong
GUICreate)
thit lp mu nn trong sut, gi GUICtrlSetBkColor(-1,
$GUI_BKCOLOR_TRANSPARENT).
V d
#include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1)
Example()
Func Example()
Local $widthCell, $msg, $iOldOpt
; will create a dialog box that when displayed is centered
GUICreate("My GUI")
GUISetHelp("notepad") ; will run notepad if F1 is typed
$iOldOpt =Opt("GUICoordMode", 2)
$widthCell =70
GUICtrlCreateLabel("Line 1 Cell 1", 10, 30, $widthCell) ; first cell 70 width
GUICtrlCreateLabel("Line 2 Cell 1", -1, 0) ; next line
GUICtrlCreateLabel("Line 3 Cell 2", 0, 0) ; next line and next cell
GUICtrlCreateLabel("Line 3 Cell 3", 0, -1) ; next cell same line
GUICtrlCreateLabel("Line 4 Cell 1", -3 * $widthCell, 0) ; next line Cell1
GUISetState() ; will display an empty dialog box
; Run the GUI until the dialog is closed
Do
$msg =GUIGetMsg()
Until $msg =$GUI_EVENT_CLOSE
$iOldOpt =Opt("GUICoordMode", $iOldOpt)
EndFunc ;==>Example
GUICtrlCreatePic
Hm ny s to ra mt control cho php np v hin th hnh nh (picture) trn
GUI.
GUICtrlCreatePic ( filename, left, top [, width [, height [, style [, exStyle]]]] )
Cc tham s
Filename
ng dn v tn y file nh cn load. H tr nh BMP, JPG v
GIF (khng c hnh ng)
left Khong cch canh t l tri ca GUI (ta x). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
Top Khong cch canh t l trn ca GUI (ta y). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
width [ty chn] rng ca control. Mc nh l rng dng trc
height [ty chn] chiu cao ca control. Mc nh l chiu cao dng trc
.
Style
[Ty chn] nh ngha style cho control. Xem GUI Control Styles
Appendix.

default (-1) : $SS_NOTIFY
style bt buc : $SS_BITMAP
exStyle [ty chn] nh ngha style m rng. Xem Extended Style Table.

Gi tr tr v
Th.
Cng :
Tr v ID ca control picture va c to
Hng : Tr v 0 nu nh khng to c nh

Ch
thit lp hoc thay i thng tin picture, xem hm GUICtrlSet....
cp nht nh sau khi hp thoi c hin th , s dng hm
GUICtrlSetImage
Nu bn mun nh hin th vi kch thc gc ca n , gn width = heigh
=0
Nu bn mun c mt nh trong sut , bn cn to GUI vi style m
rng $WS_LAYERED. im nh left-top (gc tri trn) s c dng lm
mu trong sut. Khi c nhiu nh c to , th nh cui cng c nh
ngha mu trong sut. Xem example 2.
. kt hp style mc nh vi style khc , s dng
BitOr($GUI_SS_DEFAULT_PIC, newstyle,...).
s dng c cc gi tr nu trn , gi th vin #include
<StaticConstants.au3>
a v kch thc mc nh : $GUI_DOCKSIZE.
Nu mt nh c thit lp lm nh trong sut , cc control khc s b
ph lp , iu quan trng l phi v hiu control pic v to n sau khi bn
to cc control khc : GUICtrlSetState(-1, $GUI_DISABLE). Ch iu ny
thi th cha cho control Tab v ListView v chng s hot ng hi khc
thng. Trong trng hp ny bn cn to nh vi style
$WS_CLIPSIBLINGS , GuiCtrlSetState(-1,$GUI_ONTOP) l cn thit cho
control Tab v ListView.
Style m rng $GUI_WS_EX_PARENTDRAG cho php bn nm v
ko nhng ca s con khng c thanh tiu .
Nn th lun c lm cho trong sut. GUICtrlSetBkColor( ) th khng
c tc dng i vi control picture.
PNG c th c dng vi GDI+. Xem example 3.
V d
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
Global $gui, $guiPos, $pic, $picPos
Example1()
Example2()
;----- example 1 ----
Func Example1()
Local $n, $msg
GUICreate("My GUI picture", 350, 300, -1, -1, $WS_SIZEBOX +
$WS_SYSMENU) ; will create a dialog box that when displayed is centered
GUISetBkColor(0xE0FFFF)
$n =GUICtrlCreatePic(@SystemDir & "\oobe\images\mslogo.jpg", 50, 50,
200, 50)
GUISetState()
; Run the GUI until the dialog is closed
While 1
$msg =GUIGetMsg()
If $msg =$GUI_EVENT_CLOSE Then ExitLoop
WEnd
;~GUISetState ()
; resize the control
$n =GUICtrlSetPos($n, 50, 50, 200, 100)
; Run the GUI until the dialog is closed
While 1
$msg =GUIGetMsg()
If $msg =$GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()
EndFunc ;==>Example1
;----- example 2
Func Example2()
Local $msg
$gui =GUICreate("test transparentpic", 200, 100,-1 )
$pic =GUICreate("", 68, 71, 10, 10, $WS_POPUP,
BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gui)
GUICtrlCreatePic(@SystemDir & "\oobe\images\merlin.gif", 0, 0, 0, 0,-
1,$GUI_WS_EX_PARENTDRAG )
GUISetState(@SW_SHOW, $gui)
GUISetState(@SW_SHOW, $pic)
HotKeySet("{ESC}", "main")
HotKeySet("{LEFT}", "left")
HotKeySet("{RIGHT}", "right")
HotKeySet("{DOWN}", "down")
HotKeySet("{UP}", "up")
$picPos =WinGetPos($pic)

$guiPos =WinGetPos($gui)
Do
$msg =GUIGetMsg()
Until $msg =$GUI_EVENT_CLOSE
EndFunc ;==>Example2
Func main()
$guiPos =WinGetPos($gui)
WinMove($gui, "", $guiPos[0] +10, $guiPos[1] +10)
EndFunc ;==>main
Func left()
$picPos =WinGetPos($pic)
WinMove($pic, "", $picPos[0] - 10, $picPos[1])
EndFunc ;==>left
Func right()
$picPos =WinGetPos($pic)
WinMove($pic, "", $picPos[0] +10, $picPos[1])
EndFunc ;==>right
Func down()
$picPos =WinGetPos($pic)
WinMove($pic, "", $picPos[0], $picPos[1] +10)
EndFunc ;==>down
Func up()
$picPos =WinGetPos($pic)
WinMove($pic, "", $picPos[0], $picPos[1] - 10)
EndFunc ;==>up
;----- example 3 PNG work araund by Zedna
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#Include <WinAPI.au3>
Global $hGUI, $hImage, $hGraphic, $hImage1
; Create GUI
$hGUI =GUICreate("Show PNG", 350, 301)
; Load PNG image
_GDIPlus_StartUp()
$hImage =
_GDIPlus_ImageLoadFromFile("E:\WINDOWS\system32\oobe\images\tha
nks8.png")
$hGraphic =_GDIPlus_GraphicsCreateFromHWND($hGUI)
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
GUISetState()
; Loop until user exits
do
until GUIGetMsg() =$GUI_EVENT_CLOSE
; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ShutDown()
; Draw PNG image
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
Return $GUI_RUNDEFMSG
EndFunc
GUICtrlCreateButton
To mt nt bm cho GUI
GUICtrlCreateButton ( "text", left, top [, width [, height [, style [, exStyle]]]] )
Cc tham s
Text Vn bn s hin trn nt bm
left Khong cch canh t l tri ca GUI (ta x). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
Top Khong cch canh t l trn ca GUI (ta y). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
width [ty chn] rng ca control. Mc nh l rng dng trc
height [ty chn] chiu cao ca control. Mc nh l chiu cao dng trc
.
style
[Ty chn] nh ngha style cho control. Xem GUI Control Styles
Appendix.

default ( -1) : none.
style bt buc : $WS_TABSTOP
exStyle [ty chn] nh ngha style m rng. Xem Extended Style Table.

Gi tr tr v
Th.
Cng :
Tr v ID ca control Button va to
Hng : Tr v 0

Ch
thay i thng tin ca button, s dng GUICtrlSet....
Mt nt bm c th hin th km theo mt icon hoc nh bng cch s
dng style $BS_ICON hoc $BS_BITMAP . Gi GUICtrlSetImage ch
nh nh m bn mun dng.
kt hp style m rng v cc style khc, gi
BitOr($GUI_SS_DEFAULT_BUTTON, newstyle,...).
Cc gi tr bn trn mun dng c, cn gi n th vin #include
<ButtonConstants.au3>
a v kch thc mc nh : $GUI_DOCKSIZE
V d
#include<GUIConstantsEx.au3>

Opt('MustDeclareVars',1)

Example()

Func Example()
Local$Button_1,$Button_2,$msg
GUICreate("My GUI Button"); will create a dialog box that when
displayed is centered

Opt("GUICoordMode",2)
$Button_1=GUICtrlCreateButton("Run Notepad",10,30,100)
$Button_2=GUICtrlCreateButton("Button Test",0,-1)

GUISetState() ; will display an dialog box with 2 button

; Run the GUI until the dialog is closed
While1
$msg=GUIGetMsg()
Select
Case$msg=$GUI_EVENT_CLOSE
ExitLoop
Case$msg=$Button_1
Run('Notepad.exe') ; Will Run/Open Notepad
Case$msg=$Button_2
MsgBox(0,'Testing','Button 2 was pressed') ; Will demonstrate
Button 2 being pressed
EndSelect
WEnd
EndFunc ;==>Example
GUICtrlCreateInput
Input chnh l mt textbox cho php ngi dng nhp vn bn vo . Vn bn c
th c phn loi, kim tra xem c ph hp vi nh dng hay khng. nh dng
c th l , ch cho php nhp s khng c nhp k t chng hn. Hnh thc
input m bn thng gp nht l cc hp thoi ng nhp, yu cu user v
password.
GUICtrlCreateInput ( "text", left, top [, width [, height [, style [, exStyle]]]] )
Cc tham s
text The text of the control.
left Khong cch canh t l tri ca GUI (ta x). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
Top Khong cch canh t l trn ca GUI (ta y). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
width [ty chn] rng ca control. Mc nh l rng dng trc
height [ty chn] chiu cao ca control. Mc nh l chiu cao dng trc
.
style
[ty chn] nh ngha style cho input. Xem GUI Control Styles
Appendix.

default ( -1) : $ES_LEFT, $ES_AUTOHSCROLL
style bt buc : $WS_TABSTOP only if no $ES_READONLY.
$ES_MULTILINE is always reset.
exStyle [ty chn] nh ngha style m rng. Xem Extended Style Table.

Gi tr tr v
Th.
Cng :
Tr v ID ca control Input va to

Hng : Tr v 0

Ch
c ni dung ca input, xem hm GUICtrlRead.
gn thng tin cho input , xem hm GUICtrlSet....
Dng input nh mt hp nhp password th dng style
$ES_PASSWORD (mi k t nhp vo s c thay bng du * )
Nu bn mun ko th mt filename vo input, s dng style m
rng WS_EX_ACCEPTFILES trong hm to ca s GUICreate() v thit
lp trng thi $GUI_DROPACCEPTED.
Nu c nhiu tp tin c ko th vo control, tn ca cc tp tin c
ngn cch vi nhau bng du gch ng " | ". Dng GuiCtrlRead ly vn
bn ny.
Th vin cha cc gi tr nu trn #include <EditConstants.au3>
a v kch thc mc nh $GUI_DOCKHEIGHT.
V d
#include <GUIConstantsEx.au3>

Opt('MustDeclareVars', 1)

Example()

Func Example()
Local $file, $btn, $msg

GUICreate(" My GUI input acceptfile", 320, 120, @DesktopWidth / 2 -
160, @DesktopHeight / 2 - 45, -1, 0x00000018); WS_EX_ACCEPTFILES
$file =GUICtrlCreateInput("", 10, 5, 300, 20)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlCreateInput("", 10, 35, 300, 20) ; will not accept drag&drop
files
$btn =GUICtrlCreateButton("Ok", 40, 75, 60, 20)

GUISetState()

$msg =0
While $msg <>$GUI_EVENT_CLOSE
$msg =GUIGetMsg()
Select
Case $msg =$btn
ExitLoop
EndSelect
WEnd

MsgBox(4096, "drag drop file", GUICtrlRead($file))
EndFunc ;==>Example
GUICtrlCreateEdit
Edit chnh l hp son tho vn bn tng t nh input. Nhng input th ch c mt
dng, cn edit th c nhiu dng v kch thc ln. Vng son tho vn bn ca
notepad chnh l mt Edit. Mun to mt Edit , bn ch cn gi v thit lp ng
hm sau :
GUICtrlCreateEdit ( "text", left, top [, width [, height [, style [, exStyle]]]] )
Cc tham s
text Vn bn hin th trn edit
left Khong cch canh t l tri ca GUI (ta x). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
Top Khong cch canh t l trn ca GUI (ta y). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
width [ty chn] rng ca control. Mc nh l rng dng trc
height [ty chn] chiu cao ca control. Mc nh l chiu cao dng trc
.
style
[Ty chn] nh ngha style cho control. Xem GUI Control Styles
Appendix.

default ( -1) : $ES_WANTRETURN, $WS_VSCROLL,
$WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL
style bt buc : $ES_MULTILINE, $WS_TABSTOP only if not
$ES_READONLY
exStyle [ty chn] nh ngha style m rng. Xem Extended Style Table.

Gi tr tr v
Th.
Cng :
Tr v ID ca Edit va c to
Hng : Tr v 0

Ch
c ni dung ca edit, xem hm GUICtrlRead.
gn thng tin cho edit , xem hm GUICtrlSet....
Nu bn mun ko th mt filename vo edit, s dng style m
rng WS_EX_ACCEPTFILES trong hm to ca s GUICreate() v thit
lp trng thi $GUI_DROPACCEPTED.
Nu c nhiu file c chn ko th vo Edit th tn ca mi file c
ghi trn mt dng ring bit
Th vin cha cc gi tr c nu trn #include <EditConstants.au3>
a v kch thc mc nh $GUI_DOCKAUTO
Vic to mt RichEdit th qu phc tp v th khng cp y. N
phi s dng n GuiCtrlCreateObj. Bn mun tm hiu th xem v d 2
trong file help ca AutoIt.
V d
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Opt('MustDeclareVars', 1)
Example()
Func Example()
Local $myedit, $msg
GUICreate("My GUI edit") ; will create a dialog box that when displayed is
centered
$myedit =GUICtrlCreateEdit("First line" & @CRLF, 20, 32,350, 200,
$ES_AUTOVSCROLL +$WS_VSCROLL)
GUISetState()
Send("{END}")
; will be append dont' forget 3rd parameter
GUICtrlSetData($myedit, "Second line", 1)
; Run the GUI until the dialog is closed
While 1
$msg =GUIGetMsg()
If $msg =$GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()
EndFunc ;==>Example
GUICtrlCreateRadio
Radio l mt dng nt-la-chn gn ging nh checkbox , nhng khc vi
checkbox hai im. Th nht l cc radio thng tp hp thnh mt nhm vi
nhau. Th hai l trong nhm bn ch c php chn mt (ging nh trc
nghim vy). Hm sau cho php bn to mi ln mt nt radio.
GUICtrlCreateRadio ( "text", left, top [, width [, height [, style [, exStyle]]]]
)
Cc tham s
Text
Vn bn hin th cnh bn miu t ni dung ca radio (khng phi
tooltip)
left Khong cch canh t l tri ca GUI (ta x). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
Top Khong cch canh t l trn ca GUI (ta y). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
width [ty chn] rng ca control. Mc nh l rng dng trc
height [ty chn] chiu cao ca control. Mc nh l chiu cao dng trc
.
style [Ty chn] nh ngha style cho control. Xem GUI Control Styles
Appendix.
default ( -1) : none.
style bt buc : $BS_AUTORADIOBUTTON v $WS_TABSTOP
nu l nt radio u tin trong nhm.

exStyle [ty chn] nh ngha style m rng. Xem Extended Style Table.

Gi tr tr v
Th.
Cng :
Tr v ID (mi) ca nt radio va c to
Hng : Tr v 0

Ch
c gi tr ca radio (c c chn hay khng), xem hm
GUICtrlRead.
thit lp thng tin cho radio, xem hm GUICtrlSet....
kt hp style mc nh vi style khc,
dng BitOr($GUI_SS_DEFAULT_RADIO, newstyle,...).
s dng c cc gi tr nu trn, cn gi th vin #include
<ButtonConstants.au3>
a v kch thc mc nh $GUI_DOCKHEIGHT.
V d
#include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1)
Example()
Func Example()
Local $radio1, $radio2, $msg
GUICreate("My GUI radio") ; will create a dialog box that when displayed
is centered
$radio1 =GUICtrlCreateRadio("Radio 1", 10, 10, 120, 20)
$radio2 =GUICtrlCreateRadio("Radio 2", 10, 40, 120, 20)
GUICtrlSetState($radio2, $GUI_CHECKED)
GUISetState() ; will display an dialog box with 1 checkbox
; Run the GUI until the dialog is closed
While 1
$msg =GUIGetMsg()
Select
Case $msg =$GUI_EVENT_CLOSE
ExitLoop
Case $msg =$radio1 And BitAND(GUICtrlRead($radio1),
$GUI_CHECKED) =$GUI_CHECKED
MsgBox(64, 'Info:', 'You clicked the Radio 1 and it is Checked.')
Case $msg =$radio2 And BitAND(GUICtrlRead($radio2),
$GUI_CHECKED) =$GUI_CHECKED
MsgBox(64, 'Info:', 'You clicked on Radio 2 and it is Checked.')
EndSelect
WEnd
EndFunc ;==>Example
GUICtrlCreateList
Hm ny s gip bn to ra mt ci danh sch cha thng tin. Danh sch l mt
dng d liu rt hay gp trong i thng v trn my tnh ( cc chng trnh
nghe nhc v qun l). Tuy nhin, y AutoIt ch h tr bn to ra mt danh sch
vi cc tnh nng n gin, thng dng. Danh sch ny ch c mt ct nhng li c
nhiu dng. Nu bn cn mt danh sch c nhiu ct v nhiu dng th hy dng
ListView , y ti khng cp n phn ny. C php cho bn to mt Listbox
nh sau :
GUICtrlCreateList ( "text", left, top [, width [, height [, style [, exStyle]]]] )
Cc tham s
Text Vn bn s hin th trong List box
left Khong cch canh t l tri ca GUI (ta x). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
Top Khong cch canh t l trn ca GUI (ta y). Nu s dng -1, th l
tri c tnh theo GUICoordMode.
width [ty chn] rng ca control. Mc nh l rng dng trc
height [ty chn] chiu cao ca control. Mc nh l chiu cao dng trc
.
style
[Ty chn] nh ngha style cho control. Xem GUI Control Styles
Appendix.

default ( -1) : $LBS_SORT, $WS_BORDER, $WS_VSCROLL
style bt buc : $WS_TABSTOP, $LBS_NOTIFY
exStyle [ty chn] nh ngha style m rng. Xem Extended Style Table.

Gi tr tr v
Th.
Cng :
Tr v ID ca listbox va to
Hng : Tr v 0

Ch
c cc gi tr ca listbox , xem hm GUICtrlRead
thit lp hoc thay i thng tin , xem hm GUICtrlSet....
Nhiu mc-nhp (entry) khc nhau trong danh sch c th c chn ,
c thit lp vi GUICtrlSetData
gii hn mc cun (srolling) theo chiu ngang , dng hm
GUICtrlSetLimit
kt hp style mc nh vi cc style khc ,
gi BitOr($GUI_SS_DEFAULT_LIST, newstyle,...).
s dng c cc gi tr nu trn , cn gi th vin : #include
<ListBoxConstants.au3>
a v kch thc mc nh (size v v tr) : $GUI_DOCKAUTO
V d
#include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1)
Example()
Func Example()
Local $MESSAGE ="The following buttons have been clicked"
Local $add, $clear, $mylist, $close, $msg
GUICreate("My GUI list") ; will create a dialog box that when displayed is
centered
$add =GUICtrlCreateButton("Add", 64, 32, 75, 25)
$clear =GUICtrlCreateButton("Clear", 64, 72, 75, 25)
$mylist =GUICtrlCreateList("buttons that have been clicked", 176, 32, 121,
97)
GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling
GUICtrlSetData(-1, $MESSAGE)
$close =GUICtrlCreateButton("my closing button", 64, 160, 175, 25)
GUISetState()
$msg =0
While $msg <>$GUI_EVENT_CLOSE
$msg =GUIGetMsg()
Select
Case $msg =$add
GUICtrlSetData($mylist, "You clicked button No1|")
Case $msg =$clear
GUICtrlSetData($mylist, "")
Case $msg =$close
MsgBox(0, "", "the closing button has been clicked", 2)
Exit
EndSelect
WEnd
EndFunc ;==>Example
GUICtrlCreateListView
ListView cng chnh l mt danh sch (Listbox) nhng n c nhiu dng v nhiu
ct , to thnh mt ma trn. Listview m bn thng thy l trong Windows
Explorer , khi bn duyt file vi ch View l Detail.
GUICtrlCreateListView ( "text", left, top [, width [, height [, style [,
exStyle]]]] )
Cc tham s
text
Vn bn ny s l tiu ca cc ct trong listview. Mi tiu s
c ngn cch vi k t c ch nh
trong Opt("GUIDataSeparatorChar").

left Khong cch canh t l tri ca GUI (ta x). Nu s dng -1, th l tri
c tnh theo GUICoordMode.
Top Khong cch canh t l trn ca GUI (ta y). Nu s dng -1, th l tri
c tnh theo GUICoordMode.
width [ty chn] rng ca control. Mc nh l rng dng trc
height [ty chn] chiu cao ca control. Mc nh l chiu cao dng trc .
style
[ty chn] nh ngha style cho control. Xem GUI Control Styles
Appendix.

default (-1) : $LVS_SHOWSELALWAYS, $LVS_SINGLESEL
style bt buc : $LVS_REPORT
exStyle
[ty chn] nh ngha style m rng cho control. Xem Extended Style
Table hoc ListView Extended Style Table.

Gi tr tr v
Th.
Cng :
Tr v ID ca listview va c to
Hng : Tr v 0

Ch
thm cc mc vo Listview , s dng hm
GUICtrlCreateListViewItem
ListView s xut hin mc nh nh trong windows explorer vi view l
Detail (LVS_REPORT l bt buc).
Bn c th khi to kch thc cho mt ct bng cch ni thm cc khong
trng vo tiu ca ct. Ct c th c m rng theo chiu di ca mc-
(item)-c-thm-vo bi GUICtrlCreateListViewItem. Kch thc ca mt
ct s ln n 25 k t. Nhng s khng c mt s resize c din ra khi
bn cp nht ni dung ListView bng GuiCtrlSetData.
to mt ListView vi icon, icon nh hoc ch l mt kiu List , sau
khi to bn gi hm GUICtrlSetStyle vi cc style : $LVS_ICON,
$LVS_SMALLICON hoc $LVS_LIST.
Chc nng sp xp cc mc trong ListView bng cch nhp vo tiu
ca ct (nh trong Explorer) th khng c tc dng.
Khi bn chn mt mc trong ListView, bn mun ton b dng c
pht sng thay v ch c mt ct th hy gi style m
rng $LVS_EX_FULLROWSELECT.
kt hp style mc nh vi style khc , bn
gi BitOr($GUI_SS_DEFAULT_LISTVIEW, newstyle,...).
Th vin cn thit cho cc tham s nu trn l : #include
<ListViewConstants.au3>
$GUI_BKCOLOR_LV_ALTERNATE l mt c c bit , c th dng
vi Listview lm cho mu nn gia cc dng c th xen k nhau.
- Dng chn s ly mu c thit lp bi hm GUICtrlSetBkColor ca
control ListView
- Dng l s ly mu c thit lp bi hm GUICtrlSetBkColor ca
control ListViewItem
V d
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
Example()
Func Example()
Local $listview, $button, $item1, $item2, $item3, $input1, $msg
GUICreate("listview items", 220, 250, 100, 200, -1,
$WS_EX_ACCEPTFILES)
GUISetBkColor(0x00E0FFFF) ; will change background color
$listview =GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 200,
150);,$LVS_SORTDESCENDING)
$button =GUICtrlCreateButton("Value?", 75, 170, 70, 20)
$item1 =GUICtrlCreateListViewItem("item2|col22|col23", $listview)
$item2 =GUICtrlCreateListViewItem("item1|col12|col13", $listview)
$item3 =GUICtrlCreateListViewItem("item3|col32|col33", $listview)
$input1 =GUICtrlCreateInput("", 20, 200, 150)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; to allow drag and
dropping
GUISetState()
GUICtrlSetData($item2, "ITEM1")
GUICtrlSetData($item3, "||COL33")
GUICtrlDelete($item1)
Do
$msg =GUIGetMsg()
Select
Case $msg =$button
MsgBox(0, "listview item", GUICtrlRead(GUICtrlRead($listview)), 2)
Case $msg =$listview
MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
EndSelect
Until $msg =$GUI_EVENT_CLOSE
EndFunc ;==>Example
GUICtrlCreateListViewItem
To ra mt mc (item) mi thm vo trong ListView.
GUICtrlCreateListViewItem ( "text", listviewID )
Cc tham s
Text
Vn bn ca cc mc (item) ph, mi mc c ngn cch vi
Opt("GUIDataSeparatorChar").
listviewID nh danh (ID) ca control ListView m bn mun thm item vo

Gi tr tr v
Th.
Cng :
nh danh (ID) ca mc va c to
Failure: Tr v 0

Ch
Hm ny to ra nhng mc (item) Listview c bit, chng c th c
chn, c tnh nng nh nhng control bnh thng v c th c thit lp
vi GUICtrlSetData.
Cc item ny c th c xa b nh cc control khc khi gi hm
GUICtrlDelete
Nhng mc trong Listview c th c ko th vo trong mt control
Edit hay Input , khi c thit lp trng thi (state)
$GUI_DROPACCEPTED.
Xem hm GUICtrlCreateListView v vic resize li kch thc ca cc
ct.
$GUI_BKCOLOR_LV_ALTERNATE l mt c c bit , c th dng
vi Listview lm cho mu nn gia cc dng c th xen k nhau.
- Dng chn s ly mu c thit lp bi hm GUICtrlSetBkColor ca
control ListView
- Dng l s ly mu c thit lp bi hm GUICtrlSetBkColor ca
control ListViewItem
V d
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
Example()
Func Example()
Local $listview, $button, $item1, $item2, $item3, $input1, $msg
GUICreate("listview items", 220, 250, 100, 200, -1,
$WS_EX_ACCEPTFILES)
GUISetBkColor(0x00E0FFFF) ; will change background color
$listview =GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 200,
150);,$LVS_SORTDESCENDING)
$button =GUICtrlCreateButton("Value?", 75, 170, 70, 20)
$item1 =GUICtrlCreateListViewItem("item2|col22|col23", $listview)
$item2 =GUICtrlCreateListViewItem("............item1|col12|col13",
$listview)
$item3 =GUICtrlCreateListViewItem("item3|col32|col33", $listview)
$input1 =GUICtrlCreateInput("", 20, 200, 150)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; to allow drag and
dropping
GUISetState()

GUICtrlSetData($item2, "|ITEM1")
GUICtrlSetData($item3, "||COL33")
GUICtrlDelete($item1)
Do
$msg =GUIGetMsg()
Select
Case $msg =$button
MsgBox(0, "listview item", GUICtrlRead(GUICtrlRead($listview)), 2)
Case $msg =$listview
MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
EndSelect
Until $msg =$GUI_EVENT_CLOSE
EndFunc ;==>Example
GUICtrlDelete
Xa b mt control
GUICtrlDelete ( controlID )
Cc tham s
controlID
nh danh (ID) ca control . nh danh ny c tr v bi hm
GUICtrlCreate...

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0.

Ch
i vi vic xa ContextMenu (menu ng cnh) , xem remark ca
GUICtrlCreateContextMenu.
GUICtrlGetState
Ly trng thi hin hnh ca control
GUICtrlGetState ( [controlID] )
Cc tham s
controlID [ty chn] nh danh ca control c tr v t hm GUICtrlCreate....

Gi tr tr v
Th.
Cng :
Tr v trng thi. Xem hm GUICtrlSetState bit gi tr
Hng : Tr v -1 nu control khng c nh ngha

Ch
Khc vi hm GUICtrlRead , hm ny ch tr v trng thi ca control : kch
hot/v hiu/n/hin/cho php ko th
Ngoi l : vi ListView n tr v tng s ct click
GUICtrlRead
c trng thi hoc d liu ca control
GUICtrlRead ( controlID [, advanced] )
Cc tham s
controlID nh danh ca control , c tr v t hm GUICtrlCreate...
advanced
[ty chn] tr v thng tin m rng ca control
0 =(Default) tr v mt gi tr l trng thi hoc d liu ca control
1 =tr v thng tin m rng (xem ch )

Gi tr tr v
Th.
Cng :
Tr v gi tr ph thuc vo loi control
Hng : Tr v 0

Loi Gi tr
Checkbox,
Radio
Trng thi ca nt bm (xem bng trng thi State trong file help)
Combo, List Gi tr c chn
Input, Edit Vn bn nhp vo
Button Vn bn ang hin th
Date Ngy c chn
Progress Phn trm hin hnh
Slider Gi tr hin hnh
Tab
Mt s hoc ID ca control tabitem chn , ph thuc vo gi
tr tham s Advanced
Menu,
MenuItem
Trng thi ca menu/item. Xem State table
TreeView ID ca control TreeViewItem c chn
TreeViewItem Trng thi ca TreeViewItem
ListView nh danh (ID) ca ListViewItem chn. 0 c ngha l khng
c mc no c chn
Dummy
Gi tr c gn bi GUICtrlSendToDummy
hoc GUICtrlSetData

Ch
Trong ch advanced , gi tr tr v cha d liu b sung ca control (xem bng
bn di)
ghi ch : khng phi tt c cc control u c sn thng tin b sung !
Loi Gi tr b sung
Checkbox,
Radio
Vn bn ca control
Menu,
MenuItem
Vn bn ca control
TreeView Vn bn ca TreeViewItem ang c chn
TreeViewItem Vn bn ca treeviewitem
ListViewItem
Trng thi ca ListViewItem nu style m rng
$LVS_EX_CHECKBOXES s dng trong ch advanced .
Xem state table
Tab ID ca control tabitem c chn

Vi checkbox , radio vi trng thi c th tr v $GUI_FOCUS v
$GUI_CHECKED,. V d :
BitAnd(GUICtrlRead($Item),$GUI_CHECKED) kim tra xem control
c c nh-du-chn (check).
i vi cc mc trong Listview , vi trng thi c th c tr v nh
$GUI_CHECKED v $GUI_UNCHECKED (ch i vi control listview
c style m rng LVS_EX_CHECKBOXES tr v dng Advanced) .
v d : BitAnd(GUICtrlRead($Item),$GUI_CHECKED) kim tra xem
item c c nh du hay khng.
i vi cc mc trong TreeView , vi trng thi c th c tr v
nh $GUI_FOCUS, $GUI_EXPAND v $GUI_CHECKED,
$GUI_UNCHECKED (ch i vi treeview controls c style
TVS_CHECKBOXES). V d :
BitAnd(GUICtrlRead($Item),$GUI_CHECKED) kim tra xem control
c c check
GUICtrlRegisterListViewSort
ng k mt hm c nh ngha dng vo vic sp xp cc mc trong
ListView. y l hm ni b , s c gi t ng khi c yu cu sp xp.
GUICtrlRegisterListViewSort ( controlID, "function" )
Cc tham s
controlID ID ca ListView
function Tn ca hm cn gi thc hin sp xp

Gi tr tr v
Th.
Cng :
1
Hng : 0

Ch :

!!! hm c th lm vic , bn phi nh ngha n vi ti a 4 tham s , ngc li
th hm s khng c gi !!!
V d :
Func MySortFunction($nListViewID, $LParam1, $LParam2, $nColumn)
...
EndFunc

hoc

Func MySortFunction($nListViewID, $LParam1, $LParam2)
...
EndFunc

Khi hm c gi th 4 tham s trn s mang cc gi tr sau :
V tr Tham s ngha
1 controlID ID ca ListView m hm cn s dng
2 lParam1 Gi tr ca mc u tin (theo mc nh l mc controlID).
3 lParam2 Gi tr ca mc th hai (theo mc nh l mc controlID).
4 column Ct s c nhp sp xp (ct u tin l 0).

Nhng gi tr sau s c tr v thay i cch chy ca hm
Gi tr tr v ngha
-1 Mc th nht t trc mc th hai
0 Khng i
1 Mc th nht t sau mc th hai.

Xem thm v d trong file help r cch lm vic.
GUICtrlSetBkColor
Thay i mu nn hin ti ca control sang mt mu khc
GUICtrlSetBkColor ( controlID, backgroundcolor )
Cc tham s
controlID
ID ca control mun i mu nn. ID ny c tr v bi hm
GUICtrlCreate.
backgroundcolor Mu RGB mun s dng

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0

Ch
Ch c Button, Label, Checkbox, Group, Radio, Edit, Input, List,
Listview, ListviewItem, Treeview, TreeviewItem, Graphic, Progress v
Slider l c th c thay i mu nn.
Control Progress s khng c v vi mu khc nu s dng "Windows
XP style"
Cc nt bm (button) s lun c v li theo style ca Windows Classic.
Mc khc hm ny ch c tc dng nu cc nt bm ny khng c to vi
style $BS_ICON.
Nhng phin bn trc ca AutoIt (v3.0.102) s dng nh dng mu
BGR , nhng phin bn mi hn s dng RGB theo mc nh. Tuy nhin
bn c th thay i iu ny bng la chn ColorMode.
C c bit $GUI_BKCOLOR_TRANSPARENT c th c dng vi
control Label c c nn trong sut. Cc control Picture th lun c mt
mu trong sut.
C c bit $GUI_BKCOLOR_LV_ALTERNATE c th c dng vi
control ListView lm mu nn xen k cho tng dng.
- Cc dng l s ly mu t GUICtrlSetBkColor ca control
ListView
- Cc dng chn s ly mu t GUICtrlSetBkColor ca control
ListViewItem
GUICtrlSetColor
Thay i mu ch cho control
GUICtrlSetColor ( controlID, textcolor)
Cc tham s
controlID nh danh ca control , c tr v bi hm GUICtrlCreate.
textcolor Mu RGB mun dng

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0

Ch
Ch c Button, Label, Checkbox, Group, Radio, Edit, Input, List,
Listview, ListviewItem, Treeview, TreeviewItem, Graphic v Progress l c
th c thay i mu ch
Checkbox, Radio hoc Progress s khng c v li nu s dng
Windows XP style
Button lun c v li trong "Windows Classic style".
Nhng phin bn trc ca AutoIt (v3.0.102) s dng nh dng mu
BGR , nhng phin bn mi hn s dng RGB theo mc nh. Tuy nhin
bn c th thay i iu ny bng la chn ColorMode.
GUICtrlSetData
Chnh sa d liu hin th trn control.
GUICtrlSetData ( controlID, data [, default] )
Cc tham s
controlID nh danh ca control , c tr v t GUICtrlCreate
data
i vi Combo, List, ListView, ListViewItem : vn bn ca mi
item c ngn cch bi Opt("GUIDataSeparatorChar",...)
i vi Progress : gi tr % (phn trm)
Slider : gi tr
Group, Label, Button, Checkbox, Radio, Combo, List, Input, Edit,
TabItem : vn bn mun hin th
Date : ngy hoc thi gian ph thuc vo style ca control
TreeViewItem: vn bn cn hin th
Dummy : gi tr
default
[ty chn]
vi Combo, List : gi tr s lm mc nh
Vi Edit, Input : nu bn nh ngha n khng phi l chui rng ""
, chui "data" c s c chn vo v tr ca con nhy (caret) ,
khng vit chui gc.

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0
Tr v -1 nu data khng hp l

Ch
i vi control Combo hoc List :
- Nu "data" trng vi mt mc nhp tn ti , n s c gn nh mc
nh
- Nu "data" bt u vi mt k t ngn cch (GUIDataSeparatorChar)
hoc chui rng , danh sch trc s b hy.
i vi control ListView, ListViewItem :
cp nht vn bn cho mt ct ch nh , th ch cn b qua nhng ct
khc. V d , mun cp nht tiu cho ct th ba , ta gn "||new_text"
Nu "new_text" l rng , ct v mc con (subitem) trong ct s b xa. V
d , "|" s xa ct v subitem th hai , "" s xa ct/subitem th nht.
GUICtrlSetData
Chnh sa d liu hin th trn control.
GUICtrlSetData ( controlID, data [, default] )
Cc tham s

controlID nh danh ca control , c tr v t GUICtrlCreate
data
i vi Combo, List, ListView, ListViewItem : vn bn ca mi
item c ngn cch bi Opt("GUIDataSeparatorChar",...)
i vi Progress : gi tr % (phn trm)
Slider : gi tr
Group, Label, Button, Checkbox, Radio, Combo, List, Input, Edit,
TabItem : vn bn mun hin th
Date : ngy hoc thi gian ph thuc vo style ca control
TreeViewItem: vn bn cn hin th
Dummy : gi tr
default
[ty chn]
vi Combo, List : gi tr s lm mc nh
Vi Edit, Input : nu bn nh ngha n khng phi l chui rng ""
, chui "data" c s c chn vo v tr ca con nhy (caret) ,
khng vit chui gc.

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0
Tr v -1 nu data khng hp l

Ch
i vi control Combo hoc List :
- Nu "data" trng vi mt mc nhp tn ti , n s c gn nh mc
nh
- Nu "data" bt u vi mt k t ngn cch (GUIDataSeparatorChar)
hoc chui rng , danh sch trc s b hy.
i vi control ListView, ListViewItem :
cp nht vn bn cho mt ct ch nh , th ch cn b qua nhng ct
khc. V d , mun cp nht tiu cho ct th ba , ta gn "||new_text"
Nu "new_text" l rng , ct v mc con (subitem) trong ct s b xa. V
d , "|" s xa ct v subitem th hai , "" s xa ct/subitem th nht.
GUICtrlSetFont
Thit lp font ch cho control
GUICtrlSetFont (controlID, size [, weight [, attribute [, fontname]]] )
Cc tham s
controlID ID ca control , c tr v t hm GUICtrlCreate
size Size ca font (mc nh l 8.5)
weight [ty chn] trng lng ca font (default 400 = bnh thng)
attribute
[ty chn] mun thit lp nh dng cho k t , ta c in nghing : 2 ,
gch chn : 4 , gch ngang (strike) : 8 . Mun kt hp nhiu nh dng
ta cng cc gi tr vi nhau. V d , mun c ch in nghing v gch
chn , ta dng 2+4.
fontname [ty chn] tn ca font ch s dng

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0

Ch
Theo mc nh , control s s dng font c thit lp t GUISetFont
Size c th l mt s thp phn , nh 8.5
Vi control nh Label , mc nh gi tr 8.5 c th c thay bng 9 theo
ghi nhn t Windows Theme
Xem Appendix c c mt danh sch y v cc font ca
windows
GUICtrlSetFont
Thit lp font ch cho control
GUICtrlSetFont (controlID, size [, weight [, attribute [, fontname]]] )
Cc tham s
controlID ID ca control , c tr v t hm GUICtrlCreate
size Size ca font (mc nh l 8.5)
weight [ty chn] trng lng ca font (default 400 = bnh thng)
attribute
[ty chn] mun thit lp nh dng cho k t , ta c in nghing : 2 ,
gch chn : 4 , gch ngang (strike) : 8 . Mun kt hp nhiu nh dng
ta cng cc gi tr vi nhau. V d , mun c ch in nghing v gch
chn , ta dng 2+4.
fontname [ty chn] tn ca font ch s dng

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0

Ch
Theo mc nh , control s s dng font c thit lp t GUISetFont
Size c th l mt s thp phn , nh 8.5
Vi control nh Label , mc nh gi tr 8.5 c th c thay bng 9 theo
ghi nhn t Windows Theme
Xem Appendix c c mt danh sch y v cc font ca
windows
GUICtrlSetOnEvent
nh ngha mt hm bi ngi s dng v hm ny s c gi mi khi control
c click vo
GUICtrlSetOnEvent ( controlID, "function" )
Cc tham s
controlID ID ca control , c tr v t hm GUICtrlCreate.
function Tn ca hm s gi khi cn control c click

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0

Ch
Cc hm OnEvent (theo s kin) ch c gi khi la chn
GUIOnEventMode c thit lp sang gi tr 1 trong ch ny th ch
GUIGetMsg s KHNG c s dng
Khi user-function c gi , id ca control c th c truy li bng
macro @GUI_CTRLID.
Nu bn cn handle ca ca s v handle ca control th c th truy li
vi macro @GUI_WINHANDLE hoc @GUI_CTRLHANDLE.
Nu hm l mt chui rng "", th khng c g xy ra khi bn click vo
control.
GUICtrlSetPos
Thay i v tr ca control trn ca s GUI
GUICtrlSetPos ( controlID, left, top [, width [, height]] )
Cc tham s
controlID ID ca control , id ny c tr v t hm GUICtrlCreate.
left L tri (ta x) cn gn
top L trn (ta y) cn gn
width [ty chn] rng mi cho control
height [ty chn] chiu cao mi cho control

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0

Ch
None.
GUICtrlSetState
Thay i trng thi ca control
GUICtrlSetState ( controlID, state )
Cc tham s
controlID ID ca control , c tr v t hm GUICtrlCreate.
state Xem bng trng thi bn di


Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0

Ch
Bng trng thi
State Miu t
Khng thay i 0
$GUI_UNCHECKED
Radio, Checkbox hoc ListViewItem s khng
c nh du (uncheck)
$GUI_CHECKED
Radio, Checkbox or ListViewItem s c nh
du (check)
$GUI_INDETERMINATE
Checkbox c ba trng thi thuc tnh s b t mu
xm
$GUI_AVISTART Avi s bt u play
$GUI_AVISTOP Avi s dng chi
$GUI_AVICLOSE Avi s dng chi v gii phng ti nguyn.
$GUI_DROPACCEPTED
Control s chp nhn thao tc ko th : t file hoc
t control khc . Xem ch
$GUI_NODROPACCEPTED Control s khng chp nhn ko th
$GUI_SHOW
Control s hin th. Trn control Tabitem s chn
tab u u tin hin th
$GUI_HIDE Control s n
$GUI_ENABLE Control s c kch hot tng tc c
$GUI_DISABLE
Control b v hiu khng tng tc (s b t mu
xm)
$GUI_FOCUS
Control s c a tiu im c chn hoc
input
$GUI_NOFOCUS Listview s mt tiu im.
$GUI_DEFBUTTON
Control s c thit lp nh nt mc nh trn ca
s. Xem phn ch i vi cc TreeviewItem
$GUI_EXPAND TreeViewItem m rng cc mc con
$GUI_ONTOP
Control s c thuc tnh -trn (ontop) i vi ca
s (zOrdering).

Cc trng thi c th c cng li vi nhau c a thuc tnh , v d
nh $GUI_DISABLE + $GUI_HIDE s lm cho control b v hiu v n i.
Nu control AVI b lm n vi $GUI_HIDE , n nn c ng li vi
$GUI_AVICLOSE.
Trng thi ca menu ng cnh "contextmenu" khng th b thay i
Trng thi ca menu hoc menuitem khng th c n.
Trng thi ca mt "listviewitem" c th b thay i nu n lin kt vi
mt Listview m listview ny c to vi style m rng
$LVS_EX_CHECKBOXES. $GUI_FOCUS v $GUI_NOFOCUS c th
c s dng trn listviewitem ring bit ,
style $LVS_SHOWSELALWAYS s lm cho mc c chn lun hin th
thm ch n khng c tiu im.
! Thng tin quan trng i vi $GUI_EXPAND : trng thi ny ch hu
dng cho cc TreeViewItem. Nu bn mun s dng hnh ng ny , t nht
phi c mt nhnh-con trong TreeView m bn to !
Nu bn mun chn mc khc trong mt TreeView , bn c th dng
$GUI_FOCUS TreeView m s ly tiu im ca ca s v mc c ch
nh s b nh du nh l c chn
Nu mun thit lp mt mc trong TreeView lm mc mc nh , c
ngha l n s b v in m. Bn c th gi $GUI_DEFBUTTON tt n
th s dng mt gi tr khc $GUI_DEFBUTTON, chng hn nh 0. Trng
thi ny s khng c tr v bi GUICtrlGetState.
Vi nhng control c tip nhn $GUI_EVENT_DROPPED, macro
@GUI_DRAGID s tr v controlID t ni m s li-ko bt u (-1 nu t
mt file, @GUI_DRAGFILE cha tn tp tin ang c ko i) v
@GUI_DROPID tr v controlID ca control c th
Ch vic li-ko mt ListViewItem s khi ng tin trnh ko v th
(drag&drop). Macro @GUI_DRAGID s l ID ca ListView
GUICtrlSetStyle
Thay i style cho control
GUICtrlSetStyle ( controlID, style [, exStyle] )
Cc tham s
controlID ID ca control , c tr v t hm GUICtrlCreate.
style Style cn thit lp cho control . Xem GUI Control Styles Appendix.
exStyle [ty chn] style m rng mun thit lp. Xem Extended Style Table.

Gi tr tr v
Th.
Cng :
Tr v 1
Hng : Tr v 0

Ch
Vi style khng th c thay i mt cch linh ng. Xem ti liu MSDN. Style
cho combo box $CBS_UPPERCASE l mt v d.
X l s kin trn GUI
Khi bn to ra mt ca s v cc thnh phn con trn th tt nhin chng phi
c dng cho mt mc ch m bn vch ra , nhp liu, v, chi nhc, tm
kim file,. Nhng lm sao bit c rng ci g ang din ra trn GUI ca bn ,
phm no va c nhn ? chut tri va nhp u ? mc no c chn ?.
Tt c nhng ci ny chng ta s nm bt c bi v chng do windows to ra v
AutoIt s cung cp cho chng ta cch bit c v x l c nhng s kin
v ang din ra trn ca s.
AutoIt h tr cho ta hai phng php x l s kin :
S dng vng lp thng ip
S dng ch OnEvent
Vng lp thng ip
Trong ch ny , bn s s dng mt vng lp khp kn nhn lin tc cc s
kin no s xy ra trn GUI v ng vi mi s kin ta s vit cc lnh tng ng.
nhn c cc s kin no xy ra trn GUI ta dng hm GUIGetMsg. c
im ca ch ny l vng lp v hm GUIGetMsg s c gi nhiu ln trong
mt giy.
Trong trng hp GUI l vn bn quan tm trn c ,v tt c nhng g bn cn
l i s kin xy ra th ch vng lp thng ip s rt ph hp bn lm
nhng vic ny.
Ch OnEvent
OnEvent khng s dng vng lp tip nhn s kin , m s dng mt hm
nh ngha trc phn ng li vi mt s kin v/hoc mt control tng
ng. Khi hm c gi th on chng trnh chnh tm dng , hm c gi hon
tt th on chng trnh chnh s chy tr li.
Khi GUI khng phi l vn quan tm hng u ca bn , v bn cn c nhiu
tc v khc cn x l bn trong on chng trnh chnh th OnEvent l ch
thch hp nht.
VNG LP THNG IP
Trong ch vng lp thng ip , on m ca s tri qua phn ln thi gian lm
vic trong mt vng lp khp kn. Vng lp ny ch n gin l s dng cc gi tr
c tr v t hm GUIGetMsg( ) . Cc gi tr cho bit s kin no ang xy ra
trn GUI (nt c nhn , ng gui, ... ).
Ch ny chnh l ch x l mc nh ca AutoIt dnh cho GUI. Trong ch
vng lp thng ip bn ch nhn c cc s kin khi bn ch ng gi v nhn
t GUIGetMsg , v vy bn phi m bo rng hm c gi nhiu ln trong mt
giy , ngc li c th lm cho GUI ca bn khng c phn ng.
Dng c bn ca vng lp thng ip
Dng chung ca vng lp thng ip c th trnh by nh sau :
While 1
$msg =GUIGetMsg()
...
...
WEnd

Thng thng mt vng lp khp kn nh trn s lm cho tn sut CPU ln 100%
(xem trong task manager) nhng may mn l hm GUIGetMsg s t ng to ra
khong dng v gim ti CPU trong khi ch i s kin. Cho nn bn khng cn
phi t bt k mt lnh sleep hay lnh tr hon no y bi v vic ny s lm
cho GUI ca bn khng phn ng vi cc s kin.
Cc s kin ca GUI
C ba loi thng ip s kin m GUIGetMsg s tr v :
- No Event
- Control Event
- System Event
No Event
Khi khng c s kin no xy ra , hm GUIGetMsg s tr v gi tr 0. y l s
kin ph bin nht trong cc GUI thng thng
Control Event
Khi mt control c click hoc thay i th mt s kin s c gi i , s kin
ny xy ra trn control nn c gi l Control Event . Thng th s kin ny l
mt s nguyn dng cho bit controlID (nh danh ca control trn GUI, c
to ra bi hm GUICtrlCreate... ) no ang/va c tng tc
System Event
Cc s kin h thng nh ng mt GUI l mt s m . Cc s kin khc nhau
c nh ngha trong th vin GUIConstantsEx.au3. Di y l cc s kin
ph bin thng hay dng :
$GUI_EVENT_CLOSE
$GUI_EVENT_MINIMIZE
$GUI_EVENT_RESTORE
$GUI_EVENT_MAXIMIZE
$GUI_EVENT_PRIMARYDOWN
$GUI_EVENT_PRIMARYUP
$GUI_EVENT_SECONDARYDOWN
$GUI_EVENT_SECONDARYUP
$GUI_EVENT_MOUSEMOVE
$GUI_EVENT_RESIZED
$GUI_EVENT_DROPPED
V d GUI
y chng ta s bt u vi chng trnh hello world n gin nh sau :
#include <GUIConstantsEx.au3>
GUICreate("Hello World", 200, 100)
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
GUICtrlCreateButton("OK", 70, 50, 60)
GUISetState(@SW_SHOW)
Sleep(2000)
on chng trnh trn s hin th mt ca s vi mt dng vn bn "Hello world !
How are you ? " , mt nt bm v s thot sau 2 giy.
V by gi chng ta s hon tt chng trnh trn bng vic s dng vng lp
thng ip , lc ny bn s thy mi th linh ng v hu ch hn.
#include <GUIConstantsEx.au3>

GUICreate("Hello World", 200, 100)
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
$okbutton =GUICtrlCreateButton("OK", 70, 50, 60)
GUISetState(@SW_SHOW)

While 1
$msg =GUIGetMsg()

Select
Case $msg =$okbutton
MsgBox(0, "GUI Event", "You pressed OK!")

Case $msg =$GUI_EVENT_CLOSE
MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")
ExitLoop
EndSelect
WEnd
Mi th nh bn thy y , tht d dng. Bn c th to ca s v cc control ri
thm vo cc mnh lnh cho chng x l. Tuy nhin y ch l mt v d rt n
gin nhng cng rt c bn v bn nn hiu r. Khi thnh tho bn c th lm ra
nhng th khc hay hn nhiu.
GUIGetMsg nng cao v ch nhiu ca s
Cc nh danh (ID) ca control l duy nht , thm ch khi bn c nhiu ca s th
on m ca bn vn s lm vic tt . Tuy nhin , khi x l cc s kin nh
$GUI_EVENT_CLOSE hoc $GUI_MOUSEMOVE bn cn phi bit c GUI
no pht ra thng ip ny m ra lnh cho ng. Gi s rng bn va to ra
hai ca s v ch mun thot chng trnh khi ca s th nht gi i thng ip
Close, nu ca s th hai cng pht thng ip Close th ch n GUI i, ch khng
thot ng dng. Mun lm c iu ny bn phi gi GUIGetMsg ging nh sau
:
$msg =GUIGetMsg(1)
Khi gi vi tham s l 1 , gi tr tr v by gi khng cn l mt s nguyn na m
thay vo l mt mng. S kin no va xy ra s c lu trong phn t u
tin ($array[0]) v thng tin b sung nh handle ca ca s pht ra s kin s
c lu trong phn t th hai ($array[1]) . V d trn s c sa li lm
vic vi hai ca s v bn s hiu cch vit m x l chng nh th no .
#include <GUIConstantsEx.au3>
$mainwindow =GUICreate("Hello World", 200, 100)
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
$okbutton =GUICtrlCreateButton("OK", 70, 50, 60)
$dummywindow =GUICreate("Dummy window for testing ", 200, 100, -1,
100)
GUISetState(@SW_SHOW, $dummywindow)
GUISwitch($mainwindow)
GUISetState()
While 1
$msg =GUIGetMsg(1)
Select
Case $msg[0] =$okbutton
MsgBox(0, "GUI Event", "You pressed OK!")
Case $msg[0] =$GUI_EVENT_CLOSE And $msg[1] =$mainwindow
MsgBox(0, "GUI Event", "You clicked CLOSE on the main window!
Exiting...")
ExitLoop
EndSelect
WEnd
u tin , c mt s thay i quan trng l vic xut hin ca hm GUISwitch
khi mt ca-s-mi (new window) c to ra th n tr thnh ca s mc nh
cho cc thao tc ca GUI trong tng lai (bao gm vic to control). Trong v d
ny , chng ta mun lm vic vi ca s chnh "Hello world" , khng phi ca s
dummy , nn phi switch v ca s chnh. Mt vi hm v GUI cho php bn s
dng handle ca s trong tham s t ng chuyn sang GUI cn cha control
m khng cn phi dng n lnh GUISwitch. V chng ta c mt trng hp
trong on code trn :
GUISetState(@SW_SHOW, $dummywindow)
S thay i tip theo l cch gi hm GUIGetMsg v kim tra cc s kin
vic dng $msg[0] v $msg[1] by gi chng ta s thot khi chng trnh khi
event Close c gi i v n phi xut pht t ca s chnh.
CH OnEvent
Trong ch OnEvent , vic x l cc s kin xy ra trn GUI khng phi bng
cch d xt lin tc bng mt vng lp khp kn na , m thay vo l vic tm
dng on script v gi mt hm c nh ngha trc dnh cho mt s
kin vi mt control tng ng. V d nh ngi dng nhp vo nt Button1 th
on chng trnh chnh ca bn nht thi s ngng li gi hm to trc
dnh cho Button1. Sau khi hm hon tt cng vic ca n th on chng trnh
chnh ca bn s chy tip. Ch ny tng t nh trong phng thc x l form
ca Visual Basic.
Khi mt GUI ang thc thi, on chng trnh chnh ca bn c th lm bt c
cng vic g , nhng to nn s n gin cho cc v d , chng ta s to nn mt
vng lp While vi khong dng bn trong.
Theo mc nh , GUI lun c x l theo ch vng lp thng ip. V vy
chuyn sang ch OnEvent u on m chng ta phi s dung
Opt("GUIOnEventMode", 1).
Dng OnEvent c bn
Dng tng qut c th trnh by nh sau :
While 1
Sleep(1000) ; khong dng ca vng lp
WEnd

Func Event1()
; Code to handle event goes here
EndFunc

Func Event2()
; Code to handle event goes here
EndFunc
GUI Events
Trong ch OnEvent , GUI ca bn s pht ra cc s kin sau :
- Control Event
- System Event
C hai loi s kin trn s gi mt hm do ngi vit chng trnh thit lp , hm
ny c th c ch nh cho GUI (s dng hm GUISetOnEvent) hoc ch nh
x l cho control (s dng hm GUICtrlSetOnEvent) . Nu mt s kin no xy
ra m AutoIt khng tm thy hm lm vic tng ng th n s b b qua. Bn
trong hm c gi ta c th s dng cc macro khc nhau do AutoIt cung cp
h tr vic x l cc s kin

Macro Chi tit
@GUI_CTRLID
ID ca control ang gi thng ip hoc ID ca s kin
h thng
@GUI_WINHANDLE Handle ca GUI gi i thng ip
@GUI_CTRLHANDLE
Handle ca control gi i thng ip (nu c th dng
c)
Ch : Bn c th s dng mt hm cho nhiu s kin , iu bn cn lm trong
trng hp ny l to ra cc hnh ng khc nhau da trn macro @GUI_CTRLID
. V d , bn c th ng k tt c s kin h thng vo trong mt hm ri ty
trng hp m vit lnh.
Control Event
Khi bn nhp hoc thay i mt control th mt s kin c gi i . S kin
c gi vo trong mt hm nh ngha v c thit lp trong
GUICtrlSetOnEvent. Bn trong hm ny th macro @GUI_CTRLID mang gi tr
l controlID c tr v khi to bng hm GUICtrlCreate....
System Event
Cc s kin h thng v d nh close mt gui th cng c gi i theo cch
tng t nh Control Event . Tuy nhin s kin li c gi vo hm c thit
lp trong GUISetOnEvent. S kin h thng c th mang nhng gi tr sau :
$GUI_EVENT_CLOSE
$GUI_EVENT_MINIMIZE
$GUI_EVENT_RESTORE
$GUI_EVENT_MAXIMIZE
$GUI_EVENT_PRIMARYDOWN
$GUI_EVENT_PRIMARYUP
$GUI_EVENT_SECONDARYDOWN
$GUI_EVENT_SECONDARYUP
$GUI_EVENT_MOUSEMOVE
$GUI_EVENT_RESIZED
$GUI_EVENT_DROPPED
V d
Chng ta s bt u vi chng trnh hello world n gin sau :
#include <GUIConstantsEx.au3>

GUICreate("Hello World", 200, 100)
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
GUICtrlCreateButton("OK", 70, 50, 60)
GUISetState(@SW_SHOW)
Sleep(2000)
S dng ch OnEvent , chng ta s vit li hon tt on m trn :
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
$mainwindow =GUICreate("Hello World", 200, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
$okbutton =GUICtrlCreateButton("OK", 70, 50, 60)
GUICtrlSetOnEvent($okbutton, "OKButton")
GUISetState(@SW_SHOW)

While 1
Sleep(1000) ; Idle around
WEnd

Func OKButton()
;Note: at this point @GUI_CTRLID would equal $okbutton,
;and @GUI_WINHANDLE would equal $mainwindow
MsgBox(0, "GUI Event", "You pressed OK!")
EndFunc

Func CLOSEClicked()
;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE,
;and @GUI_WINHANDLE would equal $mainwindow
MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")
Exit
EndFunc
Nh bn thy , n rt n gin. Mc d ch l v d c bn nhng s l ci nn
bn to ra nhng ci hay hn y.
Thao tc nng cao v ch nhiu ca s
Chng ta cng bit rng cc control ID l duy nht , cho d bn c nhiu ca s
v nhiu control th bn vn c th x l chng theo nh danh m bn chn.
Tuy nhin vn l x l nh th no ?
y s trnh by mt v d tng t nh v d trn , nhng c thm mt ca s
dummy na :
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
$mainwindow =GUICreate("Hello World", 200, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
$okbutton =GUICtrlCreateButton("OK", 70, 50, 60)
GUICtrlSetOnEvent($okbutton, "OKButton")

$dummywindow =GUICreate("Dummy window for testing ", 200, 100,
500, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUISetState(@SW_SHOW, $dummywindow)

GUISwitch($mainwindow)
GUISetState(@SW_SHOW)

While 1
Sleep(1000) ; Idle around
WEnd

Func OKButton()
;Note: at this point @GUI_CTRLID would equal $okbutton
MsgBox(0, "GUI Event", "You pressed OK!")
EndFunc

Func CLOSEClicked()
;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE,
;@GUI_WINHANDLE will be either $mainwindow or $dummywindow
If @GUI_WINHANDLE =$mainwindow Then
MsgBox(0, "GUI Event", "You clicked CLOSE in the main window!
Exiting...")
Exit
EndIf
EndFunc
u tin , c mt s thay i quan trng l vic xut hin ca hm GUISwitch
khi mt ca-s-mi (new window) c to ra th n tr thnh ca s mc nh
cho cc thao tc ca GUI trong tng lai (bao gm vic to control). Trong v d
ny , chng ta mun lm vic vi ca s chnh "Hello world" , khng phi ca s
dummy , nn phi switch v ca s chnh. Mt vi hm v GUI cho php bn s
dng handle ca s trong tham s t ng chuyn sang GUI cn cha control
m khng cn phi dng n lnh GUISwitch. V chng ta c mt trng hp
trong on code trn :
GUISetState(@SW_SHOW, $dummywindow)
Cng xin nhc l chng ta s dng hm OnEvent iu khin nt "close" cho c
hai ca s v sau s dng macro @GUI_WINHANDLE xt xem ca s no
va gi i s kin. Chng ta ch ng GUI khi nt close c nhn v thng ip
xut pht t ca s chnh (khng phi dummy) . Nhng bn cng c th s gn
cho mi ca s mt hm khc nhau x l nu bn bn thch.
_Main()
Func _Main()
HotKeySet("{ESC}", "_Quit") ; press ESC to exit
While 1
$pos =MouseGetPos()
ToolTip("Mouse : " & $pos[0] & ", " &$pos[1] )
Sleep(10)
WEnd
EndFunc ;==>_Main
Func _Quit()
Exit
EndFunc ;==>_Quit
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <Timers.au3>
Global $string , $def_str, $temp_str , $i , $len , $run , $nDelay , $misc ,
$timer2type
; run =1 : playing run=2 : paused run=0 : stoped
; i : dem so ky tu can lay
$str1 ="when i saw you at the party , when you asked me girlfriend , i didn't know
why i can't say clearly . You 're as pretty as angel , your eyes seemed to burn my
heart. My strange lover..." & @CRLF
$str2 ="When i smelt a perfume from your hair , when i kissed your body , the
waves of love were flowing in my and your soul . You said , don't leave me baby
..." & @CRLF
$str3 ="When i heard words you told , when i believed your heart , and now i
knew i was a fool . I didn't cry but my soul was dying , my heart broke when you
said ''Good bye''" & @CRLF
$str4 ="When i looked the waves of ocean , when i missed my memories , i felt all
thing were only a deam . A full house which would never exist in this world. The
sun was setting..." & @CRLF
$str5 ="When i told my children stories , when i took my wife's hands , i knew the
happy life was right here . '' Every thing is never perfect , i have to accept . '' " &
@CRLF
$str6 ="When i see the winter of my life , when i write these lines , all left ever
and ever, all will never return . Outside the window , sights are a white by snow ,
the wind 's still blowing , it's still cold, very cold. "
$str7 ="Maybe this's final winter i can look , think and count leaves ..."
$def_str =$str1 & $str2 & $str3 & $str4 & $str5 & $str6 & $str7
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~
$string =$def_str
$len =StringLen($string)

$i =0
$run =0
$nDelay =50
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
$gui =GUICreate("A Text Typer", 700, 500)
$eMainText =GUICtrlCreateEdit("", 5, 5, 690, 420, $ES_AUTOVSCROLL +
$WS_VSCROLL+$ES_READONLY)
GUICtrlSetFont(-1, 10, 400, default, "Tahoma")
$text_ShowSource =GUICtrlCreateLabel("Source : <default text>", 8, 435, 690,
20)
$text_delay =GUICtrlCreateLabel("Delay (miliSecond) :" , 10, 470, 100, 30)
$eDelay =GUICtrlCreateInput($nDelay, 115, 467, 40, 20, $ES_NUMBER)
$btnPlayPause =GUICtrlCreateButton("Start", 170, 462, 80, 30)
$btnStop =GUICtrlCreateButton("Stop", 250, 462, 80, 30)
$btnOpenText =GUICtrlCreateButton("Open text", 350, 462, 80, 30)
$btnLoadDefault =GUICtrlCreateButton("Load default text", 430, 462, 110, 30)
$text_status =GUICtrlCreateLabel("Status : Stoped...", 580, 470, 150, 30)
GUISetState()
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~
while 1
$msg =GUIGetMsg()
Switch $msg
case $GUI_EVENT_CLOSE
ExitLoop
Case $btnPlayPause
If $run=0 Or $run=2 Then; if state is "stoped" or "paused", then
$run =1 ; set state to "start"
update_status(1) ; set new text for buttons and status
$nDelay =
Abs(Int(GUICtrlRead($eDelay))) ; read delay value for
speed type
$timer2type =_Timer_SetTimer($gui, $nDelay,
"TypeText") ; create a new timer (note : this will use current
valure of $i and $run)
GUICtrlSetState($eDelay, $GUI_DISABLE) ; disable
input of delay
ElseIf $run=1 Then ; if state is "typing" ,
then
$run =2 ; change
state to "stoped"
update_status(2) ; set new texts for buttons
GUICtrlSetState($eDelay, $GUI_ENABLE) ; enable
delay s input
_Timer_KillTimer($gui, $timer2type) ; kill
timer to stop typing text (note : current value will be used on next time when i
create new timer)
EndIf

Case $btnStop
_Timer_KillTimer($gui, $timer2type)
$run =0
$i =0
update_status(0)
GUICtrlSetState($eDelay, $GUI_ENABLE)

Case $btnOpenText
_Timer_KillTimer($gui, $timer2type) ; kill timer to stop typing text
If BrowseText() Then $i =0 ;
check if a new file is opened successfully , if yes , then reset position which is
reading in text
$nDelay =Abs(Int(GUICtrlRead($eDelay))) ; update delay
value
$timer2type =_Timer_SetTimer($gui, $nDelay, "TypeText") ; create a
new timer for typing text
$run =1 ; set state this time is
RUNNING
update_status(1) ; update text on button and status

Case $btnLoadDefault
_Timer_KillTimer($gui, $timer2type)
$i =0
$run =0
update_status(0)
$string =$Def_str
GUICtrlSetData($text_ShowSource, "Source : <Default text>")

$nDelay =Abs(Int(GUICtrlRead($eDelay)))
$timer2type =_Timer_SetTimer($gui, $nDelay, "TypeText")
$run =1
update_status(1)
EndSwitch
WEnd
;==========================================================
====
; this func will set new texts for buttons and status
Func update_status($nState)
If $nState=0 Then ; neu trang thai la stop
GUICtrlSetData($btnPlayPause, "Start")
GUICtrlSetData($text_status, "Status : Stoped...")
ElseIf $nState=1 Then ; neu trang thai la play
GUICtrlSetData($btnPlayPause, "Pause")
GUICtrlSetData($text_status, "Status : Typing...")
Else ;
neu trang thai la pause
GUICtrlSetData($btnPlayPause, "Start")
GUICtrlSetData($text_status, "Status : Paused...")
EndIf
EndFunc
; this func will show open dialog for user who choose a text file and if success then
continue to type with new texts
Func BrowseText()
Local $filePath, $file
$filePath =FileOpenDialog("Open a text file", @MyDocumentsDir, "Text (*.txt) |
All file (*.*)", 1+2)
If @error <>1 Then
$file =FileOpen($filePath, 0)
If $file =-1 Then
MsgBox(16, "Error", " I'm sorry. A error occured when I read file. ")
Return 0
Else
$string =FileRead($file)
FileClose($file)
GUICtrlSetData($text_showSource , "Source : " & $filepath)
EndIf
Else
return 0
EndIf
Return 1
EndFunc
; it's important , this will type text and show it on GUI
Func TypeText($hWnd, $Msg, $iIDTimer, $dwTime)
$i +=1
If ($i>StringLen($string)) Then
$i=0
$run =0
update_status(0)
GUICtrlSetData($text_status, "Status : Completed")
_Timer_KillTimer($gui, $timer2type)
Return
EndIf
$temp_str =StringLeft($string, $i)
$condition =StringRight($temp_str, 1) <>@CR And StringRight($temp_str,
1)<>@LF
If $condition Then
$temp_str &="_"
GUICtrlSetData($eMainText, $temp_str)
Else
Sleep(400)
EndIf
EndFunc
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <Timers.au3>
Global $str , $count, $temp , $Timer_Types
$str =" Hi there , this is a sample of auto-typed text"
$count =0
Opt("GUICloseOnESC",0)
;==============MAKE GUI
===========================================
$gui =GUICreate("A type text (basic)", 500, 336, 193, 125)
$eMainEdit =GUICtrlCreateEdit("", 8, 11, 481, 273,
BitAND($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$
WS_VSCROLL))
$txt_speed =GUICtrlCreateLabel("Speed (miliSecond) : ", 20, 300, 104, 17)
$eSpeed =GUICtrlCreateInput("50", 135, 300, 41, 21,
BitOR($ES_AUTOHSCROLL,$ES_NUMBER))
$btnStartStop =GUICtrlCreateButton("Start", 200, 295, 108, 30, 0)
$btnOpen =GUICtrlCreateButton("Open text", 365, 295, 112, 30, 0)
GUISetState(@SW_SHOW)
;==========================================================
====================================
While 1
$nMsg =GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

Case $btnStartStop
If GUICtrlRead($btnStartStop)="Start" Then
GUICtrlSetData($btnStartStop, "Stop")
GUICtrlSetState($eSpeed, $GUI_DISABLE)
$nDelay =Abs(Int(GUICtrlRead($eSpeed)))
$Timer_Type =_Timer_SetTimer($gui , $nDelay,
"_Type_Text")
Else
_Timer_KillAllTimers($gui)
GUICtrlSetData($btnStartStop, "Start")
GUICtrlSetState($eSpeed, $GUI_ENABLE)
$count =0
EndIf
Case $btnOpen
_Timer_KillAllTimers($gui)
If BrowseFile() Then $count =0
GUICtrlSetState($eSpeed, $GUI_DISABLE)
$nDelay =Abs(Int(GUICtrlRead($eSpeed)))
$Timer_Type =_Timer_SetTimer($gui, $nDelay, "_Type_Text")
GUICtrlSetData($btnStartStop, "Stop")
EndSwitch
WEnd
;==========================================================
==========
Func BrowseFile()
Local $path, $file, $IsError=0
$path =FileOpenDialog("Open text file", @MyDocumentsDir, "Text (*.txt)|All
file (*.*)" , 1+2)
If @error=1 Then
MsgBox(16, "Error", "Sorry. I can't open file. Previous texts will be continued.")
$IsError =1
Else
$file =FileOpen($path, 0)
If $file=-1 Then
MsgBox(16, "Error", "Sorry. I can't read this file")
$IsError =1
EndIf
$str =FileRead($file)
FileClose($file)
EndIf
If $IsError=0 Then
Return 1 ; open file successfully
Else
Return 0 ; fail
EndIf
EndFunc
; important function , this will type text automaticly
Func _Type_Text($hwnd, $msg, $wParam, $lParam)
$count +=1
If $count>StringLen($str) Then
$count =0
_Timer_KillAllTimers($gui)
GUICtrlSetData($btnStartStop, "Start")
GUICtrlSetState($eSpeed, $GUI_ENABLE)
Return
EndIf
$temp =StringLeft($str, $count)
$temp &="|"
GUICtrlSetData($eMainEdit, $temp)
EndFunc

You might also like