Das ist eine Übersetzung des Snippets "Excel Prozess schließen" (VB) von Andy Nikolov in C#. Mit Erlaubnis von Andy nun hier also meine Version.
Originalbeschreibung :
"An diesem Problem ist schon manch einer verzweifelt:
Man hat eine Excel Application geöffnet (VB.NET oder C-Sharp), nach dem Beenden jedoch bleibt im Task Manager der Prozess immernoch Aktiv.
Eigentlich sollte eine Excel Application mit XLSApp.Close oder XLSApp.Quit mit anschließendem
System.Runtime.InteropServices.Marshal.ReleaseComObject(XLSApp)
GC.Collect()
schließen. Tut Sie aber leider nicht.
Mit diesem Snippet wird ein für alle Mal der spezielle Excel Prozess beendet, OHNE alle anderen Excel Prozesse mit in den Abgrund zu reißen.
Sicherlich ist diese Funktion auch für andere Bereiche interessant..."
//http://dotnet-snippets.de/dns/excel-prozess-schliessen-SID1153.aspx
// use user32.dll
[System.Runtime.InteropServices.DllImport("user32.DLL")]
public static extern IntPtr GetWindowThreadProcessId(int hWnd, ref IntPtr lpdwProcessID);
/// <summary>
/// kills an Excel application
/// </summary>
/// <param name="myExcelApp">The application to kill</param>
public static void killExcelInstanceById(ref Microsoft.Office.Interop.Excel.Application myExcelApp)
{
IntPtr processID = new IntPtr() ;
//API Funktion, out val: processId
GetWindowThreadProcessId(myExcelApp.Hwnd, ref processID);
System.Diagnostics.Process myExcelProcess = System.Diagnostics.Process.GetProcessById(processID.ToInt32());
// kill it!
myExcelProcess.Kill();
}
1 Kommentare zum Snippet