定义一个函数来实现主要的功能:
HRESULT SetDesktopWallpaper(PWSTR pszFile, WallpaperStyle style);

WallpaperStyle是一个枚举类型,定义了壁纸显示的类型

enum WallpaperStyle
{Tile,//平铺Center,//居中Stretch,//拉伸Fit, //适应Fill//填充
};
//
//   FUNCTION: SetDesktopWallpaper(PCWSTR, WallpaperStyle)
//
//   PURPOSE: Set the desktop wallpaper.
//
//   PARAMETERS:
//   * pszFile - Path of the wallpaper
//   * style - Wallpaper style
//
HRESULT SetDesktopWallpaper(PWSTR pszFile, WallpaperStyle style)
{HRESULT hr = S_OK;//设置壁纸风格和展开方式//在Control Panel\Desktop中的两个键值将被设置// TileWallpaper//  0: 图片不被平铺 //  1: 被平铺 // WallpaperStyle//  0:  0表示图片居中,1表示平铺//  2:  拉伸填充整个屏幕//  6:  拉伸适应屏幕并保持高度比//  10: 图片被调整大小裁剪适应屏幕保持纵横比//以可读可写的方式打开HKCU\Control Panel\Desktop注册表项HKEY hKey = NULL;hr = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_CURRENT_USER, L"Control Panel\\Desktop", 0, KEY_READ | KEY_WRITE, &hKey));if (SUCCEEDED(hr)){PWSTR pszWallpaperStyle;PWSTR pszTileWallpaper;switch (style){case Tile:pszWallpaperStyle = L"0";pszTileWallpaper = L"1";break;case Center:pszWallpaperStyle = L"0";pszTileWallpaper = L"0";break;case Stretch:pszWallpaperStyle = L"2";pszTileWallpaper = L"0";break;case Fit: // (Windows 7 and later)pszWallpaperStyle = L"6";pszTileWallpaper = L"0";break;case Fill: // (Windows 7 and later)pszWallpaperStyle = L"10";pszTileWallpaper = L"0";break;}// 设置 WallpaperStyle 和 TileWallpaper 到注册表项.DWORD cbData = lstrlen(pszWallpaperStyle) * sizeof(*pszWallpaperStyle);hr = HRESULT_FROM_WIN32(RegSetValueEx(hKey, L"WallpaperStyle", 0, REG_SZ, reinterpret_cast<const BYTE *>(pszWallpaperStyle), cbData));if (SUCCEEDED(hr)){cbData = lstrlen(pszTileWallpaper) * sizeof(*pszTileWallpaper);hr = HRESULT_FROM_WIN32(RegSetValueEx(hKey, L"TileWallpaper", 0, REG_SZ, reinterpret_cast<const BYTE *>(pszTileWallpaper), cbData));}RegCloseKey(hKey);}//通过调用Win32 API函数SystemParametersInfo 设置桌面壁纸/************************************************之前我们已经设置了壁纸的类型,但是壁纸图片的实际文件路径还没设置。SystemParametersInfo 这个函数位于user32.dll中,它支持我们从系统中获得硬件和配置信息。它有四个参数,第一个指明调用这个函数所要执行的操作,接下来的两个参数指明将要设置的数据,依据第一个参数的设定。最后一个允许指定改变是否被保存。这里第一个参数我们应指定SPI_SETDESKWALLPAPER,指明我们是要设置壁纸。接下来是文件路径。在Vista之前必须是一个.bmp的文件。Vista和更高级的系统支持.jpg格式*************************************************///SPI_SETDESKWALLPAPER参数使得壁纸改变保存并持续可见。if (SUCCEEDED(hr)){if (!SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, static_cast<PVOID>(pszFile), SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE)){hr = HRESULT_FROM_WIN32(GetLastError());}}return hr;
}

