Sử dụng hàm API trong C#  
 

(Post 28/04/2006) API (Application Programming Interface) là cách thức dùng để gọi hàm bên trong thư viện liên kết động DLL thực hiện các tác vụ Windows như tạo và huỷ các cửa sổ ứng dụng, các control và menu; truy xuất các dịch vụ hệ thống màn hình, bàn phím và chuột, máy in và nhiều chức năng khác. Các hàm API thường được viết bằng C++.

Chúng ta đã khá quen thuộc với việc dùng hàm API trong các ngôn ngữ lập trình như Visual Basic, Visual Foxpro, Visual C++, Delphi.... Trong bài viết này tôi muốn giới thiệu cách gọi hàm API trong họ nhà .NET, ngôn ngữ đại diện là C#.

Để khai báo API trong C#, chúng ta sử dụng cú pháp sau:

using System.Runtime.InteropServices;
....
[DllImport(DLL_FileName) ]
[public|private] static extern Return_Type Function_Name([type parameter,... ]);

Chúng ta bắt đầu với một hàm API đơn giản là hàm MessageBox trong C#. Mở một form C# mới, thêm vào đó một button. Kế tiếp chúng ta thêm vào không gian tên (namespace):

using System.Runtime.InteropServices;

Sau đó khai báo thêm dòng

[DllImport('User32.dll')]
public static extern int MessageBox(int a, string b, string c, int type);

Ở đây, thuộc tính DllImport được sử dụng để gọi hàm từ thư viện User32.dll, User32.dll là tên thư viện cần gọi, MessageBox là tên hàm trả về kiểu Int.

Thêm vào mã nguồn cho sự kiện Click của button


protected void button1_Click(object sender, System.EventArgs e)
{
	MessageBox(0,'API Message Box','API Demo', 0);
}
	  

Biên dịch và thực hiện project này, sau khi nhấn chuột trên button bạn sẽ thấy một hộp thoại được sử dụng hàm API. Sau đó bạn thay đổi tham số thứ 4 trong hàm MessageBox, bạn sẽ thấy sự khác biệt như thế nào.

Sử dụng các API có cấu trúc, hoặc cấu trúc lồng trong cấu trúc sẽ phức tạp hơn. Nhưng một khi bạn đã hiểu được cách thực hiện của các hàm API thì toàn bộ thế giới API sẽ nằm trong tay bạn.

Trong ví dụ tiếp theo, chúng ta sẽ sử dụng hàm GetSystemInfo API, hàm này sẽ trả về thông tin về hệ thống hiện tại. Trước tiên bạn mở một form C# mới và thêm một nút (button) trên form. Chuyển sang phần nhập code:

using System.Runtime.InteropServices;

//Khai báo cấu trúc với những tham số của GetSystemInfo.

[StructLayout(LayoutKind.Sequential)]

public struc SYSTEM_INFO

{

	public uint dwOemId;

	public uint dwPageSize;

	public uint lpMinimumApplicationAddress;

	public uint lpMaximumApplicationAddress;

	public uint dwActiveProcessorMask;

	public uint dwNumberOfProcessors;

	public uint dwProcessorType;

	public uint dwAllocationGranulariry;

	public uint dwProcessorLevel;

	public uint dwProcessorRevision;

}

//Khai báo hàm API:

[DllImport('kernel32')]

public static extern void GetSystemInfo(ref SYSTEM_INFO pSI); 

//Trong sự kiện Click của button thêm đoạn code

protected void button1_Click(object sender, System.EventArgs e)

{
	try
	{
		SYSTEM_INFO pSI = new SYSTEM_INFO();
		GetSystemInfo(ref pSI);
		e.g.listBox1.InsertItem 
		  (0,pSI.dwActiveProcessorMask.ToString());
	}
	catch(Exception er)
	{
		MessageBox.Show (er.Message);
	}
}

Bạn có thể tìm thấy danh sách các hàm API trong API Text Viewer đi kèm theo bộ Visual Studio 6, hoặc các tài liệu C++.NET cũng cho ta biết cách sử dụng các hàm API.

Cao Thanh Sơn
ctsdhv@yahoo.com
(theo PC World)


 
 

 
     
 
Công nghệ khác:


Thiết kế giao diện cho phần mềmUSB Flashdrive nhận dạng vân tay
Cách dùng Google hiệu quảCryptography – Mật mã học
Distributed computing Part 2 - Distributed Computing Application CharacteristicsFacade Pattern - mẫu thiết kế giao diện chung
  Xem tiếp    
 
Lịch khai giảng của hệ thống
 
Ngày
Giờ
T.Tâm
TP Hồ Chí Minh
Hà Nội
 
   
New ADSE - Nhấn vào để xem chi tiết
Mừng Sinh Nhật Lần Thứ 20 FPT-APTECH
Nhấn vào để xem chi tiết
Bảng Vàng Thành Tích Sinh Viên FPT APTECH - Nhấn vào để xem chi tiết
Cập nhật công nghệ miễn phí cho tất cả cựu sinh viên APTECH toàn quốc
Tiết Thực Vì Cộng Đồng
Hội Thảo CNTT
Những khoảnh khắc không phai của Thầy Trò FPT-APTECH Ngày 20-11