
Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:OC - Лекция 8 / SysInfo / SYSMAIN
.PAS unit SysMain;
interface
uses
SysUtils, Windows, Classes, Controls, Forms, Dialogs, Menus,
ExtCtrls, TlHelp32, StdCtrls, Buttons, ComCtrls, ImgList, InfoInt;
type
TMainForm = class(TForm)
Panel1: TPanel;
btnClose: TButton;
lvProcList: TListView;
Button1: TButton;
procedure ExitItemClick(Sender: TObject);
procedure FontItemClick(Sender: TObject);
procedure RefreshItemClick(Sender: TObject);
procedure Memory1Click(Sender: TObject);
procedure System2Click(Sender: TObject);
procedure Environment1Click(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure AboutItemClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
FWinInfo: IWin32Info;
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
uses WNTInfo, InfoU, AboutU;
procedure TMainForm.ExitItemClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.FontItemClick(Sender: TObject);
begin
//if FontDialog.Execute then Font := FontDialog.Font;
end;
procedure TMainForm.RefreshItemClick(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
lvProcList.Items.BeginUpdate;
// try
// FWinInfo.FillProcessInfoList(lvProcList, ilProcIcons);
//finally
Screen.Cursor := crDefault;
lvProcList.Items.EndUpdate;
//end;
end;
procedure TMainForm.Memory1Click(Sender: TObject);
begin
ShowInformation(ivMemory);
end;
procedure TMainForm.System2Click(Sender: TObject);
begin
ShowInformation(ivSystem);
end;
procedure TMainForm.Environment1Click(Sender: TObject);
begin
ShowInformation(ivEnvironment);
end;
procedure TMainForm.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.AboutItemClick(Sender: TObject);
begin
ShowAboutBox;
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
T: TProcessEntry32;
FCurSnap:THandle;
ListItem: TListItem;
begin
T.dwSize := SizeOf(T);
FCurSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
lvProcList.Items.Clear;
with lvProcList do
begin
if Process32First(FCurSnap,T) then
repeat
ListItem := Items.Add;
ListItem.Caption :=T.szExeFile;
ListItem.SubItems.Add(IntToStr(T.cntThreads));
ListItem.SubItems.Add(IntToStr(T.th32ProcessID));
ListItem.SubItems.Add(IntToStr(T.th32ParentProcessID));
ListItem.SubItems.Add(IntToStr(T.dwSize));
until not Process32Next(FCurSnap, T);
end;
end;
end.
interface
uses
SysUtils, Windows, Classes, Controls, Forms, Dialogs, Menus,
ExtCtrls, TlHelp32, StdCtrls, Buttons, ComCtrls, ImgList, InfoInt;
type
TMainForm = class(TForm)
Panel1: TPanel;
btnClose: TButton;
lvProcList: TListView;
Button1: TButton;
procedure ExitItemClick(Sender: TObject);
procedure FontItemClick(Sender: TObject);
procedure RefreshItemClick(Sender: TObject);
procedure Memory1Click(Sender: TObject);
procedure System2Click(Sender: TObject);
procedure Environment1Click(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure AboutItemClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
FWinInfo: IWin32Info;
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
uses WNTInfo, InfoU, AboutU;
procedure TMainForm.ExitItemClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.FontItemClick(Sender: TObject);
begin
//if FontDialog.Execute then Font := FontDialog.Font;
end;
procedure TMainForm.RefreshItemClick(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
lvProcList.Items.BeginUpdate;
// try
// FWinInfo.FillProcessInfoList(lvProcList, ilProcIcons);
//finally
Screen.Cursor := crDefault;
lvProcList.Items.EndUpdate;
//end;
end;
procedure TMainForm.Memory1Click(Sender: TObject);
begin
ShowInformation(ivMemory);
end;
procedure TMainForm.System2Click(Sender: TObject);
begin
ShowInformation(ivSystem);
end;
procedure TMainForm.Environment1Click(Sender: TObject);
begin
ShowInformation(ivEnvironment);
end;
procedure TMainForm.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.AboutItemClick(Sender: TObject);
begin
ShowAboutBox;
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
T: TProcessEntry32;
FCurSnap:THandle;
ListItem: TListItem;
begin
T.dwSize := SizeOf(T);
FCurSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
lvProcList.Items.Clear;
with lvProcList do
begin
if Process32First(FCurSnap,T) then
repeat
ListItem := Items.Add;
ListItem.Caption :=T.szExeFile;
ListItem.SubItems.Add(IntToStr(T.cntThreads));
ListItem.SubItems.Add(IntToStr(T.th32ProcessID));
ListItem.SubItems.Add(IntToStr(T.th32ParentProcessID));
ListItem.SubItems.Add(IntToStr(T.dwSize));
until not Process32Next(FCurSnap, T);
end;
end;
end.
Соседние файлы в папке SysInfo