Мне нужно получить текущую выбранную настройку языка IME в Windows.
Я нашел 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
... вы должны сделать что-то вроде этого:
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);