AutoIt
n Là một ngôn ngữ script
n Giúp NSD giả lập tự động:
n Phím
n Kích chuột
n Tương tácvới chương trình,file kháccủa máy tính.
n Có cấu trúc tựa BASIC
n Đơn giản ,dễ học
n Nhỏ gọn
n Miễn phí
43 trang |
Chia sẻ: lylyngoc | Lượt xem: 2245 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng AutoIt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
AutoIt
Jellydn – Lớp 06T1 – Khoa CNTT
Đai học Bách Khoa Đà Nẵng
Nội dung
n Giới thiệu về AutoIt
n Các ví dụ mở đầu
n Cú pháp
n Một số thủ thuật
n GUI và xử lý sự kiện
n Lời kết
Giới thiệu về AutoIt
n AutoIt
n Là một ngôn ngữ script
n Giúp NSD giả lập tự động:
n Phím
n Kích chuột
n Tương tác với chương trình,file khác của máy tính.
n Có cấu trúc tựa BASIC
n Đơn giản , dễ học
n Nhỏ gọn
n Miễn phí
n Tips: nên gõ và thực thi lại các ví dụ khi học !!!
n Tải tại và cài đặt AutoIt tại địa chỉ
Các ví dụ mở đầu
n HelloWorld
n Chuột phải ngoài desktop -> new ->
AutoIt v3 Script
Các ví dụ mở đầu
n HelloWorld
n Đặt tên là helloworld.au3
Các ví dụ mở đầu
n HelloWorld
n Chuột phải lên file vừa tạo -> Edit Script
Các ví dụ mở đầu
n HelloWorld
n SciTE sẽ được mở
Các ví dụ mở đầu
n HelloWorld
n Bạn thêm vào cuối file helloworld.au3
n MsgBox(0, "Tutorial", "Hello World!")
n Save
n Kiểm tra cú pháp :Tool->SyntaxCheck Prod
n Nhấn F5 (Tool -> Go)
n Kết quả
Các ví dụ mở đầu
n Tương tác với notepad
n Tạo file note.au3 như ví dụ trên
n Vào Start -> Run : gõ notepad
n Mở công cụ : AutoIt Window Info
n Vào Start->Programs->AutoIt v3->AutoIt
Window Info
n Dùng để lấy thông tin của một cửa sổ ứng
dụng
Các ví dụ mở đầu
n Tương tác với notepad
n Kích chuột vào của sổ notepad sẽ được
thông tin về title
Các ví dụ mở đầu
n Tương tác với notepad
n Thêm vào cuối file note.au3
n Run("notepad.exe")
n ; lệnh run sẽ gọi file notepad.exe
n WinWaitActive("Untitled - Notepad")
n ; đợi tới khi của sổ notepad kích hoạt(active)
n ; title : Untitled - Notepad
n Send("This is some text.")
n ; gởi dòng text tới notepad
Các ví dụ mở đầu
n Tương tác với notepad
n Chạy thử file ( Tool->Go hoặc F5)
n Kết quả
Các ví dụ mở đầu
n Tương tác với notepad
n Tiếp tục thêm vào cuối file note.au3
n WinClose("Untitled - Notepad")
n ;tắt notepad với title:Untitled – Notepad
Các ví dụ mở đầu
n Tương tác với notepad
n Khi tắt sẽ gặp thông báo -> lấy title
Các ví dụ mở đầu
n Tương tác với notepad
n Tiếp tục thêm vào cuối file note.au3
n WinWaitActive("Notepad", "Do you want to
save")
n ;đợi thông báo tắt xuất hiện
n Send("!n")
n ; !n=Alt+N -> phím tắt của No trong lựa chọn thoát
n Save và thực thi (F5)
Cú pháp
n Kiểu dữ liệu
n AutoIt chỉ 1 kiểu dữ liệu gọi là Variant
n Nó có thể chứa số hay chuỗi kí tự
n Tùy thuộc vào lúc xử lý
n Gồm những loại dữ liệu sau:
n Int32
n Int64
n Double
n String
n Binary
n Pointer
Cú pháp
n Biến
n Định danh:
n Bắt đầu với $
n Gồm chữ , số và _
n Ví dụ : $myvar , $my_var
n Khai báo:
n Dim
n Ví dụ : Dim $var1
n Local
n Global
n Có thể không khai báo mà sử dụng trực tiếp
n Ví dụ: $var1 = "create and assign"
Cú pháp
n Biến
n Hằng
n Dùng từ khóa const
n Const $const1 = 1, $const2=12
n Phạm vi hoạt động
n Global
n Sử dụng toàn chương trình
n Từ lúc khai báo
n Local
n Chỉ trong hàm
n Hủy khi hàm kết thúc
Cú pháp
n Biến
n Mảng
n Truy cập phần tử qua chỉ số
n $Array[0]="A”
n Trong 1 mảng có thể chứa nhiều loại dữ liệu
n $Array[0]=1
$Array[1]=true
$Array[2]="Text"
$Array[3]=$AnotherArray
n Điều này không bị cấm nhưng không nên dùng
Cú pháp
n Macros
n Là những biến chỉ đọc
n Đặt bởi AutoIt
n Tên của macro bắt đầu với @
n Không thể gán giá trị cho macro
Cú pháp
n Toán tử
n Số học
n =,+=,-=,*=,/=,&=,+,-,*,/,&,^
n & : nối 2 chuỗi
n ^ : mũ
n Logic
n AND , OR , NOT
n So sánh
n =,==,,>=,
n = : so sánh 2 số
n == : so sánh 2 chuỗi
n : khác
Cú pháp
n Câu điều kiện
n If...Then...Else
n $var = 20
If $var > 10 Then
MsgBox(0, "Example", "$var was greater
than 10!")
Else
MsgBox(0, "Example", "$var was less than
10")
EndIf
Cú pháp
n Câu điều kiện
Select...Case
n $var = 30
Select
Case $var > 1 AND $var <= 10
MsgBox(0, "Example", "$var was greater than 1")
Case $var > 10 AND $var <= 20
MsgBox(0, "Example", "$var was greater than 10")
Case $var > 20 AND $var <= 30
MsgBox(0, "Example", "$var was greater than 20")
Case $var > 30 AND $var <= 40
MsgBox(0, "Example", "$var was greater than 30")
Case $var > 40
MsgBox(0, "Example", "$var was greater than 40")
EndSelect
Cú pháp
n Câu điều kiện
Switch...Case
n $var = 30
Switch Int($var)
Case 1 To 10
MsgBox(0, "Example", "$var was greater than 1")
Case 11 To 20
MsgBox(0, "Example", "$var was greater than 10")
Case 21 To 30
MsgBox(0, "Example", "$var was greater than 20")
Case 31 To 40
MsgBox(0, "Example", "$var was greater than 30")
Case Else
MsgBox(0, "Example", "$var was greater than 40 or less or equal to 0")
EndSwitch
Cú pháp
n Vòng lặp
n For...To...Step...Next
n For = To [Step ]
statements
...
Next
n Ví dụ:
n For $i = 5 to 1 Step -1
MsgBox(0, "Count down!", $i)
Next
MsgBox(0,"", "Blast Off!")
Vòng lặp cho phép
chạy trong nó
vòng lặp for khác
Cú pháp
n Vòng lặp
n While...WEnd
n While
statements
...
WEnd
n Ví dụ:
n $i = 0
While $i <= 10
MsgBox(0, "Value of $i is:", $i)
$i = $i + 1
WEnd !")
Vòng lặp cho phép
chạy trong nó
vòng lặp While
khác
Cú pháp
n Vòng lặp
n Do...Until
n Do
statements
...
Until
n Ví dụ:
n $i = 0
Do
MsgBox(0, "Value of $i is:", $i)
$i = $i + 1
Until $i = 10
Vòng lặp cho phép
chạy trong nó
vòng lặp Do Until
khác
Cú pháp
n Vòng lặp
n With...EndWith
n With
statements
...
EndWith
n Ví dụ:
n $oExcel = ObjCreate("Excel.Application")
$oExcel.visible =1
$oExcel.workbooks.add
With $oExcel.activesheet
.cells(2,2).value = 1
.range("A1:B2").clear
EndWith
$oExcel.quit
Vòng lặp không
cho phép chạy
trong nó vòng lặp
With khác
Cú pháp
n Vòng lặp
n For...In...Next
n For In
statements
...
Next
n Chỉ làm việc với mảng hay tập đối tượng
Vòng lặp cho phép
chạy trong nó
vòng lặp For khác
Cú pháp
n Vòng lặp
n For...In...Next
n ;Using an Array
Dim $aArray[4]
$aArray[0]="a"
$aArray[1]=0
$aArray[2]=1.3434
$aArray[3]="test"
$string = ""
FOR $element IN $aArray
$string = $string & $element & @CRLF
NEXT
Msgbox(0,"For..IN Arraytest","Result is: " & @CRLF & $string)
;Using an Object Collection
$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
Cú pháp
n Hàm
n Định danh : giống như biến
n Func functioname ( [Const] [ByRef] $param1, ..., [Const] [ByRef] $paramN,
$optionalpar1 = value, ...)
...
[Return [value]]
EndFunc
n Ví dụ:
n $val = 10
For $i = 1 To 10
$doubled = MyDouble($val)
MsgBox(0, "", $val & " doubled is " & $doubled)
$val = $doubled
Next
Exit
Func MyDouble($value)
$value = $value * 2
Return $value
EndFunc
Một số thủ thuật
n Ẩn icon của AutoIt dưới khay hệ thống
n Thêm #NoTrayIcon vào đầu file
n Thực thi AutoIt trên Vista
n Vista yêu cầu “quyền” trước khi thực thi
n Thêm #RequireAdmin vào đầu file
GUI và lập trình sự kiện
n GUI(Graphical User Interfaces)
n AutoIT cho phép bạn dễ dàng tạo các control
n Các control thường dùng:
n Label : tên nhãn
n Button : nút bấm
n Input : hộp text nhập 1 dòng
n Edit : hộp text nhiều dòng
n Checkbox,Radio
n Combo,List
n Date
n Pic , Icon
n Progress : thanh loading
n Menu,ContextMenu
n Slider
GUI và lập trình sự kiện
n Các hàm GUI
n GUICreate() : tạo cửa sổ làm việc
n GUICtrlCreate…() : tạo các control tương ứng
n GUISetState() : hiện hay ẩn cửa sổ
n GUIGetMsg() : lấy thông tin về cửa sổ
n GUICtrlRead() : đọc dữ liệu từ control
n GUICtrlSetData() : ghi dữ liệu vào control
n GUICtrlSet…(): ghi dữ liệu vào một số thuộc tính
khác ( màu sắc , font chữ,…)
GUI và lập trình sự kiện
n GUI(Graphical User Interfaces)
n HelloGUI.au3
n #include
;Tao cua so 200x100 voi ten la Hello World
n GUICreate("Hello World", 200, 100)
;Tao label va button
n GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
GUICtrlCreateButton("OK", 70, 50, 60)
;Hien cua so
n GUISetState(@SW_SHOW)
;doi 2s
n Sleep(2000)
GUI và lập trình sự kiện
n Lập trình sự kiện
n AutoIt có 2 chế độ
n MessageLoop
n Là mặc định của AutoIt
n Dùng hàm GUIGetMsg() để lấy sự kiện
n OnEvent
n Dùng hàm Opt("GUIOnEventMode", 1)
n Dùng hàm GUICtrlSetOnEvent() để tạo hành động
cho sự kiện
GUI và lập trình sự kiện
n Lập trình sự kiện
n MessageLoop
n GUIGetMsg() sẽ trả về 3 kiểu
n Không có sự kiện : trả về 0
n Sự kiện của control : trả về controlID
n Sự kiện của hệ thống : được khai báo trong GUIConstantsEx.au3
n $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
GUI và lập trình sự kiện
n Lập trình sự kiện
n MessageLoop
n Ví dụ đơn giản:
n #include
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
GUI và lập trình sự kiện
n Lập trình sự kiện
n MessageLoop
n GUIGetMsg(1)
n Trả về một mảng
n $array[0] = 0 hoặc Event ID hoặc Control ID
n $array[1] = cửa sổ đang xử lý
n $array[2] = control đang thực thi
n $array[3] = tọa độ X của cửa sổ
n $array[4] = tọa độ Y của cửa sổ
GUI và lập trình sự kiện
n Lập trình sự kiện
n MessageLoop
n #include
$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)
GUISwitch($mainwindow)
GUISetState(@SW_SHOW)
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
GUI và lập trình sự kiện
n Lập trình sự kiện
n OnEvent
n Thao tác với 2 loại sự kiện
n Sự kiện của control
n Sự kiện của hệ thống
n Dùng 2 hàm để tạo hành động cho sự kiện
n GUISetOnEvent()
n GUICtrlSetOnEvent()
n Không nên dùng cách này vì:
n Code dài và rờm rà
n Phải bật option (opt)
GUI và lập trình sự kiện
n Lập trình sự kiện
n OnEvent
n #include
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
Cùng chức
năng nhưng
code dài hơn
Lời kết
n Tới đây là bạn đã “vững” kiến thức về AutoIt
n Nên autoitscript.com để học thêm
n Hãy tìm ý tưởng và thử thực hiện nó bằng
AutoIT
n Tài liệu này được biên soạn từ help của
AutoIt
n Mọi ý kiến góp ý gởi về địa chỉ
06Tonline.net@gmail.com