博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi编写Win7屏幕保护唤醒工具
阅读量:6702 次
发布时间:2019-06-25

本文共 1087 字,大约阅读时间需要 3 分钟。

本工具网络下载地址:
本工具完整Delphi7源码:

//程序截图如下:

写此程序的目的:
    很多时候,我需要暂时离开电脑,不想关机,又想延长电脑屏幕的寿命,
所以我想到了屏幕保护。众所周知,在系统中设置了屏幕保护后,需要在指定
的一段时间内屏幕保护程序才能运行,而我的需求却是随时都可以启动屏幕保护
程序,因此有了写这款小程序的想法!...
程序的实现原理:
    原理很简单啦,其实就是给系统发送一个广播消息,让系统启动屏幕保护程序就可以了。
发送消息,有两个API可以使用,
一个是SendMessage(...),另一个是PostMessage(...),它们的
详细参数,有兴趣的朋友上网查下就可以了。
    需要说明的是我在本程序中刚开始使用的API是SendMessage,结果一启动屏幕保护程序,
我的程序就卡死了,后来换成了PostMessage,程序不卡了,功能一切正常。
估计是因为SendMessage发送消息时,直到别的程序处理完消息才返回,
没返回就等待,从而使自身程序失去系统消息响应、卡死了。
而PostMessage发送消息时,不等待线程处理消息就返回,是异步消息模式,因此没有导致程序的卡死。
程序的主要代码如下:
//启动屏幕保护按钮procedure TForm1.Stx_LaunchClick(Sender: TObject);beginRunSSProc();end;////屏幕保护启动过程procedure TForm1.RunSSProc();begin//暂停一秒,给用户一点时间释放键盘和鼠标//否则有可能启动屏幕保护失败Sleep(1000);//暂时想不通,为什么Delphi可以直接调用以下这行代码//SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_SCREENSAVE,0);PostMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_SCREENSAVE,0);//经测试用以下这行代码也可以,//HWND_BROADCAST参数在Delphi中用wnd_Broadcast来代替//WM_SYSCOMMAND在Delphi中用什么来代替,暂时我还没知道//SC_SCREENSAVE是个宏,实为61760//SendMessage(wnd_Broadcast,WM_SYSCOMMAND,61760,0);end;

转载于:https://www.cnblogs.com/friendan/archive/2012/10/12/2838159.html

你可能感兴趣的文章
Android中SimpleAdapter的使用—自定义列表
查看>>
Java常见Jar包的用途
查看>>
P1616 疯狂的采药(洛谷,动态规划递推,完全背包)
查看>>
MySQL同步状态双Yes的假象及seconds_behind_master的含义
查看>>
DAL调用SP时出现的异常处理
查看>>
javascript学习(11)——[设计模式]工厂模式
查看>>
BZOJ 1087 [SCOI2005]互不侵犯King ——状压DP
查看>>
【转】Linux 下修改Tomcat使用的JVM内存大小
查看>>
xcode 开发ios兼容性问题的上下黑边 和 coco2d-x 游戏分辨率适配 ResolutionPolicy::FIXED_WIDTH 都会引起上下黑边问题!!!...
查看>>
剑指offer(一):二维数组中的查找
查看>>
编程之美-第3章 结构之法
查看>>
WinForm部署问题
查看>>
[解题报告]591 - Box of Bricks
查看>>
XP系统中没有Internet信息服务windows组件解决办法
查看>>
SPOJ Problem 6219:Edit distance
查看>>
实验四
查看>>
OCM_第十九天课程:Section9 —》Data Guard _ DATA GUARD 原理/DATA GUARD 应用/DATA GUARD 搭建...
查看>>
删除一年之前的日志文件
查看>>
IoC容器Autofac(3) - 理解Autofac原理,我实现的部分Autofac功能(附源码)
查看>>
html字符串生成器源代码
查看>>