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

lihongxing2002 2003-12-11 02:08:09
我想知道用户当前正在使用的输入法的名字怎么检测到。当输入法变更之后,Windows会发送WM_INPUTLANGCHANGE,我怎么捕捉这个消息,把变更后的输入法截获到,并且吧这个输入法的信息保存到相应的变量(用什么类型的变量,我不知道)中?
...全文
76 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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));
}

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