Windows で現在選択されている IME 言語設定を取得する必要があります。
ImmGetConversionStatus() を見つけましたが、現在選択されている言語を返しません。
この質問はずっと前に尋ねられましたが..あなたは自分でそれを解決したかもしれないと思います. :)
試しましたか?: Windows 7 の場合: GetUserDefaultLocaleName 関数の構文:
int GetUserDefaultLocaleName(
__out LPWSTR lpLocaleName,
__in int cchLocaleName
);
lpLocaleName は、現在のカルチャを保持します。
ドキュメントを確認してください: http://msdn.microsoft.com/en-us/library/dd318136%28VS.85%29.aspx
参考までに、これらもチェックしてください:http: //msdn.microsoft.com/en-us/library/dd318135%28VS.85%29.aspx および「support.microsoft.com/kb/193080」
これに基づいて:
https://stackoverflow.com/a/12954320/964053
...あなたはこのようにsthをしなければなりません:
HWND fore = GetForegroundWindow(); // Every window has it's own current language (keyboard layout)
DWORD tpid = GetWindowThreadProcessId(fore, 0);
HKL hKL = GetKeyboardLayout(tpid);
WORD wd;
ToAsciiEx(VirtualKey, ScanCode, KeyState, (LPWORD)&wd, 0, hKL);