让应用程序禁止Windows屏幕保护

2016-02-19 12:16 9 1 收藏

下面图老师小编要向大家介绍下让应用程序禁止Windows屏幕保护,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - 编程语言 】

----如果在你的程序中需要一个很长的时间段来进行大量的数据处理,这段时间长得足以使Windows因检测不到用户动作而激活屏幕保护程序,一旦启动了屏幕保护程序,你的程序运行实际上就变慢了,这会大大影响程序的正常运行。有没有一种方法,使程序在进行长时间的数据处理前关掉屏幕保护呢?答案是肯定的。Windows在启动屏幕保护程序前会向当前激活的应用程序发送WM_SYSCOMMAND消息,其中wParam参数指定了即将执行的系统命令类型,在本例中其值为SC_SCREENSAVE。问题在于程序如何捕获这个消息呢?在C++ Builder中可以利用Tapplication类的OnMessage事件句柄来处理这个消息。应用程序在接收到任何Windows消息后都会触发Tapplication类的OnMessage事件,通过定义这个事件的处理程序,可以捕获发送给应用程序的所有Windows消息(这当然不包括在程序中用SendMessage函数发送的消息)。
---- OnMessage事件的定义如下:

typedef void__fastcall(__closure
*TMessageEvent)(tagMSG &Msg,bool&Handled);
__property TMessageEvent OnMessage=
{read=FOnMessage,write=FOnMessage};


---- 其中TMessageEvent类型是OnMessage事件的类型,它定义了处理消息的方法,Msg参数给出了Windows消息的相关信息,其结构如下:

typedef struct tagMSG{
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;}


---- Handled参数决定了如何对消息进行下一步处理,如果在接收到一个消息后将Handled参数设为true,则这个消息将不会得到进一步的处理,在本例中就是取消屏幕保护程序的激活。

---- 启动C++ Builder,新建一工程文件,在头文件中的Private段增加对成员函数CaptureMessage的声明:

class TForm1 : public Tform
{
__published:
private:
void __fastcall CaptureMessage(tagMSG &Msg,bool &Handled);
public:
__fastcall TForm1(Tcomponent* Owner);
};


---- 在.cpp文件中增加CaptureMessage的定义:

void __fastcall TForm1::CaptureMessage(tagMSG &Msg,bool &Handled)
{
if(Msg.message= =WM_SYSCOMMAND && Msg.wParam= =SC_SCREENSAVE)
Handled=true; //阻止屏幕保护的启动
else
Handled=false; //进行该消息的缺省处理
}


---- 再将定义好的CaptureMessage函数作为OnMessage事件的事件处理器,将以下代码加到主窗体的OnCreate事件处理器中:

void __fastcall TForm1::FormCreate(Tobject *Sender)
{
Application-OnMessage=CaptureMessage;
}


---- 按F9编译并运行程序,你可以事先将屏幕保护的等待时间设为一个尽可能小的值来检验程序的运行情况。你会发现在程序运行期间,屏幕保护程序将无法被激活,关闭运行的程序后再等待一会儿,屏幕保护程序就会正常出现。以上代码在C++ Builder3、win98环境中运行通过

来源:http://www.tulaoshi.com/n/20160219/1600423.html

延伸阅读
标签: Web开发
一、建立网页 html head       meta http-equiv="Content-Language" content="zh-cn"       script language="javascript" type="text/javascript"              !-- 提供给C#...
标签: 电脑入门
您知道怎么消除应用程序乱码吗?掌握消除应用程序的乱码的方法是非常重要的,下面就给您介绍怎么消除应用程序的代码. 当你运行某些中文软件时,假如菜单等显示界面上出现乱码,一般可能是软件的中文链接库被英文链接库覆盖引起的,这类乱码经常发生在用微软开发工具(例如 VB、VC)开发的中文软件上。 因为你开发的这类软件,菜单等显示界面上的...
新的JavaTM 虚拟机(VMs)具有能够提高性能的特点, 并且你可以使用许多工具来提高应用程序的性能或减小一般类文件的尺寸。这种Java虚拟机的特性和工具可使你在不改变应用程序、或对应用程序仅做很小改动的情况下, 提高应用程序的性能。 Java虚拟机的特性 !-- frame contents -- !-- /frame contents -- Ja...
标签: 电脑入门
安装Windows新界面应用从应用商店中选择安装 点击Win8开始屏幕上的应用商店磁贴,根据分类查找或者通过搜索找到需要的应用,点击进入。 点击应用界面中的安装按钮,Win8系统会自动下载和安装所选应用。 安装过程中我们就可以在Win8的开始屏幕中看到该应用的磁贴以及安装状态,点击进去还可以看到具体的下载和安装进度。等Win8下载与...
VC应用程序框架提供的强大功能,为我们的开发提供了极大的方便,利用它可以很轻松地生成应用程序的框架.许多常用功能,例如文档的创建,文件的打开,保存等操作的大部分代码都由应用程序框架来完成.这些操作对于开发软件的用户而言是透明的。微软设计Visual C++的初衷是尽量向用户提供尽可能简单的接口,但是,正是因为应用框架的这一透明性,使VC...

经验教程

124

收藏

40
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部