Студопедия — Unit1.pas
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Unit1.pas

Текст програми

unit Unit1;

 

interface

 

uses

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

Dialogs, StdCtrls, ExtCtrls, Unit2;

 

type

// Main form

TMainForm = class(TForm)

DoTestButton: TButton;

DoCloseButton: TButton;

TestsRadioGroup: TRadioGroup;

CheckBox1: TCheckBox;

CheckBox2: TCheckBox;

CheckBox3: TCheckBox;

CheckBox4: TCheckBox;

CheckBox5: TCheckBox;

CheckBox6: TCheckBox;

CheckBox7: TCheckBox;

CheckBox8: TCheckBox;

CheckBox9: TCheckBox;

InformGroupBox: TGroupBox;

OSWindows: TEdit;

OSFullName: TEdit;

OSKernelType: TEdit;

OSWindowsLabel: TLabel;

FullNameLabel: TLabel;

KernelTypeLabel: TLabel;

VideoInfoGroupBox: TGroupBox;

VideoInfoMemo: TMemo;

VideoAdapter: TEdit;

VideoAdapterLabel: TLabel;

SupVidModesLabel: TLabel;

procedure DoCloseButtonClick(Sender: TObject);

procedure DoTestButtonClick(Sender: TObject);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

MainForm: TMainForm;

 

implementation

 

{$R *.dfm}

 

function ReverseVideoSharpness(hWind: HWND):Integer;

var

dc: HDC;

Screen: TScreen;

sizes: TRect;

i: Integer;

Brush1, Brush2: HBRUSH;

begin

 

dc:=GetDC(hWind);

 

Brush1:= BLACK_BRUSH;

Brush2:= WHITE_BRUSH;

 

sizes.Left:=0;

sizes.Top:=0;

sizes.Right:=Screen.Width;

sizes.Bottom:=Trunc(Screen.Height/2);

 

SelectObject(dc, GetStockObject(Brush1));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

sizes.Left:=0;

sizes.Top:=Trunc(Screen.Height/2);

sizes.Right:=Screen.Width;

sizes.Bottom:=Screen.Height;

SelectObject(dc, GetStockObject(Brush2));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

for i:=0 to 50 do

begin

sizes.Left:=1+100*i;

sizes.Top:=0;

sizes.Right:=100+100*i;

sizes.Bottom:=Trunc(Screen.Height/2);

 

SelectObject(dc, GetStockObject(Brush2));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

sizes.Left:=1+100*i;

sizes.Top:=Trunc(Screen.Height/2)+1;

sizes.Right:=100+100*i;

sizes.Bottom:=Screen.Height;

 

SelectObject(dc, GetStockObject(Brush1));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

end;

 

ReleaseDC(hWind,dc);

end;

 

function FlickerSeverity(hWind: HWND):Integer;

var

Screen: TScreen;

dc: HDC;

sizes: TRect;

begin

 

dc:=GetDC(hWind);

 

sizes.Left:=0;

sizes.Top:=0;

 

sizes.Right:=Screen.Width;

sizes.Bottom:=Screen.Height;

 

SelectObject(dc, GetStockObject(WHITE_BRUSH));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

ReleaseDC(hWind,dc);

 

end;

 

function GlareSeverity(hWind: HWND):Integer;

var

Screen: TScreen;

dc: HDC;

sizes: TRect;

begin

 

dc:=GetDC(hWind);

 

sizes.Left:=0;

sizes.Top:=0;

 

sizes.Right:=Screen.Width;

sizes.Bottom:=Screen.Height;

 

SelectObject(dc, GetStockObject(BLACK_BRUSH));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

ReleaseDC(hWind,dc);

 

end;

 

function InterlacingDetecting(hWind: HWND):Integer;

var

Screen: TScreen;

dc: HDC;

sizes: TRect;

x,y: Integer;

x1,x2,y1,y2: Integer;

oldPoint: PPOINT;

begin

dc:=GetDC(hWind);

 

sizes.Left:=0;

sizes.Top:=0;

 

sizes.Right:=Screen.Width;

sizes.Bottom:=Screen.Height;

y:=0;

