屏蔽所有键盘按键(50分)

  • 主题发起人 主题发起人 LeeChange
  • 开始时间 开始时间
写个keyboard hook 就可以了,不过无法屏蔽ctrl+alt+del
 
先用SystemParametersInfo屏蔽ctrl+alt+del,后用keyboard hook
 
把键盘拿走不就结拉,不用写程序,您如果是在开发系统的话建议您选用触摸屏
 
请问devuser,如何用程序将键盘拿走,如何用程序将我的14寸隔行彩显变成触摸屏
 
1. D.J.方案
2. 把键盘放在抽屉里,抽屉上锁
3. 拔掉键盘电缆,插口贴上封条
......
 
这年头,能人越来越多...
 
//屏蔽所有键盘按键
应该就在你自己的程序中吧。
在keydown事件中不能解决问题么?
 
推荐使用David Jiang的方法。不过我在使用时发现一个问题,我在家中的WIN98下可以
屏蔽掉CTRL+ALT+DEL,ATL+TAB,但是在单位中的WIN97就不可以,真是很奇怪。你可以
试试。
先使自己的程序最大化, 用SystemParametersInfo屏蔽掉特殊键后,再把TASKBAR关掉,
再在自己的程序中屏蔽掉其它的键。这样来自键盘的消息就被过滤了。
当然,退出程序时,别忘了打开关掉的东西。
procedure ShowTaskBar;
var
wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
wndHandle := FindWindow(@wndClass[0], nil);
ShowWindow(wndHandle, SW_RESTORE);
end;
procedure HideTaskBar;
var
wndHandle : THandle;
wndClass : array[0..50] of Char;
begin
StrPCopy(@wndClass[0], 'Shell_TrayWnd');
wndHandle := FindWindow(@wndClass[0], nil);
ShowWindow(wndHandle, SW_HIDE);
end;
屏蔽系统键:
systemparametersinfo(spi_screensaverrunning,1,nil,0);
打开系统键:
systemparametersinfo(spi_screensaverrunning,0,nil,0);
 
105键盘上有个turbo可以锁,不知是什么码
 
function KbHook( code: Integer; wparam: Word; lparam: LongInt ): LongInt;
begin
if code < 0 then
KbHook := CallNextHookEx( oldHook, code, wparam, lparam )
else
KbHook := 1;
end;

procedure DisableKeyboard;
begin
oldHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0 );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
DisableKeyboard;
end;
 
从别的资料上Copy过来的:
Library KillKB;

Uses Wintypes, WinProcs
{$IFNDEF VER80}
,Win31
{$ENDIF}

Var
oldHook: HHook;

Function KbHook( code: Integer; wparam: Word; lparam: LongInt ): LongInt;
export;
Begin
If code < 0 Then
KbHook := CallNextHookEx( oldHook, code, wparam, lparam )
Else
KbHook := 1;
End; { KbHook }

Function DisableKeyboard: Boolean; export;
Begin
oldHook := SetWindowsHookEx( WH_KEYBOARD, KbHook, HInstance, 0 );
DisableKeyboard := oldHook <> 0;
End;

Procedure EnableKeyboard; export;
Begin
If oldHook <> 0 Then Begin
UnhookWindowshookEx( oldHook );
oldHook := 0;
End; { If }
End;

exports
DisableKeyboard index 1,
EnableKeyboard index 2;

Begin
oldHook := 0;
End.
 
不知道如果是一种新型的键盘,比如人体工程学的那种,如何处理??
所以拿走键盘是最好的!
 
to Fyx
嘻嘻,你和我copy同一个冬冬噢
 
to:各位大蝦
如何屏蔽Delphi自定義功能鍵,如Insert是在DBGrid中插入一行?
 
LeeChange:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
接受答案了.
 
后退
顶部