2017-01-12 1 views
1

Outlook 2013 폴더의 메시지에서 데이터를 추출하는 Python 스크립트를 작성하려고합니다. Outlook을 액세스 할 수 사방 설명 방법은 처음 실행하는 것입니다 : Outlook이 실행되지 않을 경우Python에서 실행중인 Outlook 인스턴스에 연결하는 방법

import win32com.client 
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 

이 잘 작동합니다.

try: 
    app = win32com.client.Dispatch('Outlook.Application') 
except: 
    app = win32com.client.GetActiveObject('Outlook.Application') 
: 하나 동시에 여러 인스턴스 실행을 지원하지 않는 다른 응용 프로그램에 대해보고 유사한 문제를 바탕으로

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Program Files\Python27\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch 
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx) 
    File "C:\Program Files\Python27\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName 
    return (_GetGoodDispatch(IDispatch, clsctx), userName) 
    File "C:\Program Files\Python27\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch 
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch) 
pywintypes.com_error: (-2146959355, 'Server execution failed', None, None) 

, 나는 그들의 솔루션을 적응 시도 : 그것이 경우에,이 오류가 발생합니다

그러나 이것도 작동하지 않습니다. 이제 GetActiveObject가 오류와 함께 실패합니다.

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    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) 

따라서 Outlook의 실행중인 인스턴스에 연결하는 올바른 방법은 무엇입니까?

답변

1

내 자신의 질문에 대답 :

근본 원인은 내가 관리자로 실행 명령 창에서 파이썬을 실행 한 것이 었습니다.
일반 사용자로 cmd.exe를 시작하면 오류없이 작동합니다.
GetActiveObject()는이 경우 더 의미있는 오류 메시지를 표시합니다.

사이드 노트 : 두 개의 대안을 돌리는 것은 빠르게 작동합니다

try: 
    outlook = win32com.client.GetActiveObject('Outlook.Application') 
except: 
    outlook = win32com.client.Dispatch('Outlook.Application') 
0

Outlook이 그렇게 상관없이 당신이 무엇을, 싱글입니다, 항상 실행중인 인스턴스에 연결합니다. 유일한 보안 문제는 다른 보안 컨텍스트에서 이미 실행중인 경우 COM 프로세스가 COM 개체를 마샬링하는 것을 거부한다는 것입니다.

관련 문제