Me falta un evento Excel.Application.Quit
o Excel.Application.BeforeQuit
. ¿Alguien sabe una solución para imitar estos eventos?Impedir que Excel salga de
Accedo a Excel desde una aplicación C# WinForms a través de COM Interop. Dado un objeto Excel.Application
, ¿cómo puedo:
- Prevenir de manera preferible que Excel se cierre?
- Si esto no es posible, ¿cómo puedo al menos observar cuando se cierra Excel?
Tenga en cuenta: Como no tengo una referencia COM a la Excel.Application
, el proceso de Excel no se salida cuando Excel es "dejar de fumar" por parte del usuario. Aunque esto suena contradictorio, así es como es. Al decir "dejar de fumar" me refiero a que el usuario pulsa "Salir" o "botón cruzado" en la esquina superior derecha de la ventana. La ventana se cierra, los archivos se descargan, los complementos se descargan y todo lo que Excel hace aparte de lo que no tengo ni idea. Pero aún puedo usar el objeto Application
para "revivir" el proceso y hacer que Excel vuelva a estar visible, aunque faltan los complementos, y no tengo certeza sobre qué más está en un estado indefinido.
para deshacerse de este problema, me gustaría que cancele el dejar de fumar en el primer momento (Piense en un BeforeQuit
Cancel = true
si existiera), o al menos ser notificado cuando se salga de Excel, para que pueda liberar el COM objetos y hacer que el proceso realmente salga, y la próxima vez que necesite Excel nuevamente, sabré que necesito iniciarlo primero.
Desafortunadamente es un círculo vicioso: Mientras se ejecuta Excel, necesito los objetos COM. Así que no puedo deshacerme de ellos antes de Excel se cierra. Por otro lado, siempre que los objetos COM estén allí, el proceso no se cierra incluso si Excel finge que se cierra, por lo que no puedo esperar a que se produzca un evento de salida de proceso o similar.
tengo la sensación desagradable que voy a golpear la cabeza contra una pared de ladrillos ...
Utilice una almohada, por favor, se sabe que los ladrillos son bastante duros :) – Marko
¿Es una opción para supervisar el evento Process.Exit y reiniciar Excel en un estado oculto si el usuario lo cierra manualmente? –
@Marko: ¿Quieres decir que no debería usar Excel en absoluto? :-)/:-( – chiccodoro