while y <> sizes.Bottom do begin

x1:=Screen.Width;

y1:=y;

SelectObject(dc, GetStockObject(BLACK_BRUSH));

MoveToEx(dc,0,y1, oldPoint);

LineTo(dc,x1,y1);

 

x2:=Screen.Width;

y2:=y+2;

MoveToEx(dc,0,y2, oldPoint);

SelectObject(dc, GetStockObject(WHITE_BRUSH));

LineTo(dc,x2,y2);

y:=y+4;

end;

 

ReleaseDC(hWind,dc);

end;

 

function ScreenRegulation(Form:TForm):Integer;

var

Screen: TScreen;

hWind: hWnd;

dc: HDC;

sizes: TRect;

i: Integer;

Brush1, Brush2: HBRUSH;

 

begin

 

hWind:=Form.Handle;

dc:=GetDC(hWind);

 

i:=0;

 

while i<>3 do begin

 

if (i div 2)=0 then

begin

Brush1:= BLACK_BRUSH;

Brush2:= WHITE_BRUSH;

end

else

begin

Brush1:= WHITE_BRUSH;

Brush2:= BLACK_BRUSH;

end;

 

sizes.Left:=0;

sizes.Top:=0;

sizes.Right:=Screen.Width;

sizes.Bottom:=Trunc(Screen.Height/2);

 

SelectObject(dc, GetStockObject(Brush1));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

 

sizes.Left:=0;

sizes.Top:=Trunc(Screen.Height/2);

sizes.Right:=Screen.Width;

sizes.Bottom:=Screen.Height;

SelectObject(dc, GetStockObject(Brush2));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

inc (i);

 

end;

 

ReleaseDC(hWind,dc);

end;

 

function PrimaryColorPurity(hWind: HWND):Integer;

var

Screen: TScreen;

dc: HDC;

sizes: TRect;

delta: Integer;

begin

dc:=GetDC(hWind);

 

sizes.Left:=0;

sizes.Top:=0;

 

sizes.Right:=Screen.Width;

sizes.Bottom:=Screen.Height;

 

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(0,0,0));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

// Draw RED

sizes.Left:=25;

sizes.Top:=80;

 

delta:=Trunc(Screen.Width/3);

sizes.Right:=delta-25;

sizes.Bottom:=Screen.Height-80;

 

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(255,0,0));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

// Draw GREEN

sizes.Left:=delta*2-25;

sizes.Top:=80;

 

sizes.Right:=delta;

sizes.Bottom:=Screen.Height-80;

 

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(0,255,0));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

// Draw BLUE

sizes.Left:=delta*3-25;

sizes.Top:=80;

 

sizes.Right:=delta*2;

sizes.Bottom:=Screen.Height-80;

 

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(0,0,255));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

ReleaseDC(hWind,dc);

end;

 

function ColorIntensityGradient(hWind: HWND):Integer;

var

Screen: TScreen;

dc: HDC;

sizes: TRect;

delta: Integer;

i, j, minX, maxX, minY, maxY: Integer;

countColor, CurrentColor: Integer;

oldPoint: PPOINT;

begin

 

dc:=GetDC(hWind);

sizes.Left:=0;

sizes.Top:=0;

 

sizes.Right:=Screen.Width;

sizes.Bottom:=Screen.Height;

// Fill screen with black color

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(0,0,0));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

//----------------------------------------------------------------

 

delta:=Trunc(Screen.Height/8);

countColor:=Trunc(Screen.Width/254);

minY:=0;

maxY:=delta;

 

minX:=0;

maxX:=Screen.Width;

 

// Draw BLACK gradient

sizes.Left:=0;

sizes.Top:=0;

 

sizes.Right:=0;

sizes.Bottom:=delta;

j:=0;

CurrentColor:=0;

 

for i:=0 to maxX-1 do

begin

if j=countColor then

begin

inc(CurrentColor);

j:=0;

end;

MoveToEx(dc,i, sizes.Top, nil);

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(0,0,0));

LineTo(dc, i, sizes.Bottom);

inc(j);

end;

// Draw RED gradient

sizes.Left:=0;

