我们有一个虚拟键盘(用于触摸屏),其语言布局是通过Windows默认语言配置的。
我看过很多涉及InputLanguageManager
和CultureInfo
的答案
它们对我没用,没有做到这一点。
有一种方法 - SystemParametersInfo
功能带有SPI_SETDEFAULTINPUTLANG
标记,我试图检查。
到目前为止,除了here之外,没有找到任何有用的用法示例,但是它将键盘布局从Dvorak更改为Marshal。
你能给我一个例子(希望用SystemParametersInfo
)将默认系统语言转换为en-US吗?
简要说明。
此程序将资源管理器替换为Windows shell,因此所有键盘设置(如设置默认键盘布局)都应该从我的程序中处理
此外,我希望更换不同的安装语言,如英语,瑞典语,葡萄牙语等。
我不想在键盘的Dvorak和Qwerty布局之间进行切换。
这篇文章的目的是要求提供不同语言之间的转换示例,而不是键盘上英文符号的布局。
谢谢!
答案 0 :(得分:2)
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref uint pvParam, uint fWinIni);
public void Foo()
{
uint localeUS = 0x00000409;
uint localeNL = 0x00000403;
SetSystemDefaultInputLanguage(localeUS);
}
public bool SetSystemDefaultInputLanguage(uint locale)
{
return SystemParametersInfo(SPI_SETDEFAULTINPUTLANG, 0, ref locale, 0);
}
public uint GetSystemDefaultInputLanguage()
{
uint result = uint.MinValue;
bool retVal = SystemParametersInfo(SPI_GETDEFAULTINPUTLANG, 0, ref result, 0);
return result;
}
这似乎对我有用。
来源: