Мониторинг ОС
Обновлено
42
Волжский университет имени В.Н. Татищева
Факультет “Информатика и телекоммуникации”
Кафедра “Информатика и системы управления”
КУРСОВАЯ РАБОТА
по дисциплине: “Системное программное обеспечение”
Тема: “Мониторинг ОС”Тольятти 200
СОДЕРЖАНИЕ
- Введение
- 1.1 Мониторинг ОС в современном мире
- 1.2 Программная часть
- 1.3 Задача программы
- 1.4 Описание программы
- 1.5 Программный код
- Список используемой литературы
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('\Hardware\DESCRIPTION\System\CentralProcessor\0',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 NT' 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. Лекции по “СПО”
