您好,我想要寫一個小程序,在Windows中更改壁紙7如何更改活動桌面壁紙在C++
我想用下面的代碼:
#include "windows.h"
#include "wininet.h"
#include "shlobj.h"
#include "wchar.h"
#include <iostream>
void SetWallpaper(LPCWSTR file){
CoInitializeEx(0,COINIT_APARTMENTTHREADED);
IActiveDesktop* desktop;
HRESULT status = CoCreateInstance(CLSID_ActiveDesktop,NULL,CLSCTX_INPROC_SERVER,IID_IActiveDesktop,(void**)&desktop);
WALLPAPEROPT wOption;
ZeroMemory(&wOption, sizeof(WALLPAPEROPT));
wOption.dwSize=sizeof(WALLPAPEROPT);
wOption.dwStyle = WPSTYLE_CENTER;
status = desktop->SetWallpaper(file,0);
wcout << status << endl;
status = desktop->SetWallpaperOptions(&wOption,0);
wcout << status << endl;
status = desktop->ApplyChanges(AD_APPLY_ALL);
wcout << status << endl;
desktop->Release();
CoUninitialize();
}
int wmain(int argc, wchar* argv[]){
if(argc<=1){
wcout << "use: " << argv[0] <<" path_to_pic.bmp" <<endl;
}else{
wchar_t* file = argv[1];
SetWallpaper(file);
}
getchar();
return 0;
}
但是這個代碼不更改壁紙,它只會在調用ApplyChanges後給我的hresult錯誤代碼80070002。
我在做什麼錯了,請幫忙
0x80070002的'HRESULT'代碼意味着系統找不到指定的文件。嘗試硬編碼文件的完整絕對路徑,看看是否有效。 –
我知道,幾個谷歌結果頁後,但我不能確定如果該錯誤代碼始終站在相同的。不要緊,我怎麼給路徑 –
將'char *'輸入到'wchar_t *'中並不奇怪地將它變成一個寬字符的字符串。這使得它無稽之談。 –