API (Application Programming Interface) is a set of commands, which interfaces the programs with the processors. The most commonly used set of external procedures are those that make up Microsoft Windows itself. The Windows API contains thousands of functions, structures, and constants that you can declare and use in your projects. Those functions are written in the C language, however, so they must be declared before you can use them. The declarations for DLL procedures can become fairly complex. Specifically to C# it is more complex than VB. You can use API vIEwer tool to get API function declaration but you have to keep in mind the type of parameter which is different in C#.
Most of the advanced languages support API programming. The Microsoft Foundation Class Library (MFC) framework encapsulates a large portion of the Win32 (API). ODBC API Functions are useful for performing fast operations on database. With API your application can request lower-level services to perform on computer's Operating system. As API supports thousands of functionality from simple Message Box to Encryption or Remote computing, developers should know how to implement API in their program.
API has many types depending on OS, processor and functionality.
API有許多類型,(針對不同的操作系統、處理器…………)
OS specific API: 操作系統特有API:
Each operating system has common set of API's and some special e.g. Windows NT supports MS-DOS, Win16, Win32, POSIX (Portable Operating System Interface), OS/2 console API and Windows 95 supports MS-DOS, Win16 and Win32 APIs,
每種操作系統都有一套公用API和專有API。比如:Windows NT 支持MS-DOS, Win16, Win32, POSIX (便攜式操作系統接口),OS/2 console API ;同時Windows 95 supports MS-DOS, Win16 和Win32 API。
Win16 和 Win32 API: Win16 is an API created for 16-bit processor and relies on 16 bit values. It has platform independent nature e.g. you can tIE Win16 programs to MS-DOS feature like TSR programs.
Win32 is an API created for 32-bit processor and relIEs on 32 bit values. It is portable to any Operating system, wide range of processors and platform independent nature.
WIN32 是基於32位的處理器,並使用32位的值。他可用於任何操作系統,它的使用范圍更廣。
Win32 API has 32 prefix after the library name e.g. KERNEL32, USER32 etc?
Win32 API的DLL一般都具有32的後綴,比如:KERNEL32, USER32等。
All APIs are implemented using 3 LibrarIEs.
所有的API都在下面3個DLL中實現的。
Kernel User GDI
1. KERNEL It is the library named KERNEL32.DLL, which supports capabilitIEs that are associated with OS such as
它的庫名是:KERNEL32.DLL,它是操作系統管理的API集
Process loading. 加載進程 Context switching. File I/O. 文件操作 Memory management. 內存管理 e.g. The GlobalMemoryStatus function obtains information about the system's current usage of both physical and virtual memory
比如:GlobalMemoryStatus 函數獲得目前系統物理虛擬內存的使用信息。
2. USER This is the library named "USER32.DLL" in Win32.
在WIN32下,它的庫名是 USER32.DLL
This allows managing the entire user interfaces such as
它管理全部的用戶界面,比如:
Windows 窗口 Menus 菜單 Dialog Boxes 對話框 Icons etc., 圖標等 e.g. The DrawIcon function draws an icon or cursor into the specifIEd device context.
比如:DrawIcon 畫一個圖標在指定的設備上。
3. GDI (Graphical Device Interface) This is the library named "GDI32.dll" in Win32. It is Graphic output library. Using GDI Windows draws Windows, menus and dialog boxes.
這個DLL是GDI32.dll,它負責圖像的輸出,使用GDI繪出窗口,菜單,對話框
It can create Graphical Output. 輸出圖像 It can also use for storing graphical images. 存儲圖像 e.g. The CreateBitmap function creates a bitmap with the specifIEd width, height, and color format (color planes and bits-per-pixel).
比如:CreateBitmap 函數創建一個指定寬度、高度和顏色格式的位圖。
C# and API: Implementing API in C# is tuff job for beginners. Before implementing API you should know how to implement structure in C#, type conversion, safe/unsafe code, managed/unmanaged code and lots more.
Before implementing complex API we will start with simple MessageBox API. To implement code for MessageBox API open new C# project and add one button. When button gets clicked the code will display Message Box.
[DllImport("User32.dll")] public static extern int MessageBox(int h, string m, string c, int type);
Where DllImport attribute used for calling method from unmanaged code. "User32.dll" indicates library name. DllImport attribute specifies the dll location that contains the implementation of an extern method. The static modifier used to declare a static member, which belongs to the type itself rather than to a specific object, extern is used to indicate that the method is implemented externally. A method that is decorated with the DllImport attribute must have the extern modifIEr.
MessageBox is function name, which returns int and takes 4 parameters as shown in declaration.
MessageBox 是一個漢數名,帶四個參數返回一個int型值。
Many API uses structure to pass and retrIEve values, as it is less expensive. It also uses constant data type for passing constant data and simple data type for passing Built-in data type as seen in previous declaration of MessageBox function.
Using structure 使用結構 Working with API, which uses complex structure or structure in structure, is somewhat complex than using simple API. But once you understand the implementation then whole API world is yours.
API中經常使用復雜的結構。不過一旦你明白了他們,將是很簡單的。
In next example we will use GetSystemInfo API which returns information about the current system.