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: 1551 | Anzahl registrierter User: 1841 | Besucher online: 5
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 (Original von Andy Nikolov)


Autor: Compufreak
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 5954
  
Kick it on dotnet-kicks.de  

Beschreibung:

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


Abgelegt unter: Excel, Prozess beenden, Prozess schließen, kill, Microsoft.Office.Interop.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//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();
        }
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.)

RoSi schrieb am:  04.09.2010 19:02:14

Ich erlaube mir an dieser Stelle wegen der Einleitung nochmals den Hinweis, dass System.Runtime.InteropServices.Marshal.ReleaseComObject(XLSApp) einen Integer zurückliefert und solange der > 0 ist, muss diese Methode erneut für das zu lösende Objekt aufgerufen werden.


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