【发布时间】:2015-01-14 02:57:44
【问题描述】:
我正在构建一个使用几个 user32.dll 函数和几个 gdi32.dll 函数的 PowerShell 脚本。我过去曾多次这样做。
我厌倦了在我的 PowerShell 代码中以字符串形式查看这些巨大的 C# 代码块。我也厌倦了必须为我打算使用的每个单独函数找到 PInvoke 代码。我想要一个 DLL 来包装所有(已知的)user32.dll 函数,这样我就可以一劳永逸地使用它们。
我搜索了一下,似乎无法为 user32.dll、win32.dll 或其他流行的非托管 dll 中的所有已知函数找到任何预构建的 PInvoke 包装 DLL。为什么是这样?我知道它们可能不稳定并且需要不断更新 - 这是原因吗?
我还注意到http://pinvoke.net/ 提供了一个自动生成签名的 Visual Studio 插件...这是否意味着有一个 pinvoke.net 网络服务,我可以使用它来根据他们的最新状态自动生成一个 dll数据库?
【问题讨论】:
-
你可以自己写。是什么阻止你?基于 pinvoke.net 的自动生成将是一个坏主意,因为那里的内容质量低。
-
我刚刚找到了网络服务:pinvoke.net/pinvokeservice.asmx,所以我想我会自己写它并很快发布到这里。
function PInvoke($module){...} -
有很多框架类实际上在后台使用 p/invoke!
-
这变得非常困难,因为 pinvoke.net 中的许多条目都是为人工解释而设计的。
标签: powershell dll pinvoke unmanaged managed