使用 C++ 和 Windows API 以编程方式更改壁纸

2023-11-25

我一直在尝试使用 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(使用前将#替换为@)

使用 C++ 和 Windows API 以编程方式更改壁纸 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 如何在多个别名上定义递归 Python 类型?

    我想要这个逻辑类型结构 from typing import List Dict Union ObjectType Dict str EntryType ListType List EntryType EntryType Union str
  • n 级可扩展列表视图

    如何显示n级可扩展列表视图android 我只得到3级可扩展的示例 参考这个 link 请指导或分享我在android中多级可扩展显示的合适示例 Thanks 根据这个example public View getChildView int
  • valgrind memcheck 是否支持检查 mmap

    我正在尝试 valgrind 来检测内存泄漏 它在堆泄漏 即从 malloc 或 new 分配内存 方面效果很好 但是 它支持检查 Linux 中的 mmap 泄漏吗 谢谢 张 不直接 很难调试 看看valgrind h VALGRIND
  • 更改为 Android SDK 26 后工具栏中的图标被压扁

    将我的应用程序从编译 定位 SDK v25 更改为 SDK v26 后 我的应用程序工具栏中的所有菜单图标现在都被压扁 压扁 拉伸 这是相关的布局代码
  • Postgres 会将 WHERE 子句下推到带有窗口函数(聚合)的 VIEW 中吗?

    的文档Pg的窗口函数说 窗口函数考虑的行是查询的 FROM 子句生成的 虚拟表 的行 并通过其 WHERE GROUP BY 和 HAVING 子句 如果有 进行过滤 例如 由于不满足 WHERE 条件而被删除的行不会被任何窗口函数看到 查
  • 如何在 Swift 中使用 MarqueeLabel?

    我想知道是否有一种方法可以启用文本的水平滚动 即选取框类型的文本 我用过这个库 https github com cbpowell MarqueeLabel并将 MarqueeLabel Swift 文件添加到我的应用程序中 但到目前为止
  • 无法在 Visual Studio 项目属性中选择 .NET Framework 4.6.1

    我使用以下网址安装了 NET Framework 4 6 1 http www microsoft com en us download details aspx id 49981 但是当我打开 Visual Studio 2015 项目时
  • 如何更改 MonthCalendar 控件中某些日期的颜色?

    如何更改 VB NET 中 MonthCalendar 控件中某些日期的颜色 例如 我需要将 1 月 21 日的颜色更改为红色 星期日更改为橙色等等 这不可能 没有内置的方法可以自定义各个日期或日期在屏幕上的显示方式MonthCalenda
  • 对于高度优化的矩阵乘法代码,MSVC 和 GCC 之间的性能差异

    我发现 Ivy Bridge 系统的 MSVC 在 Windows 上 和 GCC 在 Linux 上 编译的代码在性能上存在很大差异 该代码执行密集矩阵乘法 我在 GCC 中得到了 70 的峰值失败率 而在 MSVC 中只有 50 我想我
  • iOS Safari/Chrome 中的 Cookie 持久性

    当我关闭并重新打开 iOS Safari 和 Chrome 上的浏览器时 我的持久 cookie 将被删除 我使用的是 iOS 11 但也在 iOS10 9 上进行了测试 Cookie 在 Android 和桌面上正确保留 奇怪的是 它在
  • 使用 C# 的媒体基础

    媒体基金会是微软推荐的技术 它确实通过大量示例和解释来支持它 但全部都是本机代码 我发现了一个包装纸来源锻造让我能够将 Media Foundation 与 C 一起使用 但当我阅读人们谈论的内容时 并非所有事情都可以通过托管代码完成 我有
  • 网络参考和服务参考之间的区别?

    WCF 中的 Web 引用和服务引用有什么区别 WCF 中哪一个更可取 这里的低级答案是 Web 引用将创建一个客户端代理类 该类允许您的代码与通过 WSDL 描述的 Web 服务对话 并通过 SOAP 或 HTTP GET 进行通信 其他
  • Docker 更改活动容器上的已发布端口

    例如 我想更改活动容器上已发布的端口 docker run p 80 80 name nginx live nginx 然后稍后将其更改为另一个端口 例如 p 8080 80 Docker 没有一种机制可以在容器启动后更改其已发布的端口 当
  • 如何在 Objective-C 中将字符串中的英文数字转换为波斯语/阿拉伯语数字?

    我有一个英文字符串 可能有数字 也可能没有数字 但我希望这些数字作为波斯数字打印在屏幕上 例如如果NSString foo a string with numbers 1 2 3 那么输出应该是a string with numbers 我
  • 在加载数据之前显示 Ajax 加载器

    你好 朋友们 我想在数据加载之前显示 Ajax 加载器 特别是 div 但问题是数据是动态地出现在同一页面上 但我的脚本从另一个文件调用数据Script php请看下面我的代码 Script
  • GitHub for Mac 同步删除了我未提交的更改

    我在 Mac OS X 10 10 上使用 GitHub for Mac 版本 210 点击 同步 按钮删除了我未提交的更改 这种事应该时常发生吗 直到那时我才遇到过这个问题 尽管我主要使用 Windows 版的 Github 我认为如果我
  • PHP:Laravel 如何急切加载 find 方法

    我有一个模型Users其中有很多Pages 我想急切加载下面的方法 以便它只返回一个用户并立即加载所有页面 我该怎么做 user User find 1 pages user gt pages foreach pages as page v
  • “无法确定要运行哪个“make”命令。检查构建配置中的“make”步骤。” Qt创建者

    我安装了好几次 qt Creator 但它的花费从来没有像我现在的电脑那么高 首先 我使用了 Pendrive 上一直有的安装程序 Qt 5 8 的安装程序 告诉我无法下载某些存储库 我下载了同一安装程序的 5 9 版本 结果相同 在尝试安
  • 未找到 OpenCV 非托管 DLL asp.net

    我们正在构建一个 Web 应用程序 C NET 它使用 Emgu opencv 包装器形式的非托管库 我们强制构建为 32 位 x86 并且我们使用 Emgu 的 32 位版本 所有这些在本地构建上都运行良好 但是当发布到我们的网络服务器时
  • 使用 C++ 和 Windows API 以编程方式更改壁纸

    我一直在尝试使用 Qt 和 mingw32 编写一个应用程序来下载图像并将其设置为背景壁纸 我在网上阅读了几篇关于如何在 VB 和 C 中执行此操作的文章 以及在某种程度上如何在 C 中执行此操作 我目前正在致电SystemParamete