Asskiller 4 Denunciar post Postado Abril 7, 2011 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
Diego Garcia 0 Denunciar post Postado Abril 13, 2011 tenta usar o método listbox.items.IndexOf() passando como parâmetro o nome do processo, ai se ele estiver no primeiro listbox, vai lhe voltar o índice Compartilhar este post Link para o post Compartilhar em outros sites