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;```这将使用低级键盘钩子屏蔽所有按键。请注意,这可能会导致用户无法退出应用程序或进行其他必要操作,因此请谨慎使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
快乐居家美食
2007-07-18 · TA获得超过1943个赞
知道大有可为答主
回答量:2392
采纳率:100%
帮助的人:1572万
展开全部
用楼上所讲的原理就可以了,这个可以禁用如:CTRL + ESC、ALT + F4、ALT + ENTER、WIN...的键,不过似乎没有办法禁用CTRL + ALT + DEL,不过可以找一些其它的方法来实现,可以到微软的网站上去找一下关于修改gina.dll的资料,在例子上有另一种方法:
http://www.2ccc.com/article.asp?articleid=44
或是直接用计时器检测、关闭任务管理器更简便一些,因为CTRL + ALT + DEL的作用就是打开任务管理器。
关于详细的键盘钩子的资料,可以用Delphi 钩子 为关键词搜索一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jxsbb
2007-07-18 · TA获得超过383个赞
知道小有建树答主
回答量:314
采纳率:100%
帮助的人:390万
展开全部
好吧,为了你的追加分,我豁出去了,把老底子都给你端出来吧!不过看样子你只能追加我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.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旅找未6040
2007-07-18 · 贡献了超过107个回答
知道答主
回答量:107
采纳率:0%
帮助的人:51.7万
展开全部
那要用到API函数,还是多看点书吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式