使用 C# 更改 Windows 键盘布局

Change Windows keyboard layout using c#

是否可以使用 C# 更改 Windows OS 键盘布局(例如从 azerty 到 querty)? (针对整个OS,不仅仅是当前申请的进程)

我必须使用 PInvoke 还是有更简单的方法api/way?

这是一个电话:

[DllImport("user32.dll")]
static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags);

示例:

用于添加和激活 U.S。英文 Dvorak 布局,使用“00010409”。

LoadKeyboardLayout("00010409", 1)

MSDN:

Beginning in Windows 8: The input locale identifier is loaded for the entire system. This function has no effect if the current process does not own the window with keyboard focus.

意思是:你的 window 必须在焦点上,否则该功能无效。

来自 MSDN 的完整文档: