Giới Thiệu Về Windows APIAPI là thành phần mạnh nhất trong các tiện ích của Visual Basic VB,với hàng trăm hàm sẵn có để thực hiện nhiều chức năng khác nhau.Nhưng, thường thì nhiều lập tr
Trang 1LOGO
Trường ĐH Quang Trung Khoa: KT & CN
Lớp: K2.101
Lập Trình Windows API
Môn: Visual Basic 6.0
GV: Đỗ Minh Đức
Nhóm 11:
1 Nguyễn Đình Dự
2 Hoàng Minh Thử
Nhóm 11:
1 Nguyễn Đình Dự
2 Hoàng Minh Thử
Trang 2I Giới Thiệu Về Windows API
API là thành phần mạnh nhất trong các tiện ích
của Visual Basic (VB),với hàng trăm hàm sẵn có
để thực hiện nhiều chức năng khác nhau.Nhưng,
thường thì nhiều lập trình viên VB đã không tận
dụng những chức năng mạnh mẽ này vì họ đã
nghe nói về sự phức tạp của nó, cũng như những
lỗi “general protection faults” hay nhiều vấn đề
khác
Trang 3II Windows API
1 Windows API Là Gì ?
II Windows API
API là viết tắt của Application Programming Interface
(giao diện lập trình ứng dụng) Do API là cốt lõi của Windows vì vậy ta thường gọi là Windows API (WinAPI) hay Win32 API WinAPI là một giao tiếp phần mềm được dùng bởi các ứng dụng khác nhau Cũng giống như bàn phím là thiết bị giao tiếp giữa người dùng và máy tính, một API là một giao tiếp phần mềm, chẳng hạn như giữa chương trình và hệ điều hành Bộ API của từng hệ điều hành không giống nhau, làm cho các hệ điều hành thường không tương thích với nhau
Trang 42 Windows API L àm Được Những Gì ?
2 Windows API L àm Được Những Gì ?
Nói một cách cơ bản, WinAPI quản lý mọi vấn đề làm ra Windows Như từ việc mở hoặc đóng một cửa sổ đến việc truy xuất đĩa, cấp phát bộ nhớ, hiển thị trên màn hình… Tuy nhiên, nó đồng thời cũng cung cấp hầu hết các tính năng thông dụng cho tất cả các chương trình trên nền Windows Ví dụ, các hộp thoại thông dụng (Open, Save As,…), các thiết lập hệ điều hành, các sự kiện,…Các ứng dụng trên nền Windows dùng WinAPI hầu như trong mọi tác vụ Thậm chí nếu bạn không dùng WinAPI một cách rõ ràng khi lập trình thì trong ngôn ngữ lập trình cũng sẽ gọi các WinAPI trong chương trình được tạo ra để quản lý nhiều tác vụ khác nhau
Trang 53 Windows API được chứa ở đâu ?
Hầu hết các hàm WinAPI được chứa trong các file
*.DLL (Dynamic Link Library – thư viện liên kết động)
chứa trong thư mục hệ thống của Windows
( \Windows\System\) hay ( \Windows\System32\) Các
file DLL cho phép các chương trình bên ngoài dùng các hàm của chúng Các hàm API được tổ chức trong các DLL chính sau:
KERNEL32.DLL: Là DLL chính, đảm nhiệm KERNEL32.DLL
quản lý bộ nhớ, thưc hiện chức năng đa nhiệm và những hàm ảnh hưởng trực tiếp đến hoạt động của Windows
Trang 6USER32.DLL: Thư viện quản lý Windows Thư viện USER32.DLL
này chứa các hàm xử lý menu, định giờ, truyền tin, tập tin
và nhiều phần không được hiển thị khác của Windows
GDI32.DLL: Giao diện thiết bị đồ hoạ (Graphics GDI32.DLL
Device Interface) Thư viện này cung cấp các hàm vẽ trên màn hình, cũng như kiểm tra phần biểu mẫu nào cần vẽ lại
SHELL32.DLL: Thư viện quản lý hệ vỏ Windows , SHELL32.DLL
chứa các file icon của hệ thống
WINNM.DLL: Cung cấp các hàm multimedia để xử lý WINNM.DLL
âm thanh, nhạc, video thờI gian thực, lấy mẫu, v.v… Nó
là DLL 32 bit (Thư viện 16 bit tên là MMSYSTEM)
Trang 7III Các thành phần của Windows API
Khi nói đến Windows API, người ta thường hay nghĩ ngay đến các hàm Nhưng thực ra ra, các hàm cũng chỉ là một thành phần của Windows API Sau đây là danh sách các đối tượng tạo nên Windows API:
Các hàm (function): Như đã đề cập, các hàm chính là
hạt nhân của Window API Chúng là những mã lệnh thực
sự để hoàn thành các công việc khác nhau Chúng được chứa trong các DLL và có thể được truy xuất một cách
dễ dàng bởi các chương trình trên windows
Trang 8 Cấu trúc (structure): là sự kết hợp của nhiều biến
riêng biệt, thường được dùng để nhóm các thông tin
có liên quan với nhau thành một nhóm Nhiều hàm API đòi hỏi một cấu trúc phải được truyền cho chúng
để có thể vận chuyển một lượng lớn thông tin mà không cần phải dùng quá nhiều đối số trong hàm Mặc dù những cấu trúc này được dùng trong các hàm API, chương trình của bạn vẩn có thể tự định nghĩa chúng (đối với Visual Basic hầu như phải tự định nghĩa lại cấu trúc)
Trang 9 Các hằng được đặt tên (named constant): các
hằng được đặt tên là một cách thức thuận lợi để tham chiếu đến các mã số khó nhớ (ví dụ: mã quét của bàn phím chẳng hạn) Đôi khi các hằng được dùng như là các cờ Cũng như với cấu trúc, các hằng phải được định nghĩa rõ ràng trong chương trình của bạn (Code Visual Basic)
Trang 10 Các hàm gọi lại (callback function): về khái
niệm thì các hàm callback ngược với các hàm API Một hàm callback được định nghĩa hoàn toàn trong chương trình của bạn Sau đó hàm này sẽ được một hàm API khác gọi khi nó thực thi một tác vụ Các hàm callback cung cấp một cách thức để chương trình của bạn có thể can thiệp trực tiếp vào tác vụ đó Nó tương tự như con trỏ (pointer function) trong C/C++ Trong Visual Basic các thủ tục xử lý sự kiện của bạn
là một hình dung dễ nhất về callback function
Trang 11IV Khai Báo Hàm Trong Windows API
Trước khi sử dụng một hàm API trong VB thì bạn phải
khai báo trước Việc khai báo nhằm mục đích để VB biết cách gọi các hàm này ở đâu, các đối số là gì và kiểu dữ liệ trả về nếu có Cấu trúc khai báo này cũng giống như thủ
tục khai báo bình thường trong VB nhưng có nhiều thành phần hơn Cụ thể cú pháp như sau:
Khai báo cho thủ tục Sub không có giá trị trả về:
[ Public | Private ] Declare Sub name Lib
“lib_name” [Alias “alias_name”] [([arglist])]
Trang 12 Khai báo cho thủ tục Function có giá trị trả về:
[ Public | Private ] Declare Function name Lib
“lib_name” [Alias “alias_name”] [([arglist])] [As type]
Trong đó:
Public | Private : Từ khóa chỉ định phạm vi sử dụng của hàm.
name: Tên của hàm API cần gọi.
lib_name: Tên thư viện DLL chứa hàm.( có dấu “” )
alias_name: Tên bí danh của hàm trong file DLL ( có dấu “” )
arglist: Danh sách các đối số.
As type: kiểu dữ liệu trả về của Function.
Trang 13Danh sách các đối số (Arglist): Xác định có bao nhiêu đối
số và kiểu tương ứng của mỗi đối số được truyền cho hàm.Cú pháp như sau:
[{ ByVal | ByRef }] name As data_type, …
Trong đó:
ByVal | ByRef: từ khóa kiểu truyền.
name: Tên đối số.
data_type: kiểu dữ liệu trả về của đối.
- Kiểu ByVal dùng cho String.
- Kiểu ByRef dùng cho cấu trúc(structure) ,mảng(array)
Trang 14 Ví dụ: Tạo cửa sổ nhấp nháy.
1 Private Declare Function FlashWindow Lib "user32" (ByVal hWnd As Long, ByVal bInvert As Long) As Long
2 Private Sub Timer1_Timer()
3 Dim luu As Long
4 luu = FlashWindow(Form1.hWnd, True)
5 End Sub
Ví dụ: Hạ một cửa sổ đang mở xuống thanh Start
Trang 151 Private Declare Function FindWindow Lib "user32" Alias
"FindWindowA" (ByVal lpClassName As String, ByVal
lpWindowName As String) As Long
2 Private Declare Function CloseWindow Lib "user32" (ByVal hwnd As Long) As Long
3 Private Sub Command1_Click()
4 Dim cuaso As Long
5 aHwnd = FindWindow(vbNullString, "My Computer")
6 If aHwnd <> 0 Then
7 CloseWindow cuaso
8 MsgBox “Da ha xuong"
9 Else
10 MsgBox “Cua so nay khong co !"
11 End If
12.End Sub
Trang 16LOGO
Thanks You !
Tài liệu tham khảo:
Internet.