выбрать модули начиная с буквы из заданного диапазона
Добавлено: 29 май 2008, 21:41
вот, нужно сделать такую прогу. точнее переделать следующую, изменить нужно чуть-чуть, но где - хз:
-----------------------------------------------
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;
// Th: TThreadEntry32; //поток
// FCurSnapThread:THandle;
parent_id: integer;
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.
Помогите пожалуйста
-----------------------------------------------
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;
// Th: TThreadEntry32; //поток
// FCurSnapThread:THandle;
parent_id: integer;
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.
Помогите пожалуйста