我需要更改键盘语言。 使用此代码,如果焦点应用程序处于焦点状态,我可以更改语言:
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <string>
using namespace std;
#pragma comment(lib, "User32.lib")
int main(int argc, char *argv[])
{
//0409 - Ingles, 0c0a - Espanhol, 0416 - Portugues
char *str = "0c0a";//argv[1];
int i;
if(EOF != sscanf(str, "%x", &i))
{
SendMessage(GetActiveWindow(), WM_INPUTLANGCHANGEREQUEST, 0, i);
}
system("PAUSE");
return EXIT_SUCCESS;
}
但我需要在应用程序关闭后或确定更改系统键盘语言 如果应用程序中未设置焦点。
有人可以帮助我吗?
如果您真的需要更改用户的键盘布局,您可以使用以下功能: GetKeyboardLayoutName() 和 LoadKeyboardLayout()。
下一个命令将系统键盘布局更改为英语:
PostMessage(GetForegroundWindow(), WM_INPUTLANGCHANGEREQUEST, 1, 0x04090409);
俄语:
PostMessage(GetForegroundWindow(), WM_INPUTLANGCHANGEREQUEST, 1, 0x04190419);