windows7 设置png格式图片为桌面壁纸

news/2024/10/22 8:00:39/

windows7 设置png格式图片为桌面壁纸

项目中有一个小需求----自动设置壁纸。按理说,这种小需求理论上都很容易啦,没有必要做笔记了。而在实际开发过程还是遇到了各种问题。当然这是由于windows不同版本之间的兼容性引发的问题。
最开始我通过修改注册表的“Control Panel\Desktop\Wallpaper”值,来实现更换桌面壁纸。jpeg图片格式,在win7与win10下面,都表现完美;png图片格式,在win10下能正常设置为壁纸,但是在win7下面就是不得行。
网上有人说是因为,png图片的信息不完整(通过iview4查看,缺少dpi值)。通过手动补全信息后,问题依然。。。
后面再同事提醒下,找到了下面的代码。测试了一下,在win7下设置png格式图片作为壁纸,没问题!

// 设置桌面壁纸
// szFileDir: 壁纸文件路径
// displayStyle: 壁纸展示方式
int ApplyWallpaper(const char* szFileDir, int displayStyle) 
{WCHAR wsz[MAX_PATH];  //定义Unicode字符串MultiByteToWideChar(CP_ACP,0,szFileDir,-1,wsz,MAX_PATH);CoInitialize(NULL);std::wstring x = wsz;DWORD dwStyle = displayStyle;HRESULT hr;IActiveDesktop* pIAD;hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,IID_IActiveDesktop, (void**)& pIAD);if (!SUCCEEDED(hr)){int errNum = GetLastError();return errNum;}hr = pIAD->SetWallpaper(x.c_str(), 0);if (!SUCCEEDED(hr)){int errNum = GetLastError();return errNum;}WALLPAPEROPT wpo;wpo.dwSize = sizeof(wpo);wpo.dwStyle = dwStyle;hr = pIAD->SetWallpaperOptions(&wpo, 0);if (!SUCCEEDED(hr)){int errNum = GetLastError();return errNum;}hr = pIAD->ApplyChanges(AD_APPLY_ALL);if (!SUCCEEDED(hr)){int errNum = GetLastError();return errNum;}pIAD->Release();CoUninitialize();return TRUE;
}

这里,还是贴出代码来,希望能帮助到恰好需要的朋友吧。
注意:
1.设置壁纸路径分隔符"\",不要与"/“混用.最好只用”\"。如:C:\Windows\Web\Wallpaper\Windows\img0.jpg
如果混用,将导致设置壁纸不成功(本人在这里折腾很久…)
2.壁纸存放路径,最好与系统自带壁纸路径一致(系统壁纸路径:C:\Windows\Web\Wallpaper\Windows\)


http://www.ppmy.cn/news/152151.html

相关文章

win7桌面黑屏(win7桌面黑屏无法设置壁纸)

WIN7黑屏啦,怎么办 重新安装一个盗版的系统,安装后不要用微软的自动更新打补丁。 建议你将自动更新关闭。下载超级兔子,让她帮助你下载补丁。你选择快速检测后,按安装按钮,她会自动帮助你下载安装,并且不需…

Windows官方经典壁纸

最近想换壁纸,然后去官网找了一下官方壁纸,还挺多。 https://support.microsoft.com/zh-cn/help/17780/wallpapers 界面实在是太不友好了,看不到缩略图,点击后页面跳转,然后还得返回刷新。 这。。。 也行吧&#xf…

电脑桌面壁纸不清晰?壁纸模糊怎么修复高清?

我们在入手新电脑之后,首先就是会想要设置一个好看的壁纸,虽然系统会自带一些壁纸,但大多数用户都不喜欢这样一成不变的壁纸。于是在网上找了很好好看的壁纸换上,结果发现在更换电脑壁纸之后却发现壁纸显示非常的模糊不清。为什么…

分享Win11壁纸、Windows11高清4K桌面默认壁纸。

有不少小伙伴发现了win11系统中有不少好看的全新4K高清默认壁纸,不得不说,Windows 11的桌面壁纸其中很多真的很好看,所以有很多同学想用Win11的壁纸。下面,小编把win11中的全部高清默认壁纸整理出来,全套高清4K壁纸包。…

MG3680无法在网络上检测到打印机

MG3680无法在网络上检测到打印机,换了不同路由器死活检测不到无线打印机。 防火墙怎么没有提示呢?关闭防火墙,不想马上检测到无线打印机,折腾了起码半天时间。

惠普3548和佳能MG3080哪个好

一、连接方式不同 1、惠普3548:WIFI直连(IEEE802.11b/g/n),惠普云打印,AirPrint打印:直接从iPhone,iPad或iPod touch进行打印 选惠普3548还是佳能MG3080这些点很重要 http://www.adiannao.cn/dn…

Windows10安装MG2580打印机

注意:有些电脑插上打印机直接可以使用了,但是有一些就不好使,下面说不好使的。 下载这个软件FlashPaper,有了它就可以显示打印机了,没有他就找不到打印机, https://en.softonic.com/download/macromedia-…

佳能Canon PIXMA MG6320 一体机驱动

佳能Canon PIXMA MG6320 一体机驱动是官方提供的一款一体机驱动,本站收集提供高速下载,用于解决一体机与电脑连接不了,无法正常使用的问题,本动适用于:Windows XP / Windows 7 / Windows 8 / Windows 10 32/64位操作系…