Мне нужно, чтобы пара потоков работала в Outlook (очень длинное объяснение, почему ...).Например, 1-й поток будет удалять сообщения в одной папке, другой поток будет выполнять фильтрацию в другом месте.
Я понимаю, что мне нужно подключиться к Outlook через COM и, в частности, через win32client и pythoncom.Тем не менее, я не могу показаться, что маршал темы правильно.У меня есть базовая настройка:
import win32com.client
import pythoncom
olApp = win32com.client.Dispatch('Outlook.Application')
myStream = pythoncom.CreateStreamOnHGlobal()
marshalledOlApp = pythoncom.CoMarshalInterface(
myStream,
pythoncom.IID_IDispatch,
olApp,
pythoncom.MSHCTX_INPROC,
pythoncom.MSHLFLAGS_NORMAL
)
def cleanOutlook(marshalledOlApp):
print 'How can I make outlook COM object be available here?'
olApp = win32com.client.Dispatch(
pythoncom.CoGetInterfaceAndReleaseStream(
marshalledOlApp,
pythoncom.IID_IDispatch))
threads = [threading.Thread(target=cleanOutlook, args=(marshalledOlApp,)) for _ in range(2)]
_ = [thread.start() for thread in threads]
_ = [thread.join() for thread in threads]
Когда я выполняю .CoMarshalInterface()
, я получаю сообщение об ошибке
ValueError: argument is not a COM object (got type=instance)
Я просматривал API и гуглилмоя проблема, но не может найти решение.Кто-нибудь знает, как сделать так, чтобы многие темы подключались к Outlook?