是否有从 USER32.DLL 导入所有内容的 C# 即用型类? [关闭]
Posted
技术标签:
【中文标题】是否有从 USER32.DLL 导入所有内容的 C# 即用型类? [关闭]【英文标题】:Is there a C# ready-to-use class that imports everything from USER32.DLL? [closed] 【发布时间】:2015-03-12 07:18:34 【问题描述】:我厌倦了查找方法签名。我宁愿只输入类似User32.SendMessage...
的内容。有这样的吗?
基本上有一个带有一堆定义的静态类,例如:
[DllImport("user32.dll")]
public static extern bool SetParent(int hWndChild, int hWndNewParent);
【问题讨论】:
问题有什么问题? 我投票决定以理由结束 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是题外话,因为它们倾向于吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。 请参阅***.com/help/on-topic 【参考方案1】:没有内置的类或静态库可以做到这一点。但是,您可以尝试 google 搜索一些免费库,甚至编写自己的实现。
问题是,user32.dll 是 win32 api 的一部分,它最初是为 C++ 应用程序设计的。当 Microsoft 推出 .NET(以及不久之后,C#)时,他们没有提供本机支持 - 为了运行 .NET 应用程序,您需要 .NET dll 二进制文件。
因此,在 Microsoft 决定纠正此问题之前,您必须坚持使用一堆定义。
【讨论】:
如果很多人都在使用DllImport
,那么我认为应该有人将所有内容都导入了。我当然可以创建一个这样的课程,但在花时间之前,我想知道是否其他人已经为我做过了:)
不幸的是,这就像用苹果做橙汁一样——除非你弄得乱七八糟,否则它是行不通的:)【参考方案2】:
不要这样做。
user32.dll 在不同版本的 Windows 中不包含相同的功能。如果您只是一揽子导入所有内容,您很可能会确保您的程序只能在您当前使用的特定 Windows 版本上运行。
每次导入本机函数时,您都应该检查它来自哪个版本 - 并确定这是否是您可以使用的依赖项。
【讨论】:
以上是关于是否有从 USER32.DLL 导入所有内容的 C# 即用型类? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
C# PInvoking user32.dll 在 64 位系统上