Win32 API関数に渡すために文字列配列をLPCWSTRに変換する必要があるC#コードがあります。マーシャルクラスには、それを簡単にするものは何も見つかりません。誰かがそれを行う方法を知っていますか?
1525 次
1 に答える
3
API関数を文字列配列を取るものとして宣言する必要があります。定数として宣言されているIn
ため、呼び出し後にマーシャリングされないように属性を追加する必要があります。関数が本当に指定したユニコードバージョンしかない場合(つまり、関数が取るが取るLPCWSTR
のではなくLPCTSTR
)、を使用して宣言する必要がありCharSet=Unicode
ます。に似ている:
[DllImport("kernel32.dll", CharSet=Unicode)]
static extern bool Foo([In] string[] stuff);
どのAPI関数を呼び出そうとしていますか?あなたがそれを投稿すれば、私はあなたにそれのための良いP/Invoke署名を与えることができます。または、 pinvoke.netを確認することもできます。これには、P / Invoke署名のかなり優れたコンパイル済みリスト(コミュニティで生成されたもの)があります。
于 2008-12-23T18:14:42.153 に答える