IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Мониторинг процессов, Простейшие действия с процессами
сообщение
Сообщение #1


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Как сделать, так что бы в ListBox можно было бы отразить процессы, происходящие в данный момент в системе и при выборе из списка специальной кнопкой их закрывать? Примерно догадываюсь, как это сделать, но как формализовать не додумаюсь? Знаю, что надо сделать снимок системы через SnapShot, подключить модуль Thelp32, а как дальше?

Сообщение отредактировано: Atreides -


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Написал передачу параметров процессов в StringGrid? А как определить время работы процесса в режиме пользователя (UserTime) и ядра (KernelTime), а так же его время старта?
unit pro;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,TlHelp32, ComCtrls, Grids, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
ListBox1: TListBox;
ListView1: TListView;
Label2: TLabel;
Button2: TButton;
StringGrid1: TStringGrid;
Button4: TButton;
Timer1: TTimer;

procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
SH : Thandle; ListBox1: TListBox;
Num, I ,a : Integer;
PPE : TProcessEntry32;
Pr_names : array [0..50] of string;
Pr_num : array [0..50] of TProcessEntry32;


Th : TTHREADENTRY32;
LstIt : TlistItem;


hToken : THandle;
DebugValue: Int64;
tkp, oldtkp : TTokenPrivileges;
Return : DWORD;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Num := 0;
// получение снимка состояния системы
SH := CreateToolHelp32SnapShot(Th32cs_SnapAll, 0);
// выделение из снимка имени первого процессов
PPE.dwSize := sizeof (ProcessEntry32);
Process32First(SH, PPE);
Pr_Names [Num] := PPE.szExeFile;
Pr_num [Num]:=PPE;
// получение имен других процессов
while Process32Next(SH, PPE) do
begin
Num := Num + 1;
Pr_Names [Num] := PPE.szExeFile; Pr_num [Num]:=PPE;
end;
Listbox1.Clear;
// вывод списка имен выполняющихся процессов
for I := 0 to Num do Listbox1.Items.Add(Pr_Names[I]);
// освобождение ресурса - снимка состояния системы
CloseHandle(SH);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Sh := CreateToolHelp32Snapshot (TH32CS_SNAPALL,0);
Th.dwSize := sizeof (TTHREADEntry32);
Thread32First(sh,Th);
ListView1.Items.Clear;
LstIt :=ListView1.Items.Add;
LstIt.Caption:=IntToStr(Th.th32OwnerProcessID);
LstIt.SubItems.Add(IntToStr(Th.tpBasePri));
repeat
LstIt :=ListView1.Items.Add;
LstIt.Caption:=IntToStr(Th.th32OwnerProcessID);
LstIt.SubItems.Add(IntToStr(Th.tpBasePri))
until not Thread32Next (sh,Th);
CloseHandle(Sh);


end;


procedure TForm1.ListBox1Click(Sender: TObject);
begin
StringGrid1.Cells[0,1]:=IntToStr(Pr_num[ListBox1.ItemIndex].th32ProcessID);
StringGrid1.Cells[1,1]:=IntToStr(Pr_num[ListBox1.ItemIndex].th32ModuleID);
StringGrid1.Cells[2,1]:=IntToStr(Pr_num[ListBox1.ItemIndex].cntThreads);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Ид.процесса';
StringGrid1.Cells[1,0]:='Модули';
StringGrid1.Cells[2,0]:='Потоки';
StringGrid1.Cells[3,0]:='Время старта';
StringGrid1.Cells[4,0]:='UserTime';
StringGrid1.Cells[5,0]:='KernelTime';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Close;
end;

end.


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Atreides   Мониторинг процессов   1.03.2007 19:40
volvo   DRKB3 -> Системные функции и WinAPI -> Windo…   1.03.2007 19:50
Atreides   У меня только версия 2.3 и там есть пример просмот…   2.03.2007 21:04
volvo   // Функция завершения процесса - проверено под XP …   2.03.2007 21:51
Atreides   Зачем править эту строку: Pr_Names [Num] := …   3.03.2007 13:31
volvo   ProcessTreminate взята из DRKB 2.3 - там есть комм…   3.03.2007 14:42
Atreides   А как сделать, что бы после нажатия кнопки заверше…   7.03.2007 15:21
-Volvo-   Добавь вызов Button1Click, чтобы заново сгенериров…   7.03.2007 15:35
Atreides   Как реализовать, чтобы для выбранного процесса из …   11.03.2007 20:40
Atreides   При помощи средств Delphi можно узнать, сколько вр…   12.03.2007 23:18
Atreides   Вот нашел тут одну ссылку, но она на C, а как пере…   14.03.2007 16:54
volvo   А что, собственно, там перегонять? Описания структ…   14.03.2007 17:05
Atreides   С помощью NtQuerySystemInformation, можно получить…   14.03.2007 17:11
volvo   Посмотри вот эту тему, там Rouse_ выкладывал непло…   14.03.2007 17:21
Iren   У меня подобное задание: нужно разработать приложе…   15.03.2007 22:33
Atreides   А как сделать, что бы можно было выбрать процесс и…   18.03.2007 16:48
Atreides   Написал передачу параметров процессов в StringGrid…   22.03.2007 23:49
Atreides   Доделал я это задание (получить список выполняющих…   3.04.2007 22:40
Atreides   Может, кто знает, как получить имя файла и его вер…   15.04.2007 21:56


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 16:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name