C#调用非托管代码Windows API

Windows API微软窗口应用程序接口,因为它,开发者才能调用Windows系统接口,实现各种功能及操作。Windows API在Windows系统中以非托管代码形式存在,包含在系统目录下的.dll的文件中,以导出函数的形式对外公开。

由于.net框架编写不够完善,很多功能我们需要自行调用Windows API才能实现,因此,如何调用非托管代码的Windows API是一项必须会的技能,下面一起来学习下吧。

.net中System.Runtime.InteropServices类提供了使用非托管代码的功能,所以在程序开始前引用之。

using System.Runtime.InteropServices;

然后使用DllImport关键字引入dll文件,并导入需要使用的函数。

[DllImport("User32.dll", EntryPoint = "MessageBox")]
public static extern int MessageBoxapi(int h, string m, string c, int type);

注意:导入的函数名称要与dll文件中的名称一致,否则需要EntryPoint属性指定新名称。

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

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

C#实例:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("User32.dll", EntryPoint = "MessageBox")]
public static extern int MessageBoxapi(int h, string m, string c, int type);

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(".net messagebox");
}

private void button2_Click(object sender, EventArgs e)
{
MessageBoxapi(0, "MessageBoxapi", "winapi", 5);
}

}
C#调用非托管代码Windows API

C#调用非托管代码Windows API

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/241335.html

(0)
上一篇 2022年4月7日 00:32
下一篇 2022年4月7日 00:32

相关推荐

发表回复

登录后才能评论