Skip to main content
 首页 » 编程设计

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

2025年05月04日23unruledboy

我一直在使用 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。

为什么会失败?

请您参考如下方法:

尝试使用 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') 

com类型:http://sourceforge.net/projects/comtypes/