2011-02-24 57 views
0

我一直在寻找如何使用IActiveDesktop来更改壁纸,并将各种来源的以下代码拼凑在一起。使用python和IActiveDesktop在Windows 7中设置壁纸

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, 'Unspecified error', None, None)

由于我不熟悉如何使用pythoncom我真的不知道我在做什么错在这里。

请注意,我不想使用SystemParametersInfo,因为它没有IActiveDesktop显然具有的淡入淡出效果。

回答

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 Method

+0

这似乎是工作,谢谢。然而,它没有我期待的过渡效果,我猜我必须忍受它。再次感谢! – qtwtetrt 2011-02-25 10:11:13