私が時折情報として当てにするサイトの一つに pinvoke.net があるこのサイトは所謂、wiki を利用したサイトで p/invoke の情報が書かれている。p/invoke は Platform Invoke のことであり、.NET Framework 上からネイティブの DLL を利用する手段である。恐らくは、Micorosft JVM 上の J/Direct が発祥となった技術だと思われるが p/invoke を利用することでネイティブのDLL を呼べるため、.NET Framework 上にラッパーなどの代替手段のない API を呼ぶ必要があるときによく用いられる。
p/invoke を用いるには、当然のことながら呼び出すべき DLL の呼び出し形式を把握し、その上で適切な定義を書く必要がある。単純な整数の引き渡しなどであれば簡単であるがそれをいちいち考えるのはそれなりに手間である。そういった、手順を集めたデータベースサイトが pinvoke.net である。例えば、pinvoke.net で imm32.dll 内の関数 ImmConfigureIME を探すと次のような記述が見つかる。
public static extern bool ImmConfigureIME(IntPtr, hKL, IntPtr hWnd, UInt32 dwMode, IntPtr lpData);
こういった情報は、有用で使える。無論、ただカットアンドペーストするのではなく内容を理解した上で使いこなせればなおいい。事実、Windows Vista 上でゲーム等で日本語入力を実装する際、多くの事例ではまったのはサンプルコードのカットアンドペーストが発端なのだから。アンチパターン中にカットアンドペーストもあるが。


コメントする