如何使用C++更改Windows 10壁纸
How to change the windows 10 wallpaper with C++?
我希望使用Windows API更改C++中的Windows桌面背景壁纸。
我已经阅读了以下有关此主题的帖子:
- 如何使用VC++更改桌面背景
- 系统参数信息将墙纸设置为完全黑色(使用SPI_SETDESKWALLPAPER(
问题:
当我执行代码时,桌面背景变为完全黑色,如上面的帖子所示(是的,我确实尝试了该帖子中建议的修复程序。 没有运气。
法典:
#include <windows.h>
int main() {
std::string s = "C:\picture.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID*)s.c_str(), SPIF_SENDCHANGE);
return 0;
}
我也尝试了(void*)
而不是上面的(PVOID*)
和字符串前面的L
。到目前为止没有任何效果。
解决:
将SystemParametersInfo
更改为SystemParametersInfoA
(如评论和答案中所建议的那样(可以解决问题。
我相信
您应该使用 wchar_t
作为SystemParametersInfo()
的输入而不是字符串,并且还使用 SystemParametersInfoW()
.
以下代码对我有用:
#include <windows.h>
#include <iostream>
int main() {
const wchar_t *path = L"C:\image.png";
int result;
result = SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, (void *)path, SPIF_UPDATEINIFILE);
std::cout << result;
return 0;
}
如果SystemParametersInfoW()
设法更改背景,则应返回 true。为了在运行应用程序时清晰起见,我将其打印出来result
。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Windows上用C++裁剪HBITMAP
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 在Windows中以.exe的形式运行c++
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 无法在windows控制台中为C++程序提供必要的输入
- 在Windows中查找扬声器输出的当前音量级别
- Windows.h与GLFW.h的接口
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 如何使用C++更改Windows 10壁纸
- 用Win32/C API更改Windows 7壁纸(未实现操作异常)
- 用C++更改Windows 7壁纸