Vamos agora precisar dar uses em Tlhelp32. Em seguida vamos declarar a procedure.
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Private
procedure ListarProcessosAbertos;
{ Private declarations }
public
{ Public declarations }
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Tlhelp32;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
private
procedure ListarProcessosAbertos;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ListarProcessosAbertos;
begin
end;
end.
procedure TForm1.ListarProcessosAbertos;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
ListBox1.Clear;
while Integer(ContinueLoop) <> 0 do
begin
ListBox1.Items.Add(FProcessEntry32.szExeFile);
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
ListBox1.Sorted := True; //Serve para ordenar a lista dos processos por ordem alfabética
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListarProcessosAbertos;
end;
Observe que o ListBox esta com colunas, isso você pode configurar na propriedade Columns, no meu caso eu coloquei 3 colunas. Você pode adicionar em vários outros componentes só para lembrar, Combobox, CheckListBox, Memo, RichEdit, entre outros.
Fico por aqui e até o próximo artigo
Um abraço
Wesley Y
www.lithic.com.br