C++定时切换桌面背景

news/2025/3/19 4:29:07/

本代码是将需要切换的图片路径保存到一个文件中,代码从文件中读取这些图片,并定期切换。

注意:编码方式用多字节字符集,否则会出现无法正确显示桌面背景的情况(也就是屏幕变成黑色了--黑屏),原因可能是再传入路径参数时,需要用宽字节,该问题目前没有处理。

代码:

#include <Windows.h>
#include <fstream>
#include <iostream>
#include <string>
#include <io.h>
using namespace std;//必须使用多字符集(使用UNICODE会不起作用--黑屏)LPSTR UTF8ToGB(const char* str)
{string result;WCHAR* strSrc;LPSTR szRes;//获得临时变量的大小int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);strSrc = new WCHAR[i + 1];MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);//获得临时变量的大小i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);szRes = new CHAR[i + 1];WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);result = szRes;delete[]strSrc;//delete[]szRes;return szRes;
}//从文件中读取图片信息,并定期更换桌面背景,文件中的图片必须用绝对路径
int main()
{char buf[20][100];int i, n=0;ifstream ofs;ofs.open("./background.txt");if (!ofs.is_open()){cout << "文件打开失败" << endl;return 0;}while (!ofs.eof()){ofs.getline(buf[n], 100);//判断文件是否存在ifstream ii;ii.open(buf[n]);if (ii.is_open()){n++;ii.close();}}ofs.close();while (1){for (i = 0; i < n; i++){LPSTR ff = UTF8ToGB(buf[i]);cout << ff << endl;SystemParametersInfo(SPI_SETDESKWALLPAPER, TRUE, (void*)buf[i], SPIF_UPDATEINIFILE);delete[] ff;Sleep(5000);}}return 0;
}

background.txt文件示例:

D:/project/vc/test/Project1/Project1/pic/1.jpeg
D:/project/vc/test/Project1/Project1/pic/2.jpeg
D:/project/vc/test/Project1/Project1/pic/3.jpeg
D:/project/vc/test/Project1/Project1/pic/4.jpeg


http://www.ppmy.cn/news/503886.html

相关文章

禁止用户修改计算机的桌面背景,win10系统设置禁止别人更改桌面背景的解决技巧...

有关win10系统设置禁止别人更改桌面背景的操作方法想必大家有所耳闻。但是能够对win10系统设置禁止别人更改桌面背景进行实际操作的人却不多。其实解决win10系统设置禁止别人更改桌面背景的问题也不是难事&#xff0c;小编这里提示两点&#xff1a;1、打开win10系统的开始菜单&…

win10设置HTML桌面背景,Win10系统直接将视频设置为桌面背景的方法

一般情况下&#xff0c;Windows10系统桌面壁纸都是静态图片或图片幻灯片&#xff0c;感觉比较枯燥&#xff0c;有什么办法可以把视频设置为桌面背景&#xff1f;如果想直接将视频设置为桌面背景&#xff0c;借助于两款软件&#xff0c;即可将视频设置为桌面背景。一起看看操作方…

C语言更换桌面背景

SystemParametersInfo函数 用法看百度百科就行了&#xff0c;别的地方也没什么好的参考。 直接上代码吧。 #include <stdio.h> #include <Windows.h>int main() {// 第二个参数没有提示&#xff0c;填个0&#xff0c;就行了。//第一次换图最好拿系统自带的桌面来…

局域网计算机统一桌面背景,Windows 2008 R2 AD组策略-统一域用户桌面背景详细图文教程...

Windows 2008 R2 AD组策略-统一域用户桌面背景详细图文教程&#xff1a; 组策略管理在windows域管理中占有重要地位&#xff0c;本身也不是新的内容了。但微软在Windows2008中终于集成了一个非常好用的组策略管理工具——组策略管理控制台。注意&#xff1a;2008 r2 右击域或者…

生成的html怎么做成桌面背景,定时改换图片的桌面背景 html页面

1.准备相关图片(1.jpg,2.jpg...n.jgp) 2.编写一个html页面 用以显示图片 并设置为自动定时更新图片 3.将改html页面 设置为桌面背景 该“桌面”隔定时自动刷新 更新图片显示 1.将自己需要的图片 如英语小卡片 名人名言等 集结在一个文件夹下 并进行命名 如1.jpg,2.jpg... 这样…

简述改变计算机桌面背景的方法,桌面背景不能更换怎么办 桌面背景不能更换解决方法【详细介绍】...

桌面背景不能更换怎么办? 壁纸是电脑桌面所使用的背景图片&#xff0c;可以根据大小和分辨率来做相应调整。壁纸让我们的电脑看起来更好看&#xff0c;更漂亮&#xff0c;更有个性。 桌面壁纸就是电脑屏幕所使用的各种图片。 但有时候我们却发现桌面壁纸更换不了。下面&#x…

注册表中修改桌面背景

注册表位置&#xff1a; HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\ 修改Wallpaper的值即可 eg&#xff1a;值为&#xff1a;C:\123.jpg

linux设置用户默认桌面背景,linux 修改桌面背景

本文适用于想把自己收藏的图片放到系统目录中的同学,因为如果直接把图片放系统目录中,在设置界面中是看不到新添加的图片的。 环境及相关目录文件说明: 系统:centos7(这个应该不是重点,基本所有的系统应该都适用的)。 linux默认背景图片存放位置:/usr/share/backgrounds/…