SystemParametersInfo将背景设置为纯色,而不是实际设置图片

时间:2019-11-18 19:25:17

标签: c++ winapi windows-10

我已经尝试了以下帖子中指定的所有解决方案:

  1. How to change the windows 10 wallpaper with C++?
  2. How to change desktop background using VC++
  3. SystemParametersInfo sets wallpaper completly black (using SPI_SETDESKWALLPAPER)

而且我仍然似乎无法使它工作。...这是我的代码:

const wchar_t* path = L"C:\\imagge.png";
bool result = SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, (void*)path, SPIF_UPDATEINIFILE);
std::cout << result;

如果我指定的路径不是有效的,则当它在docs SPI_SETDESKWALLPAPER位上明确声明时,如果仍然存在问题,它仍然会打印1(true)

我还尝试调用打印出GetLastError();并返回0。...

  

注意:当使用SPI_SETDESKWALLPAPER标志时,SystemParametersInfo   除非有错误(例如指定的文件时),否则返回TRUE   不存在)。

1 个答案:

答案 0 :(得分:2)

建议使用IDesktopWallpaper interface

IInspectable

我开始工作了!

这里是我的代码:

int main() {
std::wstring x = L"C:\\Users\\danie\\OneDrive\\Pictures\\pixelArt\\Sample.png";
HRESULT  ad;
CoInitialize(NULL);

IDesktopWallpaper* p;
if(SUCCEEDED(CoCreateInstance(__uuidof(DesktopWallpaper), 0, CLSCTX_LOCAL_SERVER, __uuidof(IDesktopWallpaper), (void**)&p))) {
    ad = p->SetWallpaper(NULL, x.c_str());
    p->Release();
}

CoUninitialize();
return 0;
}