我有一段 C# 代码,需要将字符串数组转换为 LPCWSTR 以传递给 Win32 API 函数。我在 Marshal 类中找不到任何可以使其变得简单的内容。有人知道该怎么做吗?
最佳答案
您应该将 API 函数声明为采用字符串数组。由于它被声明为常量,因此您应该添加一个 In
属性,以便在调用后不会将其编码回来。如果该函数确实只有您指定的 unicode 版本(即,它采用 LPCWSTR
而不是 LPCTSTR
),那么您应该使用 CharSet= 声明它统一码
。类似于:
[DllImport("kernel32.dll", CharSet=Unicode)]
static extern bool Foo([In] string[] stuff);
您要调用什么 API 函数?如果你发布它,我可以给你一个很好的 P/Invoke 签名。或者您可以查看pinvoke.net ,它有一个非常好的预编译 P/Invoke 签名列表(社区生成)。
关于.net - 如何将字符串数组转换为 .NET 中的 LPCWSTR 以传递给 Win32 API 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/389543/