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