1. Trang chủ
  2. » Công Nghệ Thông Tin

tự học autoit

11 2,1K 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 376,5 KB

Nội dung

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

Trang 1

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)

Trang 2

$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)

Trang 3

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 !

Trang 4

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

Trang 5

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"

Trang 6

$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 !

Trang 7

; … 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

Trang 8

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

Trang 9

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)

Trang 10

Giao diện của code trên !

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 !

Trang 11

Giá trị của Key mới tạo !

Xóa 1 key trong registry

RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\C

urrentVersion\Run","Protecter") ; xoa trong REG

Chữ màu xanh : Câu lệnh xóa 1 Key

Chữ màu cam : đường dẫn Key

Chữ màu tím : Tên Key

Đọc 1 Key trong Registry

RegRead ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run ", " Protecter " )

Chữ màu xanh : Lệnh đọc Key

Chữ màu cam : Tên Key

Chữ màu tím : Tên giá trị trong key

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

Xem thêm

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w