如何用程序终止屏幕保护程序的运行(100分)

  • 主题发起人 主题发起人 fish007
  • 开始时间 开始时间
F

fish007

Unregistered / Unconfirmed
GUEST, unregistred user!
我手头的软件要求运行屏幕保护程序,同时要监视外部设备,一接收到外设的有效数据,<br>就立即终止屏幕保护,弹出用户操作窗口,问题是如何用程序终止屏幕保护?
 
WINDOWS在启动屏幕保护前会向已激活的程序发送<br>一个WM_SYSCOMMAND消息,并将该消息的WPARAM参数设置为SC_SCREENSAVE。<br>利用C++ BUILDER中的TApplication类的OnMessage事件来处理WINDOWS发来的这条消息,<br>如果在接收到的消息后将handled参数设为true,<br>这个响应的消息值就可以阻止屏幕保护运行。 <br>---- 在C++ BUILDER 4.0的过程如下<br>---- 1、在程序头文件unit1.h中对成员函数ProcessMessage的声明加到TForm1的定义中。<br>&nbsp; &nbsp;class TForm1 : public TForm<br>{<br>&nbsp; private: // User declarations<br>&nbsp; &nbsp; &nbsp; &nbsp;void __fastcall ProcessMessage<br> &nbsp; (TMsg &amp;message,bool &amp;handled);<br>&nbsp;public: // User declarations<br>&nbsp; &nbsp; &nbsp; &nbsp; __fastcall TForm1(TComponent* Owner);<br>&nbsp;};<br>---- 2、在unit1.cpp中,在程序中增加ProcessMessage函数语句: <br>void __fastcall TForm1::ProcessMessage<br>(TMsg &amp;message,bool &amp;handled)<br>{<br>&nbsp; if(message.message==WM_SYSCOMMAND<br>&nbsp; &amp;&amp;message.wParam==SC_SCREENSAVE)<br>&nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp;handled=true;<br>&nbsp; &nbsp; &nbsp;}<br>}<br>---- 3、在TForm1的构造函数增加以下代码: <br>__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)<br>{<br>&nbsp; Application-&gt;OnMessage=ProcessMessage;<br>}<br>在Delphi中类似。<br><br><br>
 
感谢eguy的答复,不过我的意思是必须运行标准屏幕保护程序(自己制作的宣传内容),<br>然后在一定时候终止该标准屏幕保护程序。
 
在程序中运行*.scr(shellexecute),并取得其句柄,不要时杀之!行吗?
 
在某一时间,定的然后虚拟一下按下的动作,,
 
可以用虚拟击键的方法,<br><br>但既然宣传是自己制作的,可以找它的句柄,然后关闭之<br><br>在宣传中的project。dpr设置 &nbsp;<br>Application。title := 某字符串。 &nbsp;//这是它的标题<br>关闭时,先用<br>&nbsp; &nbsp;FindWindows(。。);<br>&nbsp; &nbsp;发送WM_CLOSE消息即可。<br>那就要禁止屏幕保护了 。。
 
98、2000下只要使用函数SetCursorPos(x,y);即可。<br>NT4,还不知道最简单的方法是什么。<br><br>通过发消息的方法去掉屏幕保护,好像行不通。<br>可能是实际上没有改变Windows的按健计数,用这种方法,屏保关掉之后立刻又重新启动了。
 
多人接受答案了。
 
后退
顶部