微软Bing壁纸是我非常喜欢的壁纸,怎么说呢它的壁纸非常细腻逼真,总是让人心动,我就不安利了,反正比三百六X鸟好多了。不幸的是Win10更新到最新版以后微软bing缤纷桌面不能运行了,失望加无奈。。 难道我就这么的放弃我的壁纸了么,不,党告诉我,你可以靠自己,你可以创新,然后就自己动手做了一款工具来自动下载Bing壁纸工具。 纯。。。纯到没有界面,纯到没有任何提示,纯到24小时自动更换壁纸,纯。

整体而言,就是用json network slots ,就简单贴下主要代码部分,附件有构建好的应用,win10通过。。。


//bing.cpp#include"bing.h"#pragmacomment(lib,"user32.lib")Bing::Bing(){connect(&manager,&QNetworkAccessManager::finished,this,&Bing::downloadFinished);}voidBing::execute(){QTimer*timer=newQTimer(this);connect(timer,SIGNAL(timeout()),this,SLOT(execute()));timer->setInterval(86400000);timer->start();QUrlurl("https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US");QNetworkRequestrequest(url);QNetworkReply*reply=manager.get(request);currentReplys.append(reply);qDebug()<<"execute";}voidBing::doGetJson(QNetworkReply*reply){QByteArraybyteArray=reply->readAll();QJsonParseErrorjsonError;QJsonDocumentjson=QJsonDocument::fromJson(byteArray,&jsonError);if(!json.isNull()&&(jsonError.error==QJsonParseError::NoError)){if(json.isObject()){QJsonObjectobj=json.object();if(obj.contains("images")){QJsonValuevalue=obj.value("images");if(value.isArray()){QJsonArrayjsonArray=value.toArray();QJsonValueimageValue=jsonArray.at(0);if(imageValue.isObject()){QStringimage=imageValue["url"].toString();QStringbaseUrl="https://www.bing.com";baseUrl.append(image);QUrlurl(baseUrl);QNetworkRequestrequest(url);QNetworkReply*replyImage=manager.get(request);currentReplys.append(replyImage);}}}}}}voidBing::downloadFinished(QNetworkReply*reply){if(reply->url()==QUrl("https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US")){doGetJson(reply);}else{saveImages(reply);}currentReplys.removeAll(reply);reply->deleteLater();}voidBing::saveImages(QNetworkReply*reply){QDatedate=QDate::currentDate();QStringfileName="d:\\bingWallPaper\\bing";fileName.append(date.toString("yyyyMMdd")).append(".jpg");QFilefile(fileName);if(!file.open(QIODevice::WriteOnly)){qDebug()<<"openfailed";return;}file.write(reply->readAll());file.close();setWallPaper();}voidBing::setWallPaper(){//constwchar_t*wimFile=reinterpret_cast<constwchar_t*>(pszWimFile.utf16());QDatedate=QDate::currentDate();QStringfileName="d:\\bingWallPaper\\bing";fileName.append(date.toString("yyyyMMdd")).append(".jpg");constwchar_t*image=reinterpret_cast<constwchar_t*>(fileName.utf16());if(!SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(void*)image,SPIF_UPDATEINIFILE))//调用windows的API函return;}

源代码:https://github.com/piaodonkey/BingWallPaper 我真是越来越懒了。。

附件:链接:https://pan.baidu.com/s/1XiL4HhluEbPzEcIVo8xhmA 密码:dck1