如何在全系统的c ++中获取当前的输入语言。如果我切换到另一个窗口并在那里更改输入语言,我怎么知道语言已经改变以及使用哪种语言?
答案 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经常使用
其他方法也是如此,所以你需要一些特定于操作系统的东西。