Il linguaggio di programmazione flessibile e potente Visual Basic. NET, essendo uno degli strumenti creati appositamente per lo sviluppo di applicazioni per la piattaforma Microsoft. NET, consente di utilizzare appieno tutte le sue capacità. In particolare, i componenti dello spazio dei nomi System. Diagnostics consentono di interagire con processi, registri eventi e contatori delle prestazioni. Ad esempio, è possibile chiudere un programma da Visual Basic utilizzando la classe Process.
Necessario
Microsoft Visual Studio
Istruzioni
Passo 1
Importare gli spazi dei nomi System, System. Diagnostics e System. Threading. Aggiungi le seguenti righe di codice all'inizio del modulo:
Sistema di importazione
Importa System. Diagnostics
Importa System. Threading
Questo è solo per la comodità di utilizzare i componenti associati a questi spazi dei nomi.
Passo 2
Ottieni i dati del processo da chiudere. Utilizzare l'oggetto classe System. Diagnostics. Process. Dichiara una variabile di questa classe:
Dim oProc As Process
Quindi utilizzare un metodo per trovare il processo richiesto.
Passaggio 3
Se il programma, che dovrà essere chiuso in futuro, viene avviato dall'applicazione in fase di sviluppo, è sufficiente salvare l'oggetto restituito dal metodo Start all'avvio:
oProc = Process. Start ("app.exe")
Passaggio 4
Se è necessario chiudere un processo con un identificatore noto, utilizzare il metodo statico GetProcessById della classe Process per ottenere l'oggetto corrispondente:
oProc = Process. GetProcessById (nID)
Dove nID è l'identificatore numerico del processo.
Passaggio 5
Se sono note solo alcune delle caratteristiche del processo di destinazione, cercarlo. Ottieni l'elenco dei processi in esecuzione sulla macchina locale come un array di oggetti della classe Process. Utilizzare i metodi GetProcesses (restituisce tutti i processi) o GetProcessesByName (solo i processi con il nome specificato):
Dim aoAllProcesses As Process () = Process. GetProcesses ()
Dim aoProcsByName As Process () = Process. GetProcessesByName ("app.exe")
Elenca gli oggetti dell'array usando un ciclo:
Dim oProc As Process
Per ogni oProc in aoAllProcesses
'azioni su oProc
Prossimo
Scorri le proprietà MainModule, MainWindowTitle, ProcessName, ecc. per trovare l'oggetto desiderato.
Passaggio 6
Prova a terminare il programma inviando un messaggio di chiusura alla sua finestra principale. Chiama il metodo CloseMainWindow dell'oggetto corrispondente al processo di destinazione. Se necessario, attendi il completamento dell'applicazione chiamando WaitForExit, ad esempio:
oProc. CloseMainWindow ()
oProc. WaitForExit ()
Questo metodo non garantisce la chiusura del programma, in quanto il messaggio di chiusura della finestra viene spesso elaborato e può essere ignorato.
Passaggio 7
Attendere un breve periodo di tempo dopo aver chiamato CloseMainWindow per assicurarsi che il programma venga terminato. Usa il metodo Sleep della classe Thread. Quindi controlla lo stato del processo esaminando la proprietà HasExited e, se non è terminato, chiama il metodo Kill:
Filo. Sonno (6000)
oProc. Aggiorna ()
Se non oProc. HasExited Then
oProc. Kill ()
Finisci se
Se lo si desidera, è possibile eseguire il polling dello stato del processo in un ciclo, inviando richieste periodiche all'utente di terminare l'applicazione senza salvare i dati. E solo se accetti di chiamare Kill.
Passaggio 8
Liberare risorse di sistema al termine del programma utilizzando il metodo Close:
oProc. Chiudi ()
Passaggio 9
Per evitare errori imprevisti durante l'esecuzione dell'applicazione, posizionare l'intero algoritmo di chiusura del programma in un blocco Try-Catch-End Try. Se necessario, implementare la gestione completa delle eccezioni con messaggi di diagnostica.