【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

コールバックで文字列を受け取る

DLLの関数からVBAにコールバックさせて、ANSIUnicodeの文字列を受け取ってみました。

引数を手動でマーシャリングしています。ANSI文字列はByte配列に入れてStrConv()で変換、Unicode文字列はStrPtr()で取得したバッファにコピーしています。

ちなみに文字列が介在しなければもっと簡単です。比較としてEnumWindows()の例を挙げておきます。

VBAからWin32APIを操作する機会が少なかったため、VBAでもサンクのサポートがあるのに今更ながら気付きました。