以前に IME を有効化/無効化する方法を紹介しましたが、Windows NT での winnls32.dll はきちんとメンテナンスがされていないようで問題が起きることがありました。今回は、より新しい API を使用した無効化関数を以下に示します。前回と違い今回は無効化だけで有効化できませんが、たぶんほとんどの人はこの関数だけで用は足りるでしょう。なおこれは Windows NT ver 3.5 では動きません。
//IME 無効化関数
//VOID WINAPI ImeDisable(HWND hwnd)
//引数: hwnd: 対象となるウィンドウ
//戻値: なし
VOID WINAPI ImeDisable(HWND hwnd)
{
static HMODULE himm32;
static HIMC WINAPI (*IMM32ImmAssociateContext)(HWND,HIMC);
if(himm32 == NULL){
himm32 = (HMODULE)LoadLibrary(_T("IMM32.DLL"));
IMM32ImmAssociateContext = (HIMC WINAPI (*)(HWND,HIMC))
GetProcAddress(himm32, _T("ImmAssociateContext"));
}
if(IMM32ImmAssociateContext) IMM32ImmAssociateContext(hwnd, NULL);
}
|
by seclan