AutoIt · PDF filen GUI(Graphical User Interfaces) n AutoIT cho phép bạn...

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

Transcript of AutoIt · PDF filen GUI(Graphical User Interfaces) n AutoIT cho phép bạn...

Page 1: AutoIt · PDF filen 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

AutoIt

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

Page 2: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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

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

AutoIt v3 Script

Page 5: AutoIt · PDF filen 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

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

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

Page 6: AutoIt · PDF filen 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

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

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

Page 7: AutoIt · PDF filen 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

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

n HelloWorldn SciTE sẽ được mở

Page 8: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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: AutoIt · PDF filen 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

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]