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); } }
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/241335.html