从 ctypes Windll 获取错误消息

2024-01-02

我正在尝试使用 Python 脚本来更改 Windows 7 计算机上的壁纸。如果重要的话,我会从 node-webkit 应用程序调用脚本。

缩短的脚本如下所示:

# ...
result = ctypes.windll.user32.SystemParametersInfoA(20, 0, path, 0)

通常,它会起作用,但有时,看似随机,却不起作用。有什么方法可以让我检索到比状态代码(0 或 1)更多的错误信息?

我一直在尝试使用 GetLastError ,有时在 ctypes 库中提到它,但无法提取任何错误信息。


ctypes 文档建议使用use_last_error=True捕捉GetLastError()以安全的方式。请注意,您需要在引发时检索错误代码WinError:

from ctypes import *

SPI_SETDESKWALLPAPER = 0x0014
SPIF_SENDCHANGE = 2
SPIF_UPDATEINIFILE = 1

def errcheck(result, func, args):
    if not result:
        raise WinError(get_last_error())

user32 = WinDLL('user32',use_last_error=True)
SystemParametersInfo = user32.SystemParametersInfoW
SystemParametersInfo.argtypes = [c_uint,c_uint,c_void_p,c_uint]
SystemParametersInfo.restype = c_int
SystemParametersInfo.errcheck = errcheck

SystemParametersInfo(SPI_SETDESKWALLPAPER,0,r'xxx',SPIF_UPDATEINIFILE | SPIF_SENDCHANGE)

Output:

Traceback (most recent call last):
  File "C:\test.py", line 17, in <module>
    SystemParametersInfo(SPI_SETDESKWALLPAPER,0,r'c:\xxx',SPIF_UPDATEINIFILE | SPIF_SENDCHANGE)
  File "C:\test.py", line 9, in errcheck
    raise WinError(get_last_error())
FileNotFoundError: [WinError 2] The system cannot find the file specified.

