<b>让利用程序禁止Windows屏幕保护</b>[VC/C++编程]
本文“<b>让利用程序禁止Windows屏幕保护</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
假如在你的程序中需求一个很长的时间段来举行大量的数据处理,这段时间长得足以使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环境中运行通过.
以上是“<b>让利用程序禁止Windows屏幕保护</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |