1

有许多Win32 API调用/库,如 kernel32 或 shell32,可能对从C#调用很有用。使用它们的一种常见方法是在pinvoke.net网站上查找方法定义,并从那里使用 dllimport 定义。

您希望使用的每种方法都需要此过程。

是否有可用的程序集包含常见/大多数[DllImport]ed API 函数?

我正在寻找可以直接从 C# 使用的东西(作为参考),所以我不必自己收集和组合各种 DLLImport 语句(有错误的风险)。

4

3 回答 3

2

您应该在 pinvoke.net 上找到您要查找的内容。实际上,没有什么比简单的 DLL 导入子句更能在 C# 源代码中提供的“幕后”了。

于 2011-03-19T21:33:07.147 回答
2

这不是它的工作方式,您只需在 C# 代码中提供 [DllImport] 声明。就像您在 pinvoke.net 或 P/Invoke Interop Assistant 之类的工具上找到它们的方式一样。了解如何实际使用 API 函数需要学习 C 或 C++ 代码。并且总体上了解 Windows API 的工作原理。

Petzold 的开创性书籍“Programming Windows”是入门的最佳起点。您可以在 Windows SDK 文档中找到 C/C++ 源代码示例,以及 SDK 完整版中包含的许多示例。当然还有网络,只需搜索函数名称即可。具有讽刺意味的是,如今您在网络上找到的以托管语言编写的示例数量开始超过 C/C++ 示例。当心 VB6 声明(Declare 关键字),它也被广泛使用,它的类型与 .NET 不兼容。

像 codeplex.com 和 codeproject.com 这样的网站是查找带有托管类包装器的库的好地方,这些库围绕原生 API 调用。您通常只需使用该库。

最后但同样重要的是,stackoverflow.com 是一个很好的资源;)

于 2011-03-19T21:44:28.883 回答
1

据我所知,没有广为人知的打包 Windows API for .NET 的代码包。我可以看到它在某些情况下很有用,但是,在大多数情况下,如果您需要使用如此多的本机 Windows API,那么您可能应该问自己是否正确使用了 .NET 框架和/或为什么完全使用.NET?

无论上述观点如何,您都可以在http://pinvoke.net/找到相当全面的定义来源。

于 2011-03-19T21:33:25.400 回答