2

Win32 API関数に渡すために文字列配列をLPCWSTRに変換する必要があるC#コードがあります。マーシャルクラスには、それを簡単にするものは何も見つかりません。誰かがそれを行う方法を知っていますか?

4

1 に答える 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 に答える