Torna al Thread

Public Sub Processo_Elaborazione() Dim datExcelApplicazione As Object Dim intIndiceProcesso as Int32 intIndiceProcesso = mdlMain.Crea_Oggetto_Excel_con_Recupero_ID_Processo(datExcelApplicazione) [...] Chiudi_Processo(intIndiceProcesso,"EXCEL") End Sub ' Crea l'oggetto excel.application e restituisce l'indice del processo assegnato Public Function Crea_Oggetto_Excel_con_Recupero_ID_Processo(ByRef Oggetto_Excel As Object) As Int32 Dim intPreProcessi() As Int32 Dim proProcessi() As Process Dim proAttuale As Object Dim intConta As Int32 Dim intIndice As Int32 Try ' Recupera tutti i processi Excel avviati proProcessi = System.Diagnostics.Process.GetProcessesByName("EXCEL") ' Passsa in rassegna i processi rielvati For Each proAttuale In proProcessi ' Incrementa il vettore degli indici dei processi If intPreProcessi Is Nothing Then ReDim intPreProcessi(0) Else ReDim Preserve intPreProcessi(UBound(intPreProcessi) + 1) End If ' Memorizza l'indice del processo intPreProcessi(UBound(intPreProcessi)) = proAttuale.Id Next ' Crea l'oggetto Excel Oggetto_Excel = CreateObject("Excel.Application") ' Aggiorna l'elenco dei processi Excel avviati proProcessi = System.Diagnostics.Process.GetProcessesByName("EXCEL") ' Inizializza la variabile/Flag indice intIndice = -1 ' Passa in rassegna i processi rilevati For Each proAttuale In proProcessi ' Se la vartiabile indice è diversa da 0 o da 1 continua il ciclo If intIndice <> 0 And intIndice <> 1 Then ' Imposta la variabile a 1 intIndice = 1 ' Se il processo attuale è stao rilevato prima della creazione del processo ' Excel, imposta la variabile a 0 per saltare la memorizzazione dell'indice If Not intPreProcessi Is Nothing Then For intConta = 0 To UBound(intPreProcessi) If intPreProcessi(intConta) = proAttuale.Id Then intIndice = 0 Next End If ' Se l'indice è rimato a 0, vuol dire che non è stato trovato nell'elenco e che ' perciò è il nostro processo e viene memorizzato l'indice If intIndice = 1 Then intIndice = proAttuale.Id End If End If Next ' Restituisce l'indice rilevato. Se l'indice è rimasto a 1, vuol dire che ci sono stati problemi ' nella creazione del processo, pertanto restituisce nothing If intIndice = 1 Then Return Nothing Else Return intIndice End If Catch exc As Exception meErrori.RegistrazioneErrore(Err, exc, True) Return Nothing End Try End Function ' Chiude un oggetto in base al suo indice Public Sub Chiudi_Processo(ByVal Indice_Processo As Int32, _ Optional ByVal Nome_Processi_Da_Visionare As String = Nothing) Dim intPreProcessi() As Int32 Dim proProcessi() As Process Dim proAttuale As Object Dim intConta As Int32 Dim intIndice As Int32 Try ' Recupera tutti i processi If Nome_Processi_Da_Visionare Is Nothing Then proProcessi = System.Diagnostics.Process.GetProcesses Else proProcessi = System.Diagnostics.Process.GetProcessesByName(Nome_Processi_Da_Visionare) End If ' Passsa in rassegna i processi rielvati For Each proAttuale In proProcessi ' Se l'indice del processo corrisponde all'indice passato come parametro, chiude il processo If proAttuale.id = Indice_Processo Then proAttuale.Kill() Exit For End If Next Catch exc As Exception meErrori.RegistrazioneErrore(Err, exc, True) End Try End Sub
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5