win32com.client.DispatchWithEvents для нескольких объектов в одном потоке

Я пытаюсь прослушать событие OnItemAdd в двух отдельных почтовых ящиках одновременно с помощью следующего кода:

    class Handler_Class():
        def OnItemAdd(self, mail):
            #Check if the item is of the MailItem type
            if mail.Class==43:
                print(mail.Subject, " - ", mail.Parent.FolderPath)
    inboxes = ["inbox1", "inbox2"]
    for inbox in inboxes:
        items = win32com.client.DispatchEx("Outlook.Application").GetNamespace("MAPI").Folders[inbox].Folders["Inbox"].Items
        win32com.client.DispatchWithEvents(items, Handler_Class)
    print(datetime.now(),"Ready to pump")
    pythoncom.PumpMessages()

Pythoncom.PumpMessages(), похоже, не работает, хотя. если я рефакторинг кода, чтобы прослушивать только один входящие элементы, он работает.

Есть идеи, как это решить?

1 ответ

Решение

Это невозможно, и я решил это, инициализировав все мои объекты DispatchWithEvents в одном потоке и закрыв это с помощью pythoncom.PumpMessages().

Таким образом, вы можете прослушивать такие события, как ItemAdd в нескольких почтовых ящиках одновременно.

Другие вопросы по тегам