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

PoolD 2000-08-21 12:27:00
如标题。
用SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,1,nil,0);会将所有的快捷键封锁,并且不能在NT下使用。
那么是否有其他的方法?
如果问题很复杂,可以再加分。
...全文
348 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
  • 打赏
  • 举报
回复
关注...
在我们开始构建应用程序之前,花一分钟的时间来了解在像Ethereum这样的去中心化平台上构建产品的动机。eBay取得了巨大的成功,因为它使得买卖非常有效率。在互联网成为主流之前,人们只能在当地社区购买和出售商品,当然也可以在一定的地理范围内购物。随着越来越多的人上网,像eBay这样的公司完全可以体验整个线下购物拍卖的场景,任何人都可以在互联网上从世界任何地方买卖任何东西。 eBay对于消费者和商人都具有划时代的意义。尽管这对大家都有好处,并且总体上改善了贸易和经济,但是它有一些缺点。参与的商人都在受到公司的相关限制:公司可以随时决定是否阻止商家自行处理交易,这对商人来说可能是一个巨大的打击。商家支付费用列出他们的产品,并支付销售佣金。付费本身并不是那么糟糕,因为eBay提供服务。然而,上市费有时太高,商家要么保证金很高,要么把这笔费用交给消费者。商家/消费者不拥有他们的任何数据。评论、购买历史等都是这些公司所有。例如,如果商家想将自己的操作转移到另一个提供商,那么导出她的评论或其他数据是几乎不可能的。在以太坊这样的平台上构建产品解决了这些问题。商户的账户不能被封锁,数据是公开的,所以它可以很容易导出,交易费用比中心化的公司少很多很多。

5,386

社区成员

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

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