sizes.Top:=delta;

 

sizes.Right:=0;

sizes.Bottom:=delta*2;

j:=0;

CurrentColor:=0;

 

for i:=0 to maxX-1 do

begin

if j=countColor then

begin

inc(CurrentColor);

j:=0;

end;

MoveToEx(dc,i, sizes.Top, nil);

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(CurrentColor,0,0));

LineTo(dc, i, sizes.Bottom);

inc(j);

end;

 

// Draw GREEN gradient

sizes.Left:=0;

sizes.Top:=delta*2;

 

sizes.Right:=0;

sizes.Bottom:=delta*3;

j:=0;

CurrentColor:=0;

 

for i:=0 to maxX-1 do

begin

if j=countColor then

begin

inc(CurrentColor);

j:=0;

end;

MoveToEx(dc,i, sizes.Top, nil);

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(0,CurrentColor,0));

LineTo(dc, i, sizes.Bottom);

inc(j);

end;

 

// Draw YELLOW gradient

sizes.Left:=0;

sizes.Top:=delta*3;

 

sizes.Right:=0;

sizes.Bottom:=delta*4;

j:=0;

CurrentColor:=0;

 

for i:=0 to maxX-1 do

begin

if j=countColor then

begin

inc(CurrentColor);

j:=0;

end;

MoveToEx(dc,i, sizes.Top, nil);

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(CurrentColor,CurrentColor,0));

LineTo(dc, i, sizes.Bottom);

inc(j);

end;

 

// Draw BLUE gradient

sizes.Left:=0;

sizes.Top:=delta*4;

 

sizes.Right:=0;

sizes.Bottom:=delta*5;

j:=0;

CurrentColor:=0;

 

for i:=0 to maxX-1 do

begin

if j=countColor then

begin

inc(CurrentColor);

j:=0;

end;

MoveToEx(dc,i, sizes.Top, nil);

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(0,0,CurrentColor));

LineTo(dc, i, sizes.Bottom);

inc(j);

end;

 

// Draw CYAN gradient

sizes.Left:=0;

sizes.Top:=delta*5;

 

sizes.Right:=0;

sizes.Bottom:=delta*6;

j:=0;

CurrentColor:=0;

 

for i:=0 to maxX-1 do

begin

if j=countColor then

begin

inc(CurrentColor);

j:=0;

end;

MoveToEx(dc,i, sizes.Top, nil);

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(CurrentColor,0,CurrentColor));

LineTo(dc, i, sizes.Bottom);

inc(j);

end;

 

// Draw PURPLE gradient

sizes.Left:=0;

sizes.Top:=delta*5;

 

sizes.Right:=0;

sizes.Bottom:=delta*6;

j:=0;

CurrentColor:=0;

 

for i:=0 to maxX-1 do

begin

if j=countColor then

begin

inc(CurrentColor);

j:=0;

end;

MoveToEx(dc,i, sizes.Top, nil);

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(CurrentColor,0,CurrentColor));

LineTo(dc, i, sizes.Bottom);

inc(j);

end;

 

// Draw LIGHT BLUE gradient

sizes.Left:=0;

sizes.Top:=delta*6;

 

sizes.Right:=0;

sizes.Bottom:=delta*7;

j:=0;

CurrentColor:=0;

 

for i:=0 to maxX-1 do

begin

if j=countColor then

begin

inc(CurrentColor);

j:=0;

end;

MoveToEx(dc,i, sizes.Top, nil);

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(0,CurrentColor,CurrentColor));

LineTo(dc, i, sizes.Bottom);

inc(j);

end;

 

// Draw GREY gradient

sizes.Left:=0;

sizes.Top:=delta*7;

 

sizes.Right:=0;

sizes.Bottom:=delta*8;

j:=0;

CurrentColor:=0;

 

for i:=0 to maxX-1 do

begin

if j=countColor then

begin

inc(CurrentColor);

j:=0;

end;

MoveToEx(dc,i, sizes.Top, nil);

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(CurrentColor,CurrentColor,CurrentColor));

LineTo(dc, i, sizes.Bottom);

inc(j);

end;

ReleaseDC(hWind,dc);

