我们有一个虚拟键盘(用于触摸屏),其语言布局是通过 Windows 默认语言配置的。
我看到了很多涉及 InputLanguageManager
和 CultureInfo
的答案。
它们对我没有用,没有完成这项工作。
有一个方法 - SystemParametersInfo
函数,带有我正在尝试检查的 SPI_SETDEFAULTINPUTLANG
标志。
到目前为止,除了这个 here 没有找到任何有用的用法示例,但它将键盘布局从 Dvorak 更改为 Marshal。
您能给我一个将默认系统语言转换为 en-US 的示例(希望带有 SystemParametersInfo
)吗?
编辑
简要说明。
该程序将资源管理器替换为 Windows shell,因此所有键盘设置(例如设置默认键盘布局)都应从我的程序中处理。
此外,我的愿望是在不同的安装语言之间进行替换,例如英语、瑞典语、葡萄牙语等。
我不想在 Dvorak 和 Qwerty 键盘布局之间进行更改。
这篇文章的目的是询问在不同语言之间进行更改的示例,而不是键盘上英文符号的布局。
谢谢!
最佳答案
[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;
}
这对我来说似乎很有效。
来源:
关于c# - 使用 C# 以编程方式更改系统默认语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39718060/