2013-01-02 328 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()你會看到所有的東西,你可以用於該程序。