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

VBAでJIT

VBAJITをしてみました。

  • 生成したマシン語を直接呼び出すことができないため、EnumWindows()のコールバックとして呼び出しています。
  • コールバックには1つだけ引数を指定できます。配列のポインタを渡して、その配列で引数と戻り値をやり取りしています。
  • コールバックから0を返すことで、列挙処理を中止してすぐに終了しています。

対話的にAPIで遊べるのは面白いです。しかしちょっと間違えるとExcelごと落ちてしまうため、かなり危険な遊びです。もし対話的にネイティブを取り扱う環境を作るなら、他のプロセスをデバッグするのが良いかも、というようなことを妄想しました。

それにしてもBASICからマシン語を呼び出すなんて、なんて懐かしいことをやっているのでしょう!