在Delphi中怎样实现在播放VCD的时候禁止屏保,而在结束播放的时候再恢复屏保?(25分)

  • 主题发起人 主题发起人 sunxiaoli
  • 开始时间 开始时间
Search in REG, I think.
 
在注册表中找到屏幕保护程序的文件位置,
把它保存后再清空,
播放完成时再写回来就可以了.
WIN2000 的注册表位置为:
HKEY_CURRENT_USER/Control Panel/Desktop
下的
SCRSAVER.EXE 键值为屏保的全路径,当键值不存在则无屏幕保护.
相关的键值还有:ScreenSaveActive,ScreenSaveTimeOut,ScreenSaverIsSecure
意义也非常明显.
用ReadString读入,WriteString写入就可以解决.
 
禁止屏幕保护
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,FALSE,NULL,SPIF_SENDCHANGE);
齐动屏幕保护
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,TRUE,NULL,SPIF_SENDCHANGE);
 
可以在程序里捕捉消息来禁止屏幕保护的启动
 
阻止屏幕保护自动启动.
{...}
public
procedure AppMessage(var Msg: TMSG;
var HAndled: Boolean);
{...}

procedure TForm1.FormCreate(Sender: TObject);
begin

// set your applications message handler to your new one
Application.OnMessage := AppMessage;
end;


{...}

procedure TForm1.AppMessage(var Msg: TMSG;
var Handled: Boolean);
begin

// let your application handle all messages initially
Handled := FALSE;

case Msg.Message of
WM_SYSCOMMAND :
if Msg.wParam = SC_SCREENSAVE then

Handled := TRUE;
// disable startup of screensavers
end;

end
 
才25分呀
 
在你的应用程序你的适当位置调用api函数
禁止屏幕保护
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,FALSE,NULL,SPIF_SENDCHANGE);
齐动屏幕保护
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,TRUE,NULL,SPIF_SENDCHANGE);
不会的话就改注册表
再不会的话就把屏保去了!
 
不必那么复杂,只要间隔不到1分钟用程序发一条键盘消息即可实现.
 
接受答案了.
 

Similar threads

D
回复
0
查看
802
DelphiTeacher的专栏
D
D
回复
0
查看
747
DelphiTeacher的专栏
D
D
回复
0
查看
696
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部