【问题标题】:Change Windows 7 Wallpaper in C++在 C++ 中更改 Windows 7 壁纸
【发布时间】:2012-02-20 18:29:19
【问题描述】:

我在学校看到有人有一个程序,该程序本应更改背景并将您注销(以便更改生效),但该程序只能在他的计算机上运行,​​并且他“丢失”了源代码。 我一直在网上寻找可以做到这一点的代码,所以我可以尝试一下。

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

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

哪个起作用了..

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

我终其一生都无法弄清楚它为什么停止工作(我尝试了多个文件扩展名,所以我知道这不是问题)。

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

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

谢谢!

编辑:如果我将image.jpg 更改为image.bmp,它每次都会更改..但这意味着它只适用于*.bmp?我之前用 jpeg 处理过它。

【问题讨论】:

  • 如果指定网址,必须先下载。
  • 它似乎正在处理任何图像,这与我上次的编辑相反。您能否通过下载网址指定您的意思?就像我要设置的图像一样?我希望它能够从 url 本身获取图像,这样我就可以在多台计算机上只使用 *.exe 文件,而无需 *.exe 所在位置的 *.bmp 文件。
  • 试试 - PostMessage(GetDesktopWindow(), WM_SETTINGCHANGE, NULL, NULL);
  • @Desu_Never_Lies 我输入了那一行,它返回了错误9 C:\Users\CurrentUser\Desktop\Folder\main.cpp [Warning] passing NULL used for non-pointer converting 3 of 'BOOL PostMessageA(HWND__*, UINT, WPARAM, LPARAM)'我还有什么与该代码有关的事情吗?

标签: c++ windows wallpaper


【解决方案1】:
#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;
}

【讨论】:

    猜你喜欢
    • 2011-07-10
    • 2014-05-28
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多