VC++实现真正的Windows屏幕保护程序.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC实现真正的Windows屏幕保护程序,vcwindows服务,windows8vc6.0,windows7vc6.0,windowsvc,windows8.1vc6.0,windows10vc,vcwindowsshell编程,vc6.0windows10,vcwindowsservice

实现真正的Windows屏幕保护程序屏幕保护程序是一种特殊的应用程序,如果用户打开了Windows的屏幕保护功能,而且在一特定的时间段内没有任何输入,系统就回自动启动屏幕保护程序。屏幕保护程序有两个作用: 1.防止屏幕长时间显示静态图象而降低荧光介质的寿命。 2.防止用户离开计算机时屏幕上的信息被不相干的人看到。 相应的,屏幕保护程序至少应该实现以下两个功能: 1.动画功能:显示动态的图象。 2.密码校验功能:退出程序时屏蔽一切系统热键(Ctrl+Alt+Del,Alt+Tab,Ctrl+Esc 等,避免用户使用热键关闭程序或切换到其它程序而跳过密码校验),并要求输入授权密码。 我们可以找到不少介绍Windows屏幕保护程序的资料,也可以找到许多制作屏幕保护程序的工具。然而,由于不清楚Windows屏幕保护程序的密码校验功能,所以它们实现的往往只是动画功能,而没有提供密码校验功能。 实际上,Visual C++已经为我们准备好了一个屏幕保护库,使用它,我们可以非常容易的实现Windows屏幕保护程序的一切功能。 介绍Windows屏幕保护库 Windows屏幕保护库为我们提供了 1.WinMain ( )函数:完成程序初始化和消息调度。看到这里,可能有些读者已经想到了:我们不能在MFC中使用Windows屏幕保护库。为什么呢?原因很简单:MFC的底层封装了WinMain( )函数,如果在MFC中使用Windows屏幕保护库,一个程序中就会有两个WinMain( )函数,显然说不过去。因此,我们只有使用Win32 SDK了。 2.DefScreenSaverProc ( )函数:处理键盘、鼠标等消息,实现屏蔽热键及密码校验等功能。 3.一些函数、变量和常量的定义。 大家可以在Visual C++安装目录的Include子目录中找到SCRNSAVE.H文件,通过它,我们可以看到它们具体的定义。 当系统启动一个屏幕保护程序时,WinMain( )函数首先判断系统传递的命令行参数。如果参数指示设置屏幕保护程序,那么WinMain( )函数将会用函数 BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ); 来创建设置对话框并将用户的输入保存到注册表中,还会用函数 BOOL WINAPI RegisterDialogClasses (HANDLE hInst)来注册设置对话框中的特殊窗口类或自定义控件类,如果没有特殊窗口类和自定义控件类,RegisterDialogClasses( )函数只需简单的返回TRUE值。如果参数指示运行屏幕保护程序,WinMain( )函数会调用一些初始化代码来注册窗口类并建立一个全屏窗口。而发送给屏幕保护程序的消息则由函数 LRESULT WINAPI ScreenSaverProc ( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); 处理。我们可以在ScreenSaverProc( )函数中处理下面几个消息(当然也可以处理其它消息): WM_CREATE 从注册表中获取屏幕保护程序的设置信息 创建一个计时器 处理其它的初始化工作 WM_TIMER 处理绘制工作 WM_DESTORY 销毁计时器 处理其它销毁工作 ScreenSaverProc( )函数未处理的消息则传递给DefScreenSaverProc( )处理。从这里我们可以看出,我们所要做的只是实现ScreenSaverProc( ),ScreenSaverConfigureDialog( )和 RegisterDialogClasses( )三个函数,而麻烦的密码校验和密码更改已经由DefScreenSaverProc( )函数实现了!剩下的就是编译并与Windows屏幕保护程序库连接了。 必须注意的是,Windows屏幕保护程序库对资源ID有一些特殊的要求。首先,它要求有一个ID为IDS_DESCRIPTION(定义为#define IDS_DESCRIPTION 1,见Visual C++目录的Include\SCRNSAVE.H文件),长度小于25的字符串资源,这个字符串将显示在桌面属性对话框屏幕保护程序列表框中。另一个要求是屏幕保护程序的设置对话框的ID必须为DLG_SCRNSAVECONFIGURE(定义为#define DLG_SCRNSAVECONFIGURE 2003)。 下面我们

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档