Windows Shell API提供了接口IActiveDesktop来完成墙纸的设置。

//IActiveDesktop 接口方法表 (详情参见MSDN)

AddDesktopItem
AddDesktopItemWithUI
AddUrl
ApplyChange
GenerateDesktopItemHtml
GetDesktopItem
GetDesktopItemByID
GetDesktopItemBySource
GetDesktopItemCount
GetDesktopItemOptions
GetPattern
GetWallpaper
GetWallpaperOptions
ModifyDesktopItem
RemoveDesktopItem
SetDesktopItemOptions
SetPattern
SetWallpaper
SetWallpaperOptions

C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
BOOL SetWallpaper(CString &strPicFile, DWORD dwStyle)
{
    HRESULT hr = S_OK;
    IActiveDesktop* pIAD = NULL;
    
    //创建接口的实例
    hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**) &pIAD );
    if (FAILED(hr))
    {
        return FALSE;
    }
    
    //将文件名改为宽字符串,这是IActiveDesktop::SetWallpaper的要求
    WCHAR wszWallpaper [MAX_PATH] = {0};
    LPTSTR lpStr = strPicFile.GetBuffer(strPicFile.GetLength() );
    MultiByteToWideChar(CP_ACP, 0, lpStr, -1, wszWallpaper, MAX_PATH);
    strPicFile.ReleaseBuffer();
    
    //设置墙纸
    hr = pIAD->SetWallpaper(wszWallpaper, 0);
    if (FAILED(hr))
    {
        return FALSE;
    }
    
    //设置墙纸的样式
    WALLPAPEROPT wpo;
    wpo.dwSize = sizeof(wpo);
    wpo.dwStyle = dwStyle;
    hr = pIAD->SetWallpaperOptions(&wpo, 0);
    if(!SUCCEEDED(hr))
    {
        return FALSE;
    } 
    
    //应用墙纸的设置
    hr = pIAD->ApplyChanges(AD_APPLY_ALL);
    if(!SUCCEEDED(hr))
    {
        return FALSE;
    } 
    
    //读取墙纸的文件名并打印在debug窗口内
    hr = pIAD->GetWallpaper(wszWallpaper, MAX_PATH, 0);
    CString strFile = wszWallpaper;
    TRACE(strFile); 
    
    //释放接口的实例
    pIAD->Release();
    return TRUE;
}

BOOL EnableActiveDesktop(BOOL bEnable)
{
    HRESULT hr = S_OK;
    IActiveDesktop* pIAD = NULL;
    
    //创建接口的实例
    hr = CoCreateInstance ( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**) &pIAD );
    if(!SUCCEEDED(hr))
    {
        return FALSE;
    } 
    
    //启用或关闭Active desktop
    COMPONENTSOPT comp;
    comp.dwSize = sizeof(comp);
    comp.fEnableComponents = bEnable;
    comp.fActiveDesktop = bEnable;
    hr = pIAD->SetDesktopItemOptions(&comp, 0);
    if(!SUCCEEDED(hr))
    {
        return FALSE;
    } 
    
    //释放接口的实例
    pIAD->Release;
    return TRUE;
}

  Demo下载:http://pan.baidu.com/s/1bpjFyNX

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

  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. C++ 设置桌面壁纸

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

  6. vb.net 设置桌面壁纸

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

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

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

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

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

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

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

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

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

最新文章

  1. c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法
  2. 人体识别_深度学习资讯 | 用于人体动作识别的26层卷积神经网络
  3. 【推荐】你必须知道的EF知识和经验
  4. JSTL的错误“attribute test does not accept any expressions”解决方法
  5. 02_MySQL约束课堂笔记
  6. asp代码转成php代码,轻松将简单的asp代码转换为php代码
  7. 适合草根站长的认证产品介绍
  8. 优缺点 快速扫描 硬盘监测_对手中SSD的性能做到心中有数,十款SSD测试软件介绍...
  9. 奥克兰计算机科学专业世界排名,2020年新西兰计算机科学专业大学排名
  10. 爱普生L4168喷墨打印机打印断线或堵头故障处理
  11. 【Rust日报】2021-12-15 - geoping 由 shodan 开发的多地 ping 工具
  12. 仿 IOS 打造一个全局通用的对话框
  13. 准Z源逆变器模型预测控制Simulink仿真
  14. 大班科学计算机的发明应用教案,大班科学:四大发明
  15. 【附源码】计算机毕业设计java在线音乐网站设计与实现
  16. 两个空间(N维欧氏空间、Lebesgue空间)的Holder不等式
  17. How to Use Matlab Publish Smartly
  18. 在python中replace是什么意思_python中replace的用法是什么?
  19. Vue实现active点击切换
  20. echarts导出excel报表

热门文章

  1. 阿里AI天池大赛-贷款违约预测-基于CatBoost十折交叉验证
  2. 南京邮电大学java第三次实验报告
  3. python gbk 相互转换 utf8
  4. ROS2机器人笔记22.02.17
  5. 使用OFFICE自带控件在EXCEL中批量插入二维码以及条码
  6. 在 Microsoft Windows Server 2008 R2 上安装 IE 11
  7. 最小二乘法求解线性回归模型及求解
  8. 吊打付费神器,安利两款视频压缩工具,不改变任何画质且永久免费使用的神器!
  9. python爬虫实现hdu自动交题
  10. cmd复制文件到其他目录