end;

 

function ColorAlignmentGrid(hWind: HWND):Integer;

var

Screen: TScreen;

dc: HDC;

sizes: TRect;

deltaX, deltaY: Integer;

i: Integer;

begin

dc:=GetDC(hWind);

 

sizes.Left:=0;

sizes.Top:=0;

 

sizes.Right:=Screen.Width;

sizes.Bottom:=Screen.Height;

 

// Fill screen with black color

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(0,0,0));

 

SelectObject(dc, GetStockObject(DC_PEN));

SetDCPenColor(dc, RGB(0,255,0));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

deltaX:=Trunc(Screen.Width/8);

deltaY:=Trunc(Screen.Height/8);

 

for i:=0 to 8 do

begin

// Horizontal Lines

MoveToEx(dc,0, deltaY*i,nil);

LineTo(dc, Screen.Width, deltaY*i);

// Vertical Lines

MoveToEx(dc, deltaX*i, 0,nil);

LineTo(dc, deltaX*i, Screen.Height);

end;

 

 

ReleaseDC(hWind,dc);

end;

 

function ColorSynchronization(hWind: HWND):Integer;

var

Screen: TScreen;

dc: HDC;

sizes: TRect;

delta: Integer;

 

begin

dc:=GetDC(hWind);

 

sizes.Left:=0;

sizes.Top:=0;

 

sizes.Right:=Screen.Width;

sizes.Bottom:=Screen.Height;

 

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(0,0,0));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

// Draw CYAN

sizes.Left:=80;

sizes.Top:=80;

 

delta:=Trunc(Screen.Width/3);

sizes.Right:=delta;

sizes.Bottom:=Screen.Height-80;

 

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(0,255,255));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

// Draw RED

sizes.Left:=delta*2;

sizes.Top:=80;

 

sizes.Right:=delta;

sizes.Bottom:=Screen.Height-80;

 

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(255,0,0));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

// Draw CYAN

sizes.Left:=delta*3-80;

sizes.Top:=80;

 

sizes.Right:=delta*2;

sizes.Bottom:=Screen.Height-80;

 

SelectObject(dc, GetStockObject(DC_BRUSH));

SetDCBrushColor(dc, RGB(0,255,255));

Rectangle(dc, sizes.Left, sizes.Top, sizes.Right, sizes.Bottom);

 

ReleaseDC(hWind,dc);

end;

 

function GetWindowsOSInfo():String;

var

OSVerInfo: OSVERSIONINFO;

begin

OSVerInfo.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);

 

GetVersionEx(OSVerInfo);

 

if (OSVerInfo.dwMajorVersion=5) and (OSVerInfo.dwMinorVersion=2) then GetWindowsOSInfo:='Microsoft Windows Server 2003 5.2.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' (Win32 x86)' + ' (' + OSVerInfo.szCSDVersion+')'

else

if (OSVerInfo.dwMajorVersion=5) and (OSVerInfo.dwMinorVersion=1) then GetWindowsOSInfo:='Microsoft Windows XP 5.1.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' (Win32 x86)' +' (' + OSVerInfo.szCSDVersion + ')'

else

if (OSVerInfo.dwMajorVersion=5) and (OSVerInfo.dwMinorVersion=0) then GetWindowsOSInfo:='Microsoft Windows 2000 5.0.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' (Win32 x86)' + ' (' + OSVerInfo.szCSDVersion + ')'

else

if (OSVerInfo.dwMajorVersion=4) and (OSVerInfo.dwMinorVersion=0) and (OSVerInfo.dwPlatformID=VER_PLATFORM_WIN32_NT) then GetWindowsOSInfo:='Microsoft Windows NT 4.0.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' (Win32 x86)' + ' (' + OSVerInfo.szCSDVersion + ')'

else

if (OSVerInfo.dwMajorVersion=4) and (OSVerInfo.dwMinorVersion=90) then GetWindowsOSInfo:='Microsoft Windows ME Build:' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' (Win32 x86)' + ' (' + OSVerInfo.szCSDVersion + ')'

else

