如何屏蔽Alt+F4

saxash 2000-02-01 01:02:00
我已经屏蔽了Ctl-Alt-Del和Alt-Esc等等...
但Alt-F4能关掉程序。用了键盘钩子,可是
不会滤出按键,所有键都屏蔽掉了,一拔掉钩子
就Alt-F4...能否不用钩子,或只滤出Alt-F4,
请各位大虾指点。最好有源程。
...全文
697 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Venne 2000-02-01
  • 打赏
  • 举报
回复
不需要这么麻烦吧!

假设FORM的初始化TAG为零,则在FORM的ONCLOSE事件中可以这么写:

if tag=1 then
Action:=caFree
else
Action:=caNone;

然后在你确定可以关掉程序的地方,设置FORM的TAG为1,然后调用FORM的CLOSE事件就可以了,这和KXY说的差不多,好象用不着设置钩子这么麻烦吧!

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
tag:=1;
close;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if tag=1 then
action:=cafree
else
action:=canone;
end;

end.
Firing_Sky 2000-02-01
  • 打赏
  • 举报
回复
在钩子中发现不是ALT+F4就把值传到下一个钩子
caili 2000-02-01
  • 打赏
  • 举报
回复
在application.onevent中可以方便地屏蔽.
radish 2000-02-01
  • 打赏
  • 举报
回复
在HOOK中判断消息的WPARAM和LPARAM就可滤过ALT+F4
929 2000-02-01
  • 打赏
  • 举报
回复
在程序中处理WM_SYSKEYDOWN,检测所传的按键码是否等于F4,若是则处理之。
举例如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure WMSysKeyDown(var msg:tmessage);message wm_syskeydown;
// procedure WMSysCommand(var msg:Tmessage);message wm_syscommand;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
Caption :='alt+f4';
end;

{procedure TForm1.WMSysCommand(var msg: Tmessage);
begin
if msg.WParam =sc_close then
msg.Result :=0;
end;}

procedure TForm1.WMSysKeyDown(var msg: tmessage);
begin
if msg.WParam =vk_f4 then
msg.Result :=0;
end;

end.

在例子中,我还试着处理了WM_SYSCOMMAND,但处理后发现不可以,因为除了ALT+F4以外,菜单也可发出SC_CLOSE,处理后,窗口不会关闭。如果你的意思是彻底控制用户不可以任意关闭窗口,可以这样处理。
saxash 2000-02-01
  • 打赏
  • 举报
回复
It's simple!!
Thanks kxy first!!!
Thanks all!!!
ahfei 2000-02-01
  • 打赏
  • 举报
回复
g
kxy 2000-02-01
  • 打赏
  • 举报
回复
Form的OnCloseQuery
中CanClose := False;

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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