输入法的问题,用API怎么实现?

lihongxing2002 2003-12-11 02:08:09
我想知道用户当前正在使用的输入法的名字怎么检测到。当输入法变更之后,Windows会发送WM_INPUTLANGCHANGE,我怎么捕捉这个消息,把变更后的输入法截获到,并且吧这个输入法的信息保存到相应的变量(用什么类型的变量,我不知道)中?
...全文
12 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ccrun.com 2003-12-12
2003年1月的程序春秋上有介绍。控制输入法的就那几个API。

设置当前输入法用ActivateKeyboardLayout。
我现在上班ing.如果你实在搞不定,给我发个消息。
回复
lihongxing2002 2003-12-11
还有点疑问
怎么用API函数实现,设定当前的输入法为名称保存在变量szBuf中的输入法呢?
谢谢你了
回复
lihongxing2002 2003-12-11
谢谢。真厉害!!
回复
ccrun.com 2003-12-11
补充一下。上面的代码多了一行memset(szBuf, 0x00, 25);

另外,每种输入法都对应一个句柄,保存其相应句柄就可以了。
回复
ccrun.com 2003-12-11
// 获取当前输入法名称:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char szBuf[25];
memset(szBuf, 0x00, 25);
HANDLE hCurrentKBLayout;
//取回描述应用程序键盘布局的句柄,0表示取当前输入法
hCurrentKBLayout = GetKeyboardLayout(0);
memset(szBuf, 0x00, 25);
//获取指定输入法的名称
ImmGetDescription(hCurrentKBLayout, szBuf, 25);
if(String(szBuf).Length()==0)
strcpy(szBuf,"系统默认");
ShowMessage("当前输入法: " + String(szBuf));
}
回复
发动态
发帖子
Windows SDK/API
创建于2007-08-02

1202

社区成员

C++ Builder Windows SDK/API
申请成为版主
社区公告
暂无公告