随意更改桌面壁纸

原创 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
  • 下载

Unity 配合Wallpaper Engine工具,实现电脑桌面壁纸游戏

Unity 配合Steam的Wallpaper Engine工具,实现电脑桌面背景壁纸Unity游戏 Steam:Wallpaper Engine 工具(18元) Wallpaper 壁纸...

Launcher3 桌面壁纸滑动

在原生系统Launcher3中,滑动桌面,壁纸跟着滑动,查看一下源码,这部分代码比较简单,主要在Workspace类中,主要是WallpaperOffsetInterpolator内部类。这个类实现了...

Android Studio最常用快捷键以及如何把快捷键放到桌面壁纸上

alt+/ 提示代码 Alt+shift+A 查询快捷键 Alt+Enter ...

Windows桌面壁纸:悲情的盒子小人 淡淡的伤

悲情的盒子小人,给人以淡淡的忧、淡淡的愁,触发那淡淡的伤;会悲悯一下,触摸下你的心弦... 悲情的盒子小人桌面壁纸合辑,绝大多数分辨率为1920*1200,有那么几张小小的,却一样值得珍藏。 部分...

ubuntu下实现动态桌面壁纸

不知大家在使用ubuntu时有没有注意到,ubuntu下是可以实现多张壁纸动态切换的,好像Win7下也有类似的功能(曾经使用win7一段时间)。我也是最近才注意到这点,下面是在ubuntu10.04下...

25款Windows8系统最新高清桌面壁纸

Windows 8是由微软公司开发的,具有革命性变化的操作系统。该系统旨在让人们的日常电脑操作更加简单和快捷,为人们提供高效易行的工作环境。Windows 8分为Windows传统界面和Metro界面...

Launcher3桌面壁纸被拉伸模糊的修改

最近很忙,记录一下,Launcher3壁纸的修改。免得忘记。花了我近半天的时间。 环境:RK3288 + AndroidLL 步骤:进入Launcher3,长按桌面空白部分,设置一个内置的壁纸。 现象...

每日一首古诗, 每日一个桌面壁纸

依赖 两个接口 第三方库 每日诗词 代码 效果图gif 每日桌面 代码 效果图gif 总结正好今天没课,于是闲不下来,做了两个小工具。 每日古诗词 每日壁纸 这两个小脚本都不难,所以很容易上手。依赖两...

小米2.3系统手机桌面壁纸不随着屏幕滑动设置方法

壁纸随着桌面的滑动而滑动,这个是android的一个特点,但是有时候很不方便,尤其是桌面设置成一张自己喜欢的图片的时候,老是看不到一整张的图片,这里介绍下设置成不随桌面滑动而滑动的方法。 1.自...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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