怎样屏蔽键盘鼠标事件?(100分)

  • 主题发起人 主题发起人 lyang_1
  • 开始时间 开始时间
L

lyang_1

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好!
怎样屏蔽键盘鼠标事件?我正在写一个IC卡控制电脑使用的程序,电脑在没有人用的话是
处于屏保状态,此时我不希望有任何鼠标键盘事件能被WIN9X响应,直到读卡器中有卡;
程序的其他部分已完成,但控制键盘鼠标做得不好,是不是可以用HOOK过滤掉键盘鼠标
消息?请给出代码。拜托
 
抄别人的答案

--------------王天[98-12-28 15:57:12]-------------------------
//请试一试该程序
var
YourHook: HHOOK;

//定义用于HOOK的消息,也可以是windows的标准消息
const
WM_YourMessage = WM_USER + 2000;

//发送你需要的消息
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(self.Handle,WM_YourMessage,0,0);
end;

//你的HOOK处理函数
function YourHookProc(Code: Integer; WParam: Longint; var Msg: TMsg): Longint; stdcall;
begin
// if (Code = HC_ACTION) then
if Msg.Message = WM_YourMessage then
//调用你自己的HOOK函数
begin
showMessage('截获该消息');
end;
Result := CallNextHookEx(YourHook, Code, WParam, Longint(@Msg));
end;

//安装HOOK
procedure TForm1.FormCreate(Sender: TObject);
begin
YourHook := SetWindowsHookEx(WH_GETMESSAGE, @YourHookProc, 0, GetCurrentThreadID);
end;
 
为什么不发一个屏保的Api.屏蔽键盘等事件,而上自己的程序执行。
直到再发一个取消屏保的Api.(以前好象有个例子).
 
干脆把屏幕给锁定了吧,这样你虽然可以看到电脑的东西,但鼠标和键盘都不能动的:
var h1,h2:Thandle;
begin
h1:=findwindow('progmam',nill);
h2:=findwindow('shell_traywnd',nil);
enablewindows(h1,true);//false 的话解锁
enablewindow(h2,true);//false的话解锁
end;
 
把屏幕给锁定的方法很好,我喜欢
 
我想知道findwindow('progmam',nill);
findwindow('shell_traywnd',nil);
是什么意思
 
progman是桌面窗口类名(没记错的话);
shell_traywnd是任务栏窗口的类名。
findwindow是用来得到一个窗口的句柄。
 
很简单啊,用keyboardhook,然后在回调函数中不让result:=0就ok了,什么都吃掉了。要
源码给我来信
zhang7peng@263.net
 
var h1,h2:Thandle;
begin
h1:=findwindow('progmam',nil);
h2:=findwindow('shell_traywnd',nil);
enablewindows(h1,false);//false 的话解锁
enablewindow(h2,false);//false的话解锁
end

试了这段程序,他可以锁住任务栏,但锁不住桌面,是不是PROGMAN 写错了?
桌面的窗口类名是什么?
 
桌面窗口类名是什么?

谢谢
 
progmam拼错啦
应该是
program
 
改成program,还是锁不住桌面!?
 
blockinput绝对行,不过在2000下不能锁ctrl+Del_alt,要另外再写一句
 
to lynu:
在2000下另外写一句什么能锁ctrl+del+alt?(不通过GINA)
 

Similar threads

I
回复
0
查看
992
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部