выбрать модули начиная с буквы из заданного диапазона

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
student1234
Сообщения: 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.
Помогите пожалуйста
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

1. Сформулируйте нормально задание
2. Пользуйтесь тегами [ syntax=Delphi] или [ code] (без пробела в начале)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
student1234
Сообщения: 9
Зарегистрирован: 05 янв 2008, 23:15

задание сформулировано таким образом, каким оно было предложено))
student1234
Сообщения: 9
Зарегистрирован: 05 янв 2008, 23:15

а вообще можно удалять тему - решение проблемы найдено
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

student1234 писал(а):задание сформулировано таким образом, каким оно было предложено))

Задание сформулировано так: "Нужно сделать такую прогу". Приведен текст проги. Задание решается путем последовательного нажатия клавиш Ctrl+C, Ctrl+V.
Не сомневаюсь, что таким путем решение проблемы было быстро найдено :)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Хыиуду, нет-нет, там было сказано, что предложенный текст нужно чуть-чуть изменить :)
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

BBB писал(а):Хыиуду, нет-нет, там было сказано, что предложенный текст нужно чуть-чуть изменить :)

Хорошо. Я бы тогда добавил пробелы в начале каждой строки :)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

:-))

я думаю, что нужно было для получаемых процессов проверять имя, и, если оно начинается с заданной буквы, тогда помещать его в список...

А подскажите, если кто без поиска сразу знает ответ, что за процессы получают через нижеприведённый код?

Код: Выделить всё

var
T: TProcessEntry32; //процесс
...
if Process32First(FCurSnap,T) then
repeat
  parent_id:=T.th32ParentProcessID; // номер родительского процесса
Ответить