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...
''Zugang zur API ''user32''
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Integer, ByRef lpdwProcessId As IntPtr) As IntPtr
''Beenden eines speziellen Excel Prozesses, anhand seiner Id
Private Shared Sub killExcelInstanceById(ByRef xlsApp As Excel.Application)
Dim processId As IntPtr
''API Funktion, out val: processId
GetWindowThreadProcessId(xlsApp.Hwnd,processId)
''Prozess erstellen
Dim excelProcess As Process = Process.GetProcessById(processId.ToInt32())
Debug.WriteLine(processId)
''die lang ersehnte Erlösung, für den speziellen Excel Process der XlsApp :)
excelProcess.Kill()
End Sub
2 Kommentare zum Snippet