1. Trang chủ
  2. » Luận Văn - Báo Cáo

CÁC THƯ VIỆN API, LẬP TRÌNH SỬ DỤNG API

65 2,7K 5

Đ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 65
Dung lượng 530,98 KB

Nội dung

Chức năng của Windows API  Nói một cách cơ bản, Windows API quản lý mọi vấn đề làm ra Windows, bao gồm cả những vấn đề như truy xuất đĩa, cấp phát bộ nhớ, hiển thị trên màn hình…  Win

Trang 1

Thư viện API, lập trình API

1

Trang 2

CÁC THƯ VIỆN API, LẬP

TRÌNH SỬ DỤNG API

Giáo viên bộ môn: Phạm Văn Hưởng Sinh viên thực hiện:

1.Đỗ Khắc Tâm 2.Nguyễn Xuân Minh 3.Lê Văn Sơn

4.Nguyễn Thị Xuân

Thư viện API, lập trình API

2

Trang 3

CÁC THƯ VIỆN API, LẬP TRÌNH

Trang 4

Tổng quan về API

Thư viện API, lập trình API

4

Trang 5

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

Thư viện API, lập trình API

5

Trang 6

Tổng quan về API

2 Chức năng của Windows API

 Nói một cách cơ bản, Windows API quản lý mọi vấn đề làm ra Windows, bao gồm cả những vấn đề như truy xuất đĩa, cấp phát bộ nhớ, hiển thị trên màn hình…

 Windows API 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, Choose Font, …), các thiết lập hệ điều hành, các sự kiện, …

Thư viện API, lập trình API

6

Trang 7

Tổng quan về API

3 Windows API nằm ở đâu?

 Hầu hết các hàm Windows API được chứa trong các file *.DLL (Dynamic Link Library ) chứa trong thư mục hệ thống của Windows (thường là

Trang 8

Tổng quan về API

4 Các thành phần của windows API

Các hàm (function): Các hàm chính là hạt nhân của Window API Là các đoạn mã lệnh để

hoàn thành các công việc khác nhau, chúng được chứa trong các file dll

Cấu trúc (structure): Là sự kết hợp của nhiều biến riêng biệt, nhóm các thông tin liên quan

đến nhau thành một nhóm.

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) 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ác hàm gọi lại (callback function): Được định nghĩa trong chương trình và được API gọi

lại khi thực thi một tác vụ Nó tương tự như con trỏ hàm (pointer function) trong C/C++.

Thư viện API, lập trình API

8

Trang 9

Tổng quan về API

5 Cách dùng các hàm API

Cách khai báo

 Khai báo cho hàm có trị trả về

Declare Function < tên hàm API > Lib < Tên thư viện > [Alias < tên bí danh >] ([danh sách các đối số]) as < kiểu dữliệu >

 Khai báo cho các thủ tục:

Declare Sub < tên hàm API > Lib < tên thư viện > [Alias < tên bí danh >] ([danh sách các đối số])

 Ví dụ Hàm API "AddfontResource " sau đây được đặt lại bí danh là AddFont cho ngắn gọn mỗi lần gọi hàm:

Declare Function AddFontResource Lib "gdi32" Alias "AddFont" (ByVal lpFileName As

String) As Long

Thư viện API, lập trình API

9

Trang 10

Tổng quan về API

6 Các thư viện API phổ biến

các API bao gồm bảo mật và các lời gọi Registry.

Gdi32.dll: Các hàm giao tiếp thiết bị đồ họa

Thư viện API, lập trình API

10

Trang 11

Bốn thư viện chính của Window API

quản lý cửa sổ, cho người dùng nhập dữ liệu.

thiết.

nhiệm của các chương trình đang chạy.

Thư viện API, lập trình API

11

Trang 12

1 Định nghĩa

- User32.dll là một trong các thư

viện liên kết động quan trọng của hệ điều hành Window.

- User32.dll chứa các hàm cơ bản liên

quan đến việc quản lý cửa sổ, cho người dùng nhập dữ liệu…

- User32.dll là một trong những thành phần rất quan trọng đối với hoạt động của Windows Nếu tập tin này bị xóa hoặc loại bỏ, hệ thống sẽ không làm việc.

