15,473
社区成员




DWORD dwThread = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
AttachThreadInput(dwThread, GetCurrentThreadId(), TRUE);
HWND hFocus = GetFocus();
std::cout << dwThread << ":" << hFocus << std::endl;
AttachThreadInput(dwThread, GetCurrentThreadId(), FALSE);
--- 要修改焦点所在窗口的输入法,
void SetImeConversionStatus(HWND& hwnd, _IME_Mode mode)
{
HIMC hImc = ImmGetContext(hwnd);
if (mode == _IME_Off)
{
// IMEオフ
ImmSetOpenStatus(hImc, FALSE);
}
else
{
ImmSetOpenStatus(hImc, TRUE);
DWORD dwConversion = 0;
DWORD dwSentence = 0;
ImmGetConversionStatus(hImc, &dwConversion, &dwSentence);
std::cout << hwnd << ":" << GetLastError() << std::endl;
switch (mode)
{
case _IME_Hiragana: // ひらがな
dwConversion |= IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE;
dwConversion &= ~IME_CMODE_KATAKANA;
break;
case _IME_Katakana: // 全角カタカナ
dwConversion |=
IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE | IME_CMODE_KATAKANA;
break;
case _IME_Alpha: // 全角英数
dwConversion |= IME_CMODE_FULLSHAPE;
dwConversion &= ~(IME_CMODE_NATIVE | IME_CMODE_KATAKANA);
break;
case _IME_KatakanaHalf: // 半角カタカナ
dwConversion |= IME_CMODE_NATIVE | IME_CMODE_KATAKANA;
dwConversion &= ~IME_CMODE_FULLSHAPE;
break;
case _IME_AlphaHalf: // 半角英数
dwConversion &=
~(IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE | IME_CMODE_KATAKANA);
break;
default:
break;
}
ImmSetConversionStatus(hImc, dwConversion, dwSentence);
}
ImmReleaseContext(hwnd, hImc);
}