python:win32com.client.GetActiveObject(“iTunes.Application”)失败

时间:2013-12-29 17:33:39

标签: python itunes win32com

我一直用

启动itunes
try:
    itapp= win32com.client.Dispatch('iTunes.Application')
except:
    itapp= win32com.client.GetActiveObject('iTunes.Application')

今天,每当我运行它时,如果itunes已经运行,它将失败

Traceback (most recent call last):
  File "fix_m4a.py", line 63, in <module>
    change_itunes_path(s,d)
  File "fix_m4a.py", line 45, in change_itunes_path
    itapp = win32com.client.GetActiveObject('iTunes.Application')
  File "C:\program files\python27\lib\site-packages\win32com\client\__init__.py"
, line 79, in GetActiveObject
    dispatch = pythoncom.GetActiveObject(resultCLSID)
pywintypes.com_error: (-2147221021, 'Operation unavailable', None, None)

如果itunes没有运行,则工作正常

我最近唯一的变化是2.7.5到2.7.6。

为什么会失败?

1 个答案:

答案 0 :(得分:1)

尝试使用comtypes Python包 - 它更好地支持自定义COM对象。

而不是

try:
    itapp= win32com.client.Dispatch('iTunes.Application')
except:
    itapp= win32com.client.GetActiveObject('iTunes.Application')

试试这个:

from comtypes.client import CreateObject, GetActiveObject
try:
    itapp = CreateObject('iTunes.Application')
except:
    itapp = GetActiveObject('iTunes.Application')

comtypes:http://sourceforge.net/projects/comtypes/