我正在制作一个应该全局改变键盘输入和布局的程序。任何形式的帮助。
我之前使用过此代码,但没有任何反复发生:
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo("ZH-CN"));
答案 0 :(得分:2)
我的机器上也没有任何事情发生。我实际上没有安装该键盘布局。所以它只是留在美国,也不例外。
您必须先添加键盘布局。在Windows 8上,使用控制面板,语言,“添加语言”链接,选择一个中文键盘布局。现在它可以在我的机器上运行。该过程在早期版本的Windows上有所不同,如果您需要更多帮助,请在superuser.com上进行跟进。
答案 1 :(得分:0)
正如汉斯提到的,您的代码要求用户从他/她的Windows语言选项中添加键盘布局。如果您想从代码中添加它,请尝试从代码中临时安装所需的键盘布局:
[DllImport("user32.dll")]
static extern bool UnloadKeyboardLayout(IntPtr hkl);
[DllImport("user32.dll")]
static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags);
public class KeyboardHolder : IDisposable
{
private readonly IntPtr pointer;
public KeyboardHolder(int klid)
{
pointer = LoadKeyboardLayout(klid.ToString("X8"), 1);
}
public KeyboardHolder(CultureInfo culture)
:this(culture.KeyboardLayoutId){}
public void Dispose()
{
UnloadKeyboardLayout(pointer);
GC.SuppressFinalize(this);
}
~KeyboardHolder()
{
UnloadKeyboardLayout(pointer);
}
}
并以这种方式使用它:
// install keyboard layout temporary
KeyboardHolder keyboard = new KeyboardHolder(new System.Globalization.CultureInfo("ZH-CN"));
// after finishing what you want clear added keyboard layout:
keyboard.Dispose();