Запретить выход из Excel

Мне не хватает события Excel.Application.Quit или Excel.Application.BeforeQuit . Кто-нибудь знает обходной путь для имитации этих событий?

Я получаю доступ к Excel из приложения C # WinForms через COM Interop. Учитывая объект Excel.Application , как я могу:

  1. Предпочтительно предотвратить выход из Excel?
  2. Если это невозможно, как я могу хотя бы заметить , когда Excel работает выйти?

Обратите внимание: Поскольку у меня есть ссылка COM на Excel.Application , , процесс Excel не выходит из , когда Excel "выйти" пользователем. Хотя это звучит противоречиво, но так оно и есть. Под «выходом» я подразумеваю, что пользователь нажимает «Выход» или «крестик» в правом верхнем углу окна. Окно закрывается, файлы выгружаются, надстройки выгружаются и все, что делает Excel, кроме того, о чем я понятия не имею. Но я все еще могу использовать объект Application , чтобы «оживить» процесс и снова сделать Excel видимым, хотя надстройки тогда отсутствуют, и я не уверен, что еще находится в неопределенном состоянии.

Чтобы избавиться от этой проблемы, я хотел бы либо отменить выход в самом начале (подумайте о BeforeQuit Cancel = true , если он существует), либо, по крайней мере, получить уведомление, когда Excel завершается, поэтому я могу освободить COM-объекты и заставить процесс действительно завершиться, и в следующий раз, когда мне снова понадобится Excel, я буду знать, что мне нужно сначала запустить его.

К сожалению, это порочный круг: Пока работает Excel, мне нужны COM-объекты . Поэтому я не могу избавиться от них до Excel. С другой стороны, пока существуют COM-объекты, процесс не завершается, даже если Excel делает вид, что закрывается, поэтому я не могу дождаться события выхода из процесса или чего-то подобного.

У меня неприятное ощущение, что я « собираюсь биться головой о кирпичную стену ...

11
задан chiccodoro 6 April 2011 в 14:33
поделиться