2016-12-09 89 views
0

我試圖在同一時間用下面的代碼在2個獨立的收件箱來監聽OnItemAdd事件:win32com.client.DispatchWithEvents在同一個線程的多個對象

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()似乎並沒有工作。如果我重構代碼只聽一個收件箱的項目,它確實工作。

關於如何解決這個問題的任何想法?

回答

0

這是不可能的,我通過在一個線程中初始化所有DispatchWithEvents對象並使用pythoncom.PumpMessages()對其進行封頂來解決此問題。

這樣您就可以同時收聽多個收件箱中的ItemAdd等事件。

相關問題