Все процессы и dll в системе
Как узнать все dll которые использует процесс во время своей работы в winXP.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function getmodules(id:Integer):String;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses tlhelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
handler:thandle;
data:TProcessEntry32;
function return_name:string; // Вспомоготельная функция получения имени
var
i:byte;
names:string;
id:Integer;
size:Integer;
begin
names:='';
i:=0;
id:=data.th32ProcessID;
// size:=data.dwSize;
while data.szExeFile <> '' do
begin
names:=names+data.szExeFile;
inc(i);
end;
getmodules(id);
return_name:=names +' ' +IntToStr(id);//+ ' ' + IntToStr(size);
end;
begin //Основная функция перечисления процессов
handler:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
if Process32First(handler,data) then
begin
memo1.Lines.add(return_name);
while Process32Next(handler,data) do
memo1.Lines.add(return_name);
end
else
showmessage('Ошибка получения информации :)');
CloseHandle(handler); //Хендл закрывать обязательно!!
end;
function getmodules(id:Integer):String;
var
module32:TModuleEntry32;
next : bool;
h:THandle;
begin
Module32.dwSize:=SizeOf(TModuleEntry32);
H:=CreateToolHelp32Snapshot(TH32CS_SNAPMODULE, id);
if Module32First(h,Module32) then
begin
//используем информацию об объекте из записи
Repeat
Next:=Module32Next(H,Module32);
if Next Then Form1.memo1.Lines.Add(Module32.szExePath);
Until Not Next;
end;
CloseHandle(h); //Хендл закрывать обязательно!!
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function getmodules(id:Integer):String;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses tlhelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
handler:thandle;
data:TProcessEntry32;
function return_name:string; // Вспомоготельная функция получения имени
var
i:byte;
names:string;
id:Integer;
size:Integer;
begin
names:='';
i:=0;
id:=data.th32ProcessID;
// size:=data.dwSize;
while data.szExeFile <> '' do
begin
names:=names+data.szExeFile;
inc(i);
end;
getmodules(id);
return_name:=names +' ' +IntToStr(id);//+ ' ' + IntToStr(size);
end;
begin //Основная функция перечисления процессов
handler:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
if Process32First(handler,data) then
begin
memo1.Lines.add(return_name);
while Process32Next(handler,data) do
memo1.Lines.add(return_name);
end
else
showmessage('Ошибка получения информации :)');
CloseHandle(handler); //Хендл закрывать обязательно!!
end;
function getmodules(id:Integer):String;
var
module32:TModuleEntry32;
next : bool;
h:THandle;
begin
Module32.dwSize:=SizeOf(TModuleEntry32);
H:=CreateToolHelp32Snapshot(TH32CS_SNAPMODULE, id);
if Module32First(h,Module32) then
begin
//используем информацию об объекте из записи
Repeat
Next:=Module32Next(H,Module32);
if Next Then Form1.memo1.Lines.Add(Module32.szExePath);
Until Not Next;
end;
CloseHandle(h); //Хендл закрывать обязательно!!
end;
end.
но почему для некоторых exe не показывает dll?