Win32屏幕保护程序
一、简介
- 屏幕保护程序(Screen Saver)的历史几乎与视窗操作系统的历史一样悠久,设计它的目的是为了保护CRT显示器使其的使用寿命更长。但随着技术的进步,新型的CRT显示器及液晶显示器已经无须这样做了,不过屏幕保护程序并未消失,因为其绚丽的画面成了人们彰显个性的方式
- 屏幕保护程序虽然变化多端,但对开发者而言,它仍然是一种Windows应用程序,屏幕保护程序的扩展文件名是scr,在文件格式上与exe可执行文件是完全一样的。我们的屏幕保护程序经过编译、汇编、链接过后,修改后缀名为scr,再将其拷贝到C:\Windows\system32下就可以被操作系统识别、运用。
- 本程序是一个将照片进行轮播的屏幕保护程序,可以将当前登录用户照片目录下的图片自动应用作为屏幕保护轮播的素材。暂时完美支持jpg、png、jpeg、bmp格式的图片,gif格式暂时只能静态显示,不支持播放动画。
二、数据结构分析
- 目标文件名存储:
使用voctor&t;string>存储文件名。程序开始,首先需要将用户目录下的Pictures目录下的jpg、jpeg、png、gif、bmp格式的图片文件名用于打开文件。
- 图片文件参数存储
使用struct g_hBitmapStruct{};存储当前要显示的图片数据,包括图片句柄和图片像素尺寸参数。
三、程序消息分析
操作系统消息
- 当用户在操作系统中设定屏幕保护程序时,点击预览会触发“/p”消息,屏幕保护程序应当在预览窗口做出对应消息应答(显示预览或则与用户交互)
- 当用户在设定屏幕保护程序时点击设置按钮,操作系统会触发“/c”消息,此时,屏幕保护程序也应当作出对应消息应答(如:提供配置界面或拒绝配置)
- 正常情况下,操作系统自动启用屏幕保护程序,会触发“/s”消息,此时正常进入程序运行。用户动作消息
用户动作消息
- 用户动作消息主要是当屏保程序正在运行时,用户向系统作出动作,屏保程序检测到后,应当自动释放资源并退出程序。(如:按键消息、鼠标点击、移动消息等)
四、主要程序代码
- 设置定时器,调用SetTimer函数,设置定时器ID、定时时间(30S)和触发函数
- 获取用户名确定目标路径
调用GetUserName函数,获取当前登陆的用户名,组装文件路径
从文件路径取得支持的文件名,存入vector<string> FilesName
- WM_PAINT消息处理
对图像的显示
- 运行展示及使用方法
测试机C:\Users\%USERNAME%\Pictures目录下的图片有:
- 运行
可将exe文件修改后缀名为.scr,并将文件放到C:\windows\Ststem32下,就可以在操作系统里使用该程序了。
项目地址①:https://download.csdn.net/download/qq_18647249/12295557
项目地址②:https://gitee.com/yichenglin/windows_screensaver.git
Win32屏幕保护程序相关推荐
- 使用Win32 SDK开发屏幕保护程序
暮鼓集 行走集 1.引言 屏幕保护程序(Screen Saver)的历史几乎与视窗操作系统的历史一样悠久,设计它的目的是为了保护CRT显示器使其的使用寿命更长.但随着技术的进步,新型的CRT显示 ...
- 如何启动屏幕保护程序
当前屏幕保护程序在注册表中的位置: HKEY_CURRENT_USER/Control Panel/Desktop As for starting an exe in C#: Process myPr ...
- [译]用C#创建一个屏幕保护程序
用C#创建一个屏幕保护程序 原文地址: http://www.harding.edu/fmccown/screensaver/screensaver.html 简介 一个Windows屏幕保护程序是根 ...
- html文件设置成mac屏保,Mac怎么设置屏幕保护?如何设置Mac屏幕保护程序?
Mac电脑如何设置屏幕保护程序?屏保是我们显示个性的重要途径,也是保护我们的电脑安全的一个重要方法.MAC用户想要修改自己的屏保该怎么办呢?今天PC6小编就教大家如何在Mac系统下设置桌面背景以及屏幕 ...
- 询问HTG:白噪声屏幕保护程序,有效的文件命名以及从密码泄露中恢复
Once a week we share three of the questions we've answered from the Ask HTG inbox with the greater r ...
- windows xp 屏幕保护程序_小礼物:3D Windows XP 屏幕保护程序
航通社旗下公众号"56K小猫"(微信:modem56k),原创文章未经授权禁止转载.航通社微信:lifeissohappy 微博:@航通社 生 / 活 / 小 / 妙 / 招 从昨 ...
- 个性屏幕保护程序_Mac高清鸟瞰屏幕保护程序,酷毙了
最新的Aerial for Mac配备了一个漂亮的屏幕保护程序,由在旧金山,纽约,伦敦,中国和许多其他地方录制的一系列航拍电影组成.如果您想在Mac上使用这些剪辑,现在有一种简单的方法可以实现. Ae ...
- html文件设置成mac屏保,如何将视频设置为Mac上的屏幕保护程序 | MOS86
尽管您可能已经在享受Mac上预装的屏幕保护程序,但现在您可以添加一种新的屏幕保护程序到Mac.您现在可以将视频添加为屏幕保护程序. 输入SaveHollywood,一个Mac应用程序,允许您将视频设置 ...
- linux替换屏幕保护进程,有没有一个体面的方式来阻止linux中的屏幕保护程序?...
我正在寻找一种体面的,不跛脚的方式来禁止xscreensaver,kscreensaver或gnome-screensaver,哪些可能正在运行,最好是以屏幕保护程序的方式,而且它绝对肯定必须执行得很 ...
- 液晶显示器不宜使用屏幕保护程序
在使用台式电脑时,很多人都喜欢使用屏幕保护程序,当他们转为使用笔记本电脑时,这个好习惯也被保留了下来,但他们却不知屏幕保护程序对笔记本电脑非但没有任何好处,反而还会造成一些负面影响. 实际上屏 ...
最新文章
- 利用注入写Webshell(sql-lab第七关)
- java泛型不是计算运行时的数据类型
- 彩色BMP转换成灰度图的原理
- 常见错误:未能加载文件或程序集
- 不同的二叉搜索树 II
- tomcat 如何跳转到apache_第二十期:基于tomcat部署jforum站点,并结合nginx实现动静分离...
- maya 阿诺德水晶材质_Maya教程之Arnold材质
- foxmail 服务器备份 立刻删除_Foxmail删除服务器邮件而保留本地备份的详细操作方法...
- 【CentOS后遗症】刚毕业的运维小姐姐 Linux用不了!你的也用不了了~
- InDesign 教程,如在使用的不同类型的框架?
- Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本
- 快速合并所有txt文档
- Go http Server
- 纳德拉:Windows Phone市场份额虽低 但它“完整了体验”
- Centos 7 根目录存储容量调整大小
- 零粉丝直播带货,日赚两万是真是假?最新抖音直播玩法!
- python strip_关于python中strip方法的理解
- 行业渠道再洗牌,运营商或重掌行业话语权
- 时间序列预测分析(2)How to Develop a Skillful Machine Learning Time Series Forecasting Model
- 微信小程序 video 视频播放卡顿