Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 103
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Excel Prozess schließen


Autor: Andy Nikolov
Sprache: VB.NET
Bewertung:
7.48 (5 votes)
Anzahl der Aufrufe: 10805
  
Kick it on dotnet-kicks.de  

Beschreibung:

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...


Abgelegt unter: Excel, interop, com, user32, Prozess schließen, Process close, close, com interop, interop.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
''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
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Radames schrieb am:  03.07.2009 00:21:18

perfekt ...
nachdem ich stundenlang getrickst habe, hab ich hier endlich eine lösung gefunden!
tausend dank!
Compufreak schrieb am:  03.07.2009 10:57:29

Hervorragend, endlich läuft meine Applikation etwas sauberer =)

Hier das Ganze in Csharp übersetzt, werde das nach Anfrage an den Autor evtl. auch hier einstellen :
[code language="C#"]//http://dotnet-snippets.de/dns/excel-prozess-schliessen-SID1153.aspx
[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();
}[/code]


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.