Finalizar programa

Delphi

12/06/2018

Olá!

Gostaria de saber como posso finalizar um processo, pela função "WinExec".
Para executar um programa, basta digitar "WinExec('notepad.exe', SW_SHOWNORMAL);".
Neste caso, eu quero finalizar o programa corrente/atual, por essa mesma função (WinExec), porém, não funciona muito bem.

Até onde sei, essa função seria como o Prompt de Comando, mas quando digito "WinExec('kill '+IntToStr(GetCurrentProcessId), SW_SHOWNORMAL);", ela não funciona.

Gostaria de saber uma maneira de fechar o programa, utilizando o pid (GetCurrentProcessId) do mesmo.
Vinicius

Vinicius

Curtidas 0

Melhor post

Raimundo Pereira

Raimundo Pereira

12/06/2018

1.Declare em Uses Shellapi
Para saber o nome do exe basta ir no gerenciador de tarefas com o aplicativo em execução.

var Comando:string;

Comando:= 'taskkill -im notepad.exe /f /t';

Executa o comando como administrador
ShellExecute(Handle, 'runas', 'cmd.exe', PChar('/c'+Comando ), nil, 0);

Executa o comando normal
ShellExecute(Handle, 'open', 'cmd.exe', PChar('/c'+Comando ), nil, 0);
GOSTEI 1

Mais Respostas

Alberto

Alberto

12/06/2018

Tenho um funcao que executa um programa externo
com a opcao de "parar" o sistema até que o programa
externo que foi executado termine, ai retorna ao sistema.
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

12/06/2018

Detalhe o Pid ou Idenfifi sempre muda ao abrir novo exe

abra o cmd e digiste tasklist
supomos que o pide do note pad seja 1835

Seu comando vai ser
Comando:= 'taskkill -im 1835 /f /t';

Executa o comando como administrador
ShellExecute(Handle, 'runas', 'cmd.exe', PChar('/c'+Comando ), nil, 0);

Executa o comando normal
ShellExecute(Handle, 'open', 'cmd.exe', PChar('/c'+Comando ), nil, 0);
GOSTEI 0
POSTAR