• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

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

Các bài viết hướng dẫn về Visual Basic .NET và C#

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
onlysoft
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 330
Ngày tham gia: T.Tư 26/03/2008 6:32 pm
Đến từ: ONLYSOFT
Been thanked: 8 time

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

Gửi bàigửi bởi onlysoft » T.Tư 21/05/2008 8:05 am

Tên bài viết: Sử dụng hàm API trong C#
Tác giả: Sưu tầm
Cấp độ bài viết: Chưa đánh giá
Tóm tắt: Sử dụng hàm API trong C#


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 B-) , 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#. :D

Để 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):

Mã: Chọn hết

  1. using System.Runtime.InteropServices;

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

Mã: Chọn hết

  1. [DllImport('User32.dll')]
  2. 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

Mã: Chọn hết

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

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:

Mã: Chọn hết

  1. using System.Runtime.InteropServices;

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

Mã: Chọn hết

  1. [StructLayout(LayoutKind.Sequential)]
  2. public struc SYSTEM_INFO
  3. {
  4. public uint dwOemId;
  5. public uint dwPageSize;
  6. public uint lpMinimumApplicationAddress;
  7. public uint lpMaximumApplicationAddress;
  8. public uint dwActiveProcessorMask;
  9. public uint dwNumberOfProcessors;
  10. public uint dwProcessorType;
  11. public uint dwAllocationGranulariry;
  12. public uint dwProcessorLevel;
  13. public uint dwProcessorRevision;
  14. }
  15. //Khai báo hàm API:
  16. [DllImport('kernel32')]
  17. public static extern void GetSystemInfo(ref SYSTEM_INFO pSI);
  18. //Trong sự kiện Click của button thêm đoạn code
  19. protected void button1_Click (object sender, System.EventArgs e)
  20. {
  21.             try
  22.             {
  23.                         SYSTEM_INFO pSI = new SYSTEM_INFO();
  24.                         GetSystemInfo(ref pSI);
  25.  
  26.                         e.g.listBox1.InsertItem (0,pSI.dwActiveProcessorMask.ToString());:
  27.             }
  28.             catch(Exception er)
  29.             {
  30.                   MessageBox.Show (er.Message);
  31.             }
  32. }

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

Theo PcWorld VN ;))


:x Tin học là cuộc sống, Lập trình là người yêu, Vợ là computer :x
Tôi yêu tin học, Tin học lập trình, Để lập trình tôi dùng VB, Tôi là B-)nly

giongto35
Thành viên danh dự
Thành viên danh dự
Bài viết: 194
Ngày tham gia: T.Năm 19/04/2007 10:17 am
Đến từ: Đà Nẵng City
Been thanked: 1 time
Liên hệ:

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

Gửi bàigửi bởi giongto35 » T.Tư 21/05/2008 12:13 pm

ko bik có cái ghi sẵn ko cho tiện , như VB6 chứ C# đánh lại hơi bị khó
________________________________________________________________________________________________
. . . . . . . . . . . . .. .

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

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

Gửi bàigửi bởi anhtuyenbk » T.Tư 21/05/2008 12:28 pm

giongto35 đã viết:ko bik có cái ghi sẵn ko cho tiện , như VB6 chứ C# đánh lại hơi bị khó

Đợi mình viết cái Tool chuyển cho mà xài. :D :D nhưng chắc lâu đây vì nó ko có dễ >:) >:)
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

giongto35
Thành viên danh dự
Thành viên danh dự
Bài viết: 194
Ngày tham gia: T.Năm 19/04/2007 10:17 am
Đến từ: Đà Nẵng City
Been thanked: 1 time
Liên hệ:

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

Gửi bàigửi bởi giongto35 » T.Tư 21/05/2008 12:53 pm

oài , em định viết , anh viết thì mời :D . nhưng em nghĩ đâu có khó
________________________________________________________________________________________________
. . . . . . . . . . . . .. .

MrB
Thành viên tích cực
Thành viên tích cực
Bài viết: 158
Ngày tham gia: T.Tư 26/03/2008 7:03 pm
Been thanked: 1 time

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

Gửi bàigửi bởi MrB » T.Tư 21/05/2008 2:03 pm

Đã viết bằng .net thì không cần khai báo API vì hầu hết các hàm API đã được viết sẵn. Vì vậy không cần đến "cái ghi sẵn"(?) làm gì.

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

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

Gửi bàigửi bởi anhtuyenbk » T.Tư 21/05/2008 2:45 pm

Có những việc thì ngay cả Net cũng ko giải quyết được, vẫn phải nhờ đến API thôi. Do đó việc khai báo API là hoàn toàn cần thiết trong Net.
Chỉ cần dạo qua một vòng Codeproject là có thể thấy nó sử dụng API cũng rất nhiều :D :D
Đó là lý do tại sao các control cũng như Form vẫn còn thuộc tính Handle :)
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang


Quay về “[.NET] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách