如何获得ime语言信息?(Windows,C ++)

我需要在Windows中获取当前select的IME语言设置。

我发现了ImmGetConversionStatus(),但是它不返回当前select的语言。

虽然这个问题很久以前就被问过了,但我相信你也许已经自己解决了。 🙂

你试过了吗? :如果在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);