7thwheel blog

人生楽しんだもの勝ち!

JavaFX で Windows IME を制御する方法(JNA)

前回、JNA を使用して Stage の hWnd を取得しました。

blog.7thwheel.com

今回は、JNA を使用して Windows IME を制御してみたいと思います。

今回使用するのは Msctf.dll です。

SetInputScope 関数に hWnd と InputScope(int) を渡すことで IME を制御することが出来ます。InputScope の具体的な値は InputScope Enumeration を参照してください。

以下のサンプルコードではひらがなフィールドとカタカナフィールドを配置しました。ひらがなフィールドがフォーカスを得ると、IME がひらがなに切り替わります。カタカナフィールドがフォーカスを得ると、IMEは全角カタカナに切り替わります。SetInputScope に渡している 44、46 はそれぞれ「ひらがな」「カタカナ」を示しています。実際には定数化するのが良いですね。