Top Banner
AutoIt Jellydn – Lp 06T1 – Khoa CNTT Đai hc Bách Khoa ĐàNng
43

Huong dan su dung AutoIt

Oct 14, 2014

Download

Documents

thoinguyenxuan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Huong dan su dung AutoIt

AutoIt

Jellydn – Lớp 06T1 – Khoa CNTTĐai học Bách Khoa Đà Nẵng

Page 2: Huong dan su dung AutoIt

Nội dung

n Giới thiệu về AutoItn Các ví dụ mở đầun Cú phápn Một số thủ thuậtn GUI và xử lý sự kiệnn Lời kết

Page 3: Huong dan su dung AutoIt

Giới thiệu về AutoItn AutoIt

n Là một ngôn ngữ scriptn Giúp NSD giả lập tự động:

n Phím n Kích chuộtn 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 BASICn Đơn giản , dễ họcn Nhỏ gọnn 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ỉ

http://www.autoitscript.com/autoit3/

Page 4: Huong dan su dung AutoIt

Các ví dụ mở đầu

n HelloWorldn Chuột phải ngoài desktop -> new ->

AutoIt v3 Script

Page 5: Huong dan su dung AutoIt

Các ví dụ mở đầu

n HelloWorldn Đặt tên là helloworld.au3

Page 6: Huong dan su dung AutoIt

Các ví dụ mở đầu

n HelloWorldn Chuột phải lên file vừa tạo -> Edit Script

Page 7: Huong dan su dung AutoIt

Các ví dụ mở đầu

n HelloWorldn SciTE sẽ được mở

Page 8: Huong dan su dung AutoIt

Các ví dụ mở đầu

n HelloWorldn Bạn thêm vào cuối file helloworld.au3

n MsgBox(0, "Tutorial", "Hello World!")

n Saven Kiểm tra cú pháp :Tool->SyntaxCheck Prodn Nhấn F5 (Tool -> Go)n Kết quả

Page 9: Huong dan su dung AutoIt

Các ví dụ mở đầu

n Tương tác với notepadn Tạo file note.au3 như ví dụ trênn Vào Start -> Run : gõ notepadn 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

Page 10: Huong dan su dung AutoIt

Các ví dụ mở đầu

n Tương tác với notepadn Kích chuột vào của sổ notepad sẽ được

thông tin về title

Page 11: Huong dan su dung AutoIt

Các ví dụ mở đầu

n Tương tác với notepadn 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

Page 12: Huong dan su dung AutoIt

Các ví dụ mở đầu

n Tương tác với notepadn Chạy thử file ( Tool->Go hoặc F5)

n Kết quả

Page 13: Huong dan su dung AutoIt

Các ví dụ mở đầu

n Tương tác với notepadn 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

Page 14: Huong dan su dung AutoIt

Các ví dụ mở đầu

n Tương tác với notepadn Khi tắt sẽ gặp thông báo -> lấy title

Page 15: Huong dan su dung AutoIt

Các ví dụ mở đầu

n Tương tác với notepadn 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)

Page 16: Huong dan su dung AutoIt

Cú pháp

n Kiểu dữ liệun 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 Int64n Doublen Stringn Binaryn Pointer

Page 17: Huong dan su dung AutoIt

Cú phápn 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 Localn Global

n Có thể không khai báo mà sử dụng trực tiếpn Ví dụ: $var1 = "create and assign"

Page 18: Huong dan su dung AutoIt

Cú phápn Biến

n Hằngn Dùng từ khóa const

n Const $const1 = 1, $const2=12

n Phạm vi hoạt độngn Global

n Sử dụng toàn chương trìnhn Từ lúc khai báo

n Localn Chỉ trong hàmn Hủy khi hàm kết thúc

Page 19: Huong dan su dung AutoIt

Cú pháp

n Biếnn 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ệun $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

Page 20: Huong dan su dung AutoIt

Cú pháp

n Macrosn Là những biến chỉ đọcn Đặt bởi AutoItn Tên của macro bắt đầu với @n Không thể gán giá trị cho macro

Page 21: Huong dan su dung AutoIt

Cú phápn Toán tử

n Số họcn =,+=,-=,*=,/=,&=,+,-,*,/,&,^

n & : nối 2 chuỗin ^ : mũ

n Logicn AND , OR , NOT

n So sánhn =,==,<,<=,>,>=,<>

n = : so sánh 2 sốn == : so sánh 2 chuỗin <> : khác

Page 22: Huong dan su dung AutoIt

Cú pháp

n Câu điều kiệnn If...Then...Else

n $var = 20