Thư viện API, lập trình API

12

Trang 13

2 Chức năng của User32.dll

- User32.dll thực hiện các thành phần người dùng Windows tạo

ra và quản lý toàn bộ các yếu tố tiêu chuẩn của giao diện người dùng Windows, chẳng hạn như Desktop, cửa sổ và menu.

- Nó cho phép các chương trình thực hiện một giao diện đồ hoạ người dùng(GUI) phù hợp với Windows.

Thư viện API, lập trình API

13

Trang 14

3 Hoạt động

- Chương trình gọi các hàm từ Windows USER để thực hiện các hoạt động như:

+ tạo và quản lý các cửa sổ + cửa sổ nhận tin nhắn (chủ yếu là người sử dụng đầu vào như các sự kiện chuột

và bàn phím, cũng như các thông báo từ hệ điều hành) + hiển thị văn bản trong một cửa sổ

Trang 16

_In_ int x, _In_ int y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMenu hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam );

Thư viện API, lập trình API

16

Trang 17

4 Một số hàm tiêu biểu có trong User32.dll 4.1 CreateWindow

Các tham số:

lpClassName: Nếu lpClassName là một chuỗi, nó xác định tên lớp cửa sổ

lpWindowName: tên cửa sổ

dwStyle: kiểu cửa sổ được tạo ra

x: vị trí nằm ngang ban đầu của cửa sổ

y: vị trí thẳng đứng ban đầu của cửa sổ

nWidth: chiều rộng của cửa sổ

nHeight: chiều cao của cửa sổ

hWndParent: handle của cửa sổ

hMenu: xác định menu được sử dụng với cửa sổ

hInstance: một handle thể hiện các mô-đun được liên kết với cửa sổ

lpParam: một con trỏ trỏ tới một giá trị được truyền vào cửa sổ thông qua cấu trúc CREATESTRUCT.

Thư viện API, lập trình API

17

Trang 19

_In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_ BOOL bRepaint );

Thư viện API, lập trình API

19

Trang 20

4 Một số hàm tiêu biểu có trong User32.dll4.2 MoveWindow

Các tham số:

hWnd: handle của cửa sổ.

x: vị trí mới của phía bên trái cửa sổ

y: vị trí mới của phía trên cửa sổ

nHeight: chiều cao mới của cửa sổ

nWidth: chiều rộng mới của cửa sổ

bRepaint: Cho biết các cửa sổ sẽ được sơn lại Nếu tham số này là TRUE,

cửa sổ nhận được một thông điệp, Nếu tham số này là FALSE, không sơn lại bất cứ cửa sổ nào

Thư viện API, lập trình API

20

Trang 21

4 Một số hàm tiêu biểu có trong User32.dll

4.2 MoveWindow

Kiểu trả về: BOOL Nếu hàm thực hiện thành công, giá trị trả về khác không Ngược lại, giá trị trả về bằng không

Chức năng

Thay đổi kích thước và vị trí của một cửa sổ cho trước Thư viện API, lập trình API

21

Trang 22

Thư viện API, lập trình API

22

Trang 23

Thu nhỏ(nhưng không phá huỷ) cửa sổ được chỉ định.

Thư viện API, lập trình API

23

Trang 24

Thư viện API, lập trình API

24

Trang 25

idThread: định danh cho các cửa sổ hoặc chủ đề muốn lấy thông tin.

lpgui: Một con trỏ trỏ tới một cấu trúc GUITHREADINFO để tiếp nhận thông tin mô tả các

chủ đề hoặc cửa sổ được chỉ định.

Kiểu trả về: BOOL

Chức năng: Lấy thông tin về các cửa sổ đang hoạt động hoặc một GUI được chỉ định

Thư viện API, lập trình API

25

Trang 26

- Các tham số:

 hWnd: handle của cửa sổ được chỉ định.

 bEnable: nếu là True thì cửa sổ sẽ được kích hoạt Còn False, cửa sổ sẽ bị vô hiệu hoá(đối với chuột và bàn phím).

- Kiểu trả về: INT

Nếu bằng 0, cửa sổ hoặc control sẽ bị disable Nếu khác 0, cửa sổ sẽ được enable.