所有这些工作的替代方法是使用pywin32 http://sourceforge.net/projects/pywin32/files并打电话win32gui.SystemsParametersInfo.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 ctypes Windll 获取错误消息 的相关文章

  • 在python中将数据库表写入文件的最快方法

    我正在尝试从数据库中提取大量数据并将其写入 csv 文件 我正在尝试找出最快的方法来做到这一点 我发现在 fetchall 的结果上运行 writerows 比下面的代码慢 40 with open filename a as f writ
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • 按边距(“全部”)值列对 Pandas 数据透视表进行排序

    我试图根据 pandas 数据透视表中的行总和对最后一列 边距 aggrfunc 进行降序排序 我知道我在这里错过了一些简单的东西 但我无法弄清楚 数据框 数据透视表 WIDGETS DATE 2 1 16 2 2 16 2 3 16 Al
  • Mypy 无法从文字列表推断项目的类型

    我有一个变量x和一个文字列表 例如 0 1 2 我想转换x这些文字之一 如果x在列表中 我将其退回 否则我返回一个后备值 from typing import Literal Set Foo Literal 0 1 2 foos Set F
  • 从 Azure ML 实验中访问 Azure Blob 存储

    Azure ML 实验提供了通过以下方式读取 CSV 文件并将其写入 Azure Blob 存储的方法 Reader and Writer模块 但是 我需要将 JSON 文件写入 blob 存储 由于没有模块可以执行此操作 因此我尝试在Ex
  • Series.sort() 和 Series.order() 有什么区别?

    s pd Series nr randint 0 10 5 index nr randint 0 10 5 s Output 1 3 7 6 2 0 9 7 1 6 order 按值排序并返回一个新系列 s order Output 2 0
  • 如何通过 python 多处理利用所有核心

    我一直在摆弄Python的multiprocessing现在已经使用了一个多小时的功能 尝试使用并行化相当复杂的图形遍历函数multiprocessing Process and multiprocessing Manager import
  • 创建上下文后将 jar 文件添加到 pyspark

    我正在笔记本上使用 pyspark 并且不处理 SparkSession 的创建 我需要加载一个包含一些我想在处理 rdd 时使用的函数的 jar 您可以使用 jars 轻松完成此操作 但在我的特定情况下我无法做到这一点 有没有办法访问sp
  • Arcpy 模数在 Pycharm 中不显示

    如何将 Arcpy 集成到 Pycharm 中 我尝试通过导入模块但它没有显示 我确实知道该模块仅适用于 2 x python arcpy 在 PyPi Python 包索引 上不可用 因此无法通过 pip 安装 要使用 arcpy 您需要
  • Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

    我在 Windows 7 机器上使用 Python 2 7 Anaconda 安装进行数据分析和科学计算 当新的库发布时 例如新版本的 pandas patsy 等 您建议我如何测试新版本与现有代码的兼容性 是否可以在同一台机器上安装两个
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • 使用另一个数据帧在数据帧中创建子列

    我对 python 和 pandas 很陌生 在这里 我有一个以下数据框 did features offset word JAPE feature manual feature 0 200 0 aa 200 200 0 200 11 bf
  • 为什么 __dict__ 和 __weakref__ 类从未在 Python 中重新定义?

    类创建似乎从来没有re 定义 dict and weakref class属性 即 如果它们已经存在于超类的字典中 则它们不会添加到其子类的字典中 但始终re 定义 doc and module class属性 为什么 gt gt gt c
  • 如何指示 urwid 列表框的项目数多于当前显示的项目数?

    有没有办法向用户显示 urwid 列表框在显示部分上方 下方有其他项目 我正在考虑类似滚动条的东西 它可以显示条目的数量 或者列表框顶部 底部的单独栏 如果这个行为无法实现 有哪些方法可以实现这个通知 在我的研究过程中 我发现这个问题 ht
  • 使用 PIL 在 Tkinter 中显示动画 GIF

    我正在尝试制作一个程序来使用 Tkinter 显示动画 GIF 这是我最初使用的代码 from future import division Just because division doesn t work right in 2 7 4
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 为什么python+sqlite3特别慢?

    我尝试使用 Python 2 7 4 sqlite3 和 Firefox SQLite Manager 0 8 0 处理对同一数据库的相同请求 在小型数据库 8000 条记录 上 Python 和 Firefox 都运行得很快并且给出了相同
  • 如何从namedtuple实例列表创建pandas DataFrame(带有索引或多索引)?

    简单的例子 from collections import namedtuple import pandas Price namedtuple Price ticker date price a Price GE 2010 01 01 30
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型

