如何分别封锁Ctrl+Alt+Del和其他的快捷键(如Alt+Tab)

PoolD 2000-08-21 12:27:00
如标题。
用SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,1,nil,0);会将所有的快捷键封锁,并且不能在NT下使用。
那么是否有其他的方法?
如果问题很复杂,可以再加分。
...全文
346 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kingron 2000-12-22
  • 打赏
  • 举报
回复
2 alwssoan:
人家已经把问题说得很清楚了,请看清楚题目!
Kingron 2000-12-22
  • 打赏
  • 举报
回复
可以,当时我测试通过,后来改动了一下,有个地方写错了:
procedure TForm1.FormCreate(Sender: TObject);
begin
aatom:=globaladdatom('hot key');
if not RegisterHotKey(handle,aatom,mod_alt,vk_tab) then
showerrormessage;
end;

将Vk_tab改成Vk_F4就可以了。//呵呵,不好意思...........
alwssoan 2000-12-22
  • 打赏
  • 举报
回复
用zheng的方法最干脆
netsong 2000-12-20
  • 打赏
  • 举报
回复
同意zheng,恢复用SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
zheng 2000-12-20
  • 打赏
  • 举报
回复
procedure TForm1.FormCreate(Sender: TObject);  
begin  
var  
tmp : integer;
  begin
  tmp := 0;
  //屏蔽 Alt-Tab
  SystemParametersInfo( SPI_SETFASTTASKSWITCH, 1, @tmp, 0);
  //屏蔽 Ctrl-Alt-Del
  SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @tmp, 0);  
end;
end;

关注~~~~~~~~~~~~~~~~~~
whoo 2000-12-20
  • 打赏
  • 举报
回复
Try Hook SystemKey.
hunterzhang 2000-12-20
  • 打赏
  • 举报
回复
listening...
saoren 2000-12-20
  • 打赏
  • 举报
回复
to Kingron
拦不了。copy 过来的,不行,根本不响应TForm1.hotkey(var msg:Tmessage);
Kingron 2000-12-20
  • 打赏
  • 举报
回复
倒是可以拦截Alt+F4:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
aatom:atom;
procedure hotkey(var msg:tmessage);message wm_hotkey;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
aatom:=globaladdatom('hot key');
if not RegisterHotKey(handle,aatom,mod_alt,vk_tab) then
showerrormessage;
end;

procedure TForm1.hotkey(var msg:tmessage);
begin
if (msg.LParamHi=VK_F4) and (msg.LParamLo=MOD_ALT) then
begin
SetForegroundWindow(handle);
showmessage('You Press Alt+F4');
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(handle,aatom);
globalDeleteatom(aatom);
end;

end.
saoren 2000-12-20
  • 打赏
  • 举报
回复
public
procedure WndProc(var Message: TMessage); override;
procedure TForm1.WndProc(var Message: TMessage);
var msg:DWord;
begin
msg:=Message.msg;
case msg of
WM_COMMAND:// youself process
WM_LBUTTONUP:// youself process
WM_HOTKEY:// youself process
...
end;
inherited WndProc(Message);
end;
saoren 2000-12-20
  • 打赏
  • 举报
回复
如果能把Windows的消息都给弄过出,就有戏了,那我就可以控制windows,不过还不知道怎样把
windows的注册的热键消息也搞过来,在我的程序中处理后,再交给windows.
不过这个你试试:
govy 2000-08-21
  • 打赏
  • 举报
回复
关注
govy 2000-08-21
  • 打赏
  • 举报
回复
关注
Michaelyfj 2000-08-21
  • 打赏
  • 举报
回复
关注...

5,379

社区成员

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

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