Ir para conteúdo
Faça parte da equipe! (2024) ×

Listando Processos , Módulos e Threads - Delphi 7


V3SGOOO
 Compartilhar

Posts Recomendados

 

 

Foda-se a formatação do tópico

declare nas USES : tlHelp32 , ComCtrls e Math

Listando processos :

adicione 1 list view

nas propriedades do list view altere :

- ViewStyle para vsReport

- SortType para stText

- Read Only e Row Select para true

vá em Columns e adicione 2 colunas

na primeira coloque o "caption" como "Process Name" e na segunda "PID"

apos ter feito isso , adicione um button e segue o código :

 

É necessário se cadastrar para acessar o conteúdo.

 

pronto , com isso você vai listar todos os processos em execução

Listando modulos :

adicione outro listview e configure do igual o anterior ... e adicione as seguintes colunas :

coluna 0 : Module Name

coluna 1 : Base Address

coluna 2 : Size

apos ter "preparado" o novo listview , adicione um button e segue o código :

 


procedure TForm1.GetModules;
var
ContinueLoop: BOOL;
ModuleSnap: THandle;
ModuleEntry: TModuleEntry32;
Process: Cardinal;
MAddress: Integer;
X, Y: Real;
PID: String;
Item: TListItem;
begin
// o processo alvo sera o item selecionado da listview1 :
PID := ListView1.ItemFocused.SubItems[0];
// converte a string do item seleciona para integer
Process := (StrToInt(PID));
// cria uma "print" dos modulos
ModuleSnap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, Process);
ModuleEntry.dwSize := SizeOf(TModuleEntry32);
ContinueLoop := Module32First(ModuleSnap, ModuleEntry);
ListView2.Clear; // limpa a listview antes de adicionar os modulos
// loop para listar os modulos :
y := 0;
while Integer(ContinueLoop) <> 0 do begin
Item := ListView2.Items.Add;

// Nome do modulo:
Item.Caption := (ModuleEntry.szModule);

// adiciona a base address dos modulos :
MAddress := Cardinal(ModuleEntry.modBaseAddr);
Item.SubItems.Add(IntToHex(StrToInt(IntToStr(MAddress)), 8));

// tamanho do modulo(bytes) dividido por 1024 :
X := ModuleEntry.modBaseSize / 1024; // "converte" bytes para kbytes
if X > 1024 then begin // se o tamanho do modulo for superior a 1024 kbytes (1 megabyte) :
Y := X / 1024; // "converte" kbytes para megabytes
// adiciona os modulos como "MB" :
Item.SubItems.add(FloatToStr(SimpleRoundTo(Y, -2))+ ' MB');
end;
// adiciona os modulos com tamanho inferior a 1024kb (menores que 1 mb)
Item.SubItems.add(FloatToStr(Y)+ ' KB');

ContinueLoop := Module32Next(ModuleSnap, ModuleEntry); // lista todos os modulos do processo
end;
CloseHandle(ModuleSnap);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
try
// se a list view 1 tiver algum item selecionado :
if ListView1.ItemIndex >= 0 then
GetModules
else // se a list view 1 não tiver nenhum item selecionado :
MessageBox(0,'Selecione um processo !','Erro',0); // mensagem de erro
except
end;
end;
É necessário se cadastrar para acessar o conteúdo.

 

SOURCE - DOWNLOAD

nando noob

SOURCE - SCAN

 

Espero ter ajudado , qualquer duvida , utilize os comentários :)

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...
  • 3 semanas atrás...
  • 3 semanas atrás...
  • 1 ano atrás...
  • 1 mês depois...
Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.