c# - msdn 所说的 "WinApi"是 user32.dll 吗?

标签 c# c++ user32 interopservices

在下面的代码中,

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);

我用 google 搜索了 user32.dll 的“mouse_event”函数,得到了 this . 导入 user32.dll 等同于引用 Win32 API ,使所述文档成为其他功能及其参数信息的有效资源?为什么“user32.dll”在“c# 中具有在其他地方始终称为“WINAPI”或“WIN32”的函数名称?

最佳答案

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

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

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

关于c# - msdn 所说的 "WinApi"是 user32.dll 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48823107/

相关文章:

c# - 我如何计算 Hot observables?

c# - 如何在 XNA 中实现 Worms 风格的可破坏地形?

c# - 编程多个自定义剪贴板,使用 Windows 剪贴板 - 很少有并发症

c++ - MoveWindow()、跳过、闪避或绕过消息传递?

C++ 模板和继承

c# - 如何关闭窗口的 WS_CAPTION 样式(使用 user32.dll)?

c# - 如何获取目录中的文件列表

c# - 事件目录的角色安全

c++ - 如何并行化将矩阵的行随机复制到内存中的另一个矩阵的过程?

c++ - 如何在 Windows 中获取当前登录用户的域?