gpt4 book ai didi

c++ - 如何在 C++ 中更改事件桌面墙纸

转载 作者:可可西里 更新时间:2023-11-01 09:35:22 25 4
gpt4 key购买 nike

您好,我想写一个小程序来更改 Windows 7 中的墙纸

我想使用下面的代码:

#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 error-code 80070002。

我做错了什么请帮忙

最佳答案

请将您的主入口函数从

int main(int argc, char* argv[])

int wmain(int argc, wchar_t* argv[] )

不需要像 wchar_t* file = (wchar_t*)argv[1]; 这样的强制转换,它将像您的 wmain arguments are already in wchar_t* 一样工作

我能够使用你的代码和我的修改并更改我的电脑墙纸

关于c++ - 如何在 C++ 中更改事件桌面墙纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com