- Chức năng:

Cho phép hoặc vô hiệu hoá chuột và bàn phím đối với cửa sổ hoặc control được chỉ định Khi đầu vào

bị vô hiệu hóa, cửa sổ không nhận được đầu vào như click chuột và phím bấm Khi đầu vào được kích hoạt, cửa sổ nhận được tất cả đầu vào

Thư viện API, lập trình API

26

Trang 28

 Ntdll.dll ánh xạ các yêu cầu API tới dịch vụ Kernel tương ứng thông qua 1 cơ chế được gọi là system service dispatching, điều khiển sự chuyển đổi từ User mode sang Kernel mode thông qua 1 xử lý đặc biệt, có thể là 1 ngắt

 Hình vẽ sau minh họa quá trình chuyển một lời gọi hàm từ User mode vào Kernel mode:

Thư viện API, lập trình API

28

Trang 29

Thư viện API, lập trình API

29

Trang 30

 Ntdll.dll chủ yếu liên quan đến các tác vụ của hệ thống

Thư viện API, lập trình API

30

Trang 31

2 Các hàm cơ bản

2.1 NTClose

Chức năng:đóng các handle cụ thể, hàm NTClose được thay thế bằng hàm

CloseHandle trong kernel32.dll

Khai báo:

NTSTATUS WINAPI NtClose(

_In_ HANDLE Handle );

Các tham số:

Handle [in]: Handle bị đóng

Kiểu trả về: NTSTATUS

STATUS_SUCCESS: Handle đã được đóng

Thư viện API, lập trình API

31

Trang 32

2 Các hàm cơ bản2.2 NtOpenThread

Chức năng: mở ra một đối tượng thread handle, phải sử dụng hàm

LoadLibrary và GetProcAddress để tự động liên kết đến Ntdll.dll

Khai báo:

NTSTATUS NtOpenThread(

_Out_ PHANDLE ThreadHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ PCLIENT_ID ClientId

);

Thư viện API, lập trình API

32

Trang 33

ObjectAttributes [in]: Trỏ tới cấu trúc OBJECT_ATTRIBUTES, xác định các thuộc tính có thể

được áp dụng cho các đối tượng ObjectName của cấu trúc này phải là NULL.

ClientId [in]: Trỏ tới cấu trúc CLIENT_ID để xác định các thread cần được mở ra.

Kiểu trả về:

NTSTATUS

Thư viện API, lập trình API

33

Trang 34

_In_ ULONG ObjectInformationLength, _Out_opt_ PULONG ReturnLength );

Thư viện API, lập trình API

34

Trang 35

ObjectBasicInformation: Trả về một cấu trúc PUBLIC_OBJECT_BASIC_INFORMATION

ObjectTypeInformation: Trả về một cấu trúc PUBLIC_OBJECT_TYPE_INFORMATION

Thư viện API, lập trình API

35

Trang 37

Thư viện API, lập trình API

37

Trang 38

2 Các hàm cơ bản

2.4 NTQueryAttributesFile

ObjectAttributes [in]: Trỏ tới một cấu trúc OBJECT_ATTRIBUTES cung

cấp các thuộc tính được sử dụng cho các fileObject

FileInformation [out]: Trỏ tới một cấu trúc FILE_BASIC_INFORMATION

để nhận được các thông tin thuộc tính returned file

Kiểu trả về:

NTSTATUS

Thư viện API, lập trình API

38

Trang 39

 GDI là thư viện cung cấp các hàm(functions) và các cấu trúc dữ liệu (structures) cần thiết để ứng dụng tạo ra những kết xuất dưới dạng đồ họa (hiển thị lên màn hình, in ra máy in,…)

 Các hàm GDI cho phép vẽ đường thẳng,đường cong, các hình đa giác, xuất ký tự,hiển thị ảnh bitmap, in ấn,…

 GDI không tương tác trực tiếp với thiết bị phần cứng, mà thông qua các driver

Thư viện API, lập trình API

39

Trang 41

 Các thông số này chi phối những thao tác vẽ lên thiết bị tại thời điểm thực hiện

 Mỗi thiết bị được đặc trưng bởi 1 cấu trúc DC

 Ứng dụng thực hiện các thao tác vẽ lên thiết bị thông qua DC của thiết bị đó

