У меня есть скрипт, который проверяет мою папку 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 () сохраняет процесс
Не удается закрыть Excelполностью используя win32com на 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')
, и ошибок не обнаружено.
Я также видел это: Проверьте с помощью Python, если Outlook уже открыт, если он не открыт, , но я бы предпочел не импортировать другой модуль только для единственной цели закрытия Outlook.Я хочу знать, есть ли в win32com
врожденная функция, которая правильно закрывает Outlook, потому что кажется неудобным, что не .