大家知道智能ABC输入法有漏洞,可以直接把程序关掉,在一些网吧管理类软件的客户端就很成问题,现在我想有没有可能将EDIT之类的输入框设置成只能在英文状态,不能切换成中文输入法,不就可以解决这种问题了吗?但我试了好多方法都不行,比如在窗体中建立wm_ime***之类的的消息映射,还有用timer不停向edit发关闭输入法的消息,但都不管用。有没有办法解决呢?但我知道把tedit的passwordchar设置一下,使它变成密码输入框,这时就无法切换到中文,但这样,输入的字符又显示不出来了!
调试欢乐多
var Handled: Boolean);
begin
case Msg.message of
WM_INPUTLANGCHANGEREQUEST, 49836, 49340: Handled := True;
end;
end;瘦人鱼不如美人鱼
加一个日志
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Memo1.Lines.IndexOf(IntToStr(Msg.message)) < 0 then
Memo1.Lines.Add(IntToStr(Msg.message));
end;
发现切换输入法的时候打出
80
49836
4934080=$50
到messages.pas中搜索 "50"
找到WM_INPUTLANGCHANGEREQUEST = $0050
其他两个消息不知道,直接写数值
屏蔽掉这些消息测试,正是该结果
game over