怎样屏蔽ctrl+alt+del键,但不要屏蔽alt+tab键.200分,急!急!急!(200分)

  • 主题发起人 主题发起人 duan_1
  • 开始时间 开始时间
D

duan_1

Unregistered / Unconfirmed
GUEST, unregistred user!
不要告诉我systemParametersInfo(Spi_screensaverrunning,1,@temp,0)这个不行.
 
好像有这样的控件
 
能说明白点吗?
vxd怎么用,控件是哪一个,从哪里下载?
 
systemParametersInfo 为什么不行?
 
用键盘hook
 
systemparametersinfo(Spi_screensaverrunning,1,@temp,0);
 
请参考
; ;不允许用户用Alt+Esc、Ctrl+Esc等系统组合键来切换到其他程序。为
达到此目的,可按以下步骤:
;
; ; ; 将Form的FormStyle属性设为fsStayOnTop
; ; ; 将Form的WindowState属性设为wsMaximized
; ; ; 在Form的OnCreate事件处理过程中为Windows发送一个屏幕保护程序正在运
; ; ; 行的消息
; ; ; 当程序结束时清除屏幕保护程序运行标志。
;
示例代码:
;
; ; ; ; ; ; procedure TForm1.FormCreate(Sender: TObject);
; ; ; ; ; ; var
; ; ; ; ; ; ; temp: Integer;
; ; ; ; ; ; begin
; ; ; ; ; ; ; SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0);
; ; ; ; ; ; end;
示例代码:
;
; ; ; ; ; ; procedure TForm1.FormCreate(Sender: TObject);
; ; ; ; ; ; var
; ; ; ; ; ; ; temp: Integer;
; ; ; ; ; ; begin
; ; ; ; ; ; ; SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0);
; ; ; ; ; ; end;
;
; ; ; ; ; ; procedure Form1.OnClose(Sender: TObject; var Action: TCloseAction);
; ; ; ; ; ; var
; ; ; ; ; ; ; temp: Integer;
; ; ; ; ; ; begin
; ; ; ; ; ; ; SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @temp, 0);
; ; ; ; ; ; end;


或者
; 到深度历险当一个叫 SetKey 的控件,就全解决了。这个控件还是带源码的!!
 
你们最好试一下再说,用SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0); 后,请看看alt+tab键是否还能用.
我可希望alt+tab键切换程序还管用.
 
我还发现“经典的”SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0);
是有问题的。只要你的机器运行屏保后,你的这种功能也就失效了,因为屏保程序退出
时又把参数改掉了。我曾经想截获屏保启动的消息(或者截获其他程序将参数改回0的
操作),但没有找到,希望高手赐教。
 
用vxd把ctrl+alt+del弄掉就可以了。我以前写过
可以提供这个vxd
 
to:热血,给我发一个吧 duan@371.net
 
to:热血 VXD??我也想要一份呀,能不能给??cgh0717@sina.com
 
我有办法:做一个键盘钩子,只要ctrl按下就
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0);
ctrl抬起就取消SystemParametersInfo设置。

懒得编程了。
 
agree with cee .简单点就这样了。

to:热血,给我发一个吧 gdd97@263.net.谢了。
 
想法容易,实现难. cee,hook程序中的只要ctrl按下就
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0);
ctrl抬起就取消SystemParametersInfo设置是怎么实现的.getkeystate函数我用的不爽.
 
to:热血,给我发一个吧 dingbaosheng@sina.com
 
我放到网上去了http://go.163.com/~qming/qmenu.vxd
直接在程序里面createfile就可以了
 
咋用呀?
var
hDevcie:Thandle;
begin
hDevcie:=CreateFile('qmenu.vxd',0,0,nil,0,FILE_FLAG_DELETE_ON_CLOSE,0);
然后呢?
end;
 
VxdHandle=CreateFile("////.//QMENU.VXD",0,0,NULL,0,FILE_FLAG_OVERLAPPED|FILE_FLAG_DELETE_ON_CLOSE,NULL);
就可以了,这句执行后ctrl+atl+del已经失效了
在退出程序时一定要用CloseHandle(VxdHandle)
因为程序不会自动关闭VxdHandle
 
后退
顶部