gpt4 book ai didi

c++ - 使用 Win32/C++ API 更改 Windows 7 墙纸(操作未实现异常)

转载 作者:可可西里 更新时间:2023-11-01 11:30:24 26 4
gpt4 key购买 nike

以下代码适用于 Windows 8.1(已测试)但不适用于 Windows 7。

std::wstring loc = L"C:\\Users\User\\Desktop\\wallpaper.jpg";
BOOL ret = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID)loc.c_str(), SPIF_UPDATEINIFILE);

当我在 Windows 7 上运行该程序时,出现以下异常:

First-chance exception at 0x76E3C41F (KernelBase.dll) in MyApp.exe: 0xC0000002:  The requested operation is not implemented.

有没有人遇到过这个?我看过http://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v=vs.85).aspx并用谷歌搜索没有成功。

最佳答案

您的代码唯一可能出错的地方是您没有针对 Unicode 进行编译。因此 SystemParametersInfo 扩展为 SystemParametersInfoA 但您传递了一个宽字符串。否则你的代码是正确的并且可以工作。

调试这个特定 API 调用的问题非常棘手。它不会给你很多有用的反馈。明显的故障模式是该特定 JPEG 文件存在问题。尽管有扩展名,但它可能实际上不是 JPEG 文件。或者它可能使用 shell 不支持的 JPEG 功能。或者你可能把文件名弄错了。这些都是解释失败的原因。

为了测试目的,我会通过创建一个不同的 JPEG 文件来开始调试。如果结果成功,那么您就知道问题出在您正在使用的 JPEG 文件上。

关于c++ - 使用 Win32/C++ API 更改 Windows 7 墙纸(操作未实现异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21523803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com