我一直在尝试使用 Qt 和 mingw32 编写一个应用程序来下载图像并将其设置为背景壁纸。我在网上阅读了几篇关于如何在 VB 和 C# 中执行此操作的文章,以及在某种程度上如何在 C++ 中执行此操作。我目前正在致电SystemParametersInfo
使用似乎所有正确的参数(没有编译器错误)并且失败。没有铙钹的轰鸣声,只有0
回。GetLastError()
返回同样具有启发性的0
.
下面是我正在使用的代码(稍微修改过的形式,因此您不必查看对象内部)。
#include <windows.h>
#include <iostream>
#include <QString>
void setWall()
{
QString filepath = "C:\\Documents and Settings\\Owner\\My Documents\\Wallpapers\\wallpaper.png";
char path[150];
strcpy(path, currentFilePath.toStdString().c_str());
char *pathp;
pathp = path;
cout << path;
int result;
result = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pathp, SPIF_UPDATEINIFILE);
if (result)
{
cout << "Wallpaper set";
}
else
{
cout << "Wallpaper not set";
cout << "SPI returned" << result;
}
}
可能是这样SystemParametersInfo
正在期待一个LPWSTR
(指向wchar_t
).
尝试这个:
LPWSTR test = L"C:\\Documents and Settings\\Owner\\My Documents\\Wallpapers\\wallpaper.png";
result = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, test, SPIF_UPDATEINIFILE);
如果这有效(尝试使用几个不同的文件以确保),您需要将您的char *
to a LPWSTR
。我不确定 Qt 是否提供这些服务,但一个可能有帮助的功能是MultiByteToWideChar.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)