C++ 设置桌面壁纸
定义一个函数来实现主要的功能:
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++ 设置桌面壁纸相关推荐
- win7没有个性化如何把计算机放到桌面,win7系统家庭版右键没有个性化设置桌面壁纸...
很多朋友的电脑是win7系统家庭版的,想要给电脑桌面的壁纸更换,就会发现电脑右键没有个性化选项,那么如何把个性化选项给设置出来呢?其实很好解决,下面就由小编带你解决win7右键没有个性化设置桌面壁纸的 ...
- 计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小
很多人都知道怎麽设置电脑桌面,可真正找到适合自己屏幕的可能很少,图片或大或小,小编为大家分享了设置桌面壁纸大小的方法,下面大家跟着小编一起来了解一下吧. 设置桌面壁纸大小方法 先查看自己电脑屏幕分辨率 ...
- C语言实现设置桌面壁纸
关键代码: SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:\\Users\\star-dream\\Pictures\\Saved Pic ...
- c++编程 设置桌面壁纸以及设置壁纸失效的解决办法
c++编程 设置桌面壁纸以及设置壁纸失效的解决办法 最近项目中需要一个小工具来设置桌面壁纸,于是想自己尝试用c++写一个. 刚开始,发现COM组件IActiveDesktop 可以设置壁纸.代码如下: ...
- vb.net 设置桌面壁纸
'修改桌面背景 Try '将MyFileName指定为一个图片文件的文件名 Dim MyFileName As String = Application.StartupPath & " ...
- Ubuntu20 设置桌面壁纸自动切换
最近电脑系统换成了ubuntu,想把桌面壁纸设置撑自动切换,搜了一下发现都是要修改cml文件的.最后终于找到一个不用修改的方法: 1.首先创建一个文件夹,里面存放下载的所有壁纸 2.打开shotwel ...
- windows 2019 server AD域统一设置桌面壁纸
1.首先任意一网络共享路径,我测试环境,就放在域控里面,并且注意,一定要设置能访问的权限,我这里设置Everyone,我的壁纸名叫paper.jpg 2.打开组策略 3.启用Active Deskto ...
- 代码设置桌面壁纸或者屏保
今天公司让弄一个把图片和视频设置为屏保和壁纸的功能,刚开始在网上找了很多资料 设置壁纸很好实现 一句话就可以了,这个可以参考这个人写的代码 图片视频设置为壁纸 但是实现设置锁屏屏保就不大好实现了,后来 ...
- 怎么把html设置桌面壁纸,win7系统怎么把桌面更换成自己喜欢的桌面背景?
win7系统有间隔一定时间自动更换桌面壁纸的功能,我们也可以在网上下载自己的喜欢的主题,里面自带了一些精美的桌面壁纸图片,有些时候我们可能会很喜欢一个电脑主题,但是不喜欢其中的桌面壁纸图片,这时,可以 ...
最新文章
- Asp.net无刷新调用后台实体类数据并以Json格式返回
- ArcMap 通过DEM获取高程值
- 逃离无声的世界,跟AI一起听叶落的声音
- html5模拟keyup事件
- Elixir日常观察 VOL.1
- matlab负荷预测,负荷预测matlab
- StarUML 4.0
- 2021-11-09类作为成员变量类型
- 设计模式:备忘录模式(Memento)
- C++类的内联成员函数应放在哪
- Linux系统Posix异步IO接口(aio.h):aio_read,aio_write,aio_error
- redis多服务器共享_基于redis和shedlock实现分布式锁(超简单)
- udev文件系统的使用和基本工作原理分析
- GreenPlum分布式集群数据库实战培训课程(2天速成版)
- bind搭建智能DNS
- 计算机c盘能格式化吗,C盘能格式化吗
- Flutter系列之设置Dialog的宽度
- SPD查看内存默认频率
- 【叶神中级】四篇-3.页面访问
- cv2.warpAffine
热门文章
- msp430发送pwm信号_msp430单片机实现PWM
- unity+Cardboard SDK VR开发Cardboard Unity SDK讲解
- python做个抢购器语言,一起开发苏宁的抢购脚本项目,语言用Python,支持Linux和Windows...
- 自定义控件其实很简单 三
- QT网格线的颜色设置
- 电报被人胡乱拉群解决办法
- linux键盘触摸板失灵,ubuntu linux 触控板失灵的解决方案
- 多元线性回归分析spss结果解读_多元线性回归分析理论详解及SPSS结果分析
- 使用ROS驱动激光雷达YDLIDAR-G4的详细过程总结(教你避开使用的各种坑....)
- iframe框架内嵌vue项目:Blocked a frame with origin http://xxxx from accessing a cross-origin iframe.解决办法