C#学习笔记:调用Win32 API函数

Win32函数是基于C语言编写的,包含在系统目录下的.dll的文件中,以导出函数的形式对外公开。例如,用C语言编写以下函数:

extern "C" _declspec(dllexport) int Add(int x, int y);

Add函数包含两个int类型的参数——x和y,返回值的类型为int。使用C++关键字dllexport指示该函数可以从.dll文件中导出(可被其他程序调用),加上extern "C"主要是为了函数的名字在导出后不会被编译器修改。

假设Add函数包含在a.dll文件中,可以使用以下代码将其导入到.NET项目中:

[DllImport("a.dll")]
public static extern int Add(int x, int y);

或者:

[DllImport("a.dll")]
public static extern short Add(short x ,short y);

每个Win32 API函数在MSDN文档中都能找到其原型声明,以及位于哪个.dll文件中。因此,在导入API函数时,现在MSDN文档中找到该函数的声明,然后分析它的参数和返回值,并且获知函数位于哪个.dll文件中,最后就可以将其导入为托管代码了。

MSDN文档地址:
https://docs.microsoft.com/zh-cn/windows/desktop/apiindex/windows-api-list

但是,很多情况下,编写导入API函数的代码比较吃力,尤其对初学者而言。我们可以借助别人提供的资源来提高自己编写代码的效率。PINVOKE.NET(http://www.pinvoke.net/ )网站收录了许多API函数的导入代码,提供了VB.NET和C#两种语言版本。当需要导入某个API函数时,可以进入该网站,然后在搜索框中输入函数的名字,然后单击右边的搜索按钮,就能找到函数相关的代码,可以直接将代码复制到自己的项目中使用。(如图所示)
C#学习笔记:调用Win32 API函数_第1张图片

你可能感兴趣的:(C#学习笔记)