VB .NET - Exibindo os processos em execução
Para exibir uma lista de processos que esta rodando na sua máquina local basta usar a classe System.Diagnostics.Process para acessar a coleção de objetos que representam todos os processos que rodam atualmente. |
Como exemplo vamos criar um projeto no VB2005 do tipo Windows Application e no formulário padrão form1.vb incluir um controle ListBox e um controle Button. Vamos exibir no listbox os processos que estiverem rodando. Para isto inclua o seguinte código no evento Click do botão de comando:
Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button1.Click ' ----- Exibe todos os processos de mais alto nivel For Each processo As Process In Process.GetProcesses() If (processo.MainWindowTitle <> "") Then ListBox1.Items.Add("Programa: " & processo.MainWindowTitle) Else ListBox1.Items.Add("Processo: " & processo.ProcessName) End If Next processo End Sub |
Executando o projeto teremos a exibição dos processos conforme figura abaixo:
Geralmente os processos e programas listados são os mesmos que você vê no gerenciador de tarefas do Windows embora o formulário form1 provavelmente não irá aparecer.
A classe System.Diagnostics.Process inclui um membro estático chamado GetProcesses() que retorna a coleção de objetos processos cada um representando um processo que esta em execução.
Os objetos Process incluem muitas propriedades e métodos que permitem a você efetuar o tratamento para cada processo dependendo do nível de autorização de acesso concedido pelo administrado do sistema.
Um exemplo é o método Kill que força o encerramento do processo. Quando um processo com uma interface gráfica esta em execução o seu loop de mensagens esta no estado de espera. O loop executa cada momento que uma mensagem Windows é enviada para o processo pelo sistema operacional. Para forçar o encerramento do processo você pode usar o método Kill.
Este método é executado de forma assíncrona. Depois de chamar o método Kill chame o método WaitForExit para esperar o processo encerrar ou verifique a propriedade HasExited para determinar se o processo foi encerrado.
No exemplo abaixo tirado do site da Microsoft (http://msdn2.microsoft.com/en-gb/library/system.diagnostics.process.hasexited(VS.80).aspx) temos um exemplo que inicia uma instância do Bloco de Notas. O processo retorna a memória física usada do processo associado a cada 2 segundos para um intervalo máximo de 10 segundos. O exemplo detecta se o processo encerra antes que os 10 segundos tenham passado. O exemplo fecha o processo se ele estiver rodando após 10 segundos.
Crie uma aplicação no VB 2005 do tipo Windows Application (console seria melhor) e no formulário principal inclua uma classe no menu Project -> Add class com o nome de processo.vb. A seguir inclua o seguinte código na classe:
Imports SystemImports System.DiagnosticsImports System.Threading
Class testeProcesso Public Shared Sub Main() Try Dim processo As Process processo = Process.Start( "Notepad.exe")' Exibe a memoria usadao 5 vezes em um intervalo de 2 segundos Dim i As Integer For i = 0 To 4 If Not processo.HasExited Then ' Descarta a informação armazenada sobre o processo processo.Refresh() ' Imprime o rsultado na caixa de texto do form1.vb Form1.TextBox1.Text += "Memória fisica usada: " + myProcess.WorkingSet64.ToString() + vbCrLf' aguarda 2 segundos Thread.Sleep(2000) Else Exit For End If Next i ' fecha o processo enviando uma mensagem para janela principal processo.CloseMainWindow() ' libera os recursos usados processo.Close() Catch e As Exceptionmsgbox( "Ocorreu a seguinte exceção: " & e.Message End Try End Sub 'Main End Class 'testeProcessoEnd Namespace 'exemploProcesso
|
no formulário padrão form1.vb inclua uma caixa de texto e um botão de comando . No evento Click do botão de comando inclua o seguinte código:
Private
Sub Button1_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles
Button1.Click exemploProcesso.testeProcesso.Main() End Sub |
Você pode se divertir com os demais métodos e propriedades da classe Process.
Até o próximo artigo VB.NET.
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Xamarin Android - Usando o serviço de Alarme - Macoratti.net