» Программирование>Снимки в Делфи: выбрать модули начиная с буквы из заданного диапазона
student1234 19:52 29.05.2008
вот, нужно сделать такую прогу. точнее переделать следующую, изменить нужно чуть-чуть, но где - хз:
----------------------------------------------- type
TMainForm = class(TForm)
LVMain: TListView;
BStart: TButton;
BExit: TButton;
EFirst: TEdit;
ESecond: TEdit;
Label1: TLabel;
procedure BStartClick(Sender: TObject);
procedure BExitClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
firstcount:integer;
secondcount: integer;
implementation
{$R *.dfm}
procedure TMainForm.BStartClick(Sender: TObject);
var
T: TProcessEntry32; //процесс
FCurSnap:THandle;
ListItem: TListItem;
begin
// диапазон номеров родительских процессов: от и до
firstcount:=StrToInt(Efirst.Text);
secondcount:=StrToInt(Esecond.Text);
T.dwSize := SizeOf(T);
// создать объеект - текущий процесс
FCurSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
LVMain.Items.Clear;
with lvMain do
begin
// делаем снимок процесса
if Process32First(FCurSnap,T) then
repeat
parent_id:=T.th32ParentProcessID; // номер родительского процесса
// если родительский процесс лежит в заданном диапазоне, то
//добавить его в таблицу
if (parent_id>=firstcount) and (parent_id<=secondcount)then
begin
ListItem := Items.Add;
ListItem.Caption :=T.szExeFile;
ListItem.SubItems.Add(IntToStr(T.cntThreads));
ListItem.SubItems.Add(IntToStr(T.th32ProcessID));
ListItem.SubItems.Add(IntToStr(parent_id));
end;
// до тех пор,пока не будут обработаны все процессы
until not Process32Next(FCurSnap, T);
end;
CloseHandle(FCurSnap);
end;
procedure TMainForm.BExitClick(Sender: TObject);
begin
close;
end;
end.