eskysky
发布于 2024-11-27 / 17 阅读
0

C#调用非托管DLL函数

#C#

托管和非托管DLL的概念可以简单理解为使用C#、VB.NET等.NET语言编写的DLL为托管DLL,使用C、C++等非.NET语言编写的DLL为非托管DLL。

本文主要介绍非托管DLL的调用方式。

本文将创建一个Windows窗体项目,通过C#调用Windows系统中user32.dll内的函数,移动鼠标指针至屏幕左上角。

首先要知道DLL文件中需要调用函数的定义,通过查阅资料可知,user32.dll中存在函数:

BOOL SetCursorPos(int X, int Y);

该函数的作用是将光标移动到指定的屏幕坐标。

然后需要在C#项目中,参照上述函数定义方法:

private static extern int SetCursorPos(int x, int y);

对该方法加上DllImport特性,并指定要调用的DLL名称:

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int SetCursorPos(int x, int y);

在窗体中创建一个按钮button1,并在按钮事件中调用SetCursorPos方法,移动鼠标指针至(0,0)坐标:

private void button1_Click(object sender, EventArgs e)
{
    SetCursorPos(0, 0);
}

启动项目,点击按钮,就可以看到程序已经成功调用了user32.dll中的SetCursorPos函数,移动鼠标指针到屏幕左上角了。