Changing default menu item behavior

G

Guest

I am doing Excel Automation and I notice that when I close the Excel window
launched from my main form, EXCEL.EXE still remains in my Task Manager. I
have a cleanup routine in my main form which kills the Excel process when my
main form is closed. But, I would like the ability to detect when the user is
closing the Excel window without closing the main form and still be able to
run the cleanup function. Is there a way to detect such window closing event?

If not, I can disable the close button for the Excel window, but users would
still be able to use the File>Exit menu item to close. In that case, I would
like to change the behavior of the Exit menu item so that I can run my clean
up function when File>Exit is clicked. Is it possible to do so?

I am using C#, but VBA sample code would be helpful too.

Thank you so much.
 
G

Guest

Tom,

Thanks for the prompt reply, but I think you misunderstood my question.

My cleanup function correctly clears all my excel references and calls the
Quit() function...so whenever the cleanup function gets called, everything is
fine. My problem is that when a user manually clicks the close button on an
excel window, I am not being able to detect that close event, and thus my
cleanup function does not even get called.

Does that make sense? Below is my cleanup function which works correctly.

private void cleanUpExcel()
{
if (excelApplication != null)
{
try
{
excelApplication.DisplayAlerts = false;
foreach (Excel.Workbook workbook in excelApplication.Workbooks)
{
foreach (Excel.Worksheet worksheet in workbook.Worksheets)
{

System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
}
workbook.Close(false, Type.Missing, Type.Missing);

System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
}

System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication.Workbooks);
excelApplication.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication);
}
catch (Exception)
{
//Excel may have been closed via Windows Task Manager. Skip
the close.
}
}
}

Mehul.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top