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.
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.
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
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>
$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.
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.
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
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")
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 $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
$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