2012-03-13 80 views
1

我需要更改键盘语言。 与此代码我可以在重点应用,如果更改语言:如何更改Windows中的语言键盘布局(C++)

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

,但我需要绝对更改系统键盘语言,之后的应用有或 如果应用程序没有设置焦点。

任何可以帮助我吗?

+1

我怀疑这是可能的。想象一下,如果另一个应用可以做同样的事情 - 谁会赢?它不是控制系统语言的应用程序,而是用户。 – Skizz 2012-03-13 14:06:36

+0

看到[这个问题](http://stackoverflow.com/q/9669352/588306)发布之前不到24小时 – Deanna 2012-03-13 14:07:19

+0

我甚至不确定“系统键盘语言”存在;它看起来像每个进程的设置。顺便提一句,'WM_INPUTLANGCHANGEREQUEST'是Windows(OS)发出的一条消息,用于通知程序用户想要改变输入语言;它不是程序向其他程序发出请求的受支持方式。 – MSalters 2012-03-13 14:22:46

回答

1

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

+0

Nope - “只影响当前进程的布局”,即不是“系统键盘语言“从这个问题。 – MSalters 2012-03-13 14:18:31

+0

对不起,我确实怀念**系统**字!我想唯一的方法是通过注册表(http://www.easydesksoftware.com/keyboard.htm)。 – 2012-03-13 14:26:02