アクティブウインドウのIMEの状態判定
解決したいこと
Windows11におけるWin32プログラミング環境での質問です。
アクティブウインドウのIMEがオンかオフかを判断しようとしていますが、なぜかメモ帳がアクティブの場合に限ってその判断ができません。
発生している問題・エラー
IMEのオンとオフを繰り返しても常に0でオフ状態が返ってきます。
該当するソースコード
HWND foreground = GetForegroundWindow();
if (foreground == NULL) {
return;
}
HWND hIMEWnd = ImmGetDefaultIMEWnd(foreground);
if (hIMEWnd == NULL) {
OutputDebugStringW(L"Failed to get IME window\n");
return;
}
LRESULT imeStatus = SendMessageA(hIMEWnd, WM_IME_CONTROL, IMC_GETOPENSTATUS, 0);
if (imeStatus) {
wcscpy_s(nid.szTip, _countof(nid.szTip), L"IME: ON");
}
else {
wcscpy_s(nid.szTip, _countof(nid.szTip), L"IME: OFF");
}
自分で試したこと
ここに問題・エラーに対して試したことを記載してください。