C++ 设置桌面壁纸相关推荐

  1. win7没有个性化如何把计算机放到桌面,win7系统家庭版右键没有个性化设置桌面壁纸...

    很多朋友的电脑是win7系统家庭版的,想要给电脑桌面的壁纸更换,就会发现电脑右键没有个性化选项,那么如何把个性化选项给设置出来呢?其实很好解决,下面就由小编带你解决win7右键没有个性化设置桌面壁纸的 ...

  2. 计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小

    很多人都知道怎麽设置电脑桌面,可真正找到适合自己屏幕的可能很少,图片或大或小,小编为大家分享了设置桌面壁纸大小的方法,下面大家跟着小编一起来了解一下吧. 设置桌面壁纸大小方法 先查看自己电脑屏幕分辨率 ...

  3. C语言实现设置桌面壁纸

    关键代码: SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:\\Users\\star-dream\\Pictures\\Saved Pic ...

  4. c++编程 设置桌面壁纸以及设置壁纸失效的解决办法

    c++编程 设置桌面壁纸以及设置壁纸失效的解决办法 最近项目中需要一个小工具来设置桌面壁纸,于是想自己尝试用c++写一个. 刚开始,发现COM组件IActiveDesktop 可以设置壁纸.代码如下: ...

  5. vb.net 设置桌面壁纸

    '修改桌面背景 Try '将MyFileName指定为一个图片文件的文件名 Dim MyFileName As String = Application.StartupPath & " ...

  6. Ubuntu20 设置桌面壁纸自动切换

    最近电脑系统换成了ubuntu,想把桌面壁纸设置撑自动切换,搜了一下发现都是要修改cml文件的.最后终于找到一个不用修改的方法: 1.首先创建一个文件夹,里面存放下载的所有壁纸 2.打开shotwel ...

  7. windows 2019 server AD域统一设置桌面壁纸

    1.首先任意一网络共享路径,我测试环境,就放在域控里面,并且注意,一定要设置能访问的权限,我这里设置Everyone,我的壁纸名叫paper.jpg 2.打开组策略 3.启用Active Deskto ...

  8. 代码设置桌面壁纸或者屏保

    今天公司让弄一个把图片和视频设置为屏保和壁纸的功能,刚开始在网上找了很多资料 设置壁纸很好实现 一句话就可以了,这个可以参考这个人写的代码 图片视频设置为壁纸 但是实现设置锁屏屏保就不大好实现了,后来 ...

  9. 怎么把html设置桌面壁纸,win7系统怎么把桌面更换成自己喜欢的桌面背景?

    win7系统有间隔一定时间自动更换桌面壁纸的功能,我们也可以在网上下载自己的喜欢的主题,里面自带了一些精美的桌面壁纸图片,有些时候我们可能会很喜欢一个电脑主题,但是不喜欢其中的桌面壁纸图片,这时,可以 ...

最新文章

  1. Asp.net无刷新调用后台实体类数据并以Json格式返回
  2. ArcMap 通过DEM获取高程值
  3. 逃离无声的世界,跟AI一起听叶落的声音
  4. html5模拟keyup事件
  5. Elixir日常观察 VOL.1
  6. matlab负荷预测,负荷预测matlab
  7. StarUML 4.0
  8. 2021-11-09类作为成员变量类型
  9. 设计模式:备忘录模式(Memento)
  10. C++类的内联成员函数应放在哪
  11. Linux系统Posix异步IO接口(aio.h):aio_read,aio_write,aio_error
  12. redis多服务器共享_基于redis和shedlock实现分布式锁(超简单)
  13. udev文件系统的使用和基本工作原理分析
  14. GreenPlum分布式集群数据库实战培训课程(2天速成版)
  15. bind搭建智能DNS
  16. 计算机c盘能格式化吗,C盘能格式化吗
  17. Flutter系列之设置Dialog的宽度
  18. SPD查看内存默认频率
  19. 【叶神中级】四篇-3.页面访问
  20. cv2.warpAffine

热门文章

  1. msp430发送pwm信号_msp430单片机实现PWM
  2. unity+Cardboard SDK VR开发Cardboard Unity SDK讲解
  3. python做个抢购器语言,一起开发苏宁的抢购脚本项目,语言用Python,支持Linux和Windows...
  4. 自定义控件其实很简单 三
  5. QT网格线的颜色设置
  6. 电报被人胡乱拉群解决办法
  7. linux键盘触摸板失灵,ubuntu linux 触控板失灵的解决方案
  8. 多元线性回归分析spss结果解读_多元线性回归分析理论详解及SPSS结果分析
  9. 使用ROS驱动激光雷达YDLIDAR-G4的详细过程总结(教你避开使用的各种坑....)
  10. iframe框架内嵌vue项目:Blocked a frame with origin http://xxxx from accessing a cross-origin iframe.解决办法