windows7 设置png格式图片为桌面壁纸

项目中有一个小需求----自动设置壁纸。按理说,这种小需求理论上都很容易啦,没有必要做笔记了。而在实际开发过程还是遇到了各种问题。当然这是由于windows不同版本之间的兼容性引发的问题。
最开始我通过修改注册表的“Control Panel\Desktop\Wallpaper”值,来实现更换桌面壁纸。jpeg图片格式,在win7与win10下面,都表现完美;png图片格式,在win10下能正常设置为壁纸,但是在win7下面就是不得行。
网上有人说是因为,png图片的信息不完整(通过iview4查看,缺少dpi值)。通过手动补全信息后,问题依然。。。
后面再同事提醒下,找到了下面的代码。测试了一下,在win7下设置png格式图片作为壁纸,没问题!

// 设置桌面壁纸
// szFileDir: 壁纸文件路径
// displayStyle: 壁纸展示方式
int ApplyWallpaper(const char* szFileDir, int displayStyle)
{WCHAR wsz[MAX_PATH];  //定义Unicode字符串MultiByteToWideChar(CP_ACP,0,szFileDir,-1,wsz,MAX_PATH);CoInitialize(NULL);std::wstring x = wsz;DWORD dwStyle = displayStyle;HRESULT hr;IActiveDesktop* pIAD;hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,IID_IActiveDesktop, (void**)& pIAD);if (!SUCCEEDED(hr)){int errNum = GetLastError();return errNum;}hr = pIAD->SetWallpaper(x.c_str(), 0);if (!SUCCEEDED(hr)){int errNum = GetLastError();return errNum;}WALLPAPEROPT wpo;wpo.dwSize = sizeof(wpo);wpo.dwStyle = dwStyle;hr = pIAD->SetWallpaperOptions(&wpo, 0);if (!SUCCEEDED(hr)){int errNum = GetLastError();return errNum;}hr = pIAD->ApplyChanges(AD_APPLY_ALL);if (!SUCCEEDED(hr)){int errNum = GetLastError();return errNum;}pIAD->Release();CoUninitialize();return TRUE;
}

这里,还是贴出代码来,希望能帮助到恰好需要的朋友吧。
注意:
1.设置壁纸路径分隔符"\",不要与"/“混用.最好只用”\"。如:C:\Windows\Web\Wallpaper\Windows\img0.jpg
如果混用,将导致设置壁纸不成功(本人在这里折腾很久…)
2.壁纸存放路径,最好与系统自带壁纸路径一致(系统壁纸路径:C:\Windows\Web\Wallpaper\Windows\)

