tự học autoit

11 2.1K 0
tự học autoit

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Version 1.3 NGÔN NGỮ LẬP TRÌNH DÀNH CHO MỌI NGƯỜI ! -designed by Lý Thế Minh – nick : autoboy195 – Y!m : unluckystar_195 borned : 20-2-1995 ^^! -Time : 10:25PM 5-02-10 (( tut có 34 trang) Tui sẽ cố trình bày 1 cách dễ hiểu nhất ! TUTORIAL 2 : VIẾT CHƯƠNG TRÌNH SỬ DỤNG GUI & TRUY XUẤT REGISTRY I. Viết chương trình sử dụng GUI Đầu tiên, bạn hãy dùng Koda để tạo 1 form như sau (đã hướng dẫn sử dụng GUI trong Tut 1) (Chương trình này để tự động đăng nhập – giúp thoát khỏi những cặp mắt tò mò , bạn có tài khoản nào thì tạo tài khoản đấy, không nhất thiết phải 6 tài khoản như của tui ) Nếu bạn không muốn (hoặc không biết sử dụng Koda thế nào) thì hãy copy code sau vào chương trình soạn thảo : #NoTrayIcon ; Không hiển thị trong thanh System Tray (thanh đồng hồ) ; ~ Tạo GUI #include <GUIConstants.au3> ; thư viện giao diện $Main = GUICreate("Auto Tools - by autoboy195", 282, 136, 252, 168) ; tạo form $Label1 = GUICtrlCreateLabel("Chọn các nơi cần Auto đăng nhập", 8, 8, 260, 18) $Gunnybtton = GUICtrlCreateButton("Logon Gunny", 8, 40, 113, 25, 0) ; tạo button $Yahoobutton = GUICtrlCreateButton("Logon Yahoo", 160, 40, 105, 25, 0) $VnZoom = GUICtrlCreateButton("Logon Vn-zoom", 8, 72, 113, 25, 0) $72ls = GUICtrlCreateButton("Logon 72ls", 160, 72, 105, 25, 0) $hm = GUICtrlCreateButton("Logon Hocmai", 8, 104, 113, 25, 0) $vina = GUICtrlCreateButton("Logon Vinaphone", 160, 104, 105, 25, 0) GUISetState() ; hiện GUI Các cách tạo gui đã học ở Tut 1, tui không nhắc lại nữa Các biến đều tạo mà không cần khai báo Đó là bước 1 – tạo giao diện. Bây giờ ta sẽ gắn thêm “thịt” cho nó – viết code Có giao diện (thui gọi là GUI cho nó nhàn) rùi, bây giờ bạn chạy chương trình, xem có lỗi gì không, nếu không thì làm tiếp. Vì phần này có vẻ “hơi” khó nên tui sẽ chia ra làm nhiều mảng: (*) Viết code cho nút “Logon Gunny” – hihi, tui cũng chơi gunny mà. + Tạo nút ấn : $Gunnybtton = GUICtrlCreateButton("Logon Gunny", 8, 40, 113, 25, 0) Chú thích : -Cái chỗ $Gunnybtton là biến tạo ra bằng cách không cần khai báo trước Biến này sẽ có nhiệm vụ là “chứa” nút Loggon Gunny + Tạo dữ liệu để nạp : Phần này sẽ lưu dữ liệu của bạn như ID và Pass, vì nếu không có dữ liệu sẵn thì chương trình sẽ không thể logon được Code: ; ~ Khai bao cho Gunny $gunny_id = "tên đăng nhập của bạn" $gunny_pwd = "pass của bạn" Như đã nói ở trên, hai biến trên đều tạo ra mà không cần khai báo + Lệnh thực hiện trong nút Logon Gunny : Lệnh này sẽ dc chạy khi nút đó dc ấn , thực chất là tạo chương trình con – function – hàm Code: Func Gunny_logon($gunny_id,$gunny_pwd) WinActivate("Gunny - Login -","") send($gunny_id) ; Gõ ID send("{TAB}") ; Chuyển qua Pass send($gunny_pwd) ; Gõ Pass send("{TAB}") ; Chuyển qua nút đăng nhập send("{ENTER}") ; Đăng nhập ! EndFunc * Lưu ý trong Func, bạn dùng đến biến nào thì phải khai báo biến đó trong dấu() . Vd bạn dùng 2 biến $a và $b trong hàm test. Viết như sau Func test($a,$b) Đừng quên lưu ý này nhé * Chú thích chữ màu da cam trong code : (phần này khó giải thích quá) Trong Tut 1, bạn đã biết WinWaitActive(“tiêu đề cửa sổ”,“”) là một lệnh để chờ cửa sổ nào đó mở ra khi chạy chương trình. Lệnh đó chậm hơn so với lệnh tui tô màu da cam – nghĩa là : Tiêu đề cửa sổ đang chạy Nếu bạn đang mở word, internet explorer, yahoo, … . Khi run chương trình, chương trình chỉ tìm đến ứng dụng nào có tiêu đề chứa nội dung Gunny – Login – mà thôi, còn các ứng dụng khác cũng đang chạy nhưng không có tiêu đề như trên thì cũng bó tay ! Bởi vậy bàn hoàn toàn yên tâm không sợ mất thông tin ^^ (Kể cả bạn mở word hay notepad rùi chạy thì cũng ko có tác dụng , yên tâm không lộ pass ) Có vẻ như tôi giải thích quá khó hỉu ! Bạn hãy xem ví dụ sau là biết ngay Trình duyệt Explorer Như bạn thấy tui đang mở 2 chương trình : trình duyệt và explorer. Bạn có để ý thấy tiêu đề của trình duyệt không ? Có dòng Gunny – Login – đúng không nào. Bây giờ thu nhỏ cả 2 chương trình đó lại (nút dấu – trên tiêu đề cửa sổ ý), chạy chương trình thì ngay lập tức, trình duyệt dc bật lên và auto logon ! Kể cả khi bạn dùng FireFox hoặc Opera … đều được ! ^^ Tui nói “chạy” chứ không phải bạn thực hành lun nhá ! Vì đã có code hoàn chỉnh đâu mà chạy dc !?? [?] Tại sao phải đề dấu - ở cuối chữ Login vậy ??? Đó là dấu gạch nối, sau dấu đó là tên trình duyệt , vì ta muốn chương trình chạy trên mọi trình duyệt nên phải làm như vậy ! Phù !! … Nếu đã hỉu thì hãy đọc tiếp Vậy là ta đã có 3 yếu tố : Dữ liệu cần nạp, nút ấn và lệnh thực hiện Bây giờ chỉ còn yếu tố thứ 4 : kiểm tra xem nút đó dc ấn hay không ? nếu ấn thì gọi lệnh thực hiện lên Bước đầu tiên là kiểm tra xem có sự kiện nào xảy ra trên GUI không (sự kiện : là những thao tác diễn ra trên GUI ) Có 2 cách : Cách 1 : Dùng vòng lặp while … wend (hẳn bạn còn nhớ cấu trúc này chứ) while 1 ; Cấu trúc form ko tự mất đi ! $sukien = GUIGetMsg() ; Ghi nhận sự kiện xảy ra trên form Switch $sukien ; Lựa chọn với các sự kiện case $GUI_EVENT_CLOSE ; Nếu ấn close button thì MsgBox(0,"AutoSimple - v1.0.0","Cảm ơn bạn đã sử dụng chương trình ! - Thoát sau 3s") ExitLoop ; Thoát vòng lặp Exit ; Thoát case $Gunnybtton ; Nếu sự kiện là khi user ấn nút Logon Gunny ( bằng với tham số trong biến $Gunnybtton) Gunny_logon($gunny_id,$gunny_pwd);,$tieu_de) ; Thì gọi chương trình Logon Gunny lên case $Yahoobutton ; Nếu ấn Logon Yahoo Yahoo_logon($ym_id,$ym_pwd);,$tieu_de) ; Thì gọi Yahoo Logon lên EndSwitch WEnd • Chú thích code : while 1 : xem thêm trong Tut 1, có nghĩa là vòng lặp vô tận ! Nếu là số 0 thì là dừng hẳn vòng lặp $sukien = GUIGetMsg() ; Ghi nhận sự kiện xảy ra trên form, ở đây biến $sukien được tạo ko cần khai báo, GUIGetMsg() là một hàm để kiểm tra xem có sự kiện nào xảy ra trên GUI không. $GUI_EVENT_CLOSE : Là 1 hàm khi user ấn nút Close trên cửa sổ $Gunnybtton : nút Logon Gunny có biến đại diện là $Gunnybtton, vì vậy ta thao tác với nút cũng chính là thao tác với biến đại diện. $Yahoobutton : giải thích tương tự như trên Trong vòng lặp trên, có 3 sự lựa chọn (cấu trúc Switch Case) - Khi user ấn nút Close : thì thoát chương trình - Khi ấn nút Logon Gunny : thì chạy hàm đăng nhập Gunny - Khi ấn nút Logon yahoo : thì chạy hàm đăng nhập Yahoo Hàm đăng nhập yahoo chỉ là ví dụ tôi cho vào, nếu copy y nguyên code trên và chạy sẽ báo lỗi. Nếu muốn có hàm này, copy code sau vào: ; ~ Khai bao cho Yahoo $ym_id = "tên đăng nhập yahoo của bạn" $ym_pwd = "mật khẩu yahoo của bạn" ;; * Logon Yahoo! Func Yahoo_logon($ym_id,$ym_pwd) WinActivate("Yahoo! Messenger") send($ym_id) ; Gõ ID send("{TAB}") ; TAB send($ym_pwd) ; Gõ Pass send("{TAB}{TAB}{TAB}{TAB}{ENTER}") ; TAB 4 lần rồi đăng nhập ! EndFunc Bạn có thể cho các code vào từng phần, ví dụ phần FUNC, phần KHAI BÁO Đây là toàn bộ code #NoTrayIcon ; Không hiển thị trong thanh System Tray (thanh đồng hồ) ; ~ Tạo GUI #include <GUIConstants.au3> ; thư viện giao diện $Main = GUICreate("Auto Tools - by autoboy195", 282, 136, 252, 168) ; tạo form $Label1 = GUICtrlCreateLabel("Chọn các nơi cần Auto đăng nhập", 8, 8, 260, 18) $Gunnybtton = GUICtrlCreateButton("Logon Gunny", 8, 40, 113, 25, 0) ; tạo button $Yahoobutton = GUICtrlCreateButton("Logon Yahoo", 160, 40, 105, 25, 0) $VnZoom = GUICtrlCreateButton("Logon Vn-zoom", 8, 72, 113, 25, 0) $72ls = GUICtrlCreateButton("Logon 72ls", 160, 72, 105, 25, 0) $hm = GUICtrlCreateButton("Logon Hocmai", 8, 104, 113, 25, 0) $vina = GUICtrlCreateButton("Logon Vinaphone", 160, 104, 105, 25, 0) ; KHAI BÁO ; ~ Khai bao cho Gunny $gunny_id = "tên đăng nhập của bạn" $gunny_pwd = "pass của bạn" ; ~ Khai bao cho Yahoo $ym_id = "tên đăng nhập yahoo của bạn" $ym_pwd = "mật khẩu yahoo của bạn" ; CHƯƠNG TRÌNH CHÍNH while 1 ; Cấu trúc form ko tự mất đi ! $sukien = GUIGetMsg() ; Ghi nhận sự kiện xảy ra trên form Switch $sukien ; Lựa chọn với các sự kiện case $GUI_EVENT_CLOSE ; Nếu ấn close button thì MsgBox(0,"AutoSimple - v1.0.0","Cảm ơn bạn đã sử dụng chương trình ! - Thoát sau 3s") ExitLoop ; Thoát vòng lặp Exit ; Thoát case $Gunnybtton ; Nếu sự kiện là khi user ấn nút Logon Gunny ( bằng với tham số trong biến $Gunnybtton) Gunny_logon($gunny_id,$gunny_pwd);,$tieu_de) ; Thì gọi chương trình Logon Gunny lên case $Yahoobutton ; Nếu ấn Logon Yahoo Yahoo_logon($ym_id,$ym_pwd);,$tieu_de) ; Thì gọi Yahoo Logon lên EndSwitch Wend ;FUNC ;;* Logon Gunny Func Gunny_logon($gunny_id,$gunny_pwd) WinActivate("Gunny - Login -","") send($gunny_id) ; Gõ ID send("{TAB}") ; Chuyển qua Pass send($gunny_pwd) ; Gõ Pass send("{TAB}") ; Chuyển qua nút đăng nhập send("{ENTER}") ; Đăng nhập ! EndFunc ;; * Logon Yahoo! Func Yahoo_logon($ym_id,$ym_pwd) WinActivate("Yahoo! Messenger") send($ym_id) ; Gõ ID send("{TAB}") ; TAB send($ym_pwd) ; Gõ Pass send("{TAB}{TAB}{TAB}{TAB}{ENTER}") ; TAB 4 lần rồi đăng nhập ! EndFunc ; … thêm code ở đây Ấn F5 vận hành thử. Trông dài vậy thôi nhưng đều rất đơn giản. Bạn có thể chỉnh sửa code cho gọn hơn Cách 2: GUI Events – Sự kiện trên GUI 1. Khai báo #include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) ; Chuyển sang chế độ On Event (1) (1) Chế độ xử lí thao tác trong GUI, GUIGetMsg() sẽ ko dùng dc nữa ! *Lưu ý : Bạn phải tạo Gui trước ! có GUI mới dùng dc phần này (xem phần trên) 2. Viết code GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; Nếu user ấn Close thì gọi hàm CLOSEClicked bên dưới Func CLOSEClicked() Exit EndFunc Chú thích : - GUISetOnEvent : sự kiện trong gui - $GUI_EVENT_CLOSE : sự kiện khi ấn nút Close Đó là code cơ bản, bây h ta sẽ nâng cao hơn. Đầu tiên, tạo 1 Gui đã: ;~ KHAI BÁO #include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) ; Chuyển sang chế độ On Event $mainwindow = GUICreate("Hello World", 200, 100) ; Tạo GUI $okbutton = GUICtrlCreateButton("OK", 70, 50, 60) ; Tạo nút tên OK ; Nút OK được chứa trong biến $okbutton nên ta thao tác với biến cũng như thao tác với nút GUISetState() ; show GUI ;~ MAIN GUICtrlSetOnEvent($okbutton, "OKButton") ; xem chú thích Func OKButton() MsgBox(0, "GUI Event", "Bạn đã ấn OK") Exit EndFunc Chú thích : GUICtrlSetOnEvent($okbutton, "OKButton") Ta phân tích : GUI = Giao diện Ctrl = Control (các công cụ trên gui, ở đây là button) SetOnEvent = Thiết đặt sự kiện  Nghĩa là Thiết đặt sự kiện của control trên GUI Ở đây, sự kiện của button chính là khi user ấn nút, nếu thao tác này được thực hiện thì hàm OKButton được chạy. Ta có CT tổng quát : Tên biến chứa nút : $a = GUICtrlCreatButton(… ) Biến chứa nút là $a, trong code trên thì biến chứa nút là $okbutton Code tổng quát của cách 2: #include <GUIConstantsEx.au3> ;~ GUI Opt("GUIOnEventMode", 1) ; Make Control $mainwindow = GUICreate("title",width,height,left,top) $name_button = GUICtrlCreateButton("text",left,top,width,height) ; more controls … GUISetState() ; show GUI ;~ MAIN GUICtrlSetOnEvent($name_button, "func1") ;~ FUNC ; Func 1 Func func1() ; code here End Func ; more func here … ; Giữ cho ct ko bị thoát ^^ While 1 Sleep(1000) wend Bạn có thấy code gọn hơn rất nhiều ko ? Hjx, cách diễn đạt hơi dài nhưng nó ứng dụng khá nhìu trong các soft về GUI Ví dụ mẫu : Lập trình 1 soft có GUI tương tác với người dùng (kich thước tùy ý), có 3 nút ấn, tên lần lượt là nút1, nút2, nút3. Khi ấn từng nút thì từng lệnh trong nút dc thực hiện CODE #include <GUIConstantsEx.au3> ;~ = GUI = Opt("GUIOnEventMode", 1) ; Make Control $mainwindow = GUICreate("Vi du", 193, 151, 192, 124) $Button1 = GUICtrlCreateButton("nut1", 16, 8, 161, 33) $Button2 = GUICtrlCreateButton("nut2", 16, 56, 161, 33) $Button3 = GUICtrlCreateButton("nut3", 16, 104, 161, 33) ; more controls … GUISetState() ; show GUI ;~ = MAIN = GUICtrlSetOnEvent($button1,"func1") GUICtrlSetOnEvent($button2,"func2") GUICtrlSetOnEvent($button3,"func3") ;~ FUNC Func func1() MsgBox(0,"","You click nut1") EndFunc Func func2() MsgBox(0,"","You click nut2") EndFunc Func func3() MsgBox(0,"","You click nut3") Exit EndFunc while 1 Sleep(1000) WEnd ;Expand ;GUICreate("title",width,height,left,top) ;GUICtrlCreateButton("text",left,top,width,height) Giao diện của code trên ! II. TRUY XUẤT REGISTRY Với phần này cực kì đơn giản luôn ^^ Tạo 1 Key trong registry, nếu có rùi thì ghi đè lên $duong_dan = "c:\windows\vidu.exe" RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Run","Protecter","REG_SZ",$duong_dan) ; ghi vào REG MsgBox(0,"","xong") Chữ màu xanh : câu lệnh tạo 1 key trong Reg Chữ màu cam : đường dẫn của Key Chữ màu tím : Tên Key cần tạo Chữ màu nâu : Kiểu dữ liệu REG_SZ : chuỗi – string REG_BINARY : kiểu nhị phân REG_DWORD : kiểu 0 và 1 (True False) Chữ màu đen : text trong key đó (ở đây key có kiểu dữ liệu là chuỗi) Giả sử biến $duong_dan = "c:\windows\vidu.exe" Chạy thử ^^ Key mới đã dc tạo ! . hãy dùng Koda để tạo 1 form như sau (đã hướng dẫn sử dụng GUI trong Tut 1) (Chương trình này để tự động đăng nhập – giúp thoát khỏi những cặp mắt tò mò , bạn có tài khoản nào thì tạo tài khoản. GUICtrlCreateButton("Logon Vinaphone", 160, 104, 105, 25, 0) GUISetState() ; hiện GUI Các cách tạo gui đã học ở Tut 1, tui không nhắc lại nữa Các biến đều tạo mà không cần khai báo Đó là bước 1 – tạo giao. : Cách 1 : Dùng vòng lặp while … wend (hẳn bạn còn nhớ cấu trúc này chứ) while 1 ; Cấu trúc form ko tự mất đi ! $sukien = GUIGetMsg() ; Ghi nhận sự kiện xảy ra trên form Switch $sukien ; Lựa chọn

Ngày đăng: 04/07/2014, 11:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan