РефератыИнформатикаМоМониторинг ОС

Мониторинг ОС

Волжский университет имени В.Н. Татищева


Факультет “Информатика и телекоммуникации”


Кафедра “Информатика и системы управления”


КУРСОВАЯ РАБОТА


по дисциплине: “Системное программное обеспечение”


Тема: “Мониторинг ОС”

Тольятти 200


СОДЕРЖАНИЕ


Введение


1.1 Мониторинг ОС в современном мире


1.2 Программная часть


1.3 Задача программы


1.4 Описание программы


1.5 Программный код


Список используемой литературы


ВВЕДЕНИЕ

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


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


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


1. МОНИТОРИНГ ОПЕРАЦИОННОЙ СИСТЕМЫ В СОВРЕМЕННОМ МИРЕ


Сейчас профессия системного администратора очень распространена, в его функции входит следить за системой (Приведение системы в порядок), настройка компьютера на максимальное быстродействие, и контроль за Hardware устройствами. Раньше это было не так просто сделать т.к. не было нужного программного обеспечения, и «мозгов», а если и были люди то очень мало. Но благодаря современным технологиям и современным программам. Мониторинг системы стал максимально простым. Во всех современных операционных системах существуют стандартные программы мониторинга, а так же очень много софта посвященного тому же вопросу, такие как «AIDA, sisSoftware, и др.»


2. ПРОГРАММНАЯ ЧАСТЬ


2.1 Задача программы


Моя программа разработана для операционной системы Windows и представляет собой средство для мониторинга системы, которое позволяет узнать основные параметры компьютера и протестировать его на современность. В программе я постарался сделать так, чтобы мониторинг осуществлялся как можно легче. С помощью нее можно узнать «Балл» своего Hardware устройства, который показывает, устарело устройство или нет. Программа была протестирована на нескольких компьютерах, что позволило мне установить балл каждому из компьютеров.


2.2 Описание программы


Программа разрабатывалась под ОС Windows 95/98/ME/NT/2000/XP в программе Delphi 7.0


При открытии программы появляется главное рабочее окно (Рис. 5.1)



Рис. 5.1 Основное окно программы


Основное окно состоит из формы на которой имеются кнопки: Процессор, память, дисплей, ОС, диски, видеокарта, об авторе и выход.


При нажатии кнопки процессор появляется (Рис. 5.2) окно на котором показано: название процессора, реальная частота его загрузки, график загрузки, средняя частота, и балловая оценка



Рис. 5.2 Процессор системы


При нажатии кнопки память появляется окно (Рис 5.3) на котором можно посмотреть уровень загрузки памяти, и балл ее оценки.



Рис. 5.3 ОЗУ


При нажатии на кнопку дисплей появляется окно (Рис. 5.4) на котором мы можем посмотреть параметры монитора и поддерживаемые им режимы.



Рис. 5.4 Дисплей


При нажатии на кнопку ОС появляется окно (Рис. 5.5) на котором мы можем посмотреть версию ОС, ее параметры, а так же балл оценки.



Рис. 5.5 ОС


При нажатии на кнопку диски появляется окно (Рис. 5.6) на котором мы можем посмотреть параметры всех имеющихся дисков, и его параметров.



Рис. 5.6 Диски


При нажатии на кнопку видеокарта появляется окно (Рис. 5.7) на котором мы можем посмотреть параметры видеокарты.



Рис. 5.7 Видеокарта


2.3 Программнаячасть


unit Unit1;


interface


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, ExtCtrls, StdCtrls, Buttons, jpeg, registry;


type


TForm1 = class(TForm)


Image1: TImage;


Image2: TImage;


Image3: TImage;


Image4: TImage;


Image5: TImage;


Image6: TImage;


Image7: TImage;


Image8: TImage;


Image9: TImage;


Image10: TImage;


Image11: TImage;


Image12: TImage;


Image13: TImage;


Image14: TImage;


Image15: TImage;


Image16: TImage;


Image17: TImage;


Image18: TImage;


Image19: TImage;


Image20: TImage;


Image21: TImage;


Image22: TImage;


Image23: TImage;


Image24: TImage;


Image25: TImage;


procedure FormCreate(Sender: TObject);


procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


procedure FormMouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure FormMouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure FormPaint(Sender: TObject);


procedure Image2MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image3MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image4MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image5MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image6MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image7MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image8MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image9MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image3MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image4MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image5MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image6MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image7MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image8MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image9MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


procedure Image3MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


procedure Image4MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


procedure Image5MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


procedure Image6MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


procedure Image7MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


procedure Image8MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


procedure Image9MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


procedure Image5Click(Sender: TObject);


procedure Image9Click(Sender: TObject);


procedure Image2Click(Sender: TObject);


procedure Image4Click(Sender: TObject);


procedure Image3Click(Sender: TObject);


procedure Image8Click(Sender: TObject);


procedure Image7Click(Sender: TObject);


procedure Image6Click(Sender: TObject);


private


{ Private declarations }


Dragging,Stop : Boolean;


OldLeft,OldTop : Integer;


modes:array[0..255] of TDevMode;


public


{ Public declarations }


end;


var


Form1: TForm1;


implementation


uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8;


{$R *.dfm}


{ TForm1 }


function CreateRgnFromBitmap(rgnBitmap: TBitmap): HRGN;


var


TransColor: TColor;


i, j: Integer;


i_width, i_height: Integer;


i_left, i_right: Integer;


rectRgn: HRGN;


begin


Result := 0;


i_width := rgnBitmap.Width;


i_height := rgnBitmap.Height;


transColor := rgnBitmap.Canvas.Pixels[0, 0];


for i := 0 to i_height - 1 do


begin


i_left := -1;


for j := 0 to i_width - 1 do


begin


if i_left < 0 then


begin


if rgnBitmap.Canvas.Pixels[j, i] <> transColor then


i_left := j;


end


else


if rgnBitmap.Canvas.Pixels[j, i] = transColor then


begin


i_right := j;


rectRgn := CreateRectRgn(i_left, i, i_right, i + 1);


if Result = 0 then


Result := rectRgn


else


begin


CombineRgn(Result, Result, rectRgn, RGN_OR);


DeleteObject(rectRgn);


end;


i_left := -1;


end;


end;


if i_left >= 0 then


begin


rectRgn := CreateRectRgn(i_left, i, i_width, i + 1);


if Result = 0 then


Result := rectRgn


else


begin


CombineRgn(Result, Result, rectRgn, RGN_OR);


DeleteObject(rectRgn);


end;


end;


end;


end;


procedure TForm1.FormCreate(Sender: TObject);


var


WindowRgn: HRGN;


begin


BorderStyle := bsNone;


ClientWidth := Image1.Picture.Bitmap.Width;


ClientHeight := Image1.Picture.Bitmap.Height;


windowRgn := CreateRgnFromBitmap(Image1.Picture.Bitmap);


SetWindowRgn(Handle, WindowRgn, True);


end;


procedure TForm1.FormPaint(Sender: TObject);


begin


Canvas.Draw(0, 0, Image1.Picture.Bitmap);


end;


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


if button=mbLeft then


begin


Dragging := True;


OldLeft := X;


OldTop := Y;


end;


end;


procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


begin


if Dragging then


begin


Left := Left+X-OldLeft;


Top := Top+Y-OldTop;


end;


end;


procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Dragging := False;


end;


procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


begin


Image2.Cursor:=crHandPoint;


end;


procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image2.Picture:=Image14.Picture;


end;


procedure TForm1.Image2MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image2.Picture:=Image15.Picture;


end;


procedure TForm1.Image3MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image3.Picture:=Image16.Picture;


end;


procedure TForm1.Image4MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image4.Picture:=Image18.Picture;


end;


procedure TForm1.Image5MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image5.Picture:=Image13.Picture;


end;


procedure TForm1.Image6MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image6.Picture:=Image24.Picture;


end;


procedure TForm1.Image7MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image7.Picture:=Image23.Picture;


end;


procedure TForm1.Image8MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image8.Picture:=Image20.Picture;


end;


procedure TForm1.Image9MouseUp(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image9.Picture:=Image11.Picture;


end;


procedure TForm1.Image3MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image3.Picture:=Image17.Picture;


end;


procedure TForm1.Image4MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image4.Picture:=Image19.Picture;


end;


procedure TForm1.Image5MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image5.Picture:=Image12.Picture;


end;


procedure TForm1.Image6MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image6.Picture:=Image25.Picture;


end;


procedure TForm1.Image7MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image7.Picture:=Image22.Picture;


end;


procedure TForm1.Image8MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image8.Picture:=Image21.Picture;


end;


procedure TForm1.Image9MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);


begin


Image9.Picture:=Image10.Picture;


end;


procedure TForm1.Image3MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


begin


Image3.Cursor:=crHandPoint;


end;


procedure TForm1.Image4MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


begin


Image4.Cursor:=crHandPoint;


end;


procedure TForm1.Image5MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


begin


Image5.Cursor:=crHandPoint;


end;


procedure TForm1.Image6MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


begin


Image6.Cursor:=crHandPoint;


end;


procedure TForm1.Image7MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


begin


Image7.Cursor:=crHandPoint;


end;


procedure TForm1.Image8MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


begin


Image8.Cursor:=crHandPoint;


end;


procedure TForm1.Image9MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);


begin


Image9.Cursor:=crHandPoint;


end;


procedure TForm1.Image5Click(Sender: TObject);


begin


//Выход


Application.Terminate;


end;


procedure TForm1.Image9Click(Sender: TObject);


var


Reg:TRegistry;


begin


Form1.Visible:=False;


FormCPUSpeed.Visible:=True;


Reg:=TRegistry.Create;


Reg.RootKey:=HKEY_LOCAL_MACHINE;


Reg.OpenKey('HardwareDESCRIPTIONSystemCentralProcessor0',False);


FormCPUSpeed.LabelCPUName.Caption:=Reg.ReadString('ProcessorNameString');


Reg.CloseKey;


FormCPUSpeed.BitBtnStart.Click;


end;


procedure TForm1.Image2Click(Sender: TObject);


var


MemInfo : TMemoryStatus;


begin


MemInfo.dwLength := Sizeof (MemInfo);


GlobalMemoryStatus (MemInfo);


FormPamyt.PolnayaFizPamyt.Caption:=IntToStr(MemInfo.dwTotalPhys div 1024);


FormPamyt.DostupnayaFizPamyat.Caption:=IntToStr(MemInfo.dwAvailPhys div 1024);


FormPamyt.ObshayaPodkachka.Caption:=IntToStr(MemInfo.dwTotalPageFile div 1024);


FormPamyt.DostupPodkachka.Caption:=IntToStr(MemInfo.dwAvailPageFile div 1024);


FormPamyt.Pamyt1.Progress := MemInfo.dwAvailPhys div (MemInfo.dwTotalPhys div 100);


FormPamyt.Pamyt2.Progress := MemInfo.dwAvailPageFile div (MemInfo.dwTotalPageFile div 100);


{если значение маленькое меняем цвет на красный}


if (FormPamyt.Pamyt1.Progress < 5) then FormPamyt.Pamyt1.ForeColor := clRed


else FormPamyt.Pamyt1.ForeColor := clActiveCaption;


if (FormPamyt.Pamyt2.Progress < 20) then FormPamyt.Pamyt2.ForeColor := clRed


else FormPamyt.Pamyt2.ForeColor := clActiveCaption;


Form1.Visible:=False;


FormPamyt.Visible:=True;


if (StrToFloat(FormPamyt.PolnayaFizPamyt.Caption)>0)and(StrToFloat(FormPamyt.PolnayaFizPamyt.Caption)<65536) then begin FormPamyt.OcenkaPamyati.Caption:='1';FormPamyt.Label6.Caption:='-балл (Очень слабая)';end;


if (StrToFloat(FormPamyt.PolnayaFizPamyt.Caption)>63488)and(StrToFloat(FormPamyt.PolnayaFizPamyt.Caption)<131072) then begin FormPamyt.OcenkaPamyati.Caption:='2';FormPamyt.Label6.Caption:='-балла (Слабая)';end;


if (StrToFloat(FormPamyt.PolnayaFizPamyt.Caption)>129024)and(StrToFloat(FormPamyt.PolnayaFizPamyt.Caption)<262144) then begin FormPamyt.OcenkaPamyati.Caption:='3';FormPamyt.Label6.Caption:='-балла (Нормальная)';end;


if (StrToFloat(FormPamyt.PolnayaFizPamyt.Caption)>260096)and(StrToFloat(FormPamyt.PolnayaFizPamyt.Caption)<524288) then begin FormPamyt.OcenkaPamyati.Caption:='4';FormPamyt.Label6.Caption:='-балла (Хорошая)';end;


if (StrToFloat(FormPamyt.PolnayaFizPamyt.Caption)>522240)then begin FormPamyt.OcenkaPamyati.Caption:='5';FormPamyt.Label6.Caption:='-баллов (Отличная)';end;


end;


procedure TForm1.Image4Click(Sender: TObject);


var


OsVersion: TOSVersionInfo;


PathArray:Array[0..255] of char;


begin


Form1.Visible:=False;


FormOS.Visible:=True;


//OS


OSVersion.dwOSVersionInfoSize := SizeOf(OSVersion);


if GetVersionEx(OSVersion) then


begin


FormOS.VersionLabel.Caption:= Format('%d.%d (%d.%s)',[OSVersion.dwMajorVersion, OSVersion.dwMinorVersion,(OSVersion.dwBuildNumber and $FFFF), OSVersion.szCSDVersion]);


case OSVersion.dwPlatformID of


VER_PLATFORM_WIN32s: FormOS.VersionNumberLabel.Caption := 'Windows 3.1';


VER_PLATFORM_WIN32_WINDOWS: FormOS.VersionNumberLabel.Caption := 'Windows 95';


VER_PLATFORM_WIN32_NT: FormOS.VersionNumberLabel.Caption := 'Windows NT';


else FormOS.VersionNumberLabel.Caption := '';


end; //of case


end; //of if


FillChar(PathArray, SizeOf(PathArray), #0);


GetWindowsDirectory(PathArray,255);


FormOS.WindowsDirLabel.Caption:= Format('%s',[PathArray]);


FillChar(PathArray, SizeOf(PathArray), #0);


ExpandEnvironmentStrings('%TEMP%', PathArray, 255);


FormOS.TempDir.Caption:=Format('%s',[PathArray]);


if FormOS.VersionNumberLabel.Caption='Windows N

T' then


begin


FormOS.OcenkaOC.Caption:='2'; FormOS.Label7.Caption:='-балла(Отличная)'end else


begin FormOS.OcenkaOC.Caption:='1';FormOS.Label7.Caption:='-балл(Старая)';end;


if FormOS.VersionNumberLabel.Caption='Windows NT' then FormOS.WindowsOS.Caption:='NT/2000/XP'else FormOS.WindowsOS.Caption:='95/98/ME';


end;


procedure TForm1.Image3Click(Sender: TObject);


var


i:Integer;


begin


case GetDeviceCaps(Canvas.Handle, TECHNOLOGY) of


DT_PLOTTER: FormDisplay.Memo1.Lines.Add('Тип: Векторный плотер');


DT_RASDISPLAY: FormDisplay.Memo1.Lines.Add('Тип: Растровый дисплей');


DT_RASPRINTER: FormDisplay.Memo1.Lines.Add('Тип: Растровый принтер');


DT_RASCAMERA: FormDisplay.Memo1.Lines.Add('Тип: Растровая камера');


DT_CHARSTREAM: FormDisplay.Memo1.Lines.Add('Тип: Поток символов');


DT_METAFILE: FormDisplay.Memo1.Lines.Add('Тип: Метафайл');


DT_DISPFILE: FormDisplay.Memo1.Lines.Add('Тип: Файл дисплея');


end;


FormDisplay.Memo1.Lines.Add('Ширина в миллиметрах '+IntToStr(GetDeviceCaps(Canvas.Handle, HORZSIZE)));


FormDisplay.Memo1.Lines.Add('Высота в миллиметрах '+IntToStr(GetDeviceCaps(Canvas.Handle, VERTSIZE)));


FormDisplay.Memo1.Lines.Add('Ширина в пикселях '+IntToStr(GetDeviceCaps(Canvas.Handle, HORZRES)));


FormDisplay.Memo1.Lines.Add('Высота в пикселях '+IntToStr(GetDeviceCaps(Canvas.Handle, VERTRES)));


FormDisplay.Memo1.Lines.Add('Количество пикселей на дюйм по горизонтали '+


IntToStr(GetDeviceCaps(Canvas.Handle, LOGPIXELSX)));


FormDisplay.Memo1.Lines.Add('Количество пикселей на дюйм по вертикали '+


IntToStr(GetDeviceCaps(Canvas.Handle, LOGPIXELSY)));


FormDisplay.Memo1.Lines.Add('Количество бит на пиксель '+


IntToStr(GetDeviceCaps(Canvas.Handle, BITSPIXEL)));


FormDisplay.Memo1.Lines.Add('Количество цветовых плоскостей '+


IntToStr(GetDeviceCaps(Canvas.Handle, PLANES)));


FormDisplay.Memo1.Lines.Add('Количество цветов в системной палитре '+


IntToStr(GetDeviceCaps(Canvas.Handle, SIZEPALETTE)));


FormDisplay.Memo1.Lines.Add('Вертискальная частота развёртки '+


IntToStr(GetDeviceCaps(Canvas.Handle, VREFRESH)));


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_BANDING)=RC_BANDING then


FormDisplay.Memo1.Lines.Add('Требуеться сегментация');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_BITBLT)=RC_BITBLT then


FormDisplay.Memo1.Lines.Add('Может передавать Bitmaps');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_BITMAP64)=RC_BITMAP64 then


FormDisplay.Memo1.Lines.Add('Поддержка Bitmaps > 64K');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_DI_BITMAP)=RC_DI_BITMAP then


FormDisplay.Memo1.Lines.Add('Поддержка SetDIBits and GetDIBits');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_DIBTODEV)=RC_DIBTODEV then


FormDisplay.Memo1.Lines.Add('Поддержка SetDIBitsToDevice');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_FLOODFILL)=RC_FLOODFILL then


FormDisplay.Memo1.Lines.Add('Can Perform Floodfills');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_GDI20_OUTPUT)=RC_GDI20_OUTPUT then


FormDisplay.Memo1.Lines.Add('Поддержка Windows 2.0 возможности');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_PALETTE)=RC_PALETTE then


FormDisplay.Memo1.Lines.Add('Основано на палитке');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_SCALING)=RC_SCALING then


FormDisplay.Memo1.Lines.Add('Поддержка масштабирования');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_STRETCHBLT)=RC_STRETCHBLT then


FormDisplay.Memo1.Lines.Add('Поддержка StretchBlt');


if (GetDeviceCaps(Canvas.Handle, RASTERCAPS) and


RC_STRETCHDIB)=RC_STRETCHDIB then


FormDisplay.Memo1.Lines.Add('Поддержка StretchDIBits');


if GetDeviceCaps(Canvas.Handle, CURVECAPS)=CC_NONE then


FormDisplay.Memo1.Lines.Add('Устройство не поддерживает кривые')


else


begin


if (GetDeviceCaps(Canvas.Handle, CURVECAPS) and


CC_CIRCLES)=CC_CIRCLES then


FormDisplay.Memo1.Lines.Add('Поддержка Cirles');


if (GetDeviceCaps(Canvas.Handle, CURVECAPS) and


CC_PIE)=CC_PIE then


FormDisplay.Memo1.Lines.Add('Поддержка Pie Wedges');


if (GetDeviceCaps(Canvas.Handle, CURVECAPS) and


CC_CHORD)=CC_CHORD then


FormDisplay.Memo1.Lines.Add('Поддержка Chords');


if (GetDeviceCaps(Canvas.Handle, CURVECAPS) and


CC_ELLIPSES)=CC_ELLIPSES then


FormDisplay.Memo1.Lines.Add('Поддержка Ellipses');


if (GetDeviceCaps(Canvas.Handle, CURVECAPS) and


CC_WIDE)=CC_WIDE then


FormDisplay.Memo1.Lines.Add('Поддержка Wide Borders');


if (GetDeviceCaps(Canvas.Handle, CURVECAPS) and


CC_STYLED)=CC_STYLED then


FormDisplay.Memo1.Lines.Add('Поддержка Styled Borders');


if (GetDeviceCaps(Canvas.Handle, CURVECAPS) and


CC_WIDESTYLED)=CC_WIDESTYLED then


FormDisplay.Memo1.Lines.Add('Поддержка Wide And Styled Borders');


if (GetDeviceCaps(Canvas.Handle, CURVECAPS) and


CC_INTERIORS)=CC_INTERIORS then


FormDisplay.Memo1.Lines.Add('Поддержка Interiors');


if (GetDeviceCaps(Canvas.Handle, CURVECAPS) and


CC_ROUNDRECT)=CC_ROUNDRECT then


FormDisplay.Memo1.Lines.Add('Поддержка Rounded Rectangles');


end;


if GetDeviceCaps(Canvas.Handle, LINECAPS)=LC_NONE then


FormDisplay.Memo1.Lines.Add('Device Does Not Support Lines')


else


begin


if (GetDeviceCaps(Canvas.Handle, LINECAPS) and


LC_POLYLINE)=LC_POLYLINE then


FormDisplay.Memo1.Lines.Add('Поддержка Polylines');


if (GetDeviceCaps(Canvas.Handle, LINECAPS) and


LC_MARKER)=LC_MARKER then


FormDisplay.Memo1.Lines.Add('Поддержка Markers');


if (GetDeviceCaps(Canvas.Handle, LINECAPS) and


LC_POLYMARKER)=LC_POLYMARKER then


FormDisplay.Memo1.Lines.Add('Поддержка Multiple Markers');


if (GetDeviceCaps(Canvas.Handle, LINECAPS) and


LC_WIDE)=LC_WIDE then


FormDisplay.Memo1.Lines.Add('Поддержка Wide Lines');


if (GetDeviceCaps(Canvas.Handle, LINECAPS) and


LC_STYLED)=LC_STYLED then


FormDisplay.Memo1.Lines.Add('Поддержка Styled Lines');


if (GetDeviceCaps(Canvas.Handle, LINECAPS) and


LC_WIDESTYLED)=LC_WIDESTYLED then


FormDisplay.Memo1.Lines.Add('Поддержка Wide And Styled Lines');


if (GetDeviceCaps(Canvas.Handle, LINECAPS) and


LC_INTERIORS)=LC_INTERIORS then


FormDisplay.Memo1.Lines.Add('Поддержка Interiors');


end;


if GetDeviceCaps(Canvas.Handle, POLYGONALCAPS)=PC_NONE then


FormDisplay.Memo1.Lines.Add('Device Does Not Support Polygons')


else


begin


if (GetDeviceCaps(Canvas.Handle, POLYGONALCAPS) and


PC_POLYGON)=PC_POLYGON then


FormDisplay.Memo1.Lines.Add('Поддержка Alternate Fill Polygons');


if (GetDeviceCaps(Canvas.Handle, POLYGONALCAPS) and


PC_RECTANGLE)=PC_RECTANGLE then


FormDisplay.Memo1.Lines.Add('Поддержка Rectangles');


if (GetDeviceCaps(Canvas.Handle, POLYGONALCAPS) and


PC_WINDPOLYGON)=PC_WINDPOLYGON then


FormDisplay.Memo1.Lines.Add('Поддержка Winding Fill Polygons');


if (GetDeviceCaps(Canvas.Handle, POLYGONALCAPS) and


PC_SCANLINE)=PC_SCANLINE then


FormDisplay.Memo1.Lines.Add('Поддержка Single Scanlines');


if (GetDeviceCaps(Canvas.Handle, POLYGONALCAPS) and


PC_WIDE)=PC_WIDE then


FormDisplay.Memo1.Lines.Add('Поддержка Wide Borders');


if (GetDeviceCaps(Canvas.Handle, POLYGONALCAPS) and


PC_STYLED)=PC_STYLED then


FormDisplay.Memo1.Lines.Add('Поддержка Styled Borders');


if (GetDeviceCaps(Canvas.Handle, POLYGONALCAPS) and


PC_WIDESTYLED)=PC_WIDESTYLED then


FormDisplay.Memo1.Lines.Add('Поддержка Wide And Styled Borders');


if (GetDeviceCaps(Canvas.Handle, POLYGONALCAPS) and


PC_INTERIORS)=PC_INTERIORS then


FormDisplay.Memo1.Lines.Add('Поддержка Interiors');


end;


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_OP_CHARACTER)=TC_OP_CHARACTER then


FormDisplay.Memo1.Lines.Add('Capable of Character Output Precision');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_OP_STROKE)=TC_OP_STROKE then


FormDisplay.Memo1.Lines.Add('Capable of Stroke Output Precision');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_CP_STROKE)=TC_CP_STROKE then


FormDisplay.Memo1.Lines.Add('Capable of Stroke Clip Precision');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_CR_90)=TC_CR_90 then


FormDisplay.Memo1.Lines.Add('Поддержка 90 Degree Character Rotation');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_CR_ANY)=TC_CR_ANY then


FormDisplay.Memo1.Lines.Add('Поддержка Character Rotation to Any Angle');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_SF_X_YINDEP)=TC_SF_X_YINDEP then


FormDisplay.Memo1.Lines.Add('X And Y Scale Independent');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_SA_DOUBLE)=TC_SA_DOUBLE then


FormDisplay.Memo1.Lines.Add('Поддержка Doubled Character Scaling');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_SA_INTEGER)=TC_SA_INTEGER then


FormDisplay.Memo1.Lines.Add('Поддержка Integer Multiples Only When Scaling');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_SA_CONTIN)=TC_SA_CONTIN then


FormDisplay.Memo1.Lines.Add('Поддержка Any Multiples For Exact Character Scaling');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_EA_DOUBLE)=TC_EA_DOUBLE then


FormDisplay.Memo1.Lines.Add('Поддержка Double Weight Characters');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_IA_ABLE)=TC_IA_ABLE then


FormDisplay.Memo1.Lines.Add('Поддержка Italics');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_UA_ABLE)=TC_UA_ABLE then


FormDisplay.Memo1.Lines.Add('Поддержка Underlines');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_SO_ABLE)=TC_SO_ABLE then


FormDisplay.Memo1.Lines.Add('Поддержка Strikeouts');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_RA_ABLE)=TC_RA_ABLE then


FormDisplay.Memo1.Lines.Add('Поддержка Raster Fonts');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_VA_ABLE)=TC_VA_ABLE then


FormDisplay.Memo1.Lines.Add('Поддержка Vector Fonts');


if (GetDeviceCaps(Canvas.Handle, TEXTCAPS) and


TC_SCROLLBLT)=TC_SCROLLBLT then


FormDisplay.Memo1.Lines.Add('Cannot Scroll Using Blts');


//Видеорежим


begin


i := 0;


while EnumDisplaySettings(nil, i, Modes[i]) do


begin


FormDisplay.Memo2.Lines.Add(IntToStr(Modes[i].dmBitsPerPel)+' '+IntToStr(Modes[i].dmPelsWidth)+' '+


IntToStr(Modes[i].dmPelsHeight)+' '+IntToStr(Modes[i].dmDisplayFrequency));


Inc(i);


end;


end;


Form1.Visible:=False;


FormDisplay.Visible:=True;


end;


procedure TForm1.Image8Click(Sender: TObject);


begin


Form1.Visible:=False;


FormDiski.Visible:=True;


end;


procedure TForm1.Image7Click(Sender: TObject);


var


lpDisplayDevice: TDisplayDevice;


dwFlags: DWORD;


cc: DWORD;


begin


lpDisplayDevice.cb := sizeof(lpDisplayDevice);


dwFlags := 0;


cc := 0;


while EnumDisplayDevices(nil, cc, lpDisplayDevice, dwFlags) do


begin


dec(cc);


FormVideo.Video1.Caption:=(lpDisplayDevice.DeviceString);


Form1.Visible:=False;


FormVideo.Visible:=True;


end;


end;


procedure TForm1.Image6Click(Sender: TObject);


begin


Form1.Visible:=False;


FormAbout.Visible:=True;


end;


end.


unit Unit2;


interface


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, StdCtrls, Buttons, ExtCtrls, TeEngine, Series, TeeProcs, Chart,


DbChart, jpeg, registry;


type


TFormCPUSpeed = class(TForm)


LabelCPUSpeed: TLabel;


BitBtnStart: TBitBtn;


BitBtnStop: TBitBtn;


Timer1: TTimer;


Chart1: TChart;


Label1: TLabel;


Image1: TImage;


Series1: TFastLineSeries;


Label2: TLabel;


Label3: TLabel;


Label4: TLabel;


Label5: TLabel;


LabelCPUName: TLabel;


LabelCPUSpeedSR: TLabel;


LabelCPUStat: TLabel;


Label7: TLabel;


Label6: TLabel;


procedure BitBtnStartClick(Sender: TObject);


procedure BitBtnStopClick(Sender: TObject);


procedure Timer1Timer(Sender: TObject);


procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);


private


{ Private declarations }


Stop: Boolean;


public


{ Public declarations }


end;


var


FormCPUSpeed: TFormCPUSpeed;


Flag:Integer;


implementation


uses Unit1;


{$R *.DFM}


function GetCPUSpeed: Double;


const


DelayTime = 500;


var


TimerHi, TimerLo: DWORD;


PriorityClass, Priority: Integer;


begin


PriorityClass := GetPriorityClass(GetCurrentProcess);


Priority := GetThreadPriority(GetCurrentThread);


SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);


SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);


Sleep(10);


asm


dw 310Fh


mov TimerLo, eax


mov TimerHi, edx


end;


Sleep(DelayTime);


asm


dw 310Fh


sub eax, TimerLo


sbb edx, TimerHi


mov TimerLo, eax


mov TimerHi, edx


end;


SetThreadPriority(GetCurrentThread, Priority);


SetPriorityClass(GetCurrentProcess, PriorityClass);


Result := TimerLo / (1000.0 * DelayTime);


end;


procedure TFormCPUSpeed.BitBtnStartClick(Sender: TObject);


begin


BitBtnStart.Enabled := False;


BitBtnStop.Enabled := True;


Stop := False;


while not Stop do


begin


LabelCPUSpeed.Caption := FloatToStr(GetCPUSpeed);


Application.ProcessMessages;


end;


BitBtnStart.Enabled := True;


BitBtnStop.Enabled := False;


end;


procedure TFormCPUSpeed.BitBtnStopClick(Sender: TObject);


begin


Stop := True;


FormCPUSpeed.Visible:=False;


Form1.Visible:=True;


end;


procedure TFormCPUSpeed.Timer1Timer(Sender: TObject);


var


i:Real;


begin


i:=StrToFloat(LabelCPUSpeed.Caption);


Series1.AddXY(Time,i,'',clNone);


if Series1.Count>20 then Series1.Delete(0);


LabelCPUSpeedSR.Caption:=FloatToStr(round(StrToFloat(LabelCPUSpeed.Caption)-(abs((Series1.FirstValueIndex-Series1.LastValueIndex))/2)));


if (StrToFloat(LabelCPUSpeedSR.Caption)>0)and(StrToFloat(LabelCPUSpeedSR.Caption)<=500)then begin LabelCPUStat.Caption:='1'; Label6.Caption:='-балл (Оченьслабый)'; end;


if (StrToFloat(LabelCPUSpeedSR.Caption)>500)and(StrToFloat(LabelCPUSpeedSR.Caption)<=1000)then begin LabelCPUStat.Caption:='2';Label6.Caption:='-балла (Слабый)';end;


if (StrToFloat(LabelCPUSpeedSR.Caption)>1000)and(StrToFloat(LabelCPUSpeedSR.Caption)<=1800)then begin LabelCPUStat.Caption:='3';Label6.Caption:='-балла (Средний)'; end;


if (StrToFloat(LabelCPUSpeedSR.Caption)>1800)and(StrToFloat(LabelCPUSpeedSR.Caption)<=2600)then begin LabelCPUStat.Caption:='4';Label6.Caption:='-балла (Хороший)'; end;


if (StrToFloat(LabelCPUSpeedSR.Caption)>2600)then begin LabelCPUStat.Caption:='5';Label6.Caption:='-баллов (Оченьхороший)';end;


end;


procedure TFormCPUSpeed.FormCloseQuery(Sender: TObject;


var CanClose: Boolean);


begin


Application.Terminate;


end;


end.


unit Unit6;


interface


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, StdCtrls, XPMan, FileCtrl, Buttons, jpeg, ExtCtrls;


type


TFormDiski = class(TForm)


VolumeSerial: TLabel;


FileSystemName: TLabel;


SectorsPerCluster: TLabel;


BytesPerSector: TLabel;


VolumeName: TLabel;


DriveComboBox1: TDriveComboBox;


Image1: TImage;


Image2: TImage;


BitBtn1: TBitBtn;


Label1: TLabel;


Label2: TLabel;


Label3: TLabel;


Label4: TLabel;


Label5: TLabel;


procedure FormShow(Sender: TObject);


procedure DriveComboBox1Change(Sender: TObject);


procedure BitBtn1Click(Sender: TObject);


private


{ Private declarations }


procedure UpdateDisk;


public


{ Public declarations }


end;


var


FormDiski: TFormDiski;


implementation


uses Unit1;


{$R *.dfm}


procedure TFormDiski.FormShow(Sender: TObject);


begin


UpdateDisk;


end;


procedure TFormDiski.UpdateDisk;


var


lpRootPathName : PChar;


lpVolumeNameBuffer : PChar;


nVolumeNameSize : DWORD;


lpVolumeSerialNumber : DWORD;


lpMaximumComponentLength : DWORD;


lpFileSystemFlags : DWORD;


lpFileSystemNameBuffer : PChar;


nFileSystemNameSize : DWORD;


FSectorsPerCluster: DWORD;


FBytesPerSector : DWORD;


FFreeClusters : DWORD;


FTotalClusters : DWORD;


begin


lpVolumeNameBuffer := '';


lpVolumeSerialNumber := 0;


lpMaximumComponentLength:= 0;


lpFileSystemFlags := 0;


lpFileSystemNameBuffer := '';


try


GetMem(lpVolumeNameBuffer, MAX_PATH + 1);


GetMem(lpFileSystemNameBuffer, MAX_PATH + 1);


nVolumeNameSize := MAX_PATH + 1;


nFileSystemNameSize := MAX_PATH + 1;


lpRootPathName := PChar(FormDiski.DriveComboBox1.Drive+':');


if GetVolumeInformation( lpRootPathName, lpVolumeNameBuffer,


nVolumeNameSize, @lpVolumeSerialNumber, lpMaximumComponentLength,


lpFileSystemFlags, lpFileSystemNameBuffer, nFileSystemNameSize )


then


begin


VolumeName.Caption := lpVolumeNameBuffer;


VolumeSerial.Caption := IntToHex(HIWord(lpVolumeSerialNumber), 4) + '-' + IntToHex(LOWord(lpVolumeSerialNumber), 4);


FileSystemName.Caption:= lpFileSystemNameBuffer;


GetDiskFreeSpace( PChar(DriveComboBox1.Drive+':'), FSectorsPerCluster, FBytesPerSector, FFreeClusters, FTotalClusters);


end;


finally


FreeMem(lpVolumeNameBuffer);


FreeMem(lpFileSystemNameBuffer);


end;


SectorsPerCluster.Caption:=IntToStr(FSectorsPerCluster);


BytesPerSector.Caption:=IntToStr(FBytesPerSector);


end;


procedure TFormDiski.DriveComboBox1Change(Sender: TObject);


begin


UpdateDisk;


end;


procedure TFormDiski.BitBtn1Click(Sender: TObject);


begin


FormDiski.Visible:=False;


Form1.Visible:=True;


end;


end.


СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ


1. Архангельский А.Я. Москва 2003 “Delphi 7.0”


2. Фаронов В.В. Санкт-Питербург “Питер” 2004 “Delphi программирование на языке высокого уровня”


3. http://delphimastak.ru


4. Лекции по “СПО”

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Мониторинг ОС

Слов:3416
Символов:45065
Размер:88.02 Кб.