Demonstra Passo a passo: Gerenciamento de processos do Windows
Os procedimentos neste tópico orientá as etapas envolvidas na criação de um processo de responder quando um processo é interrompido e interromper processos.A primeira seção, você irá criar um aplicativos do Windows com Button os controles para iniciar e interromper um processo de bloco de notas. Você irá iniciar várias instâncias do bloco de notas individualmente e, em seguida, interrompa-sistema autônomo sistema autônomo um agrupar.A segunda seção, você criará um aplicativo de console que enumera os processos em execução no seu computador.
Para obter mais informações sobre como usar o Process componente para interagir com processos do sistema, consulte Introdução ao monitoramento e gerenciamento de processos do Windows.
Observação: |
---|
Caixas de diálogo e comandos de menu que você vê podem diferir t Mangueira descritas na Ajuda dependendo das suas configurações ativas ou edição.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio. |
Para criar seu aplicativo
From the New Project dialog box, create a Visual Basic, Visual C#, or Visual J# Windows Application.
Com o Form1 Designer em aberto, clicar no Windows Forms guia o Caixa de ferramentas e depois adicionar dois botões ao formulário.
No Propriedades janela, altere as seguintes propriedades:
Controle
Propriedade
Valor
Button1
Nome
ButtonStart
Texto
Iniciar processo
Button2
Nome
ButtonStop
Texto
Parar processo
clicar no Componente guia o Caixa de ferramentase, em seguida, arrastar uma instância do Process componente para a superfície de designer.
Nome do componente de myProcess.
Para iniciar o processo de Notepad.exe
No Propriedades janela de a Process ocorrência de componente, expandir o StartInfo propriedade e o conjunto a FileName propriedade para Notepad.exe.
clicar duas vezes o Iniciar botão acesso Editor de código e, em seguida, adicione o seguinte código à ButtonStart_Click() evento:
myProcess.Start
myProcess.Start();
Salvar todos os arquivos, criar e executar o aplicativo.
clicar no Iniciar processo botão algumas vezes.Você verá instâncias separadas do bloco de notas para cada clicar.
Observação de segurança: Se você estiver executando em um contexto parcialmente confiável, o processo pode lançar uma SecurityException exceção devido a privilégios insuficientes. Para obter mais informações, consulte Noções Básicas sobre Segurança de Accesso a Código.
fechar os aplicativos individuais do bloco de notas.
fechar o Form1 aplicativo.
Para fechar todas as instâncias corrente do processo Notepad.exe
acesso o Code Editor para Form1.
De Design exibir, clicar duas vezes o Parar botão para acessar o ButtonStop_Click() procedimento.
Adicione o seguinte código para fechar as instâncias corrente do bloco de notas.
Private Sub ButtonStop_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles ButtonStop.Click Dim myProcesses() As Process Dim instance As Process myProcesses = Process.GetProcessesByName("Notepad") For Each instance In myProcesses instance.CloseMainWindow() instance.Close() Next End Sub
private void ButtonStop_Click(object sender, System.EventArgs e) { System.Diagnostics.Process[] myProcesses; myProcesses = System.Diagnostics.Process.GetProcessesByName("Notepad"); foreach (System.Diagnostics.Process instance in myProcesses) { instance.CloseMainWindow(); instance.Close(); } }
Salvar todos os arquivos e, em seguida, compilação e executar o aplicativo.
Iniciar várias instâncias do bloco de notas clicando o Iniciar processo botão.
clicar no Parar processo botão para fechar imediatamente todas as instâncias em execução do bloco de notas.
fechar o Form1 aplicativo.
No próximo procedimento, você irá congelar seu código até que o processo seja concluído.
Para configurar o componente de aguardar o processo de bloco de notas concluir a execução
acesso o Code Editor para Form1.
Modificar o código, adicionando uma linha de código para fazer uma pausar antes de fechar cada janela.
Private Sub ButtonStop_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles ButtonStop.Click Dim myProcesses() As Process Dim instance As Process myProcesses = Process.GetProcessesByName("Notepad") For Each instance In myProcesses instance.CloseMainWindow() instance.WaitForExit(3000) instance.Close() Next End Sub
private void ButtonStop_Click(object sender, System.EventArgs e) { System.Diagnostics.Process[] myProcesses; myProcesses = System.Diagnostics.Process.GetProcessesByName("Notepad"); foreach (System.Diagnostics.Process instance in myProcesses) { instance.CloseMainWindow(); instance.WaitForExit(3000); instance.Close(); } }
Salvar todos os arquivos, criar e executar o aplicativo.
Iniciar várias instâncias do bloco de notas clicando o Iniciar processos botão.
Click the Stop Processesbutton to close the processes as before.
Você perceberá que agora o aplicativo aguarda 3 segundos para cada processo parar antes de fechar a próxima instância do processo.
fechar o Form1 aplicativo.
Nesta parte da explicação passo a passo, você criará um novo aplicativo console que irá recuperar e lista os processos no computador local.
Para enumerar os processos no computador
Criar um novo Aplicativo de consoleprojeto .
Abra o Editor de código e modifique o Main método para enumerar os processos no computador:
Sub Main() Dim processes() As Process Dim instance As Process processes = Process.GetProcesses For Each instance In processes Console.WriteLine(instance.ProcessName) Next System.Threading.Thread.Sleep(5000) End Sub
static void Main() { System.Diagnostics.Process[] processes; processes = System.Diagnostics.Process.GetProcesses(); foreach (System.Diagnostics.Process instance in processes) { Console.WriteLine(instance.ProcessName); } System.Threading.Thread.Sleep(5000); }
Salvar todos os arquivos e, em seguida, compilação e executar o aplicativo.
O aplicativo irá em em aberto uma janela de console que contém uma lista de todos os processos em execução no momento no seu computador. De chamadaSleep Pausa o console por 5 segundos antes de fechá-lo.
Observação: Você pode receber exceções desses dois procedimentos se você chamar GetProcesses ou GetProcessesByName e um dos processos retornados termina antes de fazer a próxima telefonar. Nesse caso, você receberá uma exceção informando que o processo não existe.