是否有一种更轻松的方式从C#调用Win32?

时间:2009-10-21 02:30:33

标签: c# interop dllimport

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

我一个人吗?

是否有受制裁的“Win32”类,它具有整个Win32 API的必要声明?似乎应该有。也许我错过了什么。

6 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:1)

没有受到制裁的Win32类,但http://www.pinvoke.net是这些事情的重要核心资源。

答案 2 :(得分:1)

这听起来像是一个开源项目的好主意。

/ em加上思考上限,并运行到pinvoke.net

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

答案 5 :(得分:0)

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