Bài giảng AutoIt

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í

pdf43 trang | Chia sẻ: lylyngoc | Lượt xem: 2245 | Lượt tải: 1download
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
Tài liệu liên quan