老话题,屏弊系统功能键(20分)

  • 主题发起人 主题发起人 red
  • 开始时间 开始时间
R

red

Unregistered / Unconfirmed
GUEST, unregistred user!
我在PWIN97下用SystemParametersInfoSpi_screensaverrunning,1,@temp,0);
后,其他键不能用,但ALT+F4仍然可以关闭我的程序,怎么回事?
 
该句屏蔽ctrl+alt+del你还要屏蔽alt+tab,alt+f4
 
我用该句后,alt+tab也能屏蔽,但alt+f4该怎么屏蔽呢?
 
可以通过以下的程序段屏蔽这些按键。  

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;
 
当你不需要让用户按Alt+Enter、Ctrl+Alt+Del、Ctrl+Esc等功能键的时候加入以下代码:
Var
temp:integer;
begin
SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
end;
当你要恢复功能键时用以下代码:
Var
Temp:integer;
begin
SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
end;
 
屏蔽ALT+F4
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:= canone
end;
或者
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=false
end;
 
Var
temp:integer;
begin
SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
end;
  当你要恢复功能键时用以下代码:
Var
Temp:integer;
begin
SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
end;
 
还是在on-close事件里面加代码比较简单可行!
 
使窗体可以预览按钮,并判断ALT+F4,如果是就改为#0。
至于其它按钮,<a href="http://glowing.yeah.net">我主页</a>上早有此文章,请看看。
 
; SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@tmp,0); 能行的!!!
 
这是“程序员大本营上”的,希望对你有所启发与帮助
也许您希望您的程序在运行时不想让用户按系统按键 Alt-Tab 或  Ctrl-Alt-Del,那么可以通过以下的程序段屏蔽这些按键。  

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;
 
To: swj
和我的一模一样?
 
3h的方法就是使用窗体的OnKeyDown事件来检测击键:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;Shift:TShiftState);
begin
if (ssAlt in shift)and(key=115) then key:=0;
end;
 
多人接受答案了。
 
后退
顶部