プログラムでキーボードレイアウトを(ユーザーロケールレベルで)
変更したいのですが、ActivateKeyboardLayout や LoadKeyboardLayout
を使用しても、スレッドロケールしか変わっていないようです。
「コントロールパネルの地域のオプションの入力ロケールタブで、
インストールされている入力ロケールを選択して規定値に設定する」
と同様のことをプログラムで行うことは可能なのでしょうか?
ご存知の方おられましたらご教授願えますでしょうか?
環境は、Windows2000+VB6.0です。
自己解決できました。
Const KLF_SUBSTITUTE_OK = &H2
Const SPIF_SENDCHANGE = &H2
Const SPI_SETDEFAULTINPUTLANG = 90
Dim lngRet As Long
Dim lngLayout As Long
'英語(U.S.)のキーボードレイアウトをロード
lngLayout = LoadKeyboardLayout("00000409", KLF_SUBSTITUTE_OK)
'ロードしたレイアウトを入力ロケールの規定値に設定
lngRet = SystemParametersInfo(SPI_SETDEFAULTINPUTLANG, 0, lngLayout, SPIF_SENDCHANGE)
ツイート | ![]() |