【发布时间】:2012-03-29 22:39:24
【问题描述】:
我需要更改键盘语言。 如果在焦点应用程序中,我可以使用此代码更改语言:
#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;
}
但我确实需要更改系统键盘语言,在应用程序关闭后或 如果应用中没有设置焦点。
任何可以帮助我?
【问题讨论】:
-
我怀疑这是可能的。想象一下,如果另一个应用程序可以做同样的事情 - 谁会赢?控制系统语言的不是您的应用程序,而是用户。
-
查看this question 在您的帖子前不到 24 小时发布
-
我什至不确定是否存在“系统键盘语言”;它看起来像一个每个进程的设置。顺便说一句,
WM_INPUTLANGCHANGEREQUEST是来自 Windows(操作系统)的消息,用于通知程序用户想要更改输入语言;这不是程序向其他程序发出请求的受支持方式。 -
这种行为的正当理由是什么?更改系统设置的程序(并且可能无法撤消此操作,尤其是在崩溃时)将立即从我的 PC 中删除并禁止
标签: c++ c winapi keyboard foreign-keys