首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当尝试使用C++将桌面背景更改为图像时,具有SPI_SETDESKWALLPAPER功能的程序仅将桌面背景更改为黑色

在C++中更改桌面背景通常涉及到调用Windows API函数SystemParametersInfo,并传递SPI_SETDESKWALLPAPER标志来设置新的桌面壁纸。如果你遇到了桌面背景变为黑色的问题,可能是由于以下几个原因:

基础概念

  • SPI_SETDESKWALLPAPER: 这是一个Windows API常量,用于指示SystemParametersInfo函数设置桌面壁纸。
  • SystemParametersInfo: 这是一个Windows API函数,允许应用程序查询或修改系统参数。

可能的原因

  1. 权限问题: 程序可能没有足够的权限来更改桌面背景。
  2. 文件路径错误: 提供的图像文件路径可能不正确或文件不存在。
  3. 图像格式不支持: 某些图像格式可能不被Windows支持作为桌面背景。
  4. 内存问题: 程序可能存在内存访问错误或其他内存相关问题。

解决方案

以下是一个简单的示例代码,展示了如何使用C++更改桌面背景,并附带一些可能的解决方案:

代码语言:txt
复制
#include <windows.h>
#include <iostream>

bool SetDesktopWallpaper(const std::wstring& path) {
    // 确保路径存在且有效
    if (!PathFileExistsW(path.c_str())) {
        std::cerr << "文件路径不存在: " << std::wstring_convert<std::codecvt_utf8<wchar_t>>().to_bytes(path) << std::endl;
        return false;
    }

    // 尝试设置桌面壁纸
    BOOL result = SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, (PVOID)path.c_str(), SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
    if (!result) {
        DWORD error = GetLastError();
        std::cerr << "设置桌面壁纸失败,错误代码: " << error << std::endl;
        // 根据错误代码进一步处理
        switch (error) {
            case ERROR_ACCESS_DENIED:
                std::cerr << "权限不足,请以管理员身份运行程序。" << std::endl;
                break;
            default:
                std::cerr << "未知错误。" << std::endl;
                break;
        }
        return false;
    }
    return true;
}

int main() {
    // 替换为你的图像文件路径
    std::wstring imagePath = L"C:\\path\\to\\your\\wallpaper.jpg";
    if (SetDesktopWallpaper(imagePath)) {
        std::cout << "桌面背景已成功更改。" << std::endl;
    } else {
        std::cout << "更改桌面背景失败。" << std::endl;
    }
    return 0;
}

注意事项

  • 管理员权限: 确保程序以管理员权限运行,特别是在Windows Vista及以后的版本中。
  • 文件路径: 使用绝对路径,并确保路径中没有非法字符。
  • 图像格式: 支持的格式通常包括JPEG、PNG、BMP等。

应用场景

  • 个性化设置: 用户希望自定义桌面背景。
  • 自动化工具: 自动化脚本或程序需要更改桌面背景作为任务的一部分。

通过上述代码和注意事项,你应该能够解决桌面背景变为黑色的问题。如果问题仍然存在,建议检查系统日志或使用调试工具进一步诊断问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Screegle - Clean Screen Sharing Mac(专业屏幕共享软件)2.1.0

Screegle 可让您在干净的桌面背景图像上共享您想要的任何窗口。您还可以录制带有语音的 Screegle 窗口视频。...Screegle - Clean Screen Sharing for Mac图片Screegle - Clean Screen Sharing for Mac功能特点Screegle 可让您在干净的桌面背景图像上共享您想要的任何窗口...您的同事、团队、客户或学生会看到一个干净、整洁的桌面版本,其中仅包含您明确选择的窗口,仅此而已。不再弹出可能泄露个人信息的通知、个人网站、文件和文件夹。...您还可以录制带有语音的 Screegle 窗口视频。这对于与同事共享干净的桌面以进行异步通信很有用。...您甚至可以将网络摄像头添加为叠加层,这在屏幕录制期间或当您展示窗口并希望人们关注您时非常有用(在视频应用程序中关闭网络摄像头!)

62420

极客DIY:简易安装魔镜大合集,总有一款适合你

