c# - 使用 C# 以编程方式更改系统默认语言

标签 c# locale

我们有一个虚拟键盘(用于触摸屏),其语言布局是通过 Windows 默认语言配置的。

我看到了很多涉及 InputLanguageManagerCultureInfo 的答案。
它们对我没有用,没有完成这项工作。

有一个方法 - 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/

相关文章:

java - 比较看起来相同但不相同的本地化字符串的更好方法是什么

java - 从备用位置下载文件

java - Java Scanner 究竟是如何解析 double 的?

c# - 单元测试 XNA : Do I need to Mock my GraphicsDevice

c# - 在 Entity Framework linq 中两次包含相同字段时的行为

c# - MVC3 Controller 如何检索 HTTPPOST 参数?

angular - 如何以 Angular 使用来自另一个语言环境的 Assets ?

c++ - <regex> 无法处理西里尔字母字符

c# - 如何避免 .Validating() Cancel 导致应用程序退出挂起?

c# - 如何防止输出参数以 WCF Web 服务中的返回参数结束?