## 如何在C++ BUILDER中自动关闭WINDOWS屏幕保护 ### 长沙铁道学院信息学院 甘元驹 ---- 在实际编程应用中，当程序需要用较长的时间来处理某些计算时，这段时间有可能使WINDOWS启动屏幕保护，这样程序的处理会相对变得更长。那么如何在运行程序时自动关闭屏幕保护呢？ ---- WINDOWS在启动屏幕保护前会向已激活的程序发送一个WM_SYSCOMMAND消息，并将该消息的WPARAM参数设置为SC_SCREENSAVE。我们可利用C++ BUILDER中的TApplication类的OnMessage事件来处理WINDOWS发来的这条消息，如果在接收到的消息后将handled参数设为true，这个响应的消息值就可以阻止屏幕保护运行。 ---- 在C++ BUILDER 4.0的过程如下： ---- 1、从主菜单中选择File | New APPlication 来创建一个新的空工程文件。然后在Forn 上加上一个Label对象，设置其Caption为"此程序将关闭WINDOWS屏幕保护"。 ---- 2、在程序头文件unit1.h中对成员函数ProcessMessage的声明加到TForm1的定义中。
       class TForm1 : public TForm

    {

     __published:	// IDE-managed Components

            TLabel *Label1;

     private:	// User declarations

           void __fastcall ProcessMessage

    	   (TMsg &message,bool &handled);

     public:		// User declarations

            __fastcall TForm1(TComponent* Owner);

     };

     -- 3、在unit1.cpp中，在程序中增加ProcessMessage函数语句：
    void __fastcall TForm1::ProcessMessage

    (TMsg &message,bool &handled)

    {

      if(message.message==WM_SYSCOMMAND

      &&message.wParam==SC_SCREENSAVE)

        {

         handled=true;

         }

    }
---- 4、在TForm1的构造函数增加以下代码：
    __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)

    {

      Application->OnMessage=ProcessMessage;

    }
---- 上述程序C++ BUILDER 4.0专业版调试通过。