我有一个检查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,因为它没有似乎很尴尬。