if (OSVerInfo.dwMajorVersion=4) and (OSVerInfo.dwMinorVersion=10)and (OSVerInfo.dwPlatformID=VER_PLATFORM_WIN32_WINDOWS) then GetWindowsOSInfo:='Microsoft Windows 98 Build:' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' (Win32 x86)' + ' (' + OSVerInfo.szCSDVersion + ')'

else

if (OSVerInfo.dwMajorVersion=4) and (OSVerInfo.dwMinorVersion=0)and (OSVerInfo.dwPlatformID=VER_PLATFORM_WIN32_WINDOWS) then GetWindowsOSInfo:='Microsoft Windows 95 Build:' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' (Win32 x86)' + ' (' + OSVerInfo.szCSDVersion + ')'

else

if (OSVerInfo.dwMajorVersion=3) and (OSVerInfo.dwMinorVersion=51)and (OSVerInfo.dwPlatformID=VER_PLATFORM_WIN32s) then GetWindowsOSInfo:='Microsoft Windows NT 3.51.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' (Win32 x86)' + ' (' + OSVerInfo.szCSDVersion + ')'

else GetWindowsOSInfo:='OS version undefined';

 

 

end;

 

function GetFullOSInfo():String;

var

OSVerInfo: OSVERSIONINFO;

begin

 

OSVerInfo.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);

 

GetVersionEx(OSVerInfo);

 

if (OSVerInfo.dwMajorVersion=5) and (OSVerInfo.dwMinorVersion=2) then GetFullOSInfo:='Microsoft Windows Server 2003 5.2.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' ' + OSVerInfo.szCSDVersion

else

if (OSVerInfo.dwMajorVersion=5) and (OSVerInfo.dwMinorVersion=1) then GetFullOSInfo:='Microsoft Windows XP 5.1.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' ' + OSVerInfo.szCSDVersion

else

if (OSVerInfo.dwMajorVersion=5) and (OSVerInfo.dwMinorVersion=0) then GetFullOSInfo:='Microsoft Windows 2000 5.0.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' ' + OSVerInfo.szCSDVersion

else

if (OSVerInfo.dwMajorVersion=4) and (OSVerInfo.dwMinorVersion=0) and (OSVerInfo.dwPlatformID=VER_PLATFORM_WIN32_NT) then GetFullOSInfo:='Microsoft Windows NT 4.0.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' ' + OSVerInfo.szCSDVersion

else

if (OSVerInfo.dwMajorVersion=4) and (OSVerInfo.dwMinorVersion=90) then GetFullOSInfo:='Microsoft Windows ME Build:' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' ' + OSVerInfo.szCSDVersion

else

if (OSVerInfo.dwMajorVersion=4) and (OSVerInfo.dwMinorVersion=10)and (OSVerInfo.dwPlatformID=VER_PLATFORM_WIN32_WINDOWS) then GetFullOSInfo:='Microsoft Windows 98 Build:' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' ' + OSVerInfo.szCSDVersion

else

if (OSVerInfo.dwMajorVersion=4) and (OSVerInfo.dwMinorVersion=0)and (OSVerInfo.dwPlatformID=VER_PLATFORM_WIN32_WINDOWS) then GetFullOSInfo:='Microsoft Windows 95 Build:' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' ' + OSVerInfo.szCSDVersion

else

if (OSVerInfo.dwMajorVersion=3) and (OSVerInfo.dwMinorVersion=51)and (OSVerInfo.dwPlatformID=VER_PLATFORM_WIN32s) then GetFullOSInfo:='Microsoft Windows NT 3.51.' + (IntToStr(OSVerInfo.dwBuildNumber)) + ' ' + OSVerInfo.szCSDVersion

else GetFullOSInfo:='OS version undefined';

end;

 

function GetKernelOSInfo():String;

var

OSVerInfo: OSVERSIONINFO;

KernelType: String;

Registry: TRegistry;

begin

OSVerInfo.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);

GetVersionEx(OSVerInfo);

if OSVerInfo.dwPlatformID=VER_PLATFORM_WIN32_NT then

begin

Registry:= TRegistry.Create(KEY_READ);

Registry.RootKey:= HKEY_LOCAL_MACHINE;

