如何在win32com上退出Outlook?

时间:2019-01-29 15:41:18

标签: python outlook com win32com

我有一个检查Outlook文件夹的脚本。给您带来的不便是我的Outlook可能已经打开,否则,脚本将为我在后台打开Outlook。我想简化它,以便如果我的Outlook已经打开,请保留它。如果是由脚本分派的,请随后退出Outlook。

所以我的脚本是这样的:

from win32com.client import Dispatch, GetActiveObject


class Outlook:
    def __init__(self):
        self.app_str = "Outlook.Application"
        try: 
            self.app = GetActiveObject(self.app_str)
            self.dispatched = False
        except:   # I know I should catch the specific error, but let's neglect it for this MCVE
            self.app = Dispatch(self.app_str)
            self.dispatched = True

分派差异起作用。我环顾四周,找到了一些答案:

COM: excelApplication.Application.Quit() preserves the process

Can't close Excel completely using win32com on Python

并尝试了这些退出条件,但它们不能正确退出Outlook:

# attempt 1
def quit(self):
    print(self.dispatched, self.app)
    if self.dispatched and not self.app is None:
        print('quit!')
        self.app.Application.Quit()
        # I've also tried self.app.Quit()

# attempt 2
import pythoncom

def __init__(self):
    ...
    except:
        pythoncom.CoInitialize()
        self.app = Dispatch(self.app_str)
        self.dispatched = True

def quit(self):
    print(self.dispatched, self.app)
    if self.dispatched and not self.app is None:
        print('quit!')
        self.app.Application.Quit()
        pythoncom.CoUninitialize()

根据我所链接的问题,该方法似乎适用于Excel。 Outlook是否有其他与众不同之处,可使其在后台保持打开状态?我知道因为print('quit')而满足了条件,并且没有遇到任何错误。

我也看到了这一点:Check with Python if Outlook is already open, if not open it,但是我不想导入另一个模块只是为了关闭Outlook。我想知道win32com中是否有一个固有函数可以正确退出Outlook,因为它没有似乎很尴尬。

0 个答案:

没有答案