当一个程序需要阻止屏幕保护程序一段时间时,有以下两种方法
来源:互联网 发布:license破解软件 编辑:程序博客网 时间:2024/06/05 16:46
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,FALSE,NULL,0)
当一个程序需要阻止屏幕保护程序一段时间时,有以下两种方法
分类: Delphi / Lazarus 技术资料2011-01-20 21:51 196人阅读 评论(0) 收藏 举报第一种方法是使用API函数SystemParametersInfo来禁止屏幕保护程序,最来再激活它。 使用这种方法,你只最简单地在Form.OnCreate中加入禁止代码,在Form.OnDestroy加入激活代码:
--------------------------------------------------------------------------------
TMyForm = class(TForm) ... procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); ... end;
procedure TMyForm.FormCreate(Sender: TObject); begin ... //Disable screensaver SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, nil, 0); ... end;
procedure TMyForm.FormDestroy(Sender: TObject); begin ... //Disable screensaver SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, nil, 0); ... end;
--------------------------------------------------------------------------------
这种方法会导致一个问题:如果程序是由其它原因关闭,并没有触发OnDestroy事件,在这种情况下,屏幕保护程序就再也不会被激活了! 解决这个问题的方法是在程序的主窗口中拦截WM_SYSCOMMAND消息:当要妄动屏幕保护程序时,Windows向所有的最高层窗口发送这个消息,包含的wParam参数设置为SC_SCREENSAVE。你只要设置这个消息的返回值为一个非零值,则屏幕保护程序将不会启动。 如果你的程序由于未知原因关闭了,那么你的程序将不会响应这个消息,于是屏幕保护程序正常启动。
以下就是这个技巧:
--------------------------------------------------------------------------------
在你的窗体中声明一个消息句柄如下:
TMyForm = class(TForm) ... private procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; ... end;
在实现部分这样做:
procedure TMyForm.WMSysCommand(var Message: TWMSysCommand); begin if Message.Msg = SC_SCREENSAVE then Message.Result := 1 else Inherited; end;
- 当一个程序需要阻止屏幕保护程序一段时间时,有以下两种方法
- 当一个程序需要阻止屏幕保护程序一段时间时,有以下两种方法
- 两种方法,阻止一个程序运行两次。
- 两种方法,阻止一个程序运行两次。
- fle弹出窗口的方法大概有以下两种
- 生成android的keystore文件有以下两种方法:
- 一个glut程序至少需要以下几个lib
- 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图
- 总结以下三种方法,实现c#每隔一段时间执行代码:
- super关键字主要有以下两种用途
- 常见的内存溢出有以下两种:jvm
- 当在一个方法中需要返回多个参数时的做法
- jquery阻止事件冒泡的两种方法
- jquery阻止事件冒泡的两种方法 .
- 两种阻止提交表单(form)的方法实现
- jquery阻止事件冒泡的两种方法
- 浅谈阻止事件冒泡的两种方法
- js阻止事件冒泡的两种方法
- Ubuntu下Mysql数据库的安装和使用
- 阻止屏保运行、显示器和系统待机
- 耦合性
- 定时关机命令:教你如何在Windows XP使用定时关机命令
- 面向对象分析的基本过程
- 当一个程序需要阻止屏幕保护程序一段时间时,有以下两种方法
- DM8168 PCIe设计与布线
- lucene 自定义分词器小程序
- asp.ne系统对象学习
- 3 approach to create mex endpoint
- Erlang HIPE/x86尾调用优化
- gdb+gdbserver调试
- Android 学习记录3 -Activity 的生命周期
- myeclipse8.5中集成flex4.5