Tìm hiểu về AutoIt

1. Giới thiệu chung

AutoIt là một ngôn ngữ lập trình tự động trên nền Microsoft Windows, cung cấp miễn phí. Nó là sự phối hợp của việc giả lập nhấn phím, di chuyển chuột và thao tác trên cửa sổ cũng như các thành phần của cửa sổ như buttons để thực hiện tự động các tác vụ theo cách thức mà các ngôn ngữ khác không thể làm hoặc làm không chuẩn xác.

Ví dụ chuơng trình tự động tính toán trên máy tính bỏ túi

; Hiển thị message thông báo chương trình tự tính toán 2 x 4 x 8 x 16
Local $answer = MsgBox(4, "AutoIt Example (English Only)", "This script will run the calculator and type in 2 x 4 x 8 x 16 and then quit.  Run?")
; Kiểm tra câu trả lời của người dùng
; Nếu người dùng chọn No (7) thì thoát
If $answer = 7 Then
	MsgBox(0, "AutoIt", "OK.  Bye!")
	Exit
EndIf
; Khởi động chương trình máy tính bỏ túi
Run("calc.exe")
; Đợi cho đến khi cửa sổ chương trình được active. Nó có title là Calculator/
WinWaitActive("Calculator")
; Giả lập việc gõ phím 2*4*8*16=
; Sử dụng AutoItSetOption để làm giảm tốc độ gõ phím để ta có thể quan sát được
AutoItSetOption("SendKeyDelay", 400)
Send("2*4*8*16=")
Sleep(2000)
; Thoát chương trình
WinClose("Calculator")
; Đợi chương trình kết thúc
WinWaitClose("Calculator")
; Kết thúc!

2. Các đặc trưng của ngôn ngữ

2.1. Đặc trưng

AutoIt được thiết kế để tự động hóa các GUI (Graphic User Interface : giao diện người dùng bao gồm các message và hộp input) và các thao tác thường dùng. AutoIt cũng có thể mô phỏng hoạt động của chuột, thao tác với các cửa sổ và tiến trình. Tự động gửi thao tác nhấn phím, nhập dữ liệu của người dùng đến các ứng dụng và điều khiển các ứng dụng. Nó cũng quản lý âm thanh hiệu quả với việc bật nhạc, tạm dừng, chơi lại, tìm kiếm file và tìm kiếm vị trí hiên tại của đoạn nhạc và lấy độ dài của nó.

AutoIt có dung lượng rất nhỏ gọn, có thể chạy độc lập trên tất cả các phiên bản của Windows mà không cần các runtime để làm nền do các scripts được biên dịch thành các file có thể chạy độc lập.

AutoIt có dạng kịch bản giống như BASIC, được dùng cho môi trường Windows Desktop. Vì thế AutoIT dễ học vì có cấu trúc đơn giản. Ban đầu AutoIt được thiết kế để tự động cấu hình cho hàng ngàn máy tính cá nhân. Theo thời gian, AutoIt trở thành một ngôn ngữ đầy sức mạnh với sự hỗ trợ các biểu thức phức tạp, hàm, thư viện do người dùng tự định nghĩa, các vòng lặp và mọi thứ mà một người lập trình kịch bản dày dặn mong đợi. Hiện nay, các hàm này không ngừng được mở rộng nhờ sự hỗ trợ của cộng đồng mạng.

AutoIT hỗ trợ các giao thức TCP và UDP cũng như các đối tượng COM (Component object modelling). Nó có thể gọi một cách có định hướng các DLL mở rộng và các hàm API. Nó có khả năng chạy các ứng dụng console và truy cập các dòng chuẩn. Từ phiên bản 3.2.4.0, AutoIt hỗ trợ Unicode và từ phiên bản 3.2.10.0, nó hỗ trợ mã 64 bit. Nó cũng làm việc tốt với điều khiển tài khoản người dùng UAC (User Account Control) của Windows Vista và Windows 7,8. Nó cũng là 1 ngôn ngữ có thiết kế hướng đối tượng thông qua thư viện.

AutoIt được phát hành cùng với IDE dựa trên bộ biên tập SciTE miến phí.

2.2. Nhược điểm

Hệ thống dữ liệu không định kiểu: AutoIt không định nghĩa kiểu dữ liệu cho các biến, điều này là 1 thuận lợi khá lớn cho người không chuyên nghiệp nhưng đối với những người chuyên nghiệp thì thực sự rất khó chịu vì rất khó debug.

Dễ bị Decompile: Khi biên dịch, mã nguồn của autoit bị nén luôn vào file thực thi, dù có được mã hóa đi nữa nhưng vẫn dễ dàng để decompile, 1 số lập trình viên có trình độ thường phải dùng thêm 1 số thủ thuật để khắc phục.

Chạy trên thread đơn: Khó lập trình không đồng bộ, đồng thời và song song (như các ứng dụng truyền thông).

Một số ứng dụng AutoIt thường bị chương trình diệt virus nhầm lẫn là virus bời vì ứng dụng này tự chạy (self extracting executable).

3. Ứng dụng của ngôn ngữ

AutoIt có thể dùng để tạo các phần mềm tiện ích cho Microsoft Windows. Nó cũng có thể dùng trong việc tự động hóa các task như tự động cài đặt phần mềm, giám sát website, giám sát mạng, chống phân mảnh đĩa và sao lưu dữ liệu. Nó cũng có thể làm thay user trong 1 số ứng dụng như software testing hay autogame. Ngôn ngữ này cũng có thể bị lợi dụng để viết virus.