
Matando o processo do Nw.exe

Um problema muito comum durante o desenvolvimento usanod a game engine Construct2 e o programa Nw.exe como render desktop, é em alguns momentos após fechar o nw.exe o processo continua rodando, mesmo com a janela fechada, é conhecido como processo fantasma, que aparece no gerenciador de tarefas e possui uma PID. Com este problema em mente, resolvi buscar uma solução simplificada para que o seja fechado o processo de forma mais rápida possível, aproveitei meus conhecimentos longíncuos de programação em scripts, que utilizo para outros fins no meu atual sistema operacional.
O que é PID?
PID significa Process identifier (identificador de processo), PID ou ainda process ID é um número único que é atribuído pelo
sistema operacional quando um processo é executado. Esse número é utilizado para se fazer referência a um processo em execução.
A maioria dos navegadores reconhecem arquivos .bat como potenciais ameaças, por este motivo eu deixo abaixo o código do arquivo.
Pegue o código e cole em um arquivo no formato .bat, que pode ser também um arquivo .txt, renomeie ele para .bat.
@echo off
set proceso=nw.exe
tasklist>%tmp%\tmp.txt
find /i "%proceso%" "%tmp%\tmp.txt">%tmp%\pid.tmp
if errorlevel==1 (
color C
echo Nao foi encotrado o "%proceso%" no sistema
timeout /t 3
)
for /f "tokens=2 skip=2" %%p in (%tmp%\pid.tmp) do (
color a
cls
tskill %%p
echo Finalizado o NW.Exe com sucesso
timeout /t 3
exit
)
@echo off, vai retirar o caminho do sistema. set proceso=nw.exe, cria uma variável e armazena a string que contém o nome do progrma a ser fechado. tasklist>%tmp%\tmp.txt, pega o conteúdo do comando tasklist que vai mostrar todos os processos que estão rodando no sistema operacional, joga em um arquivo tmp.txt que fica na pasta temporária do sistema operacional. find /i "%proceso%" "%tmp%\tmp.txt">%tmp%\pid.tmp, o comando "find" localiza uma cadeia de caracteres de um texto, no caso do código acima, ele procura a string da segunda lina "nw.exe" dentro do arquivo tmp.txt, depois grava o segundo arquivo "pid.tmp". IF ERRORLEVEL==1, será verificado se existe um processo com a string que foi guardado na variável, caso não tenha retorno, a cor da fonte do script será modificada para vermelho e exibir a mensagem "Nao foi encotrado o "%proceso%" no sistema", assim terminando o processo do script. Caso encontre a referência da string, essa linha será ignorada e vai iniciar o looping pelo comando "for". timeout /t 3,será mostrado um contador regressivo iniciando em 3, terminando a contagem o scrip será fechado. for /f "tokens=2 skip=2" %%p in (%tmp%\pid.tmp) do (, será executado um looping verificando o arquivo "pid.tmp". color a, muda a cor do script para verde. echo O proceso "%proceso%" tem o pid --^> "%%p", será exibido a mensagem com o nome "nw.exe" junto com a sua PID encontrada. cls, limpa a tela. tskill %%p, tskill é o comando para matar o processo echo Finalizado o NW.Exe com sucesso, será exibido a mensagem com o nome do processo que foi finalizado, junto com a contagem regressiva. exit, limpa a tela.
Clique ADS para exibir detalhes de como configurar e usar