使用Python和IActiveDesktop设置Windows 7壁纸

0 投票
1 回答
996 浏览
提问于 2025-04-16 12:28

我一直在寻找如何使用 IActiveDesktop 来更改桌面壁纸的方法,并从不同的来源拼凑出了以下代码。

sys.coinit_flags = 0
pythoncom.CoInitialize()
iad = pythoncom.CoCreateInstance(shell.CLSID_ActiveDesktop, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IActiveDesktop)
iad.SetWallpaper(bmpPath)
iad.ApplyChanges(7)

但是我遇到了以下错误:

pywintypes.com_error: (-2147467259, '未指定的错误', None, None)

因为我对 pythoncom 还不太熟悉,所以我不知道自己哪里出错了。

请注意,我不想使用 SystemParametersInfo,因为它似乎没有 IActiveDesktop 的渐变效果。

1 个回答

0

我觉得你只是少了 SetWallPaper 这个函数的第二个参数,这个参数应该始终设置为0。这样做对我有效:

import pythoncom
from win32com.shell import shell, shellcon

imagePath = "c:\\temp\\bug.png"

iad = pythoncom.CoCreateInstance(shell.CLSID_ActiveDesktop, None,
          pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IActiveDesktop)
iad.SetWallpaper(imagePath, 0)
iad.ApplyChanges(shellcon.AD_APPLY_ALL)

参考资料:IActiveDesktop::ApplyChanges 方法

撰写回答