使用c#

时间:2016-09-27 07:00:34

标签: c# locale

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

我看过很多涉及InputLanguageManagerCultureInfo的答案 它们对我没用,没有做到这一点。

有一种方法 - SystemParametersInfo功能带有SPI_SETDEFAULTINPUTLANG标记,我试图检查。
到目前为止,除了here之外,没有找到任何有用的用法示例,但是它将键盘布局从Dvorak更改为Marshal。

你能给我一个例子(希望用SystemParametersInfo)将默认系统语言转换为en-US吗?

修改

简要说明。
此程序将资源管理器替换为Windows shell,因此所有键盘设置(如设置默认键盘布局)都应该从我的程序中处理 此外,我希望更换不同的安装语言,如英语,瑞典语,葡萄牙语等。
我不想在键盘的Dvorak和Qwerty布局之间进行切换。

这篇文章的目的是要求提供不同语言之间的转换示例,而不是键盘上英文符号的布局。

谢谢!

1 个答案:

答案 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;
    }

这似乎对我有用。

来源: