'SystemParametersInfo'函数在获取桌面壁纸时返回不正确的值
'SystemParametersInfo' function returns incorrect value when get the desktop wallpaper
我正在使用函数SystemParametersInfo
来获取桌面壁纸,并且假设在向函数添加操作SPI_GETDESKWALLPAPER
时返回一个字符串。
LPWSTR bgPath;
if(!SystemParametersInfo(SPI_GETDESKWALLPAPER, 0, bgPath, SPIF_UPDATEINIFILE)){
qDebug() << *bgPath;
return;
}
qDebug()<< "an error occurred";
问题是该函数返回的是一个数值(例如:50121),而不是字符串
我的代码有问题吗?
您没有为bgPath
分配任何内存供SystemParametersInfo()
填写。
根据SPI_GETDESKTOPWALLPAPER
文件:
pvParam
参数必须指向缓冲区才能接收以null结尾的路径字符串。将uiParam
参数设置为pvParam
缓冲区的大小(以字符为单位)。返回的字符串不会超过MAX_PATH
个字符。
即使您正在分配缓冲区,也要检查SystemParametersInfo()
的返回值是否失败而不是成功。并且您正在取消引用字符串指针,所以最多只输出第一个字符,而不是整个字符串。
使用这个替代:
WCHAR bgPath[MAX_PATH];
if (SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, bgPath, 0))
{
qDebug() << bgPath;
return;
}
qDebug() << "an error occurred";
相关文章:
- 在C++中返回不正确的楼层函数值
- wcslen() 在使用编译指示包时返回不正确的结果
- 当我输入分数值时,它返回不正确的结果
- ifstream::read 不断返回不正确的值
- C++ 中的 MD5 实现返回不正确的摘要
- MSVC OSVersion 返回不正确的版本
- 'SystemParametersInfo'函数在获取桌面壁纸时返回不正确的值
- c++winsock-recv()返回不正确且奇怪的缓冲区
- Winsock recv() 返回不正确的数据
- C sizeof自定义类返回不正确的值
- 带有绝对路径的LoadLibrary返回不正确的HMODULE,没有任何错误
- 检查两个数组中的相似元素,为某些测试返回正确的值,为其他测试返回不正确的值
- 使用 const 指针的 C 样式字符返回不正确的结果
- Intel TBB parallel_reduce返回不正确的结果
- GetPixel返回不正确的值
- 从 IOCP 线程调用 WSAGetLastError() 将返回不正确的结果
- 计算后缀表达式.pop() 返回不正确的值来计算函数
- 在具有 64 位 CPU 的 32 位 Win8 上运行 32 位 Orwell Dev-C++ - 输入指针返回不正确
- IDirectSound8 setCooperativeLevel 返回不正确的参数
- GetSystemMetrics(SM_CYVIRTUALSCREEN) 返回不正确的高度