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 - 快速更改桌面背景的主要内容,如果未能解决你的问题,请参考以下文章