我们可以通过几个软件来实现它,Windows 10 桌面背景可以变为黑色,我们还可以通过cortana来操作打开一些应用程序,Desktop Coral 也可以创建和更改用户界面,关于硬件配置可以参考这个...还有 rainmeter等等应用程序可以帮助你改善桌面环境。 硬件清单 我想要一个大尺寸的魔镜,我使用了40英寸电视机的液晶屏,我建议选用 LED或IPS屏,它们比LCD屏可以提供更好的可视角度。...根据你自己的需要来测量和制作框架。我又用了一些废木料固定显示屏背面,这样看起来就更结实了。用胶水将框架以及皮毡粘好,这样在安装镜子的时候会更容易一些。...设置桌面背景颜色是黑色 设置你的计算机不进入休眠模式 如果你想要 Cortna的图标出现在显示屏上请设置双显示器选项 设置好双显示器设置选项来进行显示 Cortana 激活Cortana,在硬件设置里面调整麦克风选项...,优化语音识别功能 Rainmeter 你可以下载你自己喜欢的主题。

3.5K50
  • Screegle - Clean Screen Sharing for Mac(专业屏幕共享软件)v2.2.3直装版

    Screegle - Clean Screen Sharing mac版可以让您看到一个干净、整洁的桌面版本,其中仅包含您明确选择的窗口,您甚至可以将网络摄像头添加为叠加层。感兴趣的朋友不要错过!...图片Screegle - Clean Screen Sharing for Mac(专业屏幕共享软件)Screegle - Clean Screen Sharing for Mac功能特点Screegle...可让您在干净的桌面背景图像上共享您想要的任何窗口。...您的同事、团队、客户或学生会看到一个干净、整洁的桌面版本,其中仅包含您明确选择的窗口,仅此而已。不再弹出可能泄露个人信息的通知、个人网站、文件和文件夹。...您甚至可以将网络摄像头添加为叠加层,这在屏幕录制期间或当您展示窗口并希望人们关注您时非常有用(在视频应用程序中关闭网络摄像头!)

    74520

    C语言编写简易病毒

    图2.1 恶意代码增殖模块 2.注册表修改模块 修改注册表相关键值,实现让病毒程序开机自启动、禁用任务管理器、禁用注册表编辑器、修改桌面背景图片以及屏蔽用户键盘输入为数字1的功能,主要使用到的API...函数获取当前可执行程序的绝对路径,调用API函数GetSystemDirectory获取系统目录路径,使用文件操作函数CopyFile实现可执行程序的拷贝,避免被感染者直接删除,将系统目录路径下的可执行程序设置为开机自启...由于修改注册表需要取得管理员权限,而用户不会将管理员权限给予一个不明的程序,于是采用自解压的方式,将恶意代码和某些正常程序的安装包捆绑,进行恶意代码的隐藏,并骗取管理员权限。...使用压缩软件,将恶意代码执行程序和其它用于隐藏的正常安装包,一同进行自解压压缩。...同时也了解了如何将自己的可执行程序进行伪装来到达欺骗被感染者的目的,比如此次实验中将病毒程序拷贝到安装包中并且在解压时自执行并获取管理员权限。

    4.9K31

    【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景

    我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找到图片的下载链接,并下载之 将图片设置为桌面背景(也有部分浏览器支持直接在网页中右击图片设置为壁纸) 可能你还会删除下载下来的图片...So...我就用C++语言写了一个小程序,用于获取bing网站的图片,并将其设置为桌面背景。整个过程只需要点击.exe文件,一键完成!...当然,你也可以通过本程序,窥见Windows API的些许用法,活学活用C++知识! 当然网上也存在片片断断的程序,我的部分程序也借鉴了它们的思想,在此感谢互联网和辛勤的贡献者们。...(这个是网上下载的C源码,我改了一下接口,在此感谢) jpeg.h //头文件jpeg.h,配合程序jpeg2bmp.c使用 //若用于c++程序中,请用extern "C"包含此头文件 //功能:用于将图片从...C语言编写,若用于c++程序中,请用extern "C"包含头文件jpeg.h //功能:用于将图片从jpg类型转换为bmp类型,调用函数LoadJpegFile即可,参数1:jpg文件路径;参数2:bmp

    2.1K10

    GandCrab勒索病毒分析处置手册

    第二个版本不再使用固定的.CRAB或.KRAB加密后缀名,而是5个字母的随机后缀名。 5.0.1: 此版本修复了一些程序内部错误,但没有进行其他重大更改。...5.0.2: 此版本将随机扩展名长度从5个字符更改为10个字符,并修复了一些内部错误。 5.0.3: 此版本会通过释放名为wermgr.exe的恶意程序来执行加密操作。...6、修改桌面背景后,开始访问指定域名的80及443端口(完整域名列表见附录)。 ? ? 7、整个加密过程完成后,执行自删除操作。 ?...主机层: 检查桌面背景是否被更改为勒索信息图片; 查看是否存在相关加密文件,如:5-10随机字母后缀文件; 查看磁盘根目录是否存在勒索信息文件,如:[5-10随机字母]-DECRYPT.txt。...配置一条地址为any到any应用模板为“全部已知应用”的应用管理策略,表示对现网所有ip资产的所有已知应用的使用情况进行全检测。

    1.3K20

    Windows 7 操作系统

    单击左上角的应用程序图标,会打开窗口中应用程序的控制菜单,使用该菜单也可以实现最小化、最大化和关闭等功能。  拖动标题栏可以拖动窗口,还可以双击标题栏完成窗口的最大化和还原的切换。  ...另外,Windows可以将屏幕画面复制到剪贴板,要复制整个屏幕,按PrintScreen;要复制活动窗口,按组合键Alt+PrintScreen  因为剪贴板是在内存里开设的存储空间,所以,当电脑关闭或重启时...5)设置屏幕保护程序  屏幕保护程序是指子啊开机状态下载一段时间内没有使用鼠标或键盘操作时,屏幕上出现动画或图案。屏幕保护程序可以起到保护信息安全,延长显示器寿命的作用。...除了在对话框中选择屏幕上的任务栏位置外,将鼠标移到任务栏的上边沿时,鼠标的指针将变为“”形状,此时,拖动鼠标就可以改变任务栏的高度。...4.设置快捷方式  快捷方式是到计算机或网络上任何可访问的项目(如程序、文件、文件夹、磁盘驱动器、Web页、打印机或者另一台计算机)的连接,将快捷方式放置在桌面文件夹中,使用快捷方式可以快速打开项目。

    42830

    emWin 2天速成实例教程000_如何快速入门ucGUIemWin

    ;如果使用emWin,这些事情都是由emWin去处理的,所有的功能基本上是通过调用API函数完成。...开始时可以借助emWin的配套工具GUIBuilder做界面然后生成C代码,通过阅读生成的C代码去掌握emWin界面应用程序的框架和编程方法;但GUIBuilder功能比较弱智,因此只能设计一个初步的界面...: 备注:GUIBuilder工具目前不支持中文,因此只能在CodeBlocks做界面模拟仿真时再改为中文显示。...是设置emWin为GBK编码C文件: (2)设置emWin为GBK编码: (3)修改中文显示: 备注:使用GBK编码Code::Blocks需要做以下设置,否则保存C文件时将自动被改为UTF8编码。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.6K20

    11.6K Star开源Windows动态桌面壁纸工具,免费效果炫酷

    功能特点 Lively 提供了许多功能特点,使其成为一款强大的桌面壁纸应用程序: 1.动态壁纸:Lively 支持将视频、GIF图像或网页作为桌面背景,让你的桌面变得更加生动有趣。...4.多显示器支持:如果你使用多个显示器,Lively 能够将动态壁纸应用到每个显示器上,提供一致的桌面体验。...你可以从本地文件系统中加载已有的视频或GIF图像,也可以使用网络地址加载在线资源。 3.调整设置:Lively 的设置界面允许你自定义多种参数。...现在,你可以享受你的动态桌面壁纸带来的独特体验了。 请注意,具体的步骤可能因软件版本而有所变化,因此在使用 Lively 时最好参考相应的文档或指南。...总之,Lively 是一款优秀的动态桌面壁纸应用程序,提供了丰富的功能特点和个性化设置,帮助你打造生动、有趣的桌面体验。

    70720

    从文本创作艺术品 - 最佳的 AI 图像生成器

    你可以使用它们为你的桌面游戏设置人物画像,或者创建很时髦的桌面背景墙。创建一个有趣的表情包怎么样?嘿,这里有 meme generators。...StarryAI StarryAI 是一个 AI 图像生成器,专注于将文本转化为类似绘图的艺术品。许多结果都具有魔幻风格,该工具擅长夜景图,这也是 StarryAI 名字灵感来源。...如果你尝试使用生成器的网络版本,NightCafe 会自动为你注册一个临时的免费账号(无需登陆)。一旦注册后,你每天有机会申请 5 个积分,用于创作艺术。...仅需要几分钟,你将得到一幅根据文本提示生成的图像,且你可以将其下载下来。你必须使用文本提示和样式的组合来获取所需的图像,但是 DeepAI 在将你的随机想法融入生活方面做得不错。...但是别期望太高:图片的质量并不像上述列表中提到的生成器生成的图像那么逼真。DeepAI 更关注于将事情变得简单,快捷和有趣。该服务的会员版本具有更多的功能,每月价格 $5。

    1.5K20

    16个小的UI设计规则却能产生巨大的影响

    此外,避免使用纯黑色文本,采用较暗的灰色可以提高可读性并减少眼部疲劳。最后,将文本左对齐,并确保正文文本具有适当的行高,增强可读性。...3.确保看起来相似的元素功能相似 如果元素看起来相似,人们会期望它们以相似的方式工作。所以,请尽量确保你对具有相同功能的元素使用一致的视觉处理。反之,尝试确保具有不同功能的元素看起来不同。...尽量避免纯粹为了装饰而使用颜色,因为它可能会引起混淆和分心。从黑白开始,当它能传达意义时再引入颜色。 一个简单有效的方法是将品牌颜色应用于文本链接和按钮等交互元素。...14.避免使用纯黑色文本 在UI设计中,通常最好避免使用纯黑色,因为它与白色之间具有非常高的对比度。这种高对比度可能导致阅读文本时眼睛疲劳和不适。 黑色的颜色亮度为0%,而白色的颜色亮度为100%。...颜色亮度的巨大差异使得我们的眼睛工作更加艰难。在白色背景下,避免使用纯黑色是最安全的选择,可以选择使用深灰色。 在我们的例子中,纯黑色在多个元素上使用。将其改为深灰色有助于提高可读性。

    36420

    两行 CSS 代码实现图片任意颜色赋色技术

    当然,瞎用乱用混合模式谁都会,利用混合模式将多个图层混合得到一个新的效果,只是要用到恰到好处,或者说在 CSS 中利用混合模式制作出一些效果则需要对混合模式很深的理解及不断的尝试。...使用 background-blend-mode: lighten 实现主色改为渐变色 这个方法更厉害的地方在于,不单单可以将纯色图片由一种颜色改为另一种颜色,而且可以将图片内的黑色部分由单色,改为渐变颜色...变亮,变亮模式与变暗模式产生的效果相反: 用黑色合成图像时无作用,用白色时则仍为白色 黑色比任何颜色都要暗,所以黑色会被任何色替换掉。反之,如果素材的底色是黑色,主色是白色。...那就应该用变暗(darken)的混合模式 CodePen Demo -- 纯色图片赋色技术尝试 局限性尝试 -- 使用透明底色图片 上述方法要求了图片本身内容为纯色黑色,底色为白色。...任意颜色赋色技术尝试 -- PNG图片 很遗憾,当底色是透明的时候,会被混合模式混合上叠加层的颜色,无法使用。

    2.3K30

    基础| 两行 CSS 代码实现ps混合模式

    当然,瞎用乱用混合模式谁都会,利用混合模式将多个图层混合得到一个新的效果,只是要用到恰到好处,或者说在 CSS 中利用混合模式制作出一些效果则需要对混合模式很深的理解及不断的尝试。...使用 background-blend-mode: lighten 实现主色改为渐变色 这个方法更厉害的地方在于,不单单可以将纯色图片由一种颜色改为另一种颜色,而且可以将图片内的黑色部分由单色,改为渐变颜色...变亮,变亮模式与变暗模式产生的效果 相反: 用黑色合成图像时无作用,用白色时则仍为白色 黑色比任何颜色都要暗,所以黑色会被任何色替换掉。反之,如果素材的底色是黑色,主色是白色。.../RxRBzy) 很遗憾,当底色是透明的时候,会被混合模式混合上叠加层的颜色,无法使用。...所有,这个技术也就存在了一个使用前提:  •图片的底色为白色,主色为黑色 当然主色也可以是其他颜色,只是这个时候叠加需要考虑颜色的融合,没有使用黑色直观。

    1.1K10

    两行 CSS 代码实现图片任意颜色赋色技术

    当然,瞎用乱用混合模式谁都会,利用混合模式将多个图层混合得到一个新的效果,只是要用到恰到好处,或者说在 CSS 中利用混合模式制作出一些效果则需要对混合模式很深的理解及不断的尝试。...使用 background-blend-mode: lighten 实现主色改为渐变色 这个方法更厉害的地方在于,不单单可以将纯色图片由一种颜色改为另一种颜色,而且可以将图片内的黑色部分由单色,改为渐变颜色...变亮,变亮模式与变暗模式产生的效果相反: 用黑色合成图像时无作用,用白色时则仍为白色 黑色比任何颜色都要暗,所以黑色会被任何色替换掉。反之,如果素材的底色是黑色,主色是白色。...那就应该用变暗(darken)的混合模式 CodePen Demo -- 纯色图片赋色技术尝试 局限性尝试 -- 使用透明底色图片 上述方法要求了图片本身内容为纯色黑色,底色为白色。...任意颜色赋色技术尝试 -- PNG图片 很遗憾,当底色是透明的时候,会被混合模式混合上叠加层的颜色,无法使用。

    1.1K20

    天猫魔盒2评测报告

    随机附件有:电源、HDMI 线以及遥控器,三者均为黑色系设计。遥控器使用两节7号电池,重量适中,握持舒适度良好,按键回馈力恰到好处。而电源以及 HDMI 线均找不到任何做工瑕疵,配件品质很高。...休眠功能支持设置为:30分钟、1小时、2小时、从不休眠;桌面背景支持在预设的桌面背景中选择,或者设置频道某一为桌面背景,但不支持自定义图片;天猫魔盒2支持蓝牙音频设备,可在设置中进行连接。...天猫魔盒2内置的多媒体播放 APP 默认支持 samba 协议,正确的显示了网络共享设备。但尝试播放 1080P 视频时快进快退缓冲时间较长。...当手机与机顶盒处于统一 WiFi 网络之下时,下载并安装阿里TV助手即可使手机作为机顶盒遥控器使用。主要功能有:视频投影,远程安装应用以及遥控器。...在手机端可以选择心仪的节目并投影到天猫魔盒,但投影开始后如需控制播放,则需再进入遥控器功能,较为不便。建议可以直接在投影界面操作。目前投影仅支持内置节目,不支持自定义投影内容。

    2.3K10

    Qml开发中的性能Tips(翻译文)

    如果您确实需要启用Image的smooth属性,请在动画开始时禁用平滑处理,并在动画结束时重新启用它(仅当图像在屏幕上静止时,缩放瑕疵才可见)。...视图被轻弹(拖动)时,必须快速创建代理; 例如,在单击委托时仅需要的任何其他功能应由Loader在需要时创建; 在委托中将QML的数量保持在最低水平。...委托中的元素越少,视图的滚动速度就越快; 在列表委托中,仅将QML用于用户界面,并使用C++实现其余部分(例如:数据生成,数据处理)。不要使用JavaScript。...如果整个应用程序在一个代码量巨大的QML文件中实现,就会发生这种情况。明智地将应用程序划分为逻辑实体,在开始时加载最小QML,然后再使用加载器Loader根据需要加载更多QML。...将应用程序划分为几个QML文件,以便每个文件包含一个逻辑UI实体。这种装卸方式更容易控制。每个应用程序不应该写一个巨大代码量的QML文件。

    5K32

    直面冥王:最新爆发的C#敲诈木马HadesLocker解读

    与之相比,这次的变种增加了多层嵌套解密、动态反射调用 等复杂手段,外加多种混淆技术, 提升了分析难度。 木马加密文件时使用AES256算法, 在特定条件下可以还原加密的文件。...~HL外加5个 随机字符,然后生成txt,html、png三种形式的文件来通知用户支付 赎金,桌面背景也会被改为生成的png文件。 ?...CLib程序集: 接下来的流程在CLib程序集 上负责执行,上图可以看到,在调用此程序集 时还使用了3个参数,Injection是.net目录 下RegAsm.exe的全路径,parameters为null...CLib程序集的功能比较单一,首先以 CREATE_SUSPENDED创建RegAsm.exe进程并挂起: ?...然后使用PeLoader技术,将RegAsm进程 的内存镜像替换为之前解密的software程序集, 然后恢复原RegAsm.exe进程继续执行。

    1.9K60

    20 个改善网站设计的简单技巧

    05、使用Z-Index,分层设计 如果你有一些具有透明性的图像,则可以利用它们来创建一些分层。...当你正在使用的两种字体应用于你正在设计的具有百年历史的公司网站的漂亮日期覆盖物中时,可能会很烂。 让我们看一个示例,其中,我使用了3种不同的字体。 ?...为避免对比度问题,当使用较大的文本时(如我在模型中所做的那样),黄色的常见用法是黑色和白色。 黄色的另一个问题是,在他的柔和色版本中效果不佳:柔和的黄色变成棕色或金色,示例如下: ?...此功能也得到了极大的赞赏:用户发现能够同时查看蝴蝶的图像和文本非常实用。...设计时,看看这样设计是否更明智,更专业 你也可以玩分层设计 举个例子:我做过的这种速度设计,有一个非常糟糕且不完整的移动应用程序版本,但是,即使很糟糕,它也使完整的设计更加完整和专业。 ?

    91420

    红黑树,超强动静图详解,简单易懂

    学校中学过,只了解大概;工作中不怎么使用,但面试又是重点。每次需要查看红黑树内容时都很难以更生动形象的方式来理解其内容。...某节点的左子树节点值仅包含小于该节点值 某节点的右子树节点值仅包含大于该节点值 左右子树每个也必须是二叉查找树 看个图就轻松理解上面三句话的意思了: ?...这是一个走路一米六,一米八的树 这是一个畸形的树,大风一挂很可能被折断的树 从程序的角度来说这个树不够平衡,查找次数或时间复杂度 O(h)可能会随着一条腿长无限增长 理科生在高中学习生物时学过一个关键字...没有两个相邻的红色节点(红色节点不能有红色父节点或红色子节点,并没有说不能出现连续的黑色节点) 从节点(包括根)到其任何后代NULL节点(叶子结点下方挂的两个空节点,并且认为他们是黑色的)的每条路径都具有相同数量的黑色节点...10 和 uncle 30 更改为黑色 让 15 节点 grand parent 20 的颜色与 15 节点的颜色一样,变为红色 20 为根结点,将其改为黑色 ?

    50010

    工作不需要面试需要的红黑树知识

    学校中学过,只了解大概;工作中不怎么使用,但面试又是重点。每次需要查看红黑树内容时都很难以更生动形象的方式来理解其内容。...这是一个走路一米六,一米八的树 这是一个畸形的树,大风一挂很可能被折断的树 从程序的角度来说这个树不够平衡,查找次数或时间复杂度 O(h)可能会随着一条腿长无限增长 理科生在高中学习生物时学过一个关键字...,并没有说不能出现连续的黑色节点) 从节点(包括根)到其任何后代NULL节点(叶子结点下方挂的两个空节点,并且认为他们是黑色的)的每条路径都具有相同数量的黑色节点 瞬间懵逼?...) 3.2.3 右右 (和 3.2.1 镜像过来,恰好相反) 3.2.4 右左 (和 3.2.2 镜像过来,恰好相反) 3.2 如果 X 的 uncle (叔叔) 是黑色,我们要分四种情况处理 当出现...,最终插值为 10 节点的右孩子 15 和 10 节点都为红色,15 的 uncle 节点 30 也为红色 按照公式,将 15 的 parent 10 和 uncle 30 更改为黑色 让 15 节点

    32320
    领券