Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Asskiller

listbox

Recommended Posts

Vejo muitos codigos de Terminacao de processos e bom , eu segui um desses codigos e surgiu uma duvida

Eu listo os processos na listbox1

o processo que eu selecionar eu termino...

 

So que surgiu uma duvida invez de eu terminar o processo selecionando ele , eu queria terminar ele caso o processo x se encontre na listbox2...

Se caso ele exista na listbox2 entao terminar..

 

 

Como posso fazer isso ?

 

procedure ListProcesses;

var

ExeName : String;

//Descreve as entradas dos processos residentes no sistema

proc : PROCESSENTRY32;

//handle, a posição de memória alocada do objeto

hSnap : HWND;

Looper : BOOL;

begin

//limpa ListBox

Form1.listbox1.Clear;

// Captura o tamanho de bytes de PROCESSENTRY32

proc.dwSize := SizeOf(Proc);

hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);

//Captura o nome dos processos e insere no ListBox

Looper := Process32First(hSnap,proc);

while Integer(Looper) <> 0 do begin

ExeName := ExtractFileName(proc.szExeFile);

Form1.ListBox1.Items.Add(ExeName);

Looper := Process32Next(hSnap,proc);

end;

CloseHandle(hSnap);

end;

 

procedure KillProcess;

var

SelectedProcess : String;

proc : PROCESSENTRY32; //Descreve as entradas dos processos residentes no sistema

hSnap : HWND; //handle, a posição de memória alocada do objeto

Looper : BOOL;

begin

//Captura o nome do processo selecionado no ListBox

SelectedProcess := Form1.ListBox1.Items.Strings[Form1.ListBox1.itemindex];

proc.dwSize := SizeOf(Proc);

hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);

//Captura o primeiro processo

Looper := Process32First(hSnap,proc);

// Faz um loop nos processos até achar o processo selecionado

while Integer(Looper) <> 0 do begin

// Extrai o nome do processo e compara com SelectedProcess

if ExtractFileName(Proc.szExeFile) = SelectedProcess then

//Mata o processo aberto

if TerminateProcess(OpenProcess(PROCESS_TERMINATE,Bool(0),proc.th32ProcessID),0) then

begin

//Se encerrado, o processo é retirado do ListBox

Form1.ListBox1.DeleteSelected;

end

else

//Checa o próximo processo

Looper := Process32Next(hSnap,proc);

end;

//Fecha Handle

CloseHandle(hSnap);

end;

 

Irei tentar criar um procedimento para checar se os processos do listbox2 se encontram em listbox1 , se puderem me dar uma ajuda agradeco

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.