Thư viện API, lập trình API

41

Trang 43

 Các loại DC:

 Display DC: sử dụng trong các thao tác vẽ lên màn hình/cửa sổ

 Printer DC: sử dụng để kết xuất dữ liệu đồ họara máy in

 Memory DC: tương ứng với thiết bị “logic”,thường dùng để “chuẩn bị”

dữ liệu trước khi hiển thị ra thiết bị vật lý

Thư viện API, lập trình API

43

Trang 45

3.Một số hàm

3.1 ArcSegment function:vẽ hình elip

Trang 46

3.Một số hàm

3.1 ArcSegment function:vẽ hình elip

Tham số

point [in, ref]: Type: const D2D1_POINT_2F ( Điểm cuối của vòng cung.)

size [in, ref] Type: const D2D1_SIZE_F (X bán kính và y-bán kính của vòng cung.)

rotationAngle [in] Cho số của độ mà hình elip được xoay tương đối so với hệ tọa độ hiện

hành.

sweepDirection [in] Type: D2D1_SWEEP_DIRECTION Một giá trị chỉ định việc quét

hồ quang cùng chiều kim đồng hồ hoặc ngược chiều kim đồng.

arcSize [in] Type: D2D1_ARC_SIZE Một giá trị chỉ định cho dù vòng cung lớn hơn

180 độ.

Thư viện API, lập trình API

46

Trang 47

3.Một số hàm

3.3: WICCreateBitmapFromSection function

Chức năng: Trả về một IWICBitmapSource được hỗ trợ bởi các điểm ảnh của một thiết bị đồ

họa giao diện Windows (GDI) phần xử lý.

_In_ UINT stride, _In_ UINT offset,

_Out_ IWICBitmap ** pIBitmap );

Thư viện API, lập trình API

47

Trang 48

3.Một số hàm

3.3: WICCreateBitmapFromSection function

Tham số:

width [in] Chiều rộng của các điểm ảnh bitmap.

height [in] Chiều cao của các điểm ảnh bitmap.

pixelFormat Định dạng pixel của bitmap.

hSection [in] Phần xử lý Đây là một tập tin bản đồ đối tượng khiển trả về từ

CreateFileMapping chức năng

stride [in] Số lượng byte của mỗi scanline

offset [in] Bù đắp vào phần này.

pIBitmap [out] Một con trỏ tiếp nhận bitmap.

Thư viện API, lập trình API

48

Trang 49

 Là các thư viện liên kết động trong hệ điều hành.

 Nó thực hiện các công việc quản lí bộ nhớ, hoạt động vào ra, hoạt động liên quan đến tiến trình và ngắt.

 Khi Windows khởi động, nó được nạp vào một không gian bộ nhớ riêng mà các ứng dụng khác không thể sử dụng được.

Thư viện API, lập trình API

49

Trang 50

_In_ DWORD dwFlagsAndAttributes, _In_opt_ HANDLE hTemplateFile);

Thư viện API, lập trình API

50

Trang 51

2 Một số hàm cơ bản

2.1 CreateFile.

• lpFileName [in]: tên của file hoặc thiết bị được tạo hoặc mở

• dwDesiredAccess [in] yêu cầu truy cập đến file hoặc thiết bị

• dwShareMode [in] : chế độ chia sẻ yêu cầu của file hoặc thiết bị

• dwCreationDisposition [in]:một hành động để đưa vào một tập tin hoặc thiết bị tồn tại hay không tồn tại

• dwFlagsAndAttributes [in] Thuộc tính file hoặc thiết bị và cờ, FILE_ATTRIBUTE_NORMAL là giá trị mặc định phổ biến nhất cho các tập tin

Thư viện API, lập trình API

51

Trang 52

BOOL WINAPI WriteFile(

_In_ HANDLE hFile, _In_ LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped

);

Thư viện API, lập trình API

52

Trang 53

2 Một số hàm cơ bản

2.2 WriteFile

Tham số:

• hFile [in]: một handle tới tập tin hoặc thiết bị vào ra.

