如何更改 Windows 中的语言键盘布局(C++)

问题描述 投票:0回答:2

我需要更改键盘语言。 使用此代码,如果焦点应用程序处于焦点状态,我可以更改语言:

#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;
}

但我需要在应用程序关闭后或确定更改系统键盘语言 如果应用程序中未设置焦点。

有人可以帮助我吗?

c++ c winapi keyboard foreign-keys
2个回答
3
投票

如果您真的需要更改用户的键盘布局,您可以使用以下功能: GetKeyboardLayoutName()LoadKeyboardLayout()


0
投票

下一个命令将系统键盘布局更改为英语:

PostMessage(GetForegroundWindow(), WM_INPUTLANGCHANGEREQUEST, 1, 0x04090409);

俄语:

PostMessage(GetForegroundWindow(), WM_INPUTLANGCHANGEREQUEST, 1, 0x04190419);
© www.soinside.com 2019 - 2024. All rights reserved.