随机推荐

  • Powershell:使用字符串匹配条件将单个文件拆分为多个文件

    我有一个包含 1GB 数据的文件 该数据实际上是数十个或数千个单独的迷你文件 我需要提取每个单独的文件并将它们放入自己单独的不同文件中 所以本质上 我需要从单个文件变成 30K 单独的文件 这是 我的文件 的示例 文件名 1 版本 1 32
  • CRUDRespository 中的更新或 SaveorUpdate,是否有任何可用选项

    我正在尝试使用 My Entity bean 执行 CRUD 操作 CRUDRepository提供标准方法find delete and save但没有可用的通用方法 例如saveOrUpdate Entity entity 进而调用Hi
  • 如何将json对象显示为html?

    我的 Json 对象是这样的 attributes Code SGL Total 19421340 27 DayPrice Date 2016 07 22 Rate 4900439 85 Date 2016 07 23 Rate 48451
  • 绕过 Google 电子表格中的循环引用

    我有一个谷歌文档电子表格 有两列 A 和 B B 的值只是 A 中不同格式的值 并且我在 B 列中有一个公式可以进行转换 有时我没有 A 格式的值 但有 B 格式的值 我想通过在 A 列中添加进行反向转换的公式来自动获取 A 列中 A 格式
  • 如何在 vue.js 构建上重命名 index.html?

    我想重命名index html产生于npm run build 我在 webpack 配置中找不到任何内容 我还创建了一个vue config js此处描述 https github com vuejs vue cli tree dev d
  • React Redux 工具包:类型错误:无法读取未定义的属性“值”

    在我的项目中 我为 2 个不同的状态场景实现了 React Redux 工具包 并且它们工作得很好 现在我需要为 Redux 实现第三个状态场景 因此我遵循与前 2 个状态场景相同的模式 灵感来自 https react redux js
  • 为什么我的 Django 表单没有引发任何错误?

    我有一个简单的表单 每当用户在表单上做错事时 我想在 Django 上引发验证错误 问题是我设置了表单验证 但是当提交表单时使用错误的值时 它会通过 我想知道为什么会发生这种情况以及如何避免这种情况 这是 html 形式
  • 如何检查浏览器是否支持flash?

    我有一个 Flash 横幅 如果客户端浏览器没有启用 Flash 我想用静态图像替换它 我想知道我是否可以用 php 做到这一点 或者是否有人知道一个好方法 Thanks 允许 您的 Flash 影片 降级
  • 使用 Flask-limiter 限制端点速率

    我知道并且爱flask limiter来自较旧的项目 现在我想用它在我的flask restplus为基础的项目 我的最终解决方案将使我能够在每个方法级别上进行速率限制 因此 post 方法的费率与 get 方法的费率不同 但如果我可以定义
  • 在 while_loop 的上下文中使用 TensorArray 来累加值

    下面是 Tensorflow RNN Cell 的实现 旨在模拟本文中 Alex Graves 的算法 ACT http arxiv org abs 1603 08983 http arxiv org abs 1603 08983 在通过
  • 生命周期:ViewBag、TempData、ViewData 和 Session [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 这些对于存储数据很有用 会话将在网络服务器设置的时间后销毁 Viewbag 和 ViewData 与视图一样工作 并在重定向时被销毁 临时数
  • 为什么带有引用程序集的 VS2012 项目无法自动定位 4.0

    在 Visual Studio 2012 C 控制台应用程序中 我将 NET Framework Target 从 4 5 降级到 4 0 安装了两个框架的 Win 7 Pro 然后我引用一个程序集 该程序集通过警告抱怨以下内容 The p
  • Scala 中的“副作用词法闭包”与函数

    In 他的回答的评论部分 https stackoverflow com questions 4262241 how to return a function in scala 4262932 comment4621217 4262932
  • 从powershell执行单向wcf服务操作

    我有一个计划任务 每小时执行一个 powershell 脚本 powershell 脚本必须调用单向 WCF 服务操作 本质上它只需要开始一项操作 我的问题是我该怎么做 我认为仅执行 url 实际上就会启动请求 但显然这是不正确的 这是我试
  • 对数组 C 进行部分排序

    我有一个如下所示的数组 int array 4 53 3 65 7 43 9 54 0 72 0 0 我只是想知道我可以使用什么方法对该数组进行部分排序 以将前三个最大的双精度数放在前面 我正在寻找最有效的方法来获取该数组中前三个最高的数字
  • 我可以在源服务器和 cloudflare 服务器之间使用 HTTP/2 吗?(Apache)

    我尝试这样做 但是当我绕过我的域 A 记录时 协议 h2 正在工作 浏览器和 apache 日志中一切正确 当我在域上打开 cloudflare 时 浏览器工作正常 我知道 CF 正在与客户端使用 HTTP2 协议 但我在 apache 日
  • 当多个线程循环运行时索引如何受到影响

    我试图编写一个运行 5 个线程并相应地打印其索引的程序 下面是代码 include
  • Github API:如何获取以给定语言编写的所有存储库

    我能够使用 JSON 格式的 v2 获取用给定语言标记的所有 github 存储库github API http developer github com v3 但是这个版本已被弃用 https github com blog 1160 g
  • PHP/MySQL 时间戳和时区

    如果我使用 MySQL 中的 NOW 函数获取当前时间戳 我可以通过 php 获取该字段并给出不同时区的时间吗 基本上将当前时区的当前时间转换为另一个时区 您可以使用DateTimeZone http www php net manual
  • 从 ctypes Windll 获取错误消息

    我正在尝试使用 Python 脚本来更改 Windows 7 计算机上的壁纸 如果重要的话 我会从 node webkit 应用程序调用脚本 缩短的脚本如下所示 result ctypes windll user32 SystemParam