如何屏蔽CTRL+ALT+DEL和ALT+TAB,WIN键?
如何在程序中屏蔽CTRL+ALT+DEL和ALT+TAB,WIN键?
谢谢!
同时谢谢 olo,jiangtao 指点我刷新的问题.
问题点数:50、回复次数:33Top
1 楼olo()回复于 2000-01-11 18:08:00 得分 12
SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,nil,1);
可屏蔽CTRL+ALT+DEL。Top
2 楼jing()回复于 2000-01-11 19:00:00 得分 2
好象和注册表有关Top
3 楼Firing_Sky(火的天空)回复于 2000-01-11 19:47:00 得分 2
olo说的有道理,那是一个模拟屏幕保护程序状态的AP!Top
4 楼owen()回复于 2000-01-12 00:02:00 得分 2
olo说得对,这个API在DELPHI中也可实现。
我曾用它写了一个“礼物”(小恶作剧)Top
5 楼olo()回复于 2000-01-12 08:45:00 得分 0
对不起,应该是:
SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,nil,0);
ALT+TAB,WIN键可考虑写一个键盘钩子,另外CTRL+ESC也得屏蔽吧。Top
6 楼czhp()回复于 2000-01-12 12:30:00 得分 2
用SystemParametersInfo函数可屏蔽你所说的所有键, 不用再去找别的方法了!Top
7 楼tengel()回复于 2000-01-12 14:06:00 得分 0
可以写一个中间设备驱动程序,截获键盘中断Top
8 楼sean(sunbow)回复于 2000-01-12 14:18:00 得分 0
请问olo 参数nil 什么意思?Top
9 楼olo()回复于 2000-01-12 14:26:00 得分 0
在C中就是NULL。Top
10 楼olo()回复于 2000-01-12 14:27:00 得分 0
在C中就是NULL。DELPHI中是nil.Top
11 楼sean(sunbow)回复于 2000-01-12 15:50:00 得分 0
请问czhp如何屏蔽其他键。
其参数是什么?如何用?谢谢您!Top
12 楼sean(sunbow)回复于 2000-01-12 15:52:00 得分 0
请问olo 为什么我用SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,NULL,0);可以。但参数改为SPI_SETSWITCHTASKDISABLE以屏蔽Enables or disables ALT+TAB and ALT+ESC task switching却出现 C2065: 'SPI_SETSWITCHTASKDISABLE' : undeclared identifier
请问为什么!Top
13 楼sean(sunbow)回复于 2000-01-12 19:24:00 得分 2
好象还要考虑ALT+F4的问题。因为ALT+F4可以关闭任何程序。Top
14 楼czhp()回复于 2000-01-13 15:59:00 得分 0
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,TRUE,NULL,0);Top
15 楼PII()回复于 2000-01-13 18:13:00 得分 0
^v^Top
16 楼sean(sunbow)回复于 2000-01-14 10:00:00 得分 0
各位高手、朋友,ALT+F4还没解决呢?
我试过上述方法并为屏蔽这个组合!Top
17 楼supershan()回复于 2000-01-20 11:09:00 得分 10
Alt+F4可另做个程序:首先声明变量为B:Boolena,代码如下:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssAlt in shift) and (Key=VK_F4) then
begin
B:=False;
FormCloseQuery(sender,B);
end;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if B=False then
CanClose:=False
else
CanClose:=True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
B:=True;
Close;
end;
Top
18 楼blaise()回复于 2000-01-22 20:33:00 得分 10
For alt+tab:
HKEY_CURRENT_USER\Control Panel and Desktop and Coolswitch 0
need reboot.
For CTRL+ALT+DEL,I don't think there is anyway to disable it(UNDER NT),it's part of the security policy for NT,no way!
Top
19 楼Over()回复于 2000-01-23 22:57:00 得分 3
Alt+F4可以在OnsysCommand中cancelTop
20 楼ToniHoo()回复于 2000-01-29 01:57:00 得分 0
我试了试SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,NULL,0),
始终不行,OS 为WIN98,编译器用BC5.02 和 VC6。
再请问一下,如果用钩子截获ALT+CTRL+DEL 消息,
代码该如何写。请多多指教。
Top
21 楼auto()回复于 2000-02-02 22:20:00 得分 0
在WIN9X很简单,但是在WINDOWS NT下就比较难:-(。谁有办法在WINDOWS NT下也锁住,请EMAIL告知。非常感谢! mail to: albertzhang@163.netTop
22 楼ybchen(我)(是)(菜)(鸟)(我)(怕)(谁)回复于 2000-02-03 21:43:00 得分 3
//true: 程序屏蔽任何功能键,开始菜单,任务栏等
//false: 恢复
void ExclusiveAllWindows(bool ExAw)
{
HWND hWnd = FindWindow("Shell_traywnd", "");
if(hWnd)
{
if(ExAw)
{
ShowWindow(hWnd, SW_HIDE);
SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_HIDEWINDOW);
}
else
{
ShowWindow(hWnd, SW_SHOW);
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW);
}
}
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, !ExAw, "", 0);
SystemParametersInfo(SPI_SCREENSAVERRUNNING, ExAw, "", 0);
}Top
23 楼ToniHoo()回复于 2000-02-06 21:17:00 得分 0
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, NULL, 0);
this function can not work normal under win97, it can work
under win98.Top
24 楼yb()回复于 2000-02-07 03:21:00 得分 0
做一个系统的钩子,什么都解决了。Top
25 楼killer2000()回复于 2000-02-09 01:15:00 得分 0
还是做个系统钩子吧!
Top
26 楼Sandy()回复于 2000-02-09 19:05:00 得分 0
请看本站的技术文章吧!!Top
27 楼spe()回复于 2000-02-10 16:41:00 得分 0
Alt+F4可以用消息处理去拦住,在WM_SYSCOMMAND里当发现wParam为SC_CLOSE时直接return掉,不让它去调DefWindowProc。Top
28 楼saucerman(外星人)回复于 2000-02-17 19:19:00 得分 0
我在C++ Builder里也有与此相同的贴子,至今无满意答案。关键是——
操作系统环境应是NT而不是Win9x,Win9x下就太小儿科了,简直不用问!
NT简直太难屏蔽掉Ctrl+Esc和左右两个Win键及其他系统键了————
——更别说Ctrl+Alt+Del组合键!!!
有大虾说可用Hook完成,请给出例程,必须通过NT环境检验。
若此,他可以受到几乎所有人的敬仰!因为这不是小问题!!!Top
29 楼saucerman(外星人)回复于 2000-02-17 19:27:00 得分 0
此问题要在NT下解出——
简直神鬼皆泣!!!
天地为之动容!!!
万物皆为之而颤抖!!!
三呼万岁!!!Top
30 楼Eros()回复于 2000-02-17 20:07:00 得分 2
在任何平台:使用RegisterHotKey(),然后响应WM_HOTKEY就可以完成。具体例子可以在本站寻找,也可以直接向本人要。Top
31 楼saucerman(外星人)回复于 2000-02-17 20:43:00 得分 0
Eros:
请千万告知例程,或在哪里找得到!
直接E_mail给我好吗? truejun@163.net Top
32 楼JeffHe(雅永紫)回复于 2001-03-27 13:12:00 得分 0
Eros :
请讲一下你的RegisterHotKey(),然后响应WM_HOTKEY就可以完成的具体原理好吗?
hjjf@263.netTop




