
Eu sei que se pode usar o Windowsutilitário taskkillpara "matar" um processo que não responde. Mas o que acontece se eu chamá-lo em um processo que está em execução e não apresenta problemas - o taskkill tentará encerrá-lo normalmente primeiro?
PS. A razão pela qual estou perguntando é porque quero usar o taskkill de um script para fechar um programa, mas não o usarei se ele encerrar "à força" o processo do programa sem primeiro deixá-lo encerrar "normalmente".
Responder1
Por padrão, o utilitário taskkill enviará um sinal WM_CLOSE ao processo. Este é o mesmo sinal enviado quando você clica no x vermelho na barra de título.
Um aplicativo bem escrito ouvirá esse sinal e iniciará a limpeza e o fechamento.
Se estiver travado, não será capaz de fazer isso e, portanto, será considerado sem resposta. Taskkill aguardará o desligamento normal e solicitará ao usuário um desligamento incondicional.
Você pode usar o parâmetro /f para ir direto para o desligamento incondicional.
Portanto, em resposta à sua pergunta, se você deseja fechar um aplicativo sem força, use taskkill sem o parâmetro /f.