c++ - 在 C++ 中更改 Windows 7 墙纸

标签 c++ windows wallpaper

我在学校看到有人有一个程序,本来应该改变背景,然后注销你(这样改变才会生效),但它只在他的电脑上有效,他“丢失”了源代码。 我一直在网上寻找可以执行此操作的代码,因此我可以对其进行试验。

我找到了这段代码(C++)

#include <windows.h>
int main()
{
    SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, (PVOID)"image.jpg", SPIF_UPDATEINIFILE );
}

哪种有效..

它对位于同一文件夹中的一张图片工作了两次,我测试了两张图片,在第二张之后它就停止工作了。

我一辈子都弄不明白为什么它停止工作(我尝试了多个文件扩展名,所以我知道这不是问题所在)。

我正在使用 Dev-C++ 工作,如果这对任何人都有影响的话。

此外,我希望能够修改代码以使用 url 而不是本地镜像...这可能吗?

谢谢!

编辑:如果我将 image.jpg 更改为 image.bmp 它每次都会更改..但这意味着它只能与 *.bmp 一起使用?我之前用 jpeg 让它工作过。

最佳答案

#include <windows.h>
int main()
{   
 int i;
 for(i=0;;i++)
 {
  Sleep(800);
  if(i%2==0)
  {
   const wchar_t *filenm = L"C:\\Pictures\\image1.jpg"; //ADDRESS of first image
   bool isWallSet=SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0,(void*)filenm,SPIF_UPDATEINIFILE);  
  }
  else
  {
   const wchar_t *filenm = L"C:\\Pictures\\image2.jpg"; //ADDRESS of second image
   bool isWallSet=SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0,(void*)filenm,SPIF_UPDATEINIFILE);  
  }
 }
   return 0;
}

关于c++ - 在 C++ 中更改 Windows 7 墙纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9366448/

相关文章:

c++ - 是什么导致此 C 代码中出现段错误?

c++ - 带有 bool 参数的构造函数允许编译 Java 风格的代码

windows - 在登录时运行具有提升权限的桌面应用程序

windows - Linux-Windows 时区映射?

java - 如何从 Java 获取 Windows 10 上已安装应用程序的列表

c++ - char var[] 和 char var[][] 之间的区别

c++ - VS2005、VS2008下C++生成的EXE速度; VS2010编译器

java - 如果墙纸是从另一个应用程序设置的,如何停止服务

android - 更新设置后如何重新启动此壁纸引擎?

java - 仅设置 Android 主屏幕壁纸