如何在.net中全局更改系统输入语言



我通常在键入qwerty和dvorak之间切换,而Windows中最大的不便之一是,尽管有一个热键可以在输入语言之间切换,但它只能更改具有焦点的窗口的输入语言。

我想创建一个脚本来改变我的输入语言,并有脚本运行时,我按下一个热键。我一直在尝试不同的方法来做到这一点。我之所以需要这个是因为我喜欢在工作时一直输入dvorak,但不能将系统默认设置为dvorak,以防其他人需要使用我的系统。一旦脚本完成,我可以上传它供所有人下载和使用。

我在网上找到的一个解决方案是使用SystemParametersInfo函数。然而,我找不到足够的文档来从MSDN库中获得此工作。在阅读了其他人无法使用此功能的帖子后,我停止了搜索,有些人说它需要重新启动系统。

Edit -继续尝试失败,因为似乎此方法仅适用于当前窗口(尽管我能够更改输入语言,但似乎没有任何效果)。

我发现的另一个(稍微更有希望的)解决方案是设置InputLanguage.CurrentInputLanguage。然而,关于它的设置用法的文档也很少(更多的是获取)。我找到的在线指南讨论了使用InputLanguage.FromCulture()来设置语言。例如InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo("ZH-CN"));,但是US-Dvorak似乎不在支持的文化列表中。

有人有什么想法吗?谢谢!

我发现这个程序:工作得很好,并提供了源代码。当我试图开发其他程序来"修复"Windows糟糕的功能时,我可能会把它作为一种资源。

下载:http://www.tomseddon.plus.com/kbswitch/

如果你用的是Windows 7,你可以把它从屏幕右下角的"弹出框"中拖出来,这样图标就会出现在任务栏中,靠近系统时间。我没试过重启,我以为我把程序放在启动文件夹里了,所以应该能运行。

最新更新