我正在编写一个应用程序,当应用程序本身没有聚焦时,我需要更改系统的语言.我担心这样做的唯一方法就是使用我目前无法完全理解的Windows钩子.有什么想法吗?
编辑:解决方案
[DllImport("user32.dll")]
private static extern bool PostMessage(int hhwnd, uint msg, IntPtr wparam, IntPtr lparam);
[DllImport("user32.dll")]
private static extern IntPtr LoadKeyboardLayout(string pwszKLID, uint Flags);
private static uint WM_INPUTLANGCHANGEREQUEST = 0x0050;
private static int HWND_BROADCAST = 0xffff;
private static string en_US = "00000409";
private static uint KLF_ACTIVATE = 1;
private static void ChangeLanguage()
{
PostMessage(HWND_BROADCAST,WM_INPUTLANGCHANGEREQUEST, IntPtr.Zero ,LoadKeyboardLayout(en_US,KLF_ACTIVATE));
}
Run Code Online (Sandbox Code Playgroud)
要更改输入语言,您可以使用以下代码:
private void ChangeKeboardLayout(System.Globalization.CultureInfo CultureInfo)
{
InputLanguage c = InputLanguage.FromCulture(CultureInfo);
InputLanguage.CurrentInputLanguage = c;
}
Run Code Online (Sandbox Code Playgroud)
只要您的应用程序(或您的线程)打开,您就可以执行此操作。
| 归档时间: |
|
| 查看次数: |
5502 次 |
| 最近记录: |