如何在Powershell中更改当前键盘布局?

6
我在Windows设置中设置了两种语言 - 捷克语(默认)和英语(用于编程)。我想在powershell中在它们之间切换。 我通常使用捷克语,这是我的PC上的默认语言。因此,每当我(重新)启动任何应用程序时,它都会以捷克键盘布局启动。
但是我使用英语布局进行编程。因此,每当我启动新的编程应用程序 - 即powershell窗口时,我总是需要按Alt + Shift。
有没有一些命令可以在powershell中执行此操作?或者在C#中通过某些win32 api调用(因为我可以为此自己制作小的cmdlet)?
我找到了这个question(还有其他一些),但我不太理解它们...
我从未使用过Win API,因此不知道确切的可能性以及如何使用它...
有人有一些cmdlet或小教程如何做到这一点吗?

你可以将API调用封装到一个C#类中,然后使用Add-Type添加。虽然不太美观,但应该能够以某种方式工作。 - Joey
是的,我有这个想法。但我从未编写过WinAPI程序,所以我想有人能帮我写几行代码。 - jumbo
ActivateKeyboardLayout 是你正在寻找的...http://msdn.microsoft.com/en-us/library/windows/desktop/ms646289(v=vs.85).aspx...但在控制台窗口中,进程和线程的概念不总是很清晰,因此我不确定它是否适用。 - 0xC0000022L
那看起来很有前途。谢谢,这是个不错的开始。我晚上会搜索一下这个。 - jumbo
我刚刚尝试了ActivateKeyboardLayout函数。它在WinForms中可以工作,但在控制台应用程序中却不行。(我正在使用C#进行测试)。有什么想法,为什么控制台应用程序的行为会不同? - jumbo
2个回答

0

我找到了一个非常好的、非常简单的解决方案!在 Codeplex 上有一个名为 WASP 的项目。该项目允许操作 Windows,向其发送按键和点击事件。

我的问题的解决方案是在 PowerShell 启动时导入 WASP 模块,然后选择 PowerShell 窗口(使用 WASP)并向其发送 Alt+Shift 快捷键(使用 WASP)。

以下是要包含在 PowerShell profile.ps1 文件中以将语言更改为下一个语言的代码:

Import-Module WASP
Select-Window powershell | Send-Keys "%+" # '%' = ALT key, '+' = SHIFT key

-5

打开控制面板,选择区域和语言选项。

点击“详细信息”...

点击“添加”和“删除”以管理所需的语言。

添加您的语言。单击“确定”退出。

键盘布局已更改,您可以通过语言栏切换它们。

您也可以查看此链接:

http://krypted.com/commands/powershell-commands/


1
好的,我并没有询问Windows设置。我并不是那么愚蠢(虽然也许我的英语有些差)。我是在询问能够进行键盘布局切换的PowerShell函数。我也知道在哪里可以找到PS命令列表。但是其中没有一个叫做Switch-KeyboardLayout... - jumbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接