Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


21742 / 76734 ←次へ | 前へ→

【60381】Re:日本語入力の制御
回答  Abyss  - 09/2/15(日) 16:14 -

引用なし
パスワード
   > まるっきしサラにして、InputBox関数のIMEを制御するような手法を出して頂けたら。

InputBoxはExcelアプリに対してModal動作をしますから、
InputBox状態に入る前にExcelのIME状態を希望の状態に
設定し、処理後に前の状態に戻す。

この手順でよろしいかと思います。
とりあえず、標準モジュールでのテストです。

(Sample)

Declare Function ImmGetContext Lib "Imm32" _
  (ByVal Hwnd As Long) As Long
  
Declare Function ImmReleaseContext Lib "Imm32" _
  (ByVal Hwnd As Long, _
   ByVal Himc As Long) As Long

Declare Function ImmGetOpenStatus Lib "Imm32" _
  (ByVal Himc As Long) As Long

Declare Function ImmSetOpenStatus Lib "Imm32" _
  (ByVal Himc As Long, _
   ByVal fOpen As Long) As Long
 
Sub aTest()

  Dim Hwnd As Long
  Dim IMC As Long
  Dim Flag As Long
  
  Hwnd = Application.Hwnd
  IMC = ImmGetContext(Hwnd)
  
  ' 現在のIMEOnOff状態を取得...
  Flag = ImmGetOpenStatus(IMC)
  
  ' IME Onの状態に設定...
  ImmSetOpenStatus IMC, 1&
  ImmReleaseContext Hwnd, IMC
  
  Application.InputBox "名前を入力してください。"
  
  ' 当初のIME状態に復帰 ...
  IMC = ImmGetContext(Hwnd)
  ImmSetOpenStatus IMC, Flag
  ImmReleaseContext Hwnd, IMC
  
End Sub
5 hits

【60365】日本語入力の制御 山ちゃん 09/2/13(金) 16:22 質問
【60368】Re:日本語入力の制御 ichinose 09/2/14(土) 14:48 発言
【60374】Re:日本語入力の制御 山ちゃん 09/2/15(日) 10:06 発言
【60375】Re:日本語入力の制御 neptune 09/2/15(日) 11:46 発言
【60381】Re:日本語入力の制御 Abyss 09/2/15(日) 16:14 回答
【60383】Re:日本語入力の制御 ichinose 09/2/15(日) 20:18 発言
【60385】Re:日本語入力の制御 山ちゃん 09/2/16(月) 1:27 お礼
【60386】Re:日本語入力の制御 訂正 ichinose 09/2/16(月) 6:48 発言

21742 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free