Мне не хватает события Excel.Application.Quit
или Excel.Application.BeforeQuit
. Кто-нибудь знает обходное решение для имитации этих событий?
Я получаю доступ к Excel из приложения С# WinForms через COM Interop. Учитывая объект Excel.Application
, как я могу:
- Желательно, чтобы Excel отказался?
- Если это невозможно, как я могу хотя бы заметить, когда Excel закрывается?
Обратите внимание:. Поскольку у меня есть ссылка COM на Excel.Application
, , процесс Excel не выходит из, когда пользователь "выйдет" из Excel. Хотя это звучит противоречиво, так оно и есть. Под "quit" я подразумеваю, что пользователь нажимает "Quit" или "cross button" в верхнем правом углу окна. Окно закрывается, файлы разгружаются, надстройки выгружаются и все, что делает Excel, кроме того, о чем я не знаю. Но я все еще могу использовать объект Application
, чтобы "оживить" процесс и сделать Excel видимым снова, хотя надстройки отсутствуют, и я не уверен, что еще находится в состоянии undefined.
Чтобы избавиться от этой проблемы, я хотел бы либо отменить выход в самом начале (подумайте о BeforeQuit
Cancel = true
, если он существует), либо, по крайней мере, будет уведомлен о выходе Excel, поэтому я могу освободите COM-объекты и сделайте процесс действительно завершенным, и в следующий раз, когда мне понадобится Excel, я узнаю, что мне нужно сначала запустить его.
К сожалению, это порочный круг: Пока работает Excel, мне нужны COM-объекты. Поэтому я не могу избавиться от них, прежде чем Excel прекратит работу. С другой стороны, до тех пор, пока существуют COM-объекты, процесс не выходит, даже если Excel претендует на выход, поэтому я не могу дождаться события выхода процесса или подобного.
У меня есть неутешительное чувство, что я собираюсь bash голову против кирпичной стены...