【发布时间】:2012-06-15 18:34:45
【问题描述】:
我正在编写一个应用程序,当应用程序本身不关注时,我需要更改系统的语言。恐怕唯一的方法是使用我目前无法完全理解的 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));
}
【问题讨论】:
-
您的意思是某个特定的应用程序需要更改用户通常不使用的系统语言吗?
-
问题是知道你什么时候注意力不集中,还是改变系统语言?
-
更改语言需要登录/注销...您的意思是语言输入吗?
-
问题是将当前系统语言更改为其他语言