怎样屏蔽键盘的输入

heimukai 2003-04-10 06:42:40
怎样屏蔽键盘的输入,或者只屏蔽数字键和字符键。
谢谢!
...全文
161 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
supermanzd 2003-08-09
  • 打赏
  • 举报
回复
版主,你看好了
procedure TForm1.Button1Click(Sender: TObject);
Var
rtButton2: TRect;
Temp:integer;
begin
rtButton2 := Button2.BoundsRect;
MapWindowPoints(handle, 0, rtButton2, 2); // 座标换算
ClipCursor(@rtButton2); // 限制滑鼠移动区域
SystemParametersInfo(spi_screensaverrunning,1,@temp,0);

end;

锁鼠标上面说了,锁键盘:
procedure TForm1.Button1Click(Sender: TObject);
begin
Asm //封锁20端口
IN AL,21H
OR AL,02H
OUT 21H,AL
end;
end;

解锁键盘:
procedure TForm1.Button2Click(Sender: TObject);
begin
Asm //解锁20端口
IN AL,21H
AND AL,0FDH
OUT 21H,AL
end;
end;

Bitter_fish 2003-08-09
  • 打赏
  • 举报
回复
用钩子。想怎样就怎样。
李_军 2003-08-09
  • 打赏
  • 举报
回复
看看我这个贴子把
http://expert.csdn.net/Expert/topic/2094/2094919.xml?temp=.2165949
ronaldli 2003-08-09
  • 打赏
  • 举报
回复
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure OnAppMessage(var Msg: TMsg; var Handled: Boolean);
public
{ Public declarations }
end;

procedure TForm1.OnAppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if (Msg.message = WM_KeyDown) then
Handled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := OnAppMessage;
end;
xiufengy 2003-08-09
  • 打赏
  • 举报
回复
MARK
sssa2000 2003-08-08
  • 打赏
  • 举报
回复
有一个很好的办法
用内嵌汇编,我记得只要3条语句就让键盘彻底失效,不过要恢复的话必须关机
micher_yan 2003-08-08
  • 打赏
  • 举报
回复
考, EnableWindow也较屏蔽键盘啊?用完之后连窗体都不响应了,
dreamonce 2003-04-11
  • 打赏
  • 举报
回复
我试验过了,在keypress中
key:=#0
并不能屏蔽箭头,delete等键,
还是使用在Keydow中
key:=0;
不过这样也不能屏蔽Ctrl+Shift,Ctrl+Space,Ctrl+Alt+Delete等键,
如果你的要求很高,那么使用hook吧
easyboot 2003-04-11
  • 打赏
  • 举报
回复
key:=#0就可以屏蔽键盘输入
wslashy 2003-04-11
  • 打赏
  • 举报
回复
函数原型:BOOL EnableWindow(HWND hWnd,BOOL bEnable);

当然有个更简单的办法就是操作注册表

cjfzy 2003-04-11
  • 打赏
  • 举报
回复
同意: shadowfish(小鱼)
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
在keypress中
key:=#0就可以屏蔽键盘输入
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
papaya_stone 2003-04-11
  • 打赏
  • 举报
回复
用键盘钩子。
icu 2003-04-11
  • 打赏
  • 举报
回复
可以用钩子函数
tpmao 2003-04-11
  • 打赏
  • 举报
回复
在keypress中
key:=#0就可以屏蔽键盘输入
cenjoyer 2003-04-11
  • 打赏
  • 举报
回复
你是要屏蔽所有键还是只是屏蔽系统热键?
若是要屏蔽系统热键,你是要在win9x下还是在w2k下呢?(在win9x下很容易,在W2k下很难)
kklkd333 2003-04-10
  • 打赏
  • 举报
回复
也可以发送屏幕保护的假消息,我见过!
cyclone2050 2003-04-10
  • 打赏
  • 举报
回复
Application.OnMessage
接管这个事件,然后在里面写。
shadowfish 2003-04-10
  • 打赏
  • 举报
回复
在keypress中
key:=#0就可以屏蔽键盘输入
Michaelyfj 2003-04-10
  • 打赏
  • 举报
回复
在form的keypress中,

if key in ('0'..'9')等 then
key:=#0;

1,183

社区成员

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

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