C# 使用c以编程方式更改系统默认语言#
我们有一个虚拟键盘(用于触摸屏),其语言布局通过windows默认语言配置 我看到了许多答案,涉及到C# 使用c以编程方式更改系统默认语言#,c#,locale,C#,Locale,我们有一个虚拟键盘(用于触摸屏),其语言布局通过windows默认语言配置 我看到了许多答案,涉及到InputLanguageManager和CultureInfo 他们对我没用,没做那份工作 有一个方法-systemparameters sinfo函数,它带有我试图检查的SPI\u SETDEFAULTINPUTLANG标志。 到目前为止,除了这一个,还没有找到任何有用的用法示例,但它将键盘布局从Dvorak更改为Marshal 您能给我一个将默认系统语言转换为en US的示例(希望使用系统参
InputLanguageManager
和CultureInfo
他们对我没用,没做那份工作 有一个方法-
systemparameters sinfo
函数,它带有我试图检查的SPI\u SETDEFAULTINPUTLANG
标志。到目前为止,除了这一个,还没有找到任何有用的用法示例,但它将键盘布局从Dvorak更改为Marshal 您能给我一个将默认系统语言转换为en US的示例(希望使用
系统参数sinfo
)吗
编辑
简短的澄清。此程序将资源管理器替换为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;
}
这对我来说似乎很管用
资料来源:
fWinIni
参数),您可以传递SPIF\u SENDCHANGE
。不过我从来没用过。