If $var > 10 ThenMsgBox(0, "Example", "$var was greater

than 10!")Else

MsgBox(0, "Example", "$var was less than 10")EndIf

Page 23: Huong dan su dung AutoIt

Cú phápn Câu điều kiện

ï Select...Case

n $var = 30

SelectCase $var > 1 AND $var <= 10

MsgBox(0, "Example", "$var was greater than 1")

Case $var > 10 AND $var <= 20MsgBox(0, "Example", "$var was greater than 10")

Case $var > 20 AND $var <= 30MsgBox(0, "Example", "$var was greater than 20")

Case $var > 30 AND $var <= 40MsgBox(0, "Example", "$var was greater than 30")

Case $var > 40MsgBox(0, "Example", "$var was greater than 40")

EndSelect

Page 24: Huong dan su dung AutoIt

Cú phápn 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 20MsgBox(0, "Example", "$var was greater than 10")

Case 21 To 30MsgBox(0, "Example", "$var was greater than 20")

Case 31 To 40MsgBox(0, "Example", "$var was greater than 30")

Case ElseMsgBox(0, "Example", "$var was greater than 40 or less or equal to 0")

EndSwitch

Page 25: Huong dan su dung AutoIt

Cú pháp

n Vòng lặpn For...To...Step...Next

n For <variable> = <start> To <stop> [Step <stepval>]statements...

Next

n Ví dụ:n For $i = 5 to 1 Step -1

MsgBox(0, "Count down!", $i)NextMsgBox(0,"", "Blast Off!")

Vòng lặp cho phép chạy trong nó

vòng lặp for khác

Page 26: Huong dan su dung AutoIt

Cú pháp

n Vòng lặpn While...WEnd

n While <expression>statements...

WEnd

n Ví dụ:n $i = 0

While $i <= 10MsgBox(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

Page 27: Huong dan su dung AutoIt

Cú pháp

n Vòng lặpn Do...Until

n Dostatements...

Until <expression> n Ví dụ:

n $i = 0Do

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

Page 28: Huong dan su dung AutoIt

Cú phápn Vòng lặp

n With...EndWith n With <expression>

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

Page 29: Huong dan su dung AutoIt

Cú pháp

n Vòng lặpn For...In...Next

n For <$Variable> In <expression>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

Page 30: Huong dan su dung AutoIt

Cú phápn Vòng lặp

n For...In...Nextn ;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 & @CRLFNEXT

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

Page 31: Huong dan su dung AutoIt

Cú phápn Hàm

n Định danh : giống như biếnn 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 * 2Return $value

EndFunc

Page 32: Huong dan su dung AutoIt

Một số thủ thuật

n Ẩn icon của AutoIt dưới khay hệ thốngn Thêm #NoTrayIcon vào đầu file

n Thực thi AutoIt trên Vistan Vista yêu cầu “quyền” trước khi thực thin Thêm #RequireAdmin vào đầu file

Page 33: Huong dan su dung AutoIt

GUI và lập trình sự kiệnn GUI(Graphical User Interfaces)

n AutoIT cho phép bạn dễ dàng tạo các controln Các control thường dùng:

n Label : tên nhãnn Button : nút bấmn Input : hộp text nhập 1 dòngn Edit : hộp text nhiều dòngn Checkbox,Radion Combo,List n Date n Pic , Iconn Progress : thanh loadingn Menu,ContextMenu n Slider

Page 34: Huong dan su dung AutoIt

GUI và lập trình sự kiệnn Các hàm GUI

n GUICreate() : tạo cửa sổ làm việcn GUICtrlCreate…() : tạo các control tương ứngn 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ừ controln GUICtrlSetData() : ghi dữ liệu vào controln GUICtrlSet…(): ghi dữ liệu vào một số thuộc tính

khác ( màu sắc , font chữ,…)

Page 35: Huong dan su dung AutoIt

GUI và lập trình sự kiệnn GUI(Graphical User Interfaces)

n HelloGUI.au3n #include <GUIConstantsEx.au3>

;Tao cua so 200x100 voi ten la Hello Worldn GUICreate("Hello World", 200, 100)

;Tao label va buttonn 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)

Page 36: Huong dan su dung AutoIt

GUI và lập trình sự kiện

n Lập trình sự kiệnn AutoIt có 2 chế độ

n MessageLoopn Là mặc định của AutoItn Dùng hàm GUIGetMsg() để lấy sự kiện

n OnEventn Dùng hàm Opt("GUIOnEventMode", 1)n Dùng hàm GUICtrlSetOnEvent() để tạo hành động

cho sự kiện

Page 37: Huong dan su dung AutoIt

GUI và lập trình sự kiệnn Lập trình sự kiện

n MessageLoopn GUIGetMsg() sẽ trả về 3 kiểu

n Không có sự kiện : trả về 0n Sự kiện của control : trả về controlIDn 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

Page 38: Huong dan su dung AutoIt

GUI và lập trình sự kiệnn Lập trình sự kiện

n MessageLoopn Ví dụ đơn giản:

n #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()SelectCase $msg = $okbuttonMsgBox(0, "GUI Event", "You pressed OK!")

Case $msg = $GUI_EVENT_CLOSEMsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")ExitLoop

EndSelectWEnd

Page 39: Huong dan su dung AutoIt

GUI và lập trình sự kiện

n Lập trình sự kiệnn MessageLoop

n GUIGetMsg(1)n Trả về một mảngn $array[0] = 0 hoặc Event ID hoặc Control IDn $array[1] = cửa sổ đang xử lýn $array[2] = control đang thực thin $array[3] = tọa độ X của cửa sổn $array[4] = tọa độ Y của cửa sổ

Page 40: Huong dan su dung AutoIt

GUI và lập trình sự kiệnn Lập trình sự kiện

n MessageLoopn #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)GUISwitch($mainwindow)GUISetState(@SW_SHOW)While 1

$msg = GUIGetMsg(1)Select

Case $msg[0] = $okbuttonMsgBox(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

EndSelectWEnd

Page 41: Huong dan su dung AutoIt

GUI và lập trình sự kiệnn Lập trình sự kiện

n OnEventn Thao tác với 2 loại sự kiện

n Sự kiện của controln Sự kiện của hệ thống

n Dùng 2 hàm để tạo hành động cho sự kiệnn 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)

Page 42: Huong dan su dung AutoIt

GUI và lập trình sự kiệnn Lập trình sự kiện

n OnEventn #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 1Sleep(1000) ; Idle around

WEndFunc OKButton()

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

EndFuncFunc 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

Page 43: Huong dan su dung AutoIt

Lời kết

n Tới đây là bạn đã “vững” kiến thức về AutoItn Nên autoitscript.com để học thêmn Hãy tìm ý tưởng và thử thực hiện nó bằng

AutoITn Tài liệu này được biên soạn từ help của

AutoItn Mọi ý kiến góp ý gởi về địa chỉ

[email protected]