仓库地址:https://github.com/dahall/Vanara
翻译:沙漠尽头的浪(水平有限,如有条件请尽量查看仓库地址翻阅)
一系列非常简单易用,对 Windows API 做了极好封装的.NET 类库,几乎不用再写繁琐的 Windows API 转换函数了。
此项目包含各种.NET 程序集,这些程序集包含来自 Windows 库的 P/Invoke 函数、接口、枚举和结构。每个程序集都与一个或几个紧密相关的库相关联。例如,Shlwapi.dll 包含从 Shlwapi.lib 导出的所有函数;Kernel32.dll 包含 Kernel32.lib 和 kernelbase.lib 的全部。
所有程序集都可通过 NuGet 获得,并提供针对.NET 2.0、3.5、4.0、4.5、Core 3.0、Core 3.1 和.NET 5.0(v3.2.20 中新增)的版本,并支持SourceLink。在依赖项不允许的所有情况下,.NET Standard 2.0、.NET Core 2.0 和 2.1 版本也包含在 UWP 和其他.NET Core 及标准项目中。
在充分测试之后,这个项目每隔几周发布一次新版本。新的版本和发行说明一起被编目在Releases部分,所有 NuGet 包都发布到nuget.org。每个 GitHub 推送都会触发AppVeyor构建。所有者感谢他们的免费开源帐户!文章开头显示了项目构建状态信息。AppVeyor 源用于构建 NuGet 包。
var bret = Vanara.PInvoke.Kernel32.GetComputerName(sb, ref sbSz);
using static Vanara.PInvoke.Kernel32;
var bret = GetComputerName(sb, ref sbSz);
5.在某些情况下,其中一个[支持程序集]中有一个对应的 helper/wrapper 类,特别是对于安全性、系统服务、窗体和 Shell。转到他们的库页面(单击部分中的链接),浏览每个库中包含的类。
Vanara.PInvoke.Gdi32.dll
承载系统目录中从gdi32.dll
导出的所有函数和支持的枚举、常量和结构。)Vanara.Core
或'Vanara.PInvoke.Shared`库中。
HIWORD'和结构
SIZE都在
Vanara.PInvoke.Shared中,简化互操作调用和本机内存管理的类都在'Vanara.Core
中)Vanara.PInvoke.Kernel32
项目目录中,您将分别找到一个 FileApi.cs、WinBase.cs 和一个 WinNT.cs 文件,分别表示 FileApi.h、WinBase.h 和 WinNT.h)IDispoable
的类。SafeHandle
派生工具。如果这些句柄需要调用函数以释放/关闭/销毁,则存在一个派生的SafeHANDLE
,该函数将在 disposal 时执行该函数。
HTOKEN
。 SafeHTOKEN
在该句柄上调用CloseHandle
自动释放。in
语句封装该结构体,该语句将通过引用传递结构体,而不需要ref
关键字。
BOOL MapDialogRect(HWND hDlg, LPRECT LPRECT)
bool MapDialogRect(HWND hDlg, in RECT lpRect);
There are numerous examples in the UnitTest folder and in the WinClassicSamplesCS project that recreates the Windows Samples in C# using Vanara.