A flexível e poderosa linguagem de programação Visual Basic. NET, sendo uma das ferramentas especialmente criadas para o desenvolvimento de aplicações para a plataforma Microsoft. NET, permite o aproveitamento integral de todas as suas capacidades. Em particular, os componentes do namespace System. Diagnostics permitem que você interaja com processos, logs de eventos e contadores de desempenho. Por exemplo, você pode fechar um programa do Visual Basic usando a classe Process.
Necessário
Microsoft Visual Studio
Instruções
Passo 1
Importe os namespaces System, System. Diagnostics e System. Threading. Adicione as seguintes linhas de código ao início do módulo:
Sistema de Importação
Importa System. Diagnostics
Imports System. Threading
Isso é apenas para a conveniência de usar os componentes associados a esses namespaces.
Passo 2
Pegue os dados do processo a ser fechado. Use o objeto de classe System. Diagnostics. Process. Declare uma variável desta classe:
Dim oProc As Process
Em seguida, use algum método para encontrar o processo necessário.
etapa 3
Se o programa, que precisará ser fechado no futuro, for iniciado pelo aplicativo em desenvolvimento, basta salvar o objeto retornado pelo método Start na inicialização:
oProc = Process. Start ("app.exe")
Passo 4
Se você precisar fechar um processo com um identificador conhecido, use o método estático GetProcessById da classe Process para obter o objeto correspondente:
oProc = Process. GetProcessById (nID)
Onde nID é o identificador numérico do processo.
Etapa 5
Se apenas algumas das características do processo de destino são conhecidas, pesquise-o. Obtenha a lista de processos em execução na máquina local como uma matriz de objetos da classe Process. Use os métodos GetProcesses (retorna todos os processos) ou GetProcessesByName (apenas processos com o nome fornecido):
Dim aoAllProcesses As Process () = Process. GetProcesses ()
Dim aoProcsByName As Process () = Process. GetProcessesByName ("app.exe")
Liste os objetos da matriz usando um loop:
Dim oProc As Process
Para Cada oProc In aoAllProcesses
'ações no oProc
Próximo
Faça um loop pelas propriedades MainModule, MainWindowTitle, ProcessName, etc. para encontrar o objeto desejado.
Etapa 6
Tente encerrar o programa enviando uma mensagem de fechamento para sua janela principal. Chame o método CloseMainWindow do objeto correspondente ao processo de destino. Se necessário, aguarde a conclusão do aplicativo chamando WaitForExit, por exemplo:
oProc. CloseMainWindow ()
oProc. WaitForExit ()
Este método não garante o encerramento do programa, pois a mensagem de fechamento da janela é freqüentemente processada e pode ser ignorada.
Etapa 7
Aguarde um curto período de tempo após chamar CloseMainWindow para garantir que o programa seja encerrado. Use o método Sleep da classe Thread. Em seguida, verifique o status do processo examinando a propriedade HasExited e, se não tiver terminado, chame o método Kill:
Thread. Sleep (6000)
oProc. Refresh ()
Se não for oProc. HasExited Then
oProc. Kill ()
Fim se
Se desejar, você pode pesquisar o status do processo em um loop, emitindo prompts periódicos ao usuário para encerrar o aplicativo sem salvar os dados. E só se você concordar em ligar para Kill.
Etapa 8
Libere recursos do sistema depois que o programa terminar usando o método Close:
oProc. Close ()
Etapa 9
Para evitar erros inesperados durante a execução do aplicativo, coloque todo o algoritmo de fechamento do programa em um bloco Try-Catch-End Try. Implemente o tratamento completo de exceções com mensagens de diagnóstico, se necessário.