随意更改桌面壁纸

原创 2006年06月23日 17:15:00

1.  stdafx可的#i nclude <afxwin.h>下加入

#i nclude <wininet.h> // 必须在此位置加上则IActiveDesktop将找不到定义

 

2.在定义文件中加入#i nclude <shlobj.h>  // IActiveDesktop

 

3.只有在安装了IE4.0及以上版本时才能应用IActiveDesktop接口,只有active desktop(活动桌面)在打开的情况下才能应用SetWallpaper函数,所以先定义打开或关闭活动桌面的方法如下:

BOOL EnableActiveDesktop(BOOL bEnable)

{

  // bEnable TRUE则打开,反之

  HRESULT hr;

  IActiveDesktop* pIADesk;

  //创建接口的实例

  hr = CoCreateInstance ( CLSID_ActiveDesktop,  NULL, CLSCTX_INPROC_SERVER,      

              IID_IActiveDesktop, (void**) & pIADesk );

  If ( !SUCCEEDED(hr) )

return FALSE;

  COMPONENTSOPT comp;

  comp.dwSize = sizeof(comp);

  comp.fEnableComponents = bEnable;

  //启用或关闭active desktop

  comp.fActiveDesktop = bEnable;

  hr = pIADesk ->SetDesktopItemOptions(&comp, 0);

  if ( !SUCCEEDED(hr) )

 return FALSE;

  //释放接口的实例

pIADesk ->Release;

  return TRUE;

}

 

4.当活动桌面开启后即可进行壁纸设置,代码如下:

//strPicFile是图像文件名,支持BMP JPEG GIF等格式

//dwStyle是墙纸的样式

//WPSTYLE_CENTER 居中 0

//WPSTYLE_TILE    平铺 1

//WPSTYLE_STRETCH 拉伸 2

//WPSTYLE_MAX 3

 

//返回值是TRUE时墙纸设置成功,返回FALSE时失败

BOOL SetWallpaper(CString &strPicFile, DWORD dwStyle)

{

       HRESULT hr;

       IActiveDesktop* pIAD;

        

       //创建接口的实例

       hr = CoCreateInstance ( CLSID_ActiveDesktop,  NULL, CLSCTX_INPROC_SERVER,      

              IID_IActiveDesktop, (void**) &pIAD );

      

       If ( !SUCCEEDED(hr) )

 return FALSE;

       //将文件名改为宽字符串,这是IActiveDesktop::SetWallpaper的要求

       WCHAR   wszWallpaper [MAX_PATH];

       LPTSTR lpStr = strPicFile.GetBuffer(strPicFile.GetLength() );

       MultiByteToWideChar(CP_ACP, 0, lpStr, -1, wszWallpaper, MAX_PATH);

       strPicFile.ReleaseBuffer();

       //设置墙纸

       hr = pIAD->SetWallpaper(wszWallpaper, 0);

       if(!SUCCEEDED(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;

}

桌面壁纸随意变换

  • 2008年04月05日 21:17
  • 77KB
  • 下载

2008域策略--通过AD修改桌面壁纸

2008域策略--通过AD修改桌面壁纸 凡是涉及到通过AD推发文件到客户端的操作大体分为2步骤: 1.       上传文件或文件夹到AD的netlogon共享文件夹中 2.       在...

python 实现桌面壁纸自动更换

学了python大概两周了,今天做了个小程序,感觉还比较实用。在此记录一下 程序介绍 功能介绍:每隔30分钟,随机更换桌面。桌面资源是在zol网,自动爬取的热门图片 开机自启设置:发送c...

Shell系列 - Mac OS X自动下载切换桌面壁纸

背景   本人一直非常喜欢Bing(必应)的壁纸,之前写过Java程序在Windows系统中自动下载并切换桌面壁纸。现在尝试在Mac OS X下实现,心想既然有shell这么好用的脚本语音,何乐不为...
  • rywaqpf
  • rywaqpf
  • 2015年12月25日 17:47
  • 1242

就玩慢镜头 Win7桌面壁纸切换更平滑

众所周知Win7加入了炫目的桌面幻灯片功能,能够每隔一段时间自动更换一张壁纸。然而不知大家注意过没有,默认的壁纸切换有些偏快,以至于视觉上总感觉有那么点儿生硬。其实在Win7中,壁纸的切换速度也是可以...

删除桌面壁纸的小程序(c语言)

源码: #include #include #include #include #include #define FASLE 0 #define TRUE 1 ...

下载bing图片并设置成桌面壁纸

主要实现:从bing下载图片并保存到本地;然后稍加处理将该图片设置为桌面壁纸。 # -*- coding: cp936 -*- import urllib import os import ti...
  • kaever
  • kaever
  • 2015年04月13日 17:04
  • 545

Python网络爬虫小试刀——抓取ZOL桌面壁纸图片2

将一个类型集合的全部图片下载到指定名字文件夹中,使用urllib2

Android获取当前桌面壁纸

http://blog.csdn.net/lnb333666/article/details/7772344 这段时间项目有需求要获取桌面的壁纸来设成背景,发现网上很多同学都通过Wallpa...

设置桌面壁纸时 'IActiveDesktop' : undeclared identifier 的处理

//Added by jiangqin 2016-09-10 //修改桌面壁纸的相关接口虽在shlobj.h中定义,但却又依赖宏开关_WININET_ //而宏_WININET_在wininet....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:随意更改桌面壁纸
举报原因:
原因补充:

(最多只允许输入30个字)