P/Invoke CharSet.Unicode

間違いに気づいたまま放置はアレなので書き換えた。
しかし SHGetFileInfo C# なんかでググると笑った、皆 SHFILEINFO の第二引数が IntPtr だ。
32bit でしか動作確認していないんだねぇ、私もそうだったけど。

ついでに P/Invoke で SHGetFileInfoW の UNICODE 関数化したんだけど…

C# で SHGetFileInfo を使ってアイコンと種類を取ってくる例

SHGetFileInfoW てか UNICODE を P/Invoke で指定するにはこんなに面倒なのか!
CharSet = CharSet.Unicode を指定しなければ Ansi 関数呼び出しになってしまうのかい。
更に Ansi 文字列に変換を全自動で行うなんて今の時代としては逆だと思うんだが。

ぱぇぽぃ2 ? Blog Archive ? UNICODE にならん

を以前自分でやっていなかったら気がつかなかったかもだよ。
前回書いたように IronPython なら関数名直で str をそのまま渡せばいいだけなのに。

てか .NET Framework 2.0 からは XP 以降でしか動かないのにこの仕様…
Microsoft がやっていることは本当によく解らない。