GUI là từ viết tắt của Graphic User Interface – giao diện người dùng bằng đồ họa.
Điều này có lẽ không cần phải nóii nhiều vì bạn đã thấy nó ngay từ khi tiếp xúc với
máy tính, chúng là các biểu tượng, cửa sổ, nút bấm, . . Cách đây vài chục năm,
cái thời mà DOS còn ngự trị trên máy PC thì có lẽ bạn sẽ gặp rắc rối khi phải nhớ
và thao tác một cách chậm chạp với các câu lệnh dài dòng, lắm cú pháp. Còn đến
cái thời mà Windows bành trướng sức mạnh của mình bằng giao diện đồ họa và
các tính năng mới mẻ, thì việc bạn cần làm khi sử dụng máy tính là nhớ các thao
tác. Tất cả các lệnh và hướng dẫn đều có trên màn hình, bạn chỉ cần chọn và nhấn
chuột hoặc phím. Thật là tuyệt cho người sử dụng.
179 trang |
Chia sẻ: maiphuongdc | Lượt xem: 5891 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Giáo trình AutoIT, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thư mục
1. DirCopy( “nguồn”, “đích” [, flag])
Copy một thư mục và tất cả các file, các thư mục con bên trong thư mục nguồn
đến thư mục đích
“nguồn” : chỉ định thư mục cần copy (không có dấu \ ở cuối)
“đích” : thư mục sẽ chứa các phần được sao chép đến (không chứa dấu \ ở
cuối)
flag : (tùy chọn) nếu flag = 0 thì không viết đè các file đã có ở thư mục
đích (mặc định)
= 1 sẽ viết đè các file đã có
2. DirMove( “nguồn”, “đích” [,flag])
Dời một thư mục được chỉ định trong “nguồn” sang thư mục được chỉ định trong
“đích”
3. DirCreate( “path”)
Tạo một thư mục
Path : đường dẫn đầy đủ và tên của thư mục cần tạo. Ví dụ
: “c:\test\folder1”
Th. Công : trả về 1
Hỏng : trả về 0
Chú ý : hàm này sẽ tự tạo các thư mục cha (cấp trên) được chỉ định bởi
path, nếu như chúng chưa có trên đĩa
4. DirRemove( “path” [, DelAll])
Xóa một thư mục
Path : đường dẫn của thư mục cần xóa
DelAll : = 0 (mặc định) không xóa các file và thư mục con bên trong
= 1 sẽ xóa tất cả các file và thư mục con bên trong (giống như lệnh DelTree trong
DOS)
5. DirGetSize( “path” [,flag])
Trả về kích thước (tính theo byte) của thư mục chỉ định
Path : thư mục cần lấy kích thước. ví dụ : “c:\windows”
Flag : [tùy chọn] trả về kết quả mở rộng hay không
= 0 (mặc định) không trả về kết quả mở rộng
= 1 trả về một mảng có nội dung sau :
$array[0] = Size
$array[1] = Tổng số file tìm thấy
$array[2] = Tổng số thư mục tìm thấy
= 2 không lấy kích thước của các file trong thư mục con
Th. Công : trả về kích thước của thư mục (>=0)
Hỏng : trả về -1 và gán @error =1 nếu đường dẫn không tồn tại
Quản lý tập tin
1. FileCopy( “nguồn”, “đích” [,flag])
Sao chép một hoặc nhiều file từ thư mục “nguồn” sang thư mục “đích”
“nguồn” : đường dẫn chứa các file cần copy
“đích” : thư mục sẽ chứa các file được sao chép đến
Flag : [tùy chọn] nếu flag
= 0 (mặc định) không viết đè các file trùng tên
= 1 viết đè các file trùng tên trong thư mục “đích”
= 8 tự tạo cấu trúc thư mục “đích” nếu như đích đến không tồn tại.
Th. Công : trả về 1
Hỏng : trả về 0
Chú ý : nếu bạn gán flag = 9, thì tương đương (1+8). Giá trị này báo cho
biết rằng sẽ viết đè nếu có file trùng tên và tự tạo cấu trúc thư mục đích đến. Muốn
sao chép nhiều file, ta sử dụng ký tự * để làm giá trị tùy ý. Ví dụ : *.mp3 để chọn
tất cả file mp3.
2. FileMove( “file_nguồn” , “nơi đến” [, flag])
Di chuyển một hoặc nhiều file sang thư mục khác
File_nguồn : đường dẫn và tên tập tin cần dời đi
Nơi đến : đường dẫn để chứa các file cần dời đi. Nếu tham số này nêu ra
một tên tập tin khác, thì file_nguồn sau khi dời đến thư mục chỉ định
sẽ bị đổi tên.
Flag : giống như lệnh FileCopy
Th. Công : trả về 1
Hỏng : trả về 0
Chú ý : nếu đường dẫn chứa file nguồn và nơi đến không cùng phân
vùng, thì một tác vụ copy và một tác vụ xóa được thực hiện.
3. FileDelete( “path”)
Xóa một hoặc nhiều file được chỉ định trong “path”
Path : đường dẫn của các file cần xóa
Th. Công : trả về 1
Hỏng : trả về 0 nếu file không tồn tại hoặc không thể xóa
Chú ý : nếu muốn xóa tất cả file trong một thư mục, sử dụng mặt nạ * .
* để đại diện cho tất cả các file. Để ý rằng, một vài file có thiết lập
thuộc tính sẽ không thể xóa được.
4. FileRecycle( “nguồn”)
Đưa một file hoặc thư mục vào thùng rác
Nguồn : đường dẫn và tên file hoặc thư mục cần chuyển vào thùng rác.
Sử dụng * để đại diện nhiều file.
Th. Công : trả về 1
Hỏng : trả về 0
Chú ý : để xóa một thư mục thì không sử dụng ký tự “ \” ở cuối đường
dẫn chỉ định trong “nguồn”
5. FileRecycleEmpty( [“ổ đĩa”])
Làm rỗng thùng rác
[ổ đĩa] : tham số này tùy chọn, cho biết cần đổ thùng rác ở ổ đĩa nào. Nếu
bỏ qua sẽ đổ bỏ ở tất cả ổ đĩa.
Th. Công : trả về 1
Hỏng : trả về 0
Chú ý : để hàm này làm việc máy bạn phải IE từ phiên bản 4 trở lên.
6. FileGetSize( “file_name”)
Trả về kích thước của tập tin (tính theo byte)
File_name : đường dẫn và tên của file cần lấy
Th. Công : trả về kích thước của file (byte)
Hỏng : trả về 0 và gán @error = 1
Chú ý : lệnh này không làm việc với thư mục. Lấy kết quả chia cho
1024 để có được đơn vị tính theo kilobyte, chia cho 1048576 để có
được kích thước ở megabyte.
7. FileExist( “path”)
Kiểm tra xem file hoặc thư mục được nêu trong path có tồn tại hay không
Path : file hoặc thư mục cần kiểm tra
Th. Công : trả về 1
Hỏng : trả về 0 nếu đường dẫn chứa trong path không tồn tại
Chú ý : hàm này cũng sẽ trả về 0 nếu bạn chỉ định một ổ đĩa mềm mà lại
không có chứa đĩa
8. FileInstall( “source”, “dest” [, flag])
Bao gồm và cài đặt một file với đoạn mã đã biên dịch
Source : đường dẫn nguồn của những file cần dịch. Đường dẫn này phải là
một chuỗi rõ ràng, không được phép là một biến. Có thể sử dụng
đường dẫn liên quan như .\ hoặc ..\
Dest : đường dẫn đích đến của các file cần extract. Nếu muốn chỉ định
một thư mục thì dùng dấu \ ở cuỗi. Cho phép dest là biến số
Flag : cho biết có chép đè khi gặp file trùng tên hay không.
= 0 (mặc định) : không viết đè
= 1 : viết đè
Chú ý : hàm này được thiế kế là để gom các file vào trong một đoạn mã đã
biên dịch. Những file được gom vào có thể được extract (xả nén)
trong quá trình chạy của file script đã biên dịch và lệnh này được thực
thi. Bạn có thể hình dung là nếu bạn đưa một file ảnh vào trong file
script thì kích thước của file script sau khi biên dịch sẽ tăng lên. Một
điều nữa là các thông tin gốc về thời gian tạo, chỉnh sửa cũng sẽ được
giữ lại khi cài đặt
9. FileOpenDialog ( "title", "init dir", "filter" [, options [, "def name" [, hwnd]]] )
Gọi hộp thoại Open File (hộp thoại xuất hiện khi bạn chọn lệnh File>Open.. trong
các ứng dụng)
Title : tiêu đề của hộp thoại khi xuất hiện
Init dir : thư mục mặc định để mở khi hộp thoại vừa xuất hiện
Filter : chỉ định một hay nhiều loại tập tin cần mở. ví dụ như : “All
(*.*)” hoặc “Text files (*.txt)” hoặc “All (*.*) | Text files (*.txt)”
Options : [tùy chọn] cho phép mở rộng một vài điều kiện, sử dụng giá trị
sau :
1 = file phải tồn tại (nếu người dùng gõ tên file)
2 = đường dẫn phải tồn tại (nếu gõ đường dẫn)
4 = cho phép chọn nhiều file
8 = nhắc nhở tạo file mới nếu file không tồn tại
Def name : tên đề nghị cho người dùng. Mặc định là rỗng (“”)
Hwnd : handle của cửa sổ được xem như là cửa sổ mẹ của hộp thoại
Open File
Th. Công : trả về đường dẫn đầy đủ và tên của tập tin được chọn. Nếu có
nhiều file được chọn thì trả về chuỗi có dạng như sau : “thư mục |
file1 | file2 |…”
Hỏng : gán @error = 1
Chú ý : bộ lọc phần mở rộng và kết quả trả về cho nhiều file được chọn,
đều được ngăn cách mỗi phần bởi dấu gạch đứng “|”.
Bạn cũng có thể kết hợp các giá trị của Options lại với nhau để có nhiều lựa
chọn. ví dụ : 1+4 để vừa có lựa chọn là “file phải tồn tại” và “ cho
phép chọn nhiều file”
10. FileSaveDialog ( "title", "init dir", "filter" [, options [, "def name" [, hwnd]]] )
Gọi hộp thoại save file (hộp thoại xuất hiện khi bạn gọi File > Save)
Title : tiêu đề của hộp thoại
Init dir : thư mục mặc định để mở khi hộp thoại vừa xuất hiện
Filter : chỉ định một hay nhiều loại tập tin cần mở
Options : [tùy chọn] 2 = đường dẫn phải tồn tại (nếu người dùng gõ
đường dẫn kết thúc vơi dấu \ )
16 = nhắc nhở việc ghi đè file trùng tên
Def name : tên đề nghj cho ng dùng. Mặc định là rỗng “ “
Hwnd : handle của cửa sổ được xem như là cửa sổ mẹ của hộp thoại
Save File
Th. Công : trả về đường dẫn đầy đủ và tên của tập tin được chọn. Nếu có
nhiều file được chọn thì trả về chuỗi có dạng như sau : “thư mục |
file1 | file2 |…”
Hỏng : gán @error = 1
Chú ý : bộ lọc phần mở rộng và kết quả trả về cho nhiều file được chọn,
đều được ngăn cách mỗi phần bởi dấu gạch đứng “|”.
11. FileSelectFolder ( "dialog text", "root dir" [, flag [, "initial dir" [, hwnd]]] )
Gọi hộp thoại Browse For Folder (hộp thoại chỉ hiện cây thư mục để chọn)
Dialog text : văn bản sẽ hiển thị trên hộp thoại, cho phép bạn nhắc nhở chức
năng
Root dir : thư mục gốc của cây tập tin trong GUI. Sử dụng “ “ để chọn
Desktop.
Flag : [tùy chọn] cho phép thêm một vài một lựa chọn :
1 = hiển thị nút Create Folder (đòi hỏi có IE6 trở lên)
2 = sử dụng Kiểu hộp thoại mới (New Dialog style, đòi hỏi IE6 trở lên)
4 = hiển thị một control Edit để gõ tên thư mục mới
Initial dir : Thư mục mặc định sẽ chọn khi hộp thoại xuất hiện. Sử dụng “ “
để chọn Desktop
Th. Công : trả về đường dẫn đầy đủ của thư mục được chọn
Hỏng : trả về chuỗi rỗng “ “ và gán @error = 1 nếu người dùng đóng
(cancel) cửa sổ.
Quản lý ổ đĩa
1. DriveGetDrive( "type")
Liệt kê tất cả các ổ đĩa có trên hệ thống
Type : loại ổ đĩa cần tìm :
"ALL", "CDROM", "REMOVABLE", "FIXED", "NETWORK", "
RAMDISK" hoặc "UNKNOWN"
Th. Công : trả về một mảng, mỗi phần tử là một chuỗi chứa ký tự ổ đĩa được
tìm thấy (ví dụ như C: ). Phần tử đầu tiên trong mảng (có chỉ mục 0)
sẽ cho biết tổng số ổ đĩa được tìm thấy.
Hỏng : trả về chuỗi rỗng và gán @error = 1
2. DriveGetLabel( "path")
Cho biết tên của ổ đĩa
Path : ổ đĩa cần lấy tên. Ví dụ : "C:\", "e:\"
Th. Công : trả về chuỗi là tên của ổ đĩa
Hỏng : gán @error = 1
3. DriveGetSerial( "path")
Cho biết số serial của ổ đĩa
Path : ổ đĩa cần lấy số serial
Th. Công : trả về một chuỗi là số serial
Hỏng : gán @error = 1
4. DriveSetLabel( "path", "label")
Gán nhãn (tên) cho ổ đĩa
Path : ổ đĩa cần gán nhãn (như "c:\")
Label : nhãn mới để gán cho ổ đĩa (tối đa 11 ký tự)
Th. Công : trả về 1
Hỏng : trả về 0
5. DriveSpaceFree( "path")
Lấy kích thước còn trống của ổ đĩa
Path : ổ đĩa cần lấy. ví dụ : "C:\"
Th. Công : trả về kích thước còn trống của ổ đĩa (tính theo megabyte)
Hỏng : trả về 0 và gán @error = 1
6. DriveSpaceTotal( "path")
Cho biết tổng dung lượng của ổ đĩa
Path : ổ đĩa cần lấy. ví dụ : "C:\"
Th. Công : trả về tổng dung lượng của ổ đĩa (tính theo megabyte)
Hỏng : gán @error = 1
7. DriveStatus( "path")
Trả về trạng thái của ổ đĩa
Path : ổ đĩa cần lấy trạng thái
Trả về một trong các giá trị sau :
"UNKNOWN" : ổ đĩa có thể không được định dạng
"READY" : ổ đĩa đang sẵn sàng làm việc
"NOTREADY" : ổ đĩa mềm hoặc CD không có đĩa
"INVALID" : ổ đĩa có thể không tồn tại
GIỚI THIỆU VỀ GUI
GUI là từ viết tắt của Graphic User Interface – giao diện người dùng bằng đồ họa.
Điều này có lẽ không cần phải nóii nhiều vì bạn đã thấy nó ngay từ khi tiếp xúc với
máy tính, chúng là các biểu tượng, cửa sổ, nút bấm, ... . Cách đây vài chục năm,
cái thời mà DOS còn ngự trị trên máy PC thì có lẽ bạn sẽ gặp rắc rối khi phải nhớ
và thao tác một cách chậm chạp với các câu lệnh dài dòng, lắm cú pháp. Còn đến
cái thời mà Windows bành trướng sức mạnh của mình bằng giao diện đồ họa và
các tính năng mới mẻ, thì việc bạn cần làm khi sử dụng máy tính là nhớ các thao
tác. Tất cả các lệnh và hướng dẫn đều có trên màn hình, bạn chỉ cần chọn và nhấn
chuột hoặc phím. Thật là tuyệt cho người sử dụng.
Còn đối với người lập trình thì sao ? Khi mới bắt đầu tiếp xúc với việc lập trình
ứng dụng trong windows , sẽ không ít người trong chúng ta ngán ngẫm . Tại sao?
Đơn giản là vì nó có quá nhiều hàm và cách tổ chức cấu trúc thì chẳng dễ nhớ tí
nào. Nếu bạn đã từng học qua C/C++ thì bạn sẽ hiểu cái cảm giác đó. Thế AutoIt
sẽ giúp cho công việc của ta dễ dàng hơn à ? Xin thưa là đúng như vậy. Mặc dù
bên trong Windows đã được xây dựng sẵn một thư viện đồ sộ cho việc lập trình
các ứng dụng có giao diện , nhưng cú pháp của nó quả là rắc rối . Và chúng ta –
những người sử dụng AutoIt có thể khai thác thư viện này theo một cách đơn giản
nhất mà AutoIt đã hỗ trợ. Sự hỗ trợ mà AutoIt mang đến cho tôi và bạn chính là
các hàm để tạo nên cửa sổ , các thành phần con trên nó (ta gọi là các control ) và
những thứ liên quan đã được thay thế với cú pháp ngắn gọn, đơn giản và sáng sủa
hơn.
Đến đây bạn có thể yên tâm rằng , học AutoIt sẽ không hề vô dụng. Tuy nhiên mọi
thứ sẽ không phải là màu hồng như bạn nghĩ vì bạn sẽ tốn khá nhiều thời gian để
tìm hiểu về những gì AutoIt đang có. Trước khi soạn tài liệu này , tôi đã phải tốn
đến mấy tháng tìm hiểu một cách "lười biếng" về ngôn ngữ này. Hy vọng rằng các
bạn sẽ không phải tốn quá nhiều thời gian như tôi. Nói vòng vo như thế cũng đủ rồi
, bây giờ là nói vào nội dung chính.
Các control mà AutoIt hỗ trợ cho ta bao gồm :
Label Một mẫu văn bản đơn giản
Button Nút bấm
Input Vùng soạn thảo văn bản chỉ có một dòng
Edit Vùng soạn thảo văn bản có nhiều dòng
Checkbox Một ô vuông cho phép bạn đánh dấu hoặc không
đánh dấu
Radio Một nút tròn cho phép bạn chỉ được chọn một nút trong số nhiều nút
Combo Một danh sách có nút bấm để sổ xuống
List Một danh sách
Date Một hộp chọn ngày
Pic Vùng để hiển thị ảnh
Icon Vùng để hiển thị Icon
Progress Thanh tiến trình
Tab Một nhóm các control sẽ được chứa trong tab
UpDown Một control cho phép đính kèm cạnh bên control input
Avi Hiển thị đoạn clip AVI
Menu Menu chức năng trên cửa sổ
ContextMenu Một menu ngữ cảnh sẽ xuất hiện khi bạn nhấn chuột phải (hoặc trái, tùy vị trí)
TreeView Một cây phân nhánh như trong Windows Explorer
Slider Một thanh trượt như thanh điều khiển âm lượng
ListView Control hiển thị thông tin của cột trong listview
ListViewItem Control hiển thị các mục trong listview
Graphic Control để hiển thị đồ họa được vẽ với hàm GUICtrlSetGraphic.
Dummy Control dummny (bù nhìn)
Đây là hình ảnh về các control mà ta có thể tạo lập được
Error!
Trước khi tìm hiểu về cách thức tạo một GUI , ở đây xin giới thiệu sơ lược với các
bạn các hàm cơ bản mà ta sẽ thường sử dụng để thao tác với một ứng dụng có cửa
sổ.
Hàm Giải thích
GUICreate Tạo một cửa sổ
GUICtrlCreate...
Tạo ra các control khác nhau trên cửa sổ (dấu …. sẽ được thay
bằng tên cụ thể)
GUISetState Hiển thị hoặc ẩn cửa sổ
GUIGetMsg Lấy các thông tin về các sự kiện diễn ra trên gui
GUICtrlRead Đọc dữ liệu từ control
GUICtrlSetData Gán/Thay đổi dữ liệu trên control
GUICtrlSet... Thay đổi các lựa chọn trên control (ví dụ như màu sắc , style,…)
TẠO GIAO DIỆN NGƯỜI DÙNG
Phần này sẽ hướng dẫn bạn cách thức để tạo nên một ứng dụng có giao diện hẳn
hoi. Một điều quan trọng mà bạn cần nhớ là một ứng dụng trên windows không
nhất thiết phải có giao diện (ví dụ như các dịch vụ của win) và các thao tác xử lý
đối với một ứng dụng trên Windows là tập trung vào xử lý sự kiện xảy ra trên cửa
sổ của ứng dụng đó. Ở đây, các bạn cần nắm được vài chú ý sau :
- Control ID : nó thực chất là một số nguyên (>0) đại diện cho
control. Thông thường ta không biết số này là bao nhiêu (vì do hệ điều
hành cung cấp khi chạy ứng dụng) và khi tạo ra một control ta thường
gán nó vào một biến, biến đó là tên đại diện, sẽ chứa ID của control
đó. Do trên cửa sổ của bạn sẽ có nhiều thành phần, mỗi thành phần
cần phải có một cái tên để quản lý và khai thác. Ví dụ bạn có hai nút
bấm trên cửa sổ thì bạn phải đặt tên cho nút thứ nhất là btn1 (hoặc
btnOK) và nút thứ hai là btn2 (btnCancel) chẳng hạn. Để khi người
dùng nhấp chuột thì ta biết rằng nút bấm nào vừa được tác động.
- Control ID : là một số nguyên duy nhất, không bao giờ có sự trùng
lặp (do bộ nhớ được phân chia để chứa các thành phần ).
- Handle : cái từ này tôi không biết nên dịch thế nào cho đúng
nghĩa nhưng có thể tạm hiểu rằng , nó là một giá trị đặc biệt được tạo
ra và gán vào một cửa sổ khi cửa sổ đó được tạo. Thông thường ,
handle chỉ được dùng cho cửa sổ , ít khi dùng cho control. Khi nói
đến handle , người ta nghĩ ngay đến định danh của một cửa sổ (hay
GUI). Và handle là một dạng dữ liệu đặc biệt , nó không phải chuỗi
hay số.
Để tạo được một ứng dụng có giao diện đồ họa , thì thành phần bạn cần tạo đầu
tiên chính là một cửa sổ. Sau khi có cửa sổ thì chúng ta sẽ tạo tiếp các thành phần
con trên nó (các control).
Muốn tạo được cửa sổ ta cần gọi đến hàm GuiCreate. Có cú pháp hoàn chỉnh như
sau :
GUICreate ( "title" [, width [, height [, left [, top [, style [, exStyle [,
parent]]]]]]] )
Các phần được rào trong cặp dấu ngoặc vuông [ ] là tùy chọn, có thể có hoặc
không. Trong đó ,
Các tham số
Title : là tiêu đề của cửa sổ (văn bản này sẽ hiển thị trên thanh tiêu đề
khi cửa sổ xuất hiện).
Width : độ rộng của cửa sổ (tính theo pixel)
Heigh : chiều cao của cửa sổ (tính theo pixel)
Left : vị trí bên trái của màn hình (tương ứng với tọa độ x). Gán -1 là
canh giữa màn hình. Nếu đã gán giá trị cho left, thì Top cũng phải
được gán giá trị.
Top : vị trí phía trên của màn hình (tương ứng với tọa độ y). Gán -1 đề
canh giữa màn hình
Style : xác định style (kiểu) cửa sổ. Xem trong GUI Control Styles
Appendix của file help.
Sử dụng -1 để dùng style mặc định, bao gồm các giá trị sau
: $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP,
$WS_SYSMENU.
Các style $WS_CLIPSIBLINGS, và $WS_SYSMENU luôn được sử dụng
nếu như style $WS_MAXIMIZEBOX hoặc $WS_SIZEBOX được chỉ
định.
exStyle : xác định style mở rộng cho cửa sổ (xem bảng Extended Style
Table bên dưới ). Mặc định là -1.
Parent : handle của cửa sổ đã được tạo ra trước đó. Cửa sổ sắp tạo ra sẽ là
con của cửa sổ có handle vừa gán.
Trả về
Thành công : hàm trả về handle của cửa sổ
Hỏng : hàm trả về 0 và gán @error = 1
Chú ý
Hai tham số Left và Top sẽ xác định vị trí xuất hiện của hộp thoại trên
màn hình. Điểm giao nhau của hai tham số này chính là góc trái trên của hộp
thoại.
Theo mặc định, các cửa sổ được tạo ra sẽ không thể có chức năng resize
(dùng chuột để kéo lớn hoặc thu nhỏ kích thước của cửa sổ) và phóng lớn cực đại
(maximize). Vì thế, khi bạn muốn sử dụng bất kỳ tính năng nào ở
trên thì có thể thêm vào tham số style các giá trị
WS_SIZEBOX hoặc WS_MAXIMIZEBOX.
Tuy nhiên, khi sử dụng WS_SIZEBOX thì các style
WS_MINIMIZEBOX, WS_CAPTION, WS_POPUP, WS_SYSMENU lại
không được thiết lập. Cách tốt nhất để tạo nên một hộp thoại có thể resize là
sử dụng WS_OVERLAPPEDWINDOW.
Khi dùng $WS_EX_MDICHILD cho tham số style mở rộng , thì vị trí
cửa sổ là vị trí liên hệ đến vùng client của cửa sổ bố-mẹ (parent). Tham số
$WS_EX_LAYERED cho phép có một bức ảnh trong suốt bên trên ảnh nền
đã định nghĩa trong cửa sổ parent.
Để kết hợp các style do bạn chỉ định với style mặc định, ta sử dụng :
BitOr($GUI_SS_DEFAULT_GUI, newstyle,...).
Muốn sử dụng được các hằng số liên quan đến GUICreate, bạn cần gọi
#include
Bảng các style mở rộng (Extended style table)
Style mở rộng Kết quả
$WS_EX_ACCEPTFILES
Cho phép một control edit hoặc input được
tạo trên GUI có thể nhận được tên của file
được kéo và thả vào. Control cũng phải
được gán trạng thái
$GUI_DROPACCEPTED bằng hàm
GUICtrlSetState. Đối vớ các control khác,
thông tin của việc drag&drop có thể được
truy lại với @GUI_DRAGID,
@GUI_DRAGFILE, @GUIDROPID.
$WS_EX_APPWINDOW Yêu cầu cửa sổ luôn nổi ở-trên thanh taskbar khi nó xuất hiện.
$WS_EX_CLIENTEDGE Cửa sổ sẽ được bao với viền bị trũng xuống (sunken).
$WS_EX_CONTEXTHELP
Bao gồm một dấu chấm hỏi ở thanh tiêu đề
của cửa sổ. Không dùng được với
WS_MAXIMIZEBOX hoặc
WS_MINIMIZEBOX.
$WS_EX_DLGMODALFRAME
Tạo một cửa sổ có viền lớn gấp đôi bình
thường. Tùy chọn, cửa sổ có thể được tạo
với một thanh tiêu đề bằng cách chỉ định
WS_CAPTION trong tham số style
$WS_EX_MDICHILD Tạo một cửa sổ con bên trong cửa sổ bố-mẹ (simulation not real MDI).
$WS_EX_OVERLAPPEDWINDOW Kết hợp style WS_EX_CLIENTEDGE và WS_EX_WINDOWEDGE
$WS_EX_STATICEDGE
Tạo một cửa sổ có viền chỉ bằng một phần
ba so với bình thường , style này được sử
dụng cho các mục không chấp nhận viêc
nhập liệu của người dùng
$WS_EX_TOPMOST
GUI được tạo với style này sẽ luôn ở trên
các cửa sổ khác, thậm chí khi GUI không
được kích hoạt.
$WS_EX_TRANSPARENT
Cửa sổ sẽ xuất hiện trong suốt bởi vì các
bit của những cửa sổ liên quan bên dưới đã
được vẽ lại
$WS_EX_TOOLWINDOW
Tạo ra một cửa sổ chứa công cụ, ta còn gọi
là floating toolbar (thanh công cụ trôi nổi).
Cửa sổ chứa công cụ sẽ có một thanh tiêu
đề và font chữ nhỏ hơn cửa sổ bình thường.
Cứa sổ này sẽ không xuất hiện trong
taskbar hoặc trong hộp thoại khi bạn Alt-
Tab. Nếu cửa sổ chứa công cụ có một menu
hệ thống, icon của nó sẽ không hiển thị trên
thanh tiêu đề. Tuy nhiên, bạn có thể ép
chúng hiển thị bằng cách gõ phím Alt-
Space.
$WS_EX_WINDOWEDGE Tạo cửa sổ được bao với viền nổi
$WS_EX_LAYERED Tạo một cửa sổ được xếp thành lớp (layer). Chú ý rằng cái này không sử dụng được cho
các cửa sổ con
Ví dụ 1
Đoạn mã này tạo ra một cửa sổ, trên đó có chứa một label và một button. Khi bạn
nhấn vào Button sẽ tạo ra một số ngẫu nhiên và hiển thị ở label.
#include
$gui = GUICreate("Random number", 200, 100) ;tạo gui chính
;tạo nhãn sẽ hiển thị số vừa tạo
$label_num = GUICtrlCreateLabel("000", 20, 20, 160, 30)
;gán label này dùng font Arial, size là 14
GUICtrlSetFont(-1, 14, 400, 0, "Arial")
;tạo nút cấp phát số ngẫu nhiên
$button_gen = GUICtrlCreateButton("Generate random number", 20,
50, 160, 30)
GUISetState() ; hiển thị gui vừa tạo lên màn hình
while 1 ; vòng lặp xử lý thông điệp
$msg = GUIGetMsg() ;ghi nhận sự kiện xảy ra trên gui
Switch $msg
Case $GUI_EVENT_CLOSE ;nếu nhấn nút Close hoặc Alt-F4
ExitLoop ; thì thoát
Case $button_gen ;nếu nhấn nút cấp phát thì tạo số ngẫu nhiên
$num = Int(Random(-10^9, 10^9))
; gán vào label để hiển thị số vừa cấp phát
GUICtrlSetData($label_num, $num)
EndSwitch
WEnd
Ví dụ 2
Đoạn mã này minh họa việc tạo cửa sổ con có nền trong suốt bằng một ảnh gif.
#include
#include
Example( )
Func Example2()
Local $gui, $background, $pic, $basti_stay, $msg
Local $sFile =
RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\A
utoIt v3\AutoIt", "InstallDir") &
"\Examples\GUI\logo4.gif"
$gui = GUICreate("Background", 400, 100)
; background picture
$background = GUICtrlCreatePic(@SystemDir &
"\oobe\images\mslogo.jpg", 0, 0, 400, 100)
GUISetState(@SW_SHOW)
; transparent MDI child window
$pic = GUICreate("", 169, 68, 0, 0, $WS_POPUP,
BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gui)
; transparent pic
$basti_stay = GUICtrlCreatePic($sFile, 0, 0, 169, 68)
GUISetState(@SW_SHOW)
Do
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE
EndFunc
GUIDelete
Xóa bỏ một cửa sổ GUI và tất cả các control trên đó
GUIDelete ( [winhandle] )
Các tham số
Winhandle
[tùy chọn] handle của cửa sổ cần xóa , được trả về từ hàm GUICreate
(mặc định là GUI đã dùng trước đó.)
Trả về
Th.
Công :
Returns 1.
Hỏng : Returns 0.
Chú ý
None.
GUIGetCursorInfo
Lấy thông tin về vị trí của con trỏ chuột (tính theo cửa sổ GUI)
GUIGetCursorInfo ( [winhandle] )
Các tham số
winhandle
[tùy chọn] handle của cửa sổ muốn sử dụng. Nếu bỏ quên thì cửa sổ
hiện hành được sử dụng
Giá trị trả về
Th.
Công :
Trả về một mảng có 5 phần tử , chứa các thông tin sau :
$array[0] = tọa độ X (chiều ngang)
$array[1] = tọa độ Y (chiều dọc)
$array[2] = nút thứ nhất của chuột được nhấn (thường là nút trái , 1 là có
nhấn, 0 nếu không nhấn)
$array[3] = nút thứ hai của chuột được nhấn (thường là nút phải , 1 là có
nhấn, 0 nếu không nhấn)
$array[4] = ID của control mà con trỏ chuột đang bay-lượn ở trên. Cho 0
nếu không có control
Hỏng
:
Trả về 0 và gán @error=1
Chú ý
Tọa độ của con trỏ chuột được tính theo tọa độ bên trong GUI , chứ
không phải tính theo tọa độ màn hình
Nếu tham số "winhandle" được dùng thì cửa sổ được chỉ định sẽ trở
thành cửa -sổ-hiện-hành mới.
Việc lấy thông tin về vị trí của con trỏ chuột chỉ thành công khi dùng trên
một cửa sổ được tạo ra bằng hàm GUICreate. Khi không có winhandle thì
hàm chỉ thành công khi cửa sổ GUI được kích hoạt
Định danh của ListViewItem hoặc TreeViewItem sẽ không bao giờ được
trả về , chỉ trả về ID của ListView hoặc TreeView mà thôi.
GUIGetMsg
Lấy và trả về các sự kiện nào đã xảy trên GUI
GUIGetMsg ( [advanced] )
Các tham số
Advanced
[tùy chọn] trả về thông tin mở rộng chứa trong một mảng
0 = (default) trả về một sự kiện đơn lẻ.
1 = trả về một mảng chứa sự kiện và thông tin mở rộng
Giá trị trả về
Trả về một giá trị đơn hoặc một mảng tùy vào tham số Advanced
Sự kiện sẽ trả về định danh (ID) của control đã gởi đi thông điệp , hoặc nó là một
sự kiện đặc biệt (như là đóng hoặc thu nhỏ cửa sổ ,...). Hoặc trả về 0 nếu không có
sự kiện nào xảy ra.
ID của sự kiện ID của control đã gởi đi sự kiện
0 Không có sự kiện
$GUI_EVENT_CLOSE Hộp thoại bị đóng (click nút close hoặc
menu hệ thống hoặc một nút do ta tạo)
$GUI_EVENT_MINIMIZE Hộp thoại bị thu nhỏ (minimize) bởi click
nút bấm từ thanh tiêu đề
$GUI_EVENT_RESTORE Hộp thoại được phục hồi do nhấn nút ở
thanh taskbar
$GUI_EVENT_MAXIMIZE Hộp thoại được phóng lớn cực đại do
nhấn nút maximize
$GUI_EVENT_MOUSEMOVE Con trỏ chuộ
Các file đính kèm theo tài liệu này:
- autoit_6079.pdf