如何获取当前的输入语言 c++

How to get current input language c++?

本文关键字:输入 语言 c++ 何获取 获取      更新时间:2023-10-16

如何在 c++ 系统范围内获取当前的输入语言。如果我切换到另一个窗口并在那里更改输入语言,我如何知道该语言已更改以及更改为哪种语言?

我认为这取决于操作系统,在Windows中,尝试以下代码:

char szBuf[25];
double thId;
HANDLE hCurrentKBLayout;
hCurrentKBLayout = GetKeyboardLayout(0);
memset(szBuf, 0x00, 25);
ImmGetDescription(hCurrentKBLayout, szBuf, 50);
if(String(szBuf).Length()==0)
    strcpy(szBuf,"系统默认");
ShowMessage("current input language is:" + String(szBuf));

正式地,""的区域设置应该对应于实现定义的区域设置,通常应对应用户希望他的语言是什么。 这是否有效在实践中,很大程度上取决于实施; std::locale().name()似乎总是在我的"C"返回Windows机器(即使我没有运行美国版本的视窗)。

更一般地说,可能没有单一的"语言"。 输入例如,在系统级别,通常是语言中性;关键因素是键盘的设置方式(但我经常从美国键盘输入法语或德语),并且一旦字符出现在你的程序中,你如何解释它们(大概,你想知道的是如何解释它们,根据什么约定)。 如果你想知道约定其他程序或操作系统使用,您必须找到一些操作系统特定的手段;这是一种标准,环境变量如LANGLC_CTYPE等都包含这个信息,但如何对不同的约定进行编码变化(尽管我认为最新版本的Windows也支持)Posix标准形式),以及Unix以外的操作系统经常使用还有其他方式,所以你需要一些特定于操作系统的东西。