Một chương trình đơn giản Để hiển thị Tiếng Việt có dấu trong AutoIT, bạn hãy làm như sau : File > Encoding > UTF – 8 with BOM hoặc UCS-2 Big Endian Lập trình nào ^^ ☺ Lưu ý : --- Bất cứ
Trang 1NGÔN NGỮ LẬP TRÌNH DÀNH CHO MỌI NGƯỜI !
<Nhiều khi code của tui có một số lệnh “mới lạ”, nhưng rất hay ! ^^ >
-designed by Lý Thế Minh – nick : autoboy195 – Y!m : unluckystar_195 borned : 20-2-1995 ^^!
-Time : 10:25PM 18.2.10 (( tut có 32 trang)
Tui sẽ cố trình bày 1 cách dễ hiểu nhất !
<tui tự sưu tầm và tự biên tự diễn ^^ - có chỗ nào ko hỉu xin thứ lỗi!>
Menu nhanh
[==================== Menu ============================]Một vài thao tác với notepad
Cho phép user tắt form
Tên chương trình : SciTe Script Editor
Giao diện như sau :
Trang 22 Một chương trình đơn giản
Để hiển thị Tiếng Việt có dấu trong AutoIT, bạn hãy làm như sau :
File > Encoding > UTF – 8 with BOM hoặc UCS-2 Big Endian
Lập trình nào ^^
☺ Lưu ý :
- Bất cứ chương trình AutoIt (viết tắt là auto) nào đều phải lưu lại (định dạng *.au3), sau đó mới chạy được Thao tác lưu :
ấn vào icon Save >> Chọn nơi lưu >> Save
- Để chạy thử chương trình, ấn F5 ( giống vb6 nhỉ ^^)
-• Gõ vào dòng sau trong khu vực 3 :
Msgbox (0,"Thông báo","Hiển thị tiếng việt 100% ^^")
Save nó lại, bây giờ ấn F5 để chạy, 1 chương trình nhỏ của bạn đã hình thành !
Tuyệt vời, chương trình hiển thị Unicode rất chuẩn, không bị lỗi như vb6 ^^
• Chuyển thành File exe :
Có rất nhiều cách, nhưng có một cách rất đơn giản là truy cập đến thư mục chứa file *.au3 , nháy phải vào file này và chọn Complite Script Nếu ko có lỗi gì thì lập tức bạn đã có 1 file *.exe hoàn chỉnh rùi ! Tiện lợi hơn là chỉ có 1 file duy nhất !
Đây là file vidu.au3 Đây là file vidu.exe
☻ Kết thúc :
1 – Thanh menu
2 – Thanh công cụ 3- Khu vực soạn thảo
4 – Thanh trạng thái
Trang 3- Lệnh mở thông báo đơn giản:
Msgbox ([kiểu thông báo 0~6],“[Tiêu đề]”,“[Text]”)
Bài 2 : Chạy chương trình :
Bạn hãy vào AutoIt script rồi gõ dòng sau vào :
Run (“notepad”)
Câu này có nghĩa là Chạy notepad.exe trong máy của bạn
Rồi gõ tiếp :
WinWaitActive ( "Untitled - Notepad") ; không dc đổi tiêu đề !
Xem thêm (rất quan trọng !)
Có nghĩa là chờ cửa sổ notepad
Gõ tiếp dòng này vào :
Send("This is some text.")
Có nghĩa là : Gửi dòng chữ trên cho notepad đang mở !
Và đây là dòng cuối cùng
WinClose ( "Untitled - Notepad")
Dùng để đóng Notepad
Tồng hợp, ta có code như sau :
run ("notepad") ; chạy notepad
WinWaitActive ( "Untitled - Notepad") ;chờ notepad
Send("This is some text.") ; gửi text đến notepad
WinClose ( "Untitled - Notepad") ; đóng notepad
; Thao tác nhanh như điện xẹt vậy ^^
; là chú thích !
Bây giờ ấn F5, bạn sẽ thấy các công việc xảy ra lần lượt :
- Mở notepad
- Mở notepad có tiêu để là Utitled – notepad
- Gõ dòng chữ This is some text vào notepad
- Thoát notepad, hiện ra bảng tùy chọn thoát
(Chẹp, cái chỗ “Thí í some text” là do tui bật unikey ^^)
Quả đúng như tên gọi ! AutoIT đã giúp chúng ta thực hiện Thao tác với notepad chỉ trong 1s mà chỉ với vài dòng code
dễ hiểu ! Điều này rất khó với các ngôn ngữ như vb6, …
Trang 4Bạn thấy hay chưa ? Thế mới là Auto !
☺ Cách dùng hiệu quả lệnh WinwaitActive :
Bạn mở chương trình đó lên trong windows, ví dụ notepad :
Chép dòng chữ có khoanh tròn tiêu đề - vào đâu đó Dòng chữ đó sẽ dùng cho vị trí này trong AutoIt:
-Nếu tiêu đề dài hoặc bạn “lười” chép ^^, hãy dùng công cụ Windows Info có sẵn của AutoIt
Bước 1 : chạy notepad
Bước 2 : Chạy windows info
☻ Kết thúc :
• Câu lệnh để chạy chương trình : run (“[tên chương trình]”)
* tên chương trình hoặc đường dẫn chương trình
• Câu lệnh để chờ chương trình đó : WinWaitActive (“[tiêu đề]”)
• Câu lệnh để gửi text đến chương trình đó : send (“[text muốn gửi]”)
nếu muốn gửi kí tự “#”, gõ lệnh sau :
Send (“# dấu thăng”,1) - cho flag là 1
• Câu lệnh để đóng chương trình đó : winclose (“[tiêu đề]”)
[Học lập trình thì không thể không nắm vững căn bản, mà muốn nắm vững căn bản thì phải nắm vững lí thuyết đã, rồi kiến thức sẽ được củng cố qua thực hành, học từ từ,
sẽ vào ^^]
Bài 3 : Khai báo
- Tui sẽ đi nhanh phần này, nhưng ko bỏ sót các phần quan trọng nhất !
• Khai báo biến : Các biến được khai báo và tạo ra với các từ khóa Dim, local và global: (phạm vi sử dụng : global > local
Trang 5Dim $var1
Hoặc bạn cũng có thể khai báo nhiều biến cùng một lúc:
Dim $var1, $myvariable
Bạn cũng có thể chỉ định một biến mà không cần khai báo (nhưng Tui khuyến kích khai báo trước)
$Var1 = "abc"
• Khai báo hằng (constants)
Constants được công bố và tạo ra bằng cách sử dụng Const từ khóa như:
Const $const1 = 1, $const2 = 12
Constants có thể được công bố và sử dụng Enum như sau:
Enum $const1 = 1, $const2, $const3 ; 1, 2, 3
Enum STEP 2 $incr0, $incr2, $incr4 ; 0, 2, 4
Enum STEP *2 $mult1, $mult2, $mult4 ; 1, 2, 4
Arrays (mảng)
Array là một biến có chứa một loạt các dữ liệu thành phần của cùng một loại và kích cỡ Mỗi yếu tố trong biến này có thể
được truy cập bởi một số chỉ mục
Ví dụ:
Hãy nói bạn muốn lưu trữ những loạt ký tự: "A", "U", "T", "O", "I", "T" và "3"
Bạn có thể sử dụng bảy các biến riêng biệt để làm như thế, nhưng bằng cách sử dụng một Array là hiệu quả hơn:
Các kết quả này trong $MyChar có chứa chữ "T"
Các chỉ mục số cũng có thể được thay thế bởi một biến hoặc một biểu, do đó, bạn có thể xây dựng phức tạp cách để chỉ định hoặc truy cập vào một yếu tố trong mảng đó
Arrays cũng có thể được nhiều chiều, khi bạn sử dụng nhiều loạt các chỉ mục số, như:
Trang 6Bạn có thể sử dụng đến 64 trong một kích thước Array Tổng số các mục có thể không được lớn hơn 2 ^ 24 (16 777 216)
Trước khi bạn có thể bắt đầu sử dụng Arrays trong tập lệnh của bạn, bạn phải xác định bounds của họ bằng cách sử dụng ' Dim ' từ khóa
Loại dữ liệu trong Arrays
Nó đã được cho rằng chỉ chứa một Array một dư liệu của cùng một loại Tuy nhiên, kỹ thuật nói, một trong AutoIt Ngôn
ngữ địa phương có thể chứa bất cứ thứ gì từ một số vào một giá trị boolean Vì vậy, một Array-AutoIt cũng có thể chứa khác nhau loại, thậm chí khác Arrays:
$Array[0]=1
$Array[1]=true
$Array[2]="Text"
$Array[3]=$AnotherArray
Điều này đã bị cấm không được chặt chẽ trong AutoIt Tuy nhiên, nó là KHÔNG Khuyến khích để kết hợp khác nhau
trong một datatypes Array Đặc biệt là việc sử dụng một Bên trong một mảng Array nghiêm sẽ ảnh hưởng đến việc thực hiện tốc độ của bạn tập lệnh
☻ Kết thúc
- Khai báo biến : Dim $tên_biến_1,$tên_biến_2
- Khai báo hằng : Const $tên_biến_1 = [giá trị của hằng]
Ví dụ : Const $bien1 = 1, $bien2 = 2
- Khai báo mảng Array :
+ một chiều : $tên_mảng[số thứ tự mảng]= [giá trị mảng]
Trang 7$a &= “ It” ; kết quả a = “Auto It”
And Logic và: đúng nếu 2 dk đúng, sai nếu 1 trong 2 sai
Or Logic hoặc : đúng nếu 1 trong 2 đúng, sai nếu cả hai sai
Not Logic Không : vd : Không 1 (sai)
Độ ưu tiên cao nhất >> thấp nhất :
msgbox (0,"Số bạn gõ","Bạn đã nhập số 10") ; Hiện thông báo nhập đúng
else ; Ngược lại
msgbox (0,"Số bạn gõ","Bạn đã nhập không phải số 10") ; Hiện thông báo nhập sai
dim $var ; Khai báo biến var
$var = inputbox ("Nhập","Nhập 1 số") ; Gán var = số bạn chọn
Trang 8Case Else ; Nếu var không nằm trong khoảng trên
MsgBox(0, "Ví dụ", "Số bạn nhập lớp hơn 40 hoặc nhỏ hơn 0")
msgbox (0,“Xuống dòng – lytheminh”,“Chào mừng các bạn đến với” & @CrLf & $a)
**Chuỗi chứa ngoặc kép :
- So sánh 2 code sau :
dim $a
$a = ' Chào mừng các bạn đến với "AutoIt" ^^ '
msgbox (0,"Thông báo",$a)
Và
dim $a
$a = “Chào mừng các bạn đến với "AutoIt"^^ ”
msgbox (0,"Thông báo",$a)
Cùng 1 code, cùng 1 chức năng là hiển thị thông báo, nhưng code 1 chạy được, còn code 2 ko chạy dc !Kết luận : ta có công thức tổng quát sau :
' văn bản bình thường “ văn bản chứa dấu ngoặc kép” '
Ví dụ muốn hiển thị câu : Rừng là “lá phổi xanh” của trái đất
MsgBox(0, "Ví dụ", ' Rừng là "lá phổi xanh" của trái đất ')
Hjz, thui thì cứ viết cấu trúc kia vậy (đơn giản thôi)
• Cấu trúc Select … case
SelectCase <điều kiện 1>
<các câu lệnh>
Trang 9
Case <điều kiện 2>
<các câu lệnh>
Case Else <các câu lệnh>
EndSelect
• Cấu trúc if lồng nhau – bậc thang If
Cấu trúc này rất hay sử dụng trong AutoIt, vì vậy bạn hãy đọc thật kĩ !
Cấu trúc chung , xét ví dụ sau :
global $a,$b,$dl ; global dùng để khai báo biến, nhưng phạm vi rộng hơn dim
$a = "text : chạy notepad"
$b = "văn bản : chạy microsoft word"
msgbox (0,"Tiny Soft","Bạn hãy gõ các dòng tương ứng với các lệnh sau : " & @Crlf & @Crlf &
$a & @crlf & $b) ; xuống dòng … đã học rùi :D
; nhập liệu
$dl = inputbox ("Enter to here","Nhập lệnh để mở chương trình : ")
if $dl = "text" Then ; câu lệnh 1
run ("notepad") ; hết câu lệnh 1
ElseIf $dl = "văn bản" Then ; câu lệnh 2
run ("C:\Program Files\Microsoft Office\Office10\WINWORD.exe") ; hết câu lệnh 2Else ; ngược lại
msgbox (0,"Thông báo tu do'ng sau 2 giay","Không có lệnh này !",2)
EndIf ; kết thúc
Code có thể sai nếu đường dẫn (path) của word ở chỗ khác !
○ Chạy thử chương trình (F5)
Trang 10Sau khi ấn OK, word hiện ra !
Nếu gõ linh tinh thì thông báo hiện ra, sau 2s tự tắt !
○ Phân tích code
- khai báo 2 biến (a,b) cho chương trình, mỗi biến chứa 1 dòng text
- khai báo 1 biến chứa dữ liệu khi nhập vào inputbox (dl)
- hiện thông báo
- hiện input box
- xử lí lệnh
+ Nếu nhập “text” thì chạy notepad
+ Nếu nhập “văn bản” thì chạy word
+ Nếu ko nhập j hoặc nhập lung tung thì hiện thông báo lỗi, sau đó 2s tự tắt !
3 lệnh run ("đường dẫn chương trình")
4 Timeout : thời gian để thoát chương trình
ví dụ : msgbox (0,"","",2) tính bằng giây
Hết bài ^^
Bài 6 : Cấu trúc lặp
Phù !! Sau khi bạn đã hiểu hết bài học từ 1 đến 5, hãy nghỉ giải lao 30’ rùi học típ nhé
• Cấu trúc While … Wend (giống while … do trog pascal í mà )
Wend ; kết thúc vòng lặp nếu điều kiện sai
<lệnh thực hiện khi điều kiện sai>
===================================
Trang 11Sơ đồ cô đọng (Nhìn là hỉu ngay ^^)
Ví dụ :
Dim $i ; tạo biến i
$i = 0 ; Gán i = 0
While $i <= 10 ; Nếu i <= 10 thì
Msgbox (0,“ Giá trị của i là”,$i) ; hiện thông báo giá trị của i
$i = $i + 1 ; tăng dần biến i lên 1 đơn vị
Wend ; Nếu i > 10 (tức là sai điều kiện) thì
Msgbox (0,“Thong bao”,“Vòng lặp đã dừng lại vì i > 10”)
○ Phân tích code :
- So sánh i với 10 (vì i ban đầu cho là 0 rùi nên điều kiện 0 < 10 luôn đúng )
- Nên lệnh msgbox được thực hiện và biến i dc tăng lên 1 đơn vị
- Tăng đến 1 mức nào đấy, biến i > 10 thì lệnh sau wend dc thực hiện và kết thúc vòng lặp
Cấu trúc này hơi khó, nhưng bạn nào đã nắm vững cấu trúc while … do trog pascal thì thấy chúng ko đến nỗi khó !Hãy test code trên để hiểu thêm !
Và : một ứng dụng rất hay của cấu trúc trên, đó là cho phép user tắt chương trình bằng cách ấn nút “X” ( bạn cứ thử làm
1 GUI rồi không copy code sau vào form xem, đố bạn tắt dc chương trình khi nhấn nút “X” đấy :D)
Hãy copy code trên vào form khi bạn muốn tắt form bằng nút “X” !
Trong đó : 1 tức là enable, 0 tức là disable
• Cấu trúc For … Next
Cấu trúc này thì dễ rùi :
While
Wend
Trang 12• Cấu trúc Do … Until (giống trong pascal)
Cú pháp :
== =========================================
Do <các câu lệnh>
Until <điều kiện>
== ===============================================
(*) Ứng dụng rất hay trong “Auto” – đó là :
◘ Tự động Click chuột trái (click chuột phải thì thay left >> right)
; Vòng lặp để auto Click
Do
MouseClick(“left”)
Until 0 ; Đến khi chương trình không chạy nữa thì dừng
; Thực chất là lặp thao tác Click, hay nói cách khác là ngẫu nhiên tạo ra thao tác đúp chuột
• hjhj, ai thích auto “bơm máu” thì cứ dùng tự nhiên ^^, tui hok chơi game mấy, nhưng học auto thì phải chơi rùi Mời xem qua phần mềm AutoClick v1.0 – phiên bản đầu tay của tui , trong bài GUI sẽ sử dụng giao diện để điều khiển form, tức là có label, có form, có button, có combo box … v.vv , giúp cho phần mềm trở nên chuyên nghiệp hơn
CODE : AutoClick phiên bản 1.0 của autoboy195 ^^
#cs
-;~ Chương trình : Tự động Click chuột đơn giản
;~ Thiết kế : Lý Thế Minh (20.2.1995) - Thanh Lương - Yên Bái
sơ đồ này trong đầu là được ! DO
Until
Trang 13#ce
-; - Chương trình chính
-Global $time,$time_final ; chứa thời gian
msgbox (0,"Auto Click - autoboy195","Hãy ấn OK trước tiên, rùi Ấn F7 để bắt đầu - Ấn F8 để dừng")
$time = inputbox ("AutoTime to exit program - autoboy195","Gõ vào thời gian của bạn (tính bằng giây) muốn
Func auto() ; không có biến nào trong hàm auto
Do ; Lặp lại thao tác Click -> Nháy đúp ^^
MouseClick("left") ; Click (nhìn là hỉu, ko cần giải thich gì thêm)
Until 0 ; Lặp lại thao tác Click -> Nháy đúp ^^
msgbox (0,"AutoClick - autoboy195","Ấn OK để thoát ! cảm ơn bạn đã sử dụng chương trình ^^")
Exit ; thoát nhanh chương trình
Sleep($time_final) ; lúc này nếu user nhập 2 thì chính là 2000 tức là 2 giây !
Bạn có thể chỉnh sửa cho gọn hơn !
Chạy chương trình và hưởng thụ thành quả :D
…
Hjz, ngoài ra còn 2 nhiều cấu trúc (For…In và With) nữa nhưng tác giả “lười” không học , những cái ấy tui còn chưa hỉu hết , sau này đề cập đến thì học, những cấu trúc cơ bản đã dạy hết rùi ^^ Bây giờ sẽ chuyển qua một phần không kém phần quan trọng, đó là …
Mời xem bài 7 sau đó xem lại code trên !
Bài 7 : Function – Hàm – chương trình con
Hì , Tui đề nghị bạn nên nghỉ giải lao 30 phút trước khi học
1 Khái niệm cơ bản : Hàm là gì ?
Hì, theo tui hỉu thì nó đơn giản như 1 chương trình con, khi nào cần đến thì “gọi” lên để thực hiện lệnh ^^ (thế thui, nếu muốn tìm hiểu kĩ thì google _ _ ! )
2 Khai báo hàm :
== ==========================
Func tên_hàm($biến_trong_hàm)
<lệnh trong hàm>
Trang 14Return <giá trị> ; trả lại giá trị cho hàm (nếu có)
EndFunc ; kết thúc hàm
== =============================
* $biến_trong_hàm không cần khai báo !
○ Ví dụ về sử dụng hàm trong việc hiển thị msgbox :
dim $a
$a = InputBox("","Go so 1")
if $a = 1 Then ; Nếu user gõ số 1 thì
tb() ; gọi hàm tb
Else ; nếu gõ sai
msgbox (0,"","Go sai !") ; hiện thông báo
Author: autoboy195
Script Function:
Func to soft !
Trang 15#ce
-; Script Start - Add your code below here
;Global $a,$b thêm hoặc bỏ cũng được
msgbox (0,"vi du","Ấn OK, sau đó Gõ chữ s để chạy chương trình, gõ chữ t để thoát chương
trình") ; hiện thông báo
func h1($a) ; == hàm 1 ==
$a = "Ví dụ vê func - điều khiển bằng phím nóng"
msgbox (0,"Thong bao - chuong trinh tu tat sau 8 giay",$a)
EndFunc ; == kết thúc hàm 1 ==
Func h2($b) ; == hàm 2 ==
$b = "Cảm ơn đã sử dụng !"
msgbox (0,"Thong bao - code by autoboy195",$b)
Exit ; lệnh để tắt nhanh chương trình
EndFunc ;== hết hàm 2 ==
HotKeySet("{s}","h1") ; phím nóng : nếu user gõ s thì hàm 1 được gọi lên
HotKeySet("{t}","h2") ; phím nóng : nếu user gõ t thì hàm 2 được gọi lên
Sleep(8000) ; Nếu không gọi hàm 2 thì sau 8 giây chương trình tự tắt (1000 = 1s)
Copy vào forrm đi đã, phân tích sau ! không thì mệt lắm đấy ^^
* Code trên chạy không bị lỗi ! Tui đã test rùi ! Nếu bạn ko chạy dc thì hãy nhờ chuyên gia về AutoIt của bạn (Vì chính tác giả cũng ko rõ mấy, vì tác giả chỉ viết theo “sự hiểu” của mình thui ^^, nhưng nhớ Encoding là …BOM… nhá (xem bài 1) )
• Chạy chương trình (F5)
Ấn OK Nếu bạn gõ chữ s (chữ “s”) , thông báo sau hiện ra
* Lưu ý : Ở thông báo đầu tiên, khi bạn ấn OK, tức là trong 8 giây đó, dù bạn không thấy form nhưng vẫn đang chạy ngầm ! Sau 8 giây, nếu bạn không ấn nút gì hoặc ấn ngoài 2 nút trên thì mặc định chương trình sẽ tắt ! (vì code có lệnh Sleep(8000) )< chạy ngầm chính là cách thức chung của virus !! ^^>
Nếu bạn gõ chữ t (chữ “t”)
Sau khi ấn OK thì chương trình tắt luôn ! Vì trong hàm 2 có câu lệnh Exit , có tác dụng tắt ngay lập tức chương trình (nói như vậy không biết đúng không ^^, vì tốc độ tính bằng miligiay chứ ko phải giây nên sai số chắc cũng không nhỏ , thui, xin chấm dứt cái suy luận ngốc nghếch của tui tại đây !)
Kết luận :