- - PR -
IMEを無効にするには
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-06 15:51
お世話になります。
開発環境 VisualBasic6.0(SP6)、Windows2000(SP4) 上記の条件で開発しておりますが、現行バージョンまではIMEによるカナ入力がされたくなかったのでAPI関数のImmDisableIMEによりIMEを無効にしておりました。 今回仕様変更により、とあるフォームのテキストボックスでのみカナ入力させる必要性が発生し、調べたところImmDisableIMEはVBより生成したアプリが終了するまでIME無効状態の解除ができないことがわかりました。 そこで、他の手段にてIMEの無効・有効を切替えたいのですが調べたところAPIのImmAssociateContextを用いればできるのではと思ったのですが、この関数への引数の意味がよく理解できません。 どのような引数の渡し方をすればうまく切り替わるでしょうか? ご教授よろしくお願いします。 | ||||
|
投稿日時: 2005-10-06 16:42
IMEのOn/OFF制御は、下記APIの組み合わせで行ったことがあります。
参考になれば。 #ImmDisableIME,ImmAssociateContext は使ったこと無いのでわかりません。。 | ||||
|
投稿日時: 2005-10-06 17:13
葉瀬崎浩樹さん早速のご回答ありがとうございます。
早速試してみましたが、今回教えていただきました方法及びImmAssociateContextにて IMEの制御を行うとOffになるだけで、キーボードの操作でOnになるんですね。。。 無知でした。 IMEをOffでは無くて使用不可にできて、必要な時には使用可にするという方法は 何か無いでしょうか。 | ||||
|
投稿日時: 2005-10-06 17:27
VisualBasicはよくわからんけど。
http://hp.vector.co.jp/authors/VA016117/noime.html ↑ここらへんとか? (「ImmAssociateContext」で検索) | ||||
|
投稿日時: 2005-10-06 17:56
冬寂さん、ご回答ありがとうございます。
一度調べてImmAssociateContextはダメだと思い込んでたのですが、 再度チャレンジしてみると引数の取得がまずかったみたいで、うまく制御することができました。 以下が参考となります。 @標準モジュールで宣言 Declare Function ImmAssociateContext Lib "Imm32.dll" (ByVal hWnd As Long, ByVal hIMC As Long) As Long Declare Function GetFocus Lib "user32" () As Long @使用したいモジュール内で Dim W_hWnd As Long Dim lngRet As Long W_hWnd = GetFocus lngRet = ImmAssociateContext(W_hWnd, 0) IMEが無効となります。 戻す場合は Call ImmAssociateContext(W_hWnd, lngRet) で戻りました。 ありがとうございました。 | ||||
|
投稿日時: 2005-10-06 17:59
失礼しました。
IMEのON/OFF制御ではなく、On/Disable制御を行いたいのですね。
テキストボックスのIME制御は、上記コードでも可能です。 こういう方法ではダメなのでしょうか? #おっと解決している。おめでとうございます。 [ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-10-06 18:00 ] |
1