IMEがONかOFFかを調べる : Excel(エクセル)

Excel VBAで入力前のチェック等に使用できそうです。

Excel Tipsメニューに戻る

スポンサーリンク



Excel VBA コード

Option Explicit

'指定されたウィンドウに関連付けられている入力コンテキストを取得
Private Declare Function ImmGetContext Lib "imm32.dll" (ByVal hwnd As Long) As Long
'IMEが開いているかどうかを調べる
Private Declare Function ImmGetOpenStatus Lib "imm32.dll" (ByVal hImc As Long) As Long
'入力コンテキストを解放し、コンテキスト内の関連メモリのロックを解除
Private Declare Function ImmReleaseContext Lib "imm32.dll" (ByVal hwnd As Long, ByVal hImc As Long) As Long
'指定された文字列と一致するクラス名とウィンドウ名を持つウィンドウハンドルを取得
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub CommandButton1_Click()
    Dim hImc As Long
    Dim ret As Long
    Dim hwnd As Long
    
    Range("B10").Activate
    DoEvents
    'エクセルのウィンドウハンドルを取得
    hwnd = FindWindow("XLMAIN", Application.Caption)
    
    hImc = ImmGetContext(hwnd)
    'IMEが開いているかどうかを調べる
    ret = ImmGetOpenStatus(hImc)
    ImmReleaseContext hwnd, hImc
    '結果を表示
    If ret = 0 Then
        Range("B10") = "OFF"
    Else
        Range("B10") = "ON"
    End If
    
End Sub

スポンサーリンク



Excel実行結果

■B10に結果(ON又は、OFF)が表示されています。

スポンサーリンク






Excel Tipsメニューに戻る

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved