2个老问题:1如何屏蔽系统的ALT+F4和桌面上按下鼠标右键的弹出菜单?(200分)

  • 主题发起人 主题发起人 beilei
  • 开始时间 开始时间
B

beilei

Unregistered / Unconfirmed
GUEST, unregistred user!
要屏蔽系统全局的ALT+F4,以及鼠标右键的弹出菜单,
应该是用键盘和鼠标hook吧?
可惜我对这方面不熟悉,谁能给出代码?
一个一百分:)
 
屏蔽全局的alt+f4没有意义!
如果不想让你的程序被alt+f4关闭的话可以设置一个全局变量canexit并置为false;
在form的onclosequery中设置canclose:=canexit;即可。为了使程序能够正常退出可以在
程序代码的close前添加canexit:=true;
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
if (ssAlt in shift)and(key=115) then key:=0;
end;
这样可以屏蔽
 
右键可以在要实现的控件的属性中设
 
好象用SystemParametersInfo也可以,不过具体的调用我忘了,你可以自己看看(再win32s help里)!嘿嘿
用hhzh426的方法也可以啦!
 
var temp:integer;
  begin
   SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @temp, 0);
  end;
//禁止alt+tab,alt+ctrl+del等功能键
把Windows“唤醒”。代码如下:
  var temp : integer;
  begin
   SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @temp, 0);
  end;
 
屏蔽全局的alt+f4是任务(为什么?我也不知道:()
用设置屏幕保护的方法屏蔽不掉alt+f4
屏蔽全局的鼠标右键的弹出菜单也是一样,也许只能hook了
 
hook程序不会编呀,那位高手帮忙,我可以给分
 
向系统注册Alt+F4热键,然后在代码里什么也不做,这样可以屏蔽全局的 Alt+F4:
private
{ Private declarations }
HotKeyId: Integer;
procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;

procedure TForm1.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LparamLo = Mod_Alt) And (Msg.LParamHi = VK_F4) then
begin
// 什么也不做
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HotKeyId := GlobalAddAtom('HotKey') - $C000;
RegisterHotKey(Handle, hotkeyid, Mod_Alt, VK_F4);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(handle, HotKeyId);
end;
 
to Fyx
用这种方法能单纯的屏蔽ctrl+alt+del键吗,用模拟屏幕保护的方法连alt+tab键也屏蔽了,
我可不想屏蔽alt+tab键.
 
fyx 的方法之屏蔽了 alt+f4 健你可以改动就屏蔽 ctrl+alt+del 健了
 
怎么改动???在NT下
 
beilei:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
《〈happytaa:
你这样的做法是有问题的,只有当焦点是在FORM上的时候才行,如果焦点在其他的控件是不
行的。

实现这个功能有很多种方法,楼上的兄弟已经说了几种了,HOOK我是用过了,不过我觉得
实现这个功能不用HOOK吧呵呵
我提供一种方法了截获wm_syscommand消息,if Message.wParam = SC_CLOSE
就是了呵呵
希望能帮到你了
 
是一个叫wm_queryclose..的消息,我忘了,你查查吧。
 
后退
顶部