windows7 设置png格式图片为桌面壁纸相关推荐

  1. win10如何设置自己喜欢图片为桌面背景

    现如今已经有不少的用户开始使用最新的win10系统,但是不少用户却不懂的在win10系统中,该如何将自己喜欢的图片设置为桌面背景,遇见这样的情况有没有什么好的方法可以解决此类情况呢?下面就一起来看看w ...

  2. 每天更新bing首页图片为桌面壁纸

    功能 每天自动从bing首页下载首页图片,再添加该图片文字描述的水印,然后设置到桌面壁纸. 链接分析 打开bing首页,开chrome调试,捕捉network,再点击上一张,下一张时可以看到一个比较规 ...

  3. 用python每日更换“必应图片”为“桌面壁纸”

    不少同学都知道,必应每天都会更新壁纸,都十分漂亮,有时候还十分惊艳,同时还会根据每个地区的特色应用不同的壁纸. 那么,如何让自己的电脑每天同步必应每日图片作为桌面背景呢? 下面用python脚本抓取必 ...

  4. 用c#每日更换“必应背景图片”为“桌面壁纸”

    在线工具 必应每天都会更换背景图片,都非常漂亮,有的时候还十分惊艳,同时还会根据每个地区的特色不同应用不同的图片. 下面用c#抓取必应每天的背景图片,并实现桌面壁纸的每天自动切换 实现思路 1.通过获 ...

  5. 小玩意--用必应每日图片换桌面壁纸(Python)

    必应 的每日图片还是不错的,换作自己的桌面壁纸挺有意思的. 这种简单的小程序实现网络上还是很多的,但还是想亲手写一写. 把代码分享一下 # 获取必应每日图片 import os import path ...

  6. 利用Powershell每天自动设置提取Win10的windows聚焦图片(Spotlight)作为桌面壁纸的方法

    微软在 Windows 10 上新增了一项功能 Windows 聚焦 (Windows Spotlight),它会自动随机下载并更换锁屏界面的壁纸 (Lockscreen),让你每次打开电脑都有不一样 ...

  7. Ubuntu: 将bing主页的背景图片设置为桌面壁纸

    Bing 虽然不是最好用的搜索引擎,但是对于 Bing 有一点我特别喜欢,那就是 Bing 每天都会在其主页展示一张高质量的.优美的图片.对于喜欢 Bing 主页的优美图片的人来说,可能会想要将 Bi ...

  8. linux更改桌面壁纸的脚本,分享|使用 LSWC 在 Linux 中自动更改壁纸

    简介:这是一个小脚本,可以在 Linux 桌面上定期自动更改壁纸. 顾名思义,LittleSimpleWallpaperChanger (LSWC)是一个小脚本,可以定期地随机更改壁纸. 我知道在&q ...

  9. linux更改桌面壁纸的脚本,使用 LSWC 在 Linux 中自动更改壁纸

    原标题:使用 LSWC 在 Linux 中自动更改壁纸 编译自: https://itsfoss.com/little-simple-wallpaper-changer/ 作者: Aquil Rosh ...

最新文章

  1. 编译openjdk源码
  2. 无法打开源文件 “iostream.h“
  3. python list合并拼接
  4. 【PC工具】更新系统运行库一键安装,常用USB转串口芯片CP210x驱动,CH340G驱动安装有可能遇到的问题及解决办法...
  5. “相对论“ 2019-07-10
  6. 深度学习导论(6)误差计算
  7. [转] 81条经典话语~~~当裤子失去皮带,才懂得什麽叫做依赖
  8. 2,上传电影,udp,异常处理,socketserver
  9. ThreadPoolExecutor解析
  10. linux下用tcpdump抓包
  11. 程序员别再迷茫,赚钱,方法比你想得更多
  12. ubuntu独立显卡驱动
  13. 天诚股价语音播报软件 实时播报A股股票价格涨跌幅MACD
  14. 蓝桥杯每日一练——小明跳房子 python
  15. 如何将NOAA官网下载的气象雷达原始数据显示为PPI图
  16. AI大事件 | 谷歌的计算引擎鸟枪换炮用上了更快的GPU,基于Python的亚马逊AWS深度学习AMI
  17. 安卓仿微信录音功能实现
  18. 巧用foxmail同步qq邮箱的通讯录
  19. 机器学习实操的7个步骤
  20. 关于 GeneXus 起源的几点思考

热门文章

  1. 短视频矩阵系统,抖音矩阵系统源码,抖音SEO源码。
  2. 小米实习---推荐系统--二面
  3. Java 线程池 8 种拒绝策略
  4. vue 根据字符串生成表单_vue自定义表单生成器,可根据json参数动态生成表单
  5. matlab在电力电子的应用,MATLAB在电力电子仿真中的应用
  6. 2022危险化学品经营单位安全管理人员考试练习题及在线模拟考试
  7. C#,图像二值化(20)——全局阈值的耶恩算法(Yen Thresholding)及源代码
  8. 知道python程序设计基础期末答案_Python程序设计基础_知到答案章节作业期末答案...
  9. 刘润对话卫哲:阿里巴巴唯一生产的产品,就是干部
  10. 前面的可以显示位置国旗,后面的可显示地区和线路