Registry.OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows NT\CurrentVersion\');

KernelType:= Registry.ReadString('CurrentType');

Registry.Free;

GetKernelOSInfo:=KernelType;

end

else GetKernelOSInfo:='SMP unsupported';

 

end;

 

function GetVideoResolutions(ModeNumber: DWORD; var res: BOOL):String;

var

DeviceName: PChar;

DeviceMode: TDeviceMode;

i: integer;

XRes,YRes, Freq, Col: Integer;

begin

DeviceMode.dmSize:=sizeof(DeviceMode);

res:=EnumDisplaySettings (nil, ModeNumber, DeviceMode);

XRes:=DeviceMode.dmPelsWidth;

YRes:=DeviceMode.dmPelsHeight;

Freq:=DeviceMode.dmDisplayFrequency;

Col:=DeviceMode.dmBitsPerPel;

GetVideoResolutions:=IntToStr(XRes) + 'x' + IntToStr(YRes) +'x' + IntToStr(Col)+ 'bpp ' + IntToStr(Freq) + 'Hz';

end;

function GetVideoAdapterName():String;

var

DisplayDevice: TDisplayDevice;

 

begin

DisplayDevice.cb:=sizeof(DisplayDevice);

EnumDisplayDevices (nil, 0, DisplayDevice, 0);

GetVideoAdapterName:=DisplayDevice.DeviceString;

end;

 

//*---------------------------------------------------------*//

procedure TMainForm.DoCloseButtonClick(Sender: TObject);

begin

Close();

end;

 

procedure TMainForm.DoTestButtonClick(Sender: TObject);

Var

Screen: TScreen;

hWindow: HWND;

Window_HDC: HDC;

 

begin

 

DrawForm.Width:=Screen.Width;

DrawForm.Height:=Screen.Height;

DrawForm.Show;

hWindow:=DrawForm.Handle;

 

if CheckBox1.Checked=true then ReverseVideoSharpness(hWindow);

 

if CheckBox2.Checked=true then FlickerSeverity(hWindow);

if CheckBox3.Checked=true then GlareSeverity(hWindow);

if CheckBox4.Checked=true then InterlacingDetecting(hWindow);

if CheckBox5.Checked=true then ScreenRegulation(DrawForm);

if CheckBox6.Checked=true then PrimaryColorPurity(hWindow);

if CheckBox7.Checked=true then ColorIntensityGradient(hWindow);

if CheckBox8.Checked=true then ColorAlignmentGrid(hWindow);

if CheckBox9.Checked=true then ColorSynchronization(hWindow);

 

end;

 

procedure TMainForm.FormShow(Sender: TObject);

var

i: Cardinal;

res: BOOL;

begin

OSFullName.Text:=GetFullOSInfo;

OSWindows.Text:=GetWindowsOSInfo;

OSKernelType.Text:=GetKernelOSInfo;

// Get Video Modes

i:=0;

res:=TRUE;

while (res<>FALSE) do

begin

VideoInfoMemo.Lines.Add(GetVideoResolutions(i,res));

inc(i);

end;

// Get Display Adapter Parameters

VideoAdapter.Text:=GetVideoAdapterName;

end;

end.




<== предыдущая лекция | следующая лекция ==>
Биологически активные добавки. Пробиотики. | How to Taste?

Дата добавления: 2015-09-07; просмотров: 324. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Растягивание костей и хрящей. Данные способы применимы в случае закрытых зон роста. Врачи-хирурги выяснили...

ФАКТОРЫ, ВЛИЯЮЩИЕ НА ИЗНОС ДЕТАЛЕЙ, И МЕТОДЫ СНИЖЕНИИ СКОРОСТИ ИЗНАШИВАНИЯ Кроме названных причин разрушений и износов, знание которых можно использовать в системе технического обслуживания и ремонта машин для повышения их долговечности, немаловажное значение имеют знания о причинах разрушения деталей в результате старения...

Различие эмпиризма и рационализма Родоначальником эмпиризма стал английский философ Ф. Бэкон. Основной тезис эмпиризма гласит: в разуме нет ничего такого...

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия