【问题标题】:Python Windows WallpaperPython Windows 壁纸
【发布时间】:2013-10-30 18:32:58
【问题描述】:

我发现以下命令可以使用 Python 设置 Windows 桌面壁纸:

ctypes.windll.user32.SystemParametersInfoA(0x14, 0, 'C:\somepic.jpg', 0)

不幸的是,壁纸没有像我预期的那样改变。

我错过了什么吗?还是有其他方法可以(永久)更改 Windows 壁纸?

谢谢。

编辑:

找到了这个解决方案:

cmd = "REG ADD \"HKCU\Control Panel\Desktop\" /v Wallpaper /t REG_SZ /d D:\30-10-2013.jpg" #changes the Registry Key "Wallpaper"
subprocess.call(cmd) 
subprocess.call("rundll32.exe user32.dll, UpdatePerUserSystemParameters") #To update the Wallpaper

问题: 通过检查您看到的注册表条目,Python 将 encoding 弄乱了,因为它删除了 \30 并用一个小框(如 [] )替换它。

(通过在 Windows 运行对话框中插入这些命令来工作。)

如何解决这个编码问题?

【问题讨论】:

    标签: python windows python-3.x wallpaper


    【解决方案1】:

    首先让我说我无法测试是否可以设置墙纸,因为我自己不使用 Windows。

    如您所见,here\30 是一个转义序列,其八进制值解析为 \x18,因此不可打印取消字符。在字符串中使用时,请务必随时转义诸如 \\ 之类的反斜杠。

    对于问题的第一部分,尝试使用函数的 Unicode 版本,以便 ctypes 传递正确的数据类型,因为在 Python 3 中是字符串类型 changed

    ctypes.windll.user32.SystemParametersInfoW(0x14, 0, 'C:\\somepic.jpg', 0)
    

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 2011-07-10
      • 1970-01-01
      • 2019-10-01
      相关资源
      最近更新 更多