Bài giảng Autoit - ĐHBK Đà Nẵng
Giới thiệu về AutoIt.
Các ví dụ mở đầu.
Cú pháp.
Một số thủ thuật.
GUI và xử lý sự kiện.
Lời kết.
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Autoit - ĐHBK Đà Nẵng, để 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ỉ
[email protected]
Các file đính kèm theo tài liệu này:
AutoIt_(upload_by_nguyentin2703).pdf



