8

每隔几个月,我就会发现自己需要从 C# 调用 Win32。虽然我已经做了十几次,但我通常忘记了确切的阴谋,所以我浏览了网络或旧代码并找出我需要什么 DllImport 语句等。

我一个人吗?

是否有一个认可的“Win32”类具有整个 Win32 API 的必要声明?好像应该有。也许我错过了一些东西。

4

6 回答 6

8

您可能会发现http://www.pinvoke.net很有帮助。

此外,对于常见的 Win32 功能,您可以尝试P/Invoke Interop Assistant

于 2009-10-21T02:32:08.567 回答
1

没有认可的 Win32 类,但http://www.pinvoke.net是这些东西的重要中心资源。

于 2009-10-21T02:32:03.420 回答
1

对于开源项目来说,这听起来是个好主意。

/em 戴上思考帽,然后运行到 pinvoke.net

于 2009-10-21T02:34:39.497 回答
1

就像每个人都说的那样,获得正确的 DllImport 语句很容易,但为了便于使用,我通常将我需要的 Win32 函数包装在 C# 类中并编译到我的核心帮助程序集中。所以下次我只是参考程序集。因此,如果我需要一些 Win32 函数,它很可能已经在我的帮助库中,如果不是我只是添加它。

此外,我将返回代码映射到异常,即如果 HResult 不为零,我会抛出异常,因此我的 C# 应用程序不需要知道 HResult 或返回代码。

于 2009-10-21T04:49:53.080 回答
0

查看:http ://code.msdn.microsoft.com/WindowsAPICodePack

于 2009-10-21T04:11:55.637 回答
0

您可以使用Reflector并搜索 Win32Native。它有一堆可用于 PInvoking 的定义。

于 2009-10-21T04:16:03.930 回答