Python - 快速更改桌面背景

Posted

技术标签:

【中文标题】Python - 快速更改桌面背景【英文标题】:Python - Change Desktop Background Fast 【发布时间】:2013-06-11 15:15:19 【问题描述】:

我想知道是否有任何方法可以 - 在 Python 中 - 快速更改 Windows 7 机器的桌面背景。现在我正在使用:

ctypes.windll.user32.SystemParametersInfoA(20, 0, picture_path, 0)

虽然这可行,但速度不是很快。我想知道是否有某种方法可以让背景在不到一秒的时间内更新。

谢谢!

编辑 -- 值得注意的是,我的目标是在许多已知图像之间快速更改背景。

【问题讨论】:

【参考方案1】:

如果您知道如何使用 PowerShell,您可以尝试制作一个 PowerShell 函数来更改背景图像 (http://social.technet.microsoft.com/Forums/en-US/w7itproui/thread/72a9b4bf-071b-47cd-877d-0c0629a9eb90):

Function Set-WallPaper($Value)

 Set-ItemProperty -path 'HKCU:\Control Panel\Desktop\' -name wallpaper -value $value
 rundll32.exe user32.dll, UpdatePerUserSystemParameters

然后从python调用PowerShell函数:

import subprocess
subprocess.Popen([r'path/to/PowerShell/script.exe',
                         '-ExecutionPolicy',
                         'Unrestricted',
                         'path/to/background_image.png'], cwd=os.getcwd())

【讨论】:

我不需要使用Powershell,只需将后台更改作为不同的python文件引入并使用子进程在后台运行即可!谢谢! @user1019250:你用_winreg修改注册表了吗?当你退出时,你可以通过 ctypes 调用 SystemParametersInfoA 来更新用户配置文件中的最终图像,如果这很重要的话。 @PhilipMassey:我知道这个帖子有点尘土飞扬。但我正在尝试解决同样的问题,如果你记得的话,我真的很想知道你的实现。谢谢!【参考方案2】:

看看this。 他们只使用位图,但有一些函数可以转换图像,如 here 所示。

【讨论】:

我的问题是 SystemParametersInfoA 没有足够快地更新背景 - 如果我尝试每秒更新一次图片(即使图片已经保存并且我知道路径)有一个(远显着)滞后。我没有立即看出这是如何解决这个问题的。

以上是关于Python - 快速更改桌面背景的主要内容,如果未能解决你的问题,请参考以下文章

SLES - Gnome - 使用脚本更改桌面背景

WinUI 3.0 桌面:文本框的背景颜色在鼠标悬停时更改

Win10 更改桌面背景为图片不生效,马上自动变为纯色黑色

从代码设置桌面背景颜色

如何使用python设置桌面背景[重复]

组策略 设置桌面背景