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

时间:2013-10-31 08:48:58

标签: c++ input system

如何在全系统的c ++中获取当前的输入语言。如果我切换到另一个窗口并在那里更改输入语言,我怎么知道语言已经改变以及使用哪种语言?

2 个答案:

答案 0 :(得分:1)

我认为这取决于操作系统,在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));

答案 1 :(得分:1)

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

更一般地说,可能没有一种“语言”。输入, 例如,在系统级别,通常是语言 中性;关键因素是如何设置键盘(但是 我经常从美国键盘输入法语或德语),和 一旦角色出现在您的程序中,您将如何解释它们 (据推测,你想知道的是如何解释它们, 根据什么约定)。如果你想知道 惯例其他程序,或操作系统使用,你必须找到 一些OS特定的手段;它是一种标准 LC_CTYPE,{{1}}等环境变量包含此内容 信息,但不同的约定如何编码 有所不同(虽然我认为最新版本的Windows也支持 Posix标准表格)和Unix以外的OS经常使用 其他方法也是如此,所以你需要一些特定于操作系统的东西。