Limbajul de programare flexibil și puternic Visual Basic. NET, fiind unul dintre instrumentele special create pentru dezvoltarea aplicațiilor pentru platforma Microsoft. NET, vă permite să utilizați pe deplin toate capacitățile sale. În special, componentele spațiului de nume System. Diagnostics vă permit să interacționați cu procese, jurnale de evenimente și contoare de performanță. De exemplu, puteți închide un program din Visual Basic utilizând clasa Proces.
Necesar
Microsoft Visual Studio
Instrucțiuni
Pasul 1
Importați System, System. Diagnostics și System. Threading spații de nume. Adăugați următoarele linii de cod la începutul modulului:
Sistemul de importuri
Sistemul de importuri. Diagnostic
Sistemul de importuri
Acest lucru este doar pentru comoditatea utilizării componentelor asociate cu aceste spații de nume.
Pasul 2
Obțineți datele procesului pentru a fi închise. Utilizați obiectul de clasă System. Diagnostics. Process. Declarați o variabilă a acestei clase:
Dim oProc Ca proces
Apoi utilizați o metodă pentru a găsi procesul necesar.
Pasul 3
Dacă programul, care va trebui închis în viitor, este lansat de aplicația în curs de dezvoltare, atunci pur și simplu salvați obiectul returnat de metoda Start la pornire:
oProc = Process. Start ("app.exe")
Pasul 4
Dacă trebuie să închideți un proces cu un identificator cunoscut, utilizați metoda statică GetProcessById din clasa Proces pentru a obține obiectul corespunzător:
oProc = Process. GetProcessById (nID)
Unde nID este identificatorul numeric al procesului.
Pasul 5
Dacă sunt cunoscute doar unele dintre caracteristicile procesului țintă, căutați-l. Obțineți lista proceselor care rulează pe mașina locală ca o serie de obiecte din clasa Proces. Utilizați metodele GetProcesses (returnează toate procesele) sau GetProcessesByName (numai procesele cu numele dat) metode:
Dim aoAllProcesses As Process () = Process. GetProcesses ()
Dim aoProcsByName As Process () = Process. GetProcessesByName ("app.exe")
Listează obiectele matrice folosind o buclă:
Dim oProc Ca proces
Pentru fiecare oProc în aoAllProcesses
'acțiuni pe oProc
Următorul
Buclați prin proprietățile MainModule, MainWindowTitle, ProcessName etc. pentru a găsi obiectul dorit.
Pasul 6
Încercați să terminați programul trimițând un mesaj de închidere în fereastra principală. Apelați metoda CloseMainWindow a obiectului corespunzător procesului țintă. Dacă este necesar, așteptați finalizarea aplicației apelând WaitForExit, de exemplu:
oProc. CloseMainWindow ()
oProc. WaitForExit ()
Această metodă nu garantează încheierea programului, deoarece mesajul de închidere a ferestrei este deseori procesat și poate fi ignorat.
Pasul 7
Așteptați o perioadă scurtă de timp după ce ați sunat la CloseMainWindow pentru a vă asigura că programul se termină. Utilizați metoda Sleep din clasa Thread. Apoi verificați starea procesului examinând proprietatea HasExited și, dacă nu a terminat, apelați metoda Kill:
Thread. Sleep (6000)
oProc. Refresh ()
Dacă nu oProc. HasExited Atunci
oProc. Kill ()
End If
Dacă doriți, puteți interoga starea procesului într-o buclă, emițând solicitări periodice către utilizator pentru a termina aplicația fără a salva date. Și numai dacă sunteți de acord să sunați Kill.
Pasul 8
Eliberați resursele sistemului după terminarea programului folosind metoda Close:
oProc. Close ()
Pasul 9
Pentru a evita erori neașteptate în timpul execuției aplicației, plasați întregul algoritm de închidere a programului într-un bloc Try-Catch-End Try. Implementați gestionarea completă a excepțiilor cu mesaje de diagnosticare, dacă este necesar.