Как получить информацию о языке IME? (Windows, C ++) - PullRequest
2 голосов
/ 25 апреля 2011

Мне нужно получить текущую выбранную настройку языка IME в Windows.

Я нашел ImmGetConversionStatus (), но он не возвращает текущий выбранный язык.

Ответы [ 2 ]

2 голосов
/ 26 июня 2011

Хотя этот вопрос задавался давным-давно ... Я думаю, вы могли бы решить его самостоятельно.:)

Вы пробовали?: Если в 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'

0 голосов
/ 01 марта 2013

На основании этого:

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);
...