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

  1. From the New Project dialog box, create a Visual Basic, Visual C#, or Visual J# Windows Application.

  2. Com o Form1 Designer em aberto, clicar no Windows Forms guia o Caixa de ferramentas e depois adicionar dois botões ao formulário.

  3. No Propriedades janela, altere as seguintes propriedades:

    Controle

    Propriedade

    Valor

    Button1

    Nome

    ButtonStart

     

    Texto

    Iniciar processo

    Button2

    Nome

    ButtonStop

     

    Texto

    Parar processo

  4. clicar no Componente guia o Caixa de ferramentase, em seguida, arrastar uma instância do Process componente para a superfície de designer.

  5. Nome do componente de myProcess.

Para iniciar o processo de Notepad.exe

  1. No Propriedades janela de a Process ocorrência de componente, expandir o StartInfo propriedade e o conjunto a FileName propriedade para Notepad.exe.

  2. 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();
    
  3. Salvar todos os arquivos, criar e executar o aplicativo.

  4. 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.

  5. fechar os aplicativos individuais do bloco de notas.

  6. fechar o Form1 aplicativo.

Para fechar todas as instâncias corrente do processo Notepad.exe

  1. acesso o Code Editor para Form1.

  2. De Design exibir, clicar duas vezes o Parar botão para acessar o ButtonStop_Click() procedimento.

  3. 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();
       }
    }
    
  4. Salvar todos os arquivos e, em seguida, compilação e executar o aplicativo.

  5. Iniciar várias instâncias do bloco de notas clicando o Iniciar processo botão.

  6. clicar no Parar processo botão para fechar imediatamente todas as instâncias em execução do bloco de notas.

  7. 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

  1. acesso o Code Editor para Form1.

  2. 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();
       }
    }
    
  3. Salvar todos os arquivos, criar e executar o aplicativo.

  4. Iniciar várias instâncias do bloco de notas clicando o Iniciar processos botão.

  5. 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.

  6. 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

  1. Criar um novo Aplicativo de consoleprojeto .

  2. 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);
    }
    
  3. 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.

Consulte também

Tarefas

Como: Especificar processos

Como: Interromper processos

Outros recursos

Gerenciamento de processos