delphi高手进,键盘屏蔽的问题
我想编一个程序,全屏,屏蔽所有键盘按键,包括系统热键。最好是简单一点的方法。如果有源代码,有追加!!!不知道的别瞎回答!!!!!!...
我想编一个程序,全屏,屏蔽所有键盘按键,包括系统热键。最好是简单一点的方法。如果有源代码,有追加!!!
不知道的别瞎回答!!!!!! 展开
不知道的别瞎回答!!!!!! 展开
2023-05-12
展开全部
您好,您需要什么样的键盘屏蔽功能呢?以下是一些示例代码,希望能够帮助到您。1.屏蔽特定按键使用Form的OnKeyDown事件,阻止某些按键的默认行为。例如,以下代码可以阻止用户按下Alt键:```procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if Key = VK_MENU then Key := 0;end;```2.屏蔽所有按键如果您想要完全禁用键盘,可以使用键盘钩子。以下是一些示例代码:```type TForm1 = class(TForm) // ... private FKeyboardHook: HHook; function KeyboardProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; end;implementationconst WH_KEYBOARD_LL = 13;function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;begin Result := 1; // 屏蔽所有按键end;procedure TForm1.FormCreate(Sender: TObject);begin FKeyboardHook := SetWindowsHookEx(WH_KEYBOARD_LL, @KeyboardHookProc, HInstance, 0);end;procedure TForm1.FormDestroy(Sender: TObject);begin UnhookWindowsHookEx(FKeyboardHook);end;```这将使用低级键盘钩子屏蔽所有按键。请注意,这可能会导致用户无法退出应用程序或进行其他必要操作,因此请谨慎使用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
展开全部
用楼上所讲的原理就可以了,这个可以禁用如:CTRL + ESC、ALT + F4、ALT + ENTER、WIN...的键,不过似乎没有办法禁用CTRL + ALT + DEL,不过可以找一些其它的方法来实现,可以到微软的网站上去找一下关于修改gina.dll的资料,在例子上有另一种方法:
http://www.2ccc.com/article.asp?articleid=44
或是直接用计时器检测、关闭任务管理器更简便一些,因为CTRL + ALT + DEL的作用就是打开任务管理器。
关于详细的键盘钩子的资料,可以用Delphi 钩子 为关键词搜索一下。
http://www.2ccc.com/article.asp?articleid=44
或是直接用计时器检测、关闭任务管理器更简便一些,因为CTRL + ALT + DEL的作用就是打开任务管理器。
关于详细的键盘钩子的资料,可以用Delphi 钩子 为关键词搜索一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好吧,为了你的追加分,我豁出去了,把老底子都给你端出来吧!不过看样子你只能追加我50分了,唉郁闷!
(xp下调试通过,其他不知道!)
unit LockTheKB;
interface
uses
Wintypes, WinProcs;
//键盘上锁
Function DisableKeyboard: Boolean;
//键盘解锁
Procedure EnableKeyboard;
implementation
var
oldHook: Hhook;
Function KbHook( code: Integer; wparam: Word; lparam: LongInt ): LongInt;
Begin
If code < 0 Then
KbHook := CallNextHookEx( oldHook, code, wparam, lparam )
Else
KbHook := 1;
End; // KbHook
Function DisableKeyboard: Boolean;
//上锁
Begin
oldHook := SetWindowsHookEx( WH_KEYBOARD, @KbHook, Hinstance, 0 );
DisableKeyboard := oldHook <> 0;
End;
Procedure EnableKeyboard;
//解锁
Begin
If oldHook <> 0 Then
Begin
UnhookWindowshookEx( oldHook );
oldHook := 0;
End; // If
End;
end.
(xp下调试通过,其他不知道!)
unit LockTheKB;
interface
uses
Wintypes, WinProcs;
//键盘上锁
Function DisableKeyboard: Boolean;
//键盘解锁
Procedure EnableKeyboard;
implementation
var
oldHook: Hhook;
Function KbHook( code: Integer; wparam: Word; lparam: LongInt ): LongInt;
Begin
If code < 0 Then
KbHook := CallNextHookEx( oldHook, code, wparam, lparam )
Else
KbHook := 1;
End; // KbHook
Function DisableKeyboard: Boolean;
//上锁
Begin
oldHook := SetWindowsHookEx( WH_KEYBOARD, @KbHook, Hinstance, 0 );
DisableKeyboard := oldHook <> 0;
End;
Procedure EnableKeyboard;
//解锁
Begin
If oldHook <> 0 Then
Begin
UnhookWindowshookEx( oldHook );
oldHook := 0;
End; // If
End;
end.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那要用到API函数,还是多看点书吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询