venerdì 20 gennaio 2017

.net eliminare il processo Excel dopo metodo quit VB.Net

Utilizzo il pacchetto Microsoft Office, in particolare il programma Excel, da .Net referenziando la libreria, dopo il metodo quit può capitare che nei processi è ancora presente il riferimento.
L'esempio qui di seguito in VB.Net, ottiene tramite API l'id del processo aperto dal nostro programma (possiamo avere più processi aperti) e tramite il metodo Kill della classe process chiudere tale processo.

Utilizzare lo spazio dei nomi seguenti:
Imports System.Runtime.InteropServices

All'interno della classe di form o pagina web, scrivere la dichiarazione di api per ottenere ID del processo.
Qui di seguito tale dichiarazione.
Private Declare Auto Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As IntPtr, _
              ByRef lpdwProcessId As Integer) As Integer

Nella funzione in cui viene aperto il file "Excel" scrivere delle variabili per ottenere l'identificativo e tramite process utilizzare il metodo kill per forzare la chiusura qui di seguito tali dichiarazioni.

Dim hWnd As Integer = 0
Dim IdProcess As Integer = 0

'ID dell'istanza di Excel.Application

hWnd = xlApp.Hwnd

 GetWindowThreadProcessId(hWnd, IdProcess )


'Dopo il quit  elimina il processo

 xlApp.Quit()
 xlApp = Nothing

 Dim ProcExcels() As Process = Process.GetProcessesByName("EXCEL")

                For Each Processo As Process In ProcExcels

                    If Processo.Id = IdProcess Then
                        Processo.Kill()
                        Exit For
                    End If
           
                Next





Nessun commento: