Как выйти из Outlook на win32com? - PullRequest
0 голосов
/ 29 января 2019

У меня есть скрипт, который проверяет мою папку 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, потому что кажется неудобным, что не .

...