每隔几个月,我就会发现自己需要从 C# 调用 Win32。虽然我已经做了十几次,但我通常忘记了确切的阴谋,所以我浏览了网络或旧代码并找出我需要什么 DllImport 语句等。
我一个人吗?
是否有一个认可的“Win32”类具有整个 Win32 API 的必要声明?好像应该有。也许我错过了一些东西。
您可能会发现http://www.pinvoke.net很有帮助。
此外,对于常见的 Win32 功能,您可以尝试P/Invoke Interop Assistant。
没有认可的 Win32 类,但http://www.pinvoke.net是这些东西的重要中心资源。
对于开源项目来说,这听起来是个好主意。
/em 戴上思考帽,然后运行到 pinvoke.net
就像每个人都说的那样,获得正确的 DllImport 语句很容易,但为了便于使用,我通常将我需要的 Win32 函数包装在 C# 类中并编译到我的核心帮助程序集中。所以下次我只是参考程序集。因此,如果我需要一些 Win32 函数,它很可能已经在我的帮助库中,如果不是我只是添加它。
此外,我将返回代码映射到异常,即如果 HResult 不为零,我会抛出异常,因此我的 C# 应用程序不需要知道 HResult 或返回代码。
您可以使用Reflector并搜索 Win32Native。它有一堆可用于 PInvoking 的定义。