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

原创 2001年05月22日 12:24:00
让应用程序禁止Windows屏幕保护
2000-03-21· 周新栋·计算机世界日报

如果在你的程序中需要一个很长的时间段来进行大量的数据处理,这段时间长得足以使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环境中运行通过。

应用禁止屏幕旋转

应用设置全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码 requestWindowFeature(Window.FEATURE_...
  • kc58236582
  • kc58236582
  • 2016年12月15日 13:56
  • 1183

Windows屏幕保护程序的制作

Windows屏幕保护程序的制作 前些日子看了阿卓工作室的一篇关于如何制作屏保程序的文章及其示例,我便想自己做一个玩玩,所以按他说的做,结果不行,所以就在MSDN中搜索了下,得到这么一篇文章...
  • Eternalze
  • Eternalze
  • 2015年06月01日 15:19
  • 2500

全局鼠标键盘事件实现应用程序的自动锁定

全局鼠标键盘事件实现应用程序的自动锁定         我们在进行信息系统开发的时候,有时为了系统数据保密性、安全性得到提升。需要考虑到如果在用户长时间内没有对鼠标及键盘进行操作时,让应用程...
  • anyqu
  • anyqu
  • 2014年08月15日 11:54
  • 645

如何禁止Windows文件保护

http://chenjava.blog.51cto.com/374566/115937标签:休闲 文件保护 职场 如何禁止Windows文件保护 2007-09-30 18:01 ...
  • andylau00j
  • andylau00j
  • 2014年05月22日 18:24
  • 412

windows下如何禁止某个特定的应用程序

windows下如何禁止某个特定的应用程序        最近,想了下如何禁止打开windows下的特定应用程序,查阅资料后终于解决了,下面把具体方法分享给大家(以禁止当前主流游戏--英雄联盟为例)...
  • u011127242
  • u011127242
  • 2015年04月19日 15:48
  • 586

什么是实时应用程序自我保护(RASP)?

什么产品可以定义为 RASP?RASP 英文为 Runtime application self-protection,它是一种新型应用安全保护技术,它将保护程序想疫苗一样注入到应用程序和应用程序融为...
  • wangpeng198688
  • wangpeng198688
  • 2015年12月17日 14:25
  • 671

如何禁止Windows文件保护(WFP)

如何禁止Windows文件保护(WFP)分类: 操作系统2009-10-19 14:56 393人阅读 评论(0) 收藏 举报如何禁止Windows文件保护(WFP)。我们先来了解下WFP是如何工作的...
  • usertony
  • usertony
  • 2013年10月25日 15:15
  • 736

C# 保护进程不被结束(源代码)防任务管理器结束进程

闲来无事,英语又学的太痛苦。看到我妈妈电脑开起在,就坐上去看看新闻,听听音乐。哎,突然间,老毛病又烦了,想起原来一直有个编程的问题没有解决——禁止别人用任务管理器,结束自己的程序进程(.NET程序)。...
  • qq798833488
  • qq798833488
  • 2016年11月16日 21:42
  • 3260

IE浏览时出现“为了帮助保护你的计算机,Windows已经关闭了此程序”等提示,如何处理?

问题描述 用户来电表示使用IE浏览器时,经常出现“为了帮助保护你的计算机,Windows已经关闭了此程序”的提示,咨询如何解决?具体如下图所示   解决方案 一、通过将explorer.ex...
  • krise00
  • krise00
  • 2013年12月16日 11:41
  • 1867

Android应用程序的保护机制

提高Android应用程序的安全性
  • zhangquanit
  • zhangquanit
  • 2016年12月07日 16:12
  • 654
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让应用程序禁止Windows屏幕保护
举报原因:
原因补充:

(最多只允许输入30个字)