2011-02-24 79 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