2013-01-02 289 views
5

我在Windows 7上,并且安装了Windows Live。 现在,当我尝试下面的代码win32com.client.Dispatch(“Outlook.Application”)error pywintypes.com_error:(-2147221005,'Invalid class string',None,None)

import win32com.client 
win32com.client.Dispatch("Outlook.Application") 

我收到以下错误运行

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 95, in 
Dispatch 
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,c 

    lsctx) 
     File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 108, in 
    _GetGoodDispatchAndUserName 
     return (_GetGoodDispatch(IDispatch, clsctx), userName) 
     File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 85, in _ 
    GetGoodDispatch 
     IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.II 
    D_IDispatch) 
    pywintypes.com_error: (-2147221005, 'Invalid class string', None, None) 

我有一个安装了Windows XP和Outlook另一台机器。 我跑了相同的代码,我得到了同样的错误。

还有一个问题。 如何在Windows 7上获得Windows Live的com?

任何意见和建议,将不胜感激。

+0

你是否试图做'从win32com.client import Dispatch Something = Dispatch(“Outlook.Application”)'那么你是否也尝试分配它? – Yann

回答

2

这表示Outlook未安装。 “windows live”或“outlook.com”不会帮助你。

0

我有类似的错误。您是否尝试从win32com的文件夹运行makepy.py为您使用的不同COMobject创建条目?基本上,win32com只是将所有与您交互的应用程序视为默认COMobjects,直到让您了解计算机上安装的程序为止。你必须运行makepy.py来为每个你想用它控制的程序。

当我运行它后,我获得了对Outlook的更多控制权。它打开了我正在纠正的其他错误。

另外,如果你把你的comobject(comboject = win32com.client.Dispatch( “Outlook.Application”)),并期待在comboject._prop_map_get_.keys()你会看到所有的东西,你可以用于该程序。