我正在编写一个应用程序,当应用程序本身不是FOCUSED时,我需要更改系统的语言。 恐怕唯一的办法就是使用目前我不能完全理解的windows钩子。 有什么想法吗?
编辑:解决scheme
[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)); }
从dynamic数组中find唯一的整数和
如何在.net中为Windows服务设置ACL?
与崩溃转储相比,WinDbg在附加到进程时显示不同的调用堆栈
C#comboBox与计时器的时间过去了
什么是Application Server for ASP.NET?
C#WinForms托盘应用程序 – 不捕获Windows关机事件
启动一个执行委托的新进程
如何从dns域名获得简短的“域名”?
在Windows 8上使用简单的Windows窗体/ WPF应用程序是否适用于平板电脑?
WM_GETFONT与标准的flatstyle问题
你可以试试这个使用Windows API调用的答案 。
要更改输入语言,您可以使用以下代码:
private void ChangeKeboardLayout(System.Globalization.CultureInfo CultureInfo) { InputLanguage c = InputLanguage.FromCulture(CultureInfo); InputLanguage.CurrentInputLanguage = c; }
你可以在你的应用程序(或你的线程)打开的时候这么做。
我认为,映射另一个键盘布局和“翻译”输入而不是改变窗口设置会更容易,尤其是没有用户的比赛。
在我完成答案之前,ahmadali shafiee发布了我想要的代码。 高雅,随它去吧。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。