• lpBuffer [in]: đâylà một nơi mà bộ đệm chứa dữ liệu đã được ghi lên file hoặc thiết

bị

• nNumberOfBytesToWrite [in]: số của file đã được ghi lên file hoặc thiết bị.

• lpNumberOfBytesWritten [out,optional]: một con trỏ tới một biến mà nhận số của các byte đã viết khi sử dụng tham số hFile đồng bộ

• lpOverlapped [in,out,optional.

Giá trị trả về:

 Nếu hàm này thành công, giá trị trả về là là nonzero (true).

 Nếu hàm bị lỗi hoặc là hoàn thiện đồng bộ thì giá trị trả về là zero.

Thư viện API, lập trình API

53

Trang 54

BOOL WINAPI CreateDirectory(

_In_ LPCTSTR lpPathName, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes);

Tham số:

• lpPathName [in]: đường dẫn của thư mục đã được tạo.

• lpSecurityAttibutes [in,optional]: một con trỏ tới hàm SECURITY_ATTRIBUTES

Giá trị trả về:

• Nếu hàm succeed, trả về giá trị nonzero.

• Nếu làm fail, trả về giá trị là zero.

Thư viện API, lập trình API

54

Trang 55

Tham số:

 lpNewFileName [in] tên của file mới.

 bFaillExists [in]:true, false

Giá trị trả về:Nếu hàm thành công, giá trị trả về là nonzero,ngược lại zero.

Thư viện API, lập trình API

55

Trang 56

_In_ DWORD dwCreationFlags, _In_opt_ LPVOID lpEnvironment, _In_opt_ LPCTSTR lpCurrentDirectory, _In_ LPSTARTUPINFO lpStartupInfo, _Out_ LPPROCESS_INFORMATION lpProcessInformation );

Thư viện API, lập trình API

56

Trang 57

2 Một số hàm cơ bản

2.5 CreateProcess.

Tham số:

lpApplicationName [in, optional]: Tên của các module được thực thi

lpCommandLine [in, out, optional] dòng lệnh được thực thi

lpProcessAttributes [in, optional] Một con trỏ tới cấu trúc

SECURITY_ATTRIBUTES quyết định chuyển điều khiển trả về cho các tiến trình mới.

bInheritHandles [in]

dwCreationFlags [in] các cờ để điều khiển thứ tự ưu tiên của các lớp và sự tạo tiến

trình

lpEnvironment [in, optional] Một con trỏ vào khối môi trường cho tiến trình mới.

Thư viện API, lập trình API

57

Trang 58

PROCESS_INFORMATION tiếp nhận thông tin nhận dạng về một tiến trình mới.

Giá trị trả về:

• Nếu thành công, giá trị trả về khác 0 Ngược lại giá trị trả về là 0

Thư viện API, lập trình API

58

Trang 59

BOOL WINAPI CreatePipe(

_Out_ PHANDLE hReadPipe, _Out_ PHANDLE hWritePipe, _In_opt_ LPSECURITY_ATTRIBUTES lpPipeAttributes, _In_ DWORD nSize);

Tham số:

Giá trị trả về: là khác 0 nếu thành công, bằng không nếu không thành cong

Thư viện API, lập trình API

59

Trang 60

 Giá trị trả về: hàm không có giá trị trả về.

Thư viện API, lập trình API

60

Trang 61

_tprintf(TEXT("Usage: %s <dir>\n"), argv[0]); return;

}

Thư viện API, lập trình API

61

Trang 62

KERNEL32.DLL//tao thu muc

if (!CreateDirectory(argv[1], NULL)) {

printf("CreateDirectory failed (%d)\n", GetLastError()); return;

} // bat dau tim kiem file van ban co trong thu muc day hSearch = FindFirstFile(TEXT("*.txt"), &FileData);

if (hSearch == INVALID_HANDLE_VALUE) {

printf("No text files found.\n");

return;

} //copy file while (!fFinished) { StringCchPrintf(szNewPath, sizeof(szNewPath)/sizeof(szNewPath[0]), TEXT("%s\\%s"), argv[1], FileData.cFileName);

Thư viện API, lập trình API

62

Ngày đăng: 11/04/2015, 13:59

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w