1

在下面的代码中,

using System.Runtime.InteropServices;
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);

我搜索了 user32.dll 的“mouse_event”函数,得到了这个。导入 user32.dll 是否等同于引用Win32 API,使所述文档成为其他函数及其参数信息的有效资源?为什么“c#”中的“user32.dll”会带有在其他地方一致称为“WINAPI”或“WIN32”的函数名称?

4

1 回答 1

3

微软所说的“Win32 API”是windows操作系统的接口。与操作系统的任何交互(创建窗口、打开文件、访问网络等)都需要通过任何这些有据可查的函数调用。许多 C# 函数实际上是这些操作系统函数的包装器实现。一些更具体的方法虽然没有 C# 等效项,但您可以使用代码作为您提供的方法(使用 [DllImport] 属性)来访问它们。

由于遗留原因,Win32 API 主要由三个文件组成:kernel32.dll(文件 io/synchronisations)gdi32.dll(用户界面)和 user32.dll(更多用户界面)。这三个库几乎包含了构成该 API 的所有函数。随着时间的推移添加并用于特定目的的其他库。

(注意:dll 本身不再做太多事情。在当前的实现中,它们只是其他库的包装器,但从应用程序的角度来看,这并不重要)

于 2018-02-16T09:01:37.047 回答