выбрать модули начиная с буквы из заданного диапазона
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
-
- Сообщения: 9
- Зарегистрирован: 05 янв 2008, 23:15
вот, нужно сделать такую прогу. точнее переделать следующую, изменить нужно чуть-чуть, но где - хз:
-----------------------------------------------
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.
Помогите пожалуйста
1. Сформулируйте нормально задание
2. Пользуйтесь тегами [ syntax=Delphi] или [ code] (без пробела в начале)
2. Пользуйтесь тегами [ syntax=Delphi] или [ code] (без пробела в начале)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 9
- Зарегистрирован: 05 янв 2008, 23:15
задание сформулировано таким образом, каким оно было предложено))
-
- Сообщения: 9
- Зарегистрирован: 05 янв 2008, 23:15
а вообще можно удалять тему - решение проблемы найдено
student1234 писал(а):задание сформулировано таким образом, каким оно было предложено))
Задание сформулировано так: "Нужно сделать такую прогу". Приведен текст проги. Задание решается путем последовательного нажатия клавиш Ctrl+C, Ctrl+V.
Не сомневаюсь, что таким путем решение проблемы было быстро найдено

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Хыиуду, нет-нет, там было сказано, что предложенный текст нужно чуть-чуть изменить 

BBB писал(а):Хыиуду, нет-нет, там было сказано, что предложенный текст нужно чуть-чуть изменить![]()
Хорошо. Я бы тогда добавил пробелы в начале каждой строки

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
:-))
я думаю, что нужно было для получаемых процессов проверять имя, и, если оно начинается с заданной буквы, тогда помещать его в список...
А подскажите, если кто без поиска сразу знает ответ, что за процессы получают через нижеприведённый код?
я думаю, что нужно было для получаемых процессов проверять имя, и, если оно начинается с заданной буквы, тогда помещать его в список...
А подскажите, если кто без поиска сразу знает ответ, что за процессы получают через нижеприведённый код?
Код: Выделить всё
var
T: TProcessEntry32; //процесс
...
if Process32First(FCurSnap,T) then
repeat
parent_id:=T.th32ParentProcessID; // номер родительского процесса