AutoIt

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

Nội dung
n n n n n n

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

Giới thiệu về AutoIt
n

AutoIt
n n

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

n n n n

n n

Tips: nên gõ và thực thi lại các ví dụ khi học !!! Tải tại và cài đặt AutoIt tại địa chỉ http://www.autoitscript.com/autoit3/

Có cấu trúc tựa BASIC Đơn giản , dễ học Nhỏ gọn Miễn phí

Phím Kích chuột Tương tác với chương trình,file khác của máy tính.

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 n n n

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

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

Tương tác với notepad
n n n

Tạo file note.au3 như ví dụ trên Vào Start -> Run : gõ notepad Mở công cụ : AutoIt Window Info
n

n

Vào Start->Programs->AutoIt v3->AutoIt Window Info 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 ; đợi tới khi của sổ notepad kích hoạt(active) ; title : Untitled - Notepad ; gởi dòng text tới notepad

n

WinWaitActive("Untitled - Notepad")
n n

n

Send("This is some text.")
n

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=Alt+N -> phím tắt của No trong lựa chọn thoát

n

Send("!n")
n

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 n

Nó có thể chứa số hay chuỗi kí tự Tùy thuộc vào lúc xử lý Gồm những loại dữ liệu sau:
n n n n n n

Int32 Int64 Double String Binary Pointer

Cú pháp
n

Biến
n
n n n

Định danh:

Bắt đầu với $ Gồm chữ , số và _ Ví dụ : $myvar , $my_var Dim
n

n

Khai báo:
n n n

Local Global

Ví dụ : Dim $var1

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 n

Sử dụng toàn chương trình Từ lúc khai báo Chỉ trong hàm Hủy khi hàm kết thúc

n

Local
n n

Cú pháp
n

Biến
n

Mảng
n

Truy cập phần tử qua chỉ số
n

$Array[0]="A” $Array[0]=1 $Array[1]=true $Array[2]="Text" $Array[3]=$AnotherArray Điều này không bị cấm nhưng không nên dùng

n

Trong 1 mảng có thể chứa nhiều loại dữ liệu
n

n

Cú pháp
n

Macros
n n n n

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

Cú pháp
n

Toán tử
n
n n n

Số học

=,+=,-=,*=,/=,&=,+,-,*,/,&,^
& : nối 2 chuỗi ^ : mũ

n

Logic
n

AND , OR , NOT =,==,<,<=,>,>=,<>
n n n

n

So sánh
n

= : so sánh 2 số == : so sánh 2 chuỗi <> : 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 cho phép chạy trong nó vòng lặp for khác

Vòng lặp
n

For...To...Step...Next
n

For <variable> = <start> To <stop> [Step <stepval>] statements ... Next Ví dụ:
n

n

For $i = 5 to 1 Step -1 MsgBox(0, "Count down!", $i) Next MsgBox(0,"", "Blast Off!")

Cú pháp
n

Vòng lặp
n

Vòng lặp cho phép chạy trong nó vòng lặp While khác

While...WEnd
n

While <expression> statements ... WEnd Ví dụ:
n

n

$i = 0 While $i <= 10 MsgBox(0, "Value of $i is:", $i) $i = $i + 1 WEnd !")

Cú pháp
n

Vòng lặp cho phép chạy trong nó vòng lặp Do Until khác

Vòng lặp
n

Do...Until
n

n

Do statements ... Until <expression> Ví dụ:
n

$i = 0 Do MsgBox(0, "Value of $i is:", $i) $i = $i + 1 Until $i = 10

Cú pháp
n

Vòng lặp không cho phép chạy trong nó vòng lặp With khác

Vòng lặp n With...EndWith
n

With <expression> statements ... EndWith
Ví dụ:
n

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

Cú pháp
n

Vòng lặp cho phép chạy trong nó vòng lặp For khác

Vòng lặp
n

For...In...Next
n

For <$Variable> In <expression> statements ... Next Chỉ làm việc với mảng hay tập đối tượng

n

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 n

Định danh : giống như biến Func functioname ( [Const] [ByRef] $param1, ..., [Const] [ByRef] $paramN, $optionalpar1 = value, ...) ... [Return [value]] EndFunc Ví dụ:
n

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 Vista yêu cầu “quyền” trước khi thực thi Thêm #RequireAdmin vào đầu file

n

Thực thi AutoIt trên Vista
n n

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

GUI(Graphical User Interfaces)
n n
n n n n n n n n n n n

AutoIT cho phép bạn dễ dàng tạo các control Các control thường dùng:
Label : tên nhãn Button : nút bấm Input : hộp text nhập 1 dòng Edit : hộp text nhiều dòng Checkbox,Radio Combo,List Date Pic , Icon Progress : thanh loading Menu,ContextMenu Slider

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

Các hàm GUI
n n n n n n n

GUICreate() : tạo cửa sổ làm việc GUICtrlCreate…() : tạo các control tương ứng GUISetState() : hiện hay ẩn cửa sổ GUIGetMsg() : lấy thông tin về cửa sổ GUICtrlRead() : đọc dữ liệu từ control GUICtrlSetData() : ghi dữ liệu vào control 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

n

n

n

n

#include <GUIConstantsEx.au3> ;Tao cua so 200x100 voi ten la Hello World GUICreate("Hello World", 200, 100) ;Tao label va button GUICtrlCreateLabel("Hello world! How are you?", 30, 10) GUICtrlCreateButton("OK", 70, 50, 60) ;Hien cua so GUISetState(@SW_SHOW) ;doi 2s 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 n

Là mặc định của AutoIt Dùng hàm GUIGetMsg() để lấy sự kiện Dùng hàm Opt("GUIOnEventMode", 1) Dùng hàm GUICtrlSetOnEvent() để tạo hành động cho sự kiện

n

OnEvent
n n

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

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

MessageLoop
n n n n

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

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

Ví dụ đơn giả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() 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 n n n n n

Trả về một mảng $array[0] = 0 hoặc Event ID hoặc Control ID $array[1] = cửa sổ đang xử lý $array[2] = control đang thực thi $array[3] = tọa độ X của cửa sổ $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
n

MessageLoop

#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] = $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 n

Sự kiện của control Sự kiện của hệ thống GUISetOnEvent() GUICtrlSetOnEvent() Code dài và rờm rà Phải bật option (opt)

n

Dùng 2 hàm để tạo hành động cho sự kiện
n n

n

Không nên dùng cách này vì:
n n

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

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

OnEvent
n

Cùng chức năng nhưng code dài hơn

#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 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

Lời kết
n n n

n

n

Tới đây là bạn đã “vững” kiến thức về AutoIt Nên autoitscript.com để học thêm Hãy tìm ý tưởng và thử thực hiện nó bằng AutoIT Tài liệu này được biên soạn từ help của AutoIt Mọi ý kiến góp ý gởi về địa chỉ 06Tonline.net@gmail.com

Sign up to vote on this title
UsefulNot useful