Получить информацию об операционной системе (платформа Windows; версия Service Pack) с помощью среды программирования Delphi.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
g: OSVERSIONINFO;
begin
g.dwOSVersionInfoSize:= sizeof(g);
GetVersionEx(g);
Label1.Caption:= 'Версия ОС: ' + IntToStr(g.dwMajorVersion)+ '.'+
IntToStr(g.dwMinorVersion)+' номер сборки '+ IntToStr(g.dwBuildNumber);
Label2.Caption:= 'Размер структуры: '+IntToStr(g.dwOSVersionInfoSize)+' байт';
Label3.Caption:= 'платформа Win: '+ IntToStr(g.dwPlatformId);
Label4.Caption:= ''+ g.szCSDVersion;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Button1.Click;
end;
Получить информацию из реестра с помощью среды программирования Delphi.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, registry, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
ListBox2: TListBox;
Button2: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ListBox1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ListBox2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
reg: TRegistry;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
s: TStrings;
r: TRegDataInfo;
t: String;
r1: TRegKeyInfo;
x: Integer;
begin
reg:= TRegistry.Create;
s:= TStringList.Create;
reg.RootKey:= HKEY_LOCAL_MACHINE;
reg.OpenKeyReadOnly('Software');
//t:= reg.ReadString('flash');
reg.GetKeyInfo(r1);
s.Capacity:= r1.NumSubKeys;
//for x:= 1 to r1.NumSubKeys+1 do
//s.Append('');
reg.GetKeyNames(s);
try
for x:= 0 to s.Capacity-1 do
ListBox1.Items.Add(s[x]);
except
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
reg.CloseKey;
reg.Destroy;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
var
s: string;
ss: TStrings;
x: Integer;
q: TRegKeyInfo;
begin
ListBox2.Clear;
ss:= TStringList.Create;
s:= ListBox1.Items.Strings[ListBox1.ItemIndex];
reg.OpenKeyReadOnly(s);
reg.GetKeyInfo(q);
ss.Capacity:= q.NumValues;
reg.GetValueNames(ss);
try
for x:= 0 to q.NumValues-1 do
ListBox2.Items.Add(ss[x]);
except
end;
//reg.OpenKeyReadOnly('Software');
Button1.Click;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ListBox1.Clear;
Button1.Click;
end;
procedure TForm1.ListBox2Click(Sender: TObject);
var
s,s1,t: string;
ss: TStrings;
x: Integer;
q: TRegKeyInfo;
begin
try
s:= ListBox1.Items.Strings[ListBox1.ItemIndex];
s1:= ListBox2.Items.Strings[ListBox2.ItemIndex];
reg.OpenKeyReadOnly(s);
t:= reg.ReadString(s1);
Label1.Caption:= 'Значение: ' + t;
except
end;
7 Получение информации о системных каталогах Windows (имя системного каталога; размер буфера) с помощью среды программирования Delphi.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
var
buf: array [0..255] of char;
begin
GetSystemDirectory(@buf,sizeof(buf));
Label1.Caption:= buf;
Label2.Caption:= 'размер буфера: ' + IntToStr(sizeof(buf)) + ' бит';
end;
end.
Получение информации о диске (имя диска; серийный номер; размер буфера) с помощью среды программирования Delphi.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FileCtrl;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
DriveComboBox1: TDriveComboBox;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
var
RootPath: Pchar;
VolumenameBUF: array [0..255] of Pchar;
VolumenameSIZE: Cardinal;
VolumeSerialNum: DWORD;
MaxComponentLenth: Cardinal;
filesysFlags: Cardinal;
FileSysNameBuf: array [0..255] of Pchar;
FileSysNameSize: Cardinal;
begin
RootPath:= Pchar(DriveComboBox1.Drive+':\');
VolumenameSIZE:= sizeof(VolumenameBUF);
GetVolumeInformation(RootPath,@VolumenameBUF,VolumenameSIZE,@VolumeSerialNum,
MaxComponentLenth,filesysFlags,@FileSysNameBuf,FileSysNameSize);
Memo1.Clear;
Memo1.Lines.Add('Имя диска '+DriveComboBox1.Drive+':\');
Memo1.Lines.Add('Серийный номер'+IntToStr(VolumeSerialNum));
Memo1.Lines.Add('Размер буфера'+IntToStr(sizeof(FileSysNameBuf)));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.OnShow(nil)
end;
9-13 9 Получить информацию о состоянии системной памяти и виртуального адресного пространства заданного процесса с помощью среды программирования Delphi.
10Напрямую зарезервировать регион адресного пространства с помощью среды программирования Delphi.
11Передать зарезервированному региону физическую память с помощью среды программирования Delphi.
12Освободить регионы адресного пространства с помощью среды программирования Delphi.
13Изменить атрибуты защиты страниц виртуальной памяти с помощью среды программирования Delphi.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
Edit1: TEdit;
GroupBox1: TGroupBox;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
GroupBox2: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Button2: TButton;
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
var
r: SYSTEM_INFO;
s: MEMORYSTATUS;
Process: THandle;
Address: Pointer;
Buffer: TMemoryBasicInformation;
uLength: Cardinal;
begin
Memo1.Clear;
s.dwLength:= sizeof(s);
GlobalMemoryStatus(s);
GetSystemInfo(r);
Memo1.Lines.Add('Всего памяти: '+IntToStr(s.dwTotalPhys));
Memo1.Lines.Add('Загрузка памяти: '+IntToStr(s.dwAvailPhys));
Process:= StrToInt(Edit1.Text);
Address:= r.lpMinimumApplicationAddress;
VirtualQueryEx(Process,Address,Buffer,sizeof(Buffer));
Memo1.Lines.Add('');
Memo1.Lines.Add(''+IntToStr(Buffer.RegionSize));
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.OnShow(nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
x: Integer;
p: Pointer;
y: DWORD;
begin
p:= VirtualAlloc(nil,sizeof(x),MEM_RESERVE,PAGE_READONLY);
y:= DWORD(@p);
Label1.Caption:= 'начальный адрес: '+ IntToStr(y);
Label2.Caption:= 'объем памяти: ' + IntToStr(sizeof(p))+' байт';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
x: Integer;
p: Pointer;
y: DWORD;
f: byte;
begin
p:= VirtualAlloc(nil,sizeof(x),MEM_COMMIT,PAGE_READONLY);
VirtualProtect(p,sizeof(x),PAGE_READWRITE,@f);
VirtualLock(p,sizeof(x));
y:= DWORD(@p);
Label3.Caption:= 'начальный адрес: '+ IntToStr(y);
Label4.Caption:= 'объем памяти: ' + IntToStr(sizeof(p))+' байт';
VirtualUnlock(p,sizeof(x));
VirtualFree(p,sizeof(x),MEM_DECOMMIT);
14 Получить параметры виртуальных кодов клавиш и символов алфавитно-
цифровой группы клавиатуры (ASCII-код) с помощью среды программирования
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure h;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
k: Word;
implementation
{$R *.dfm}
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Label1.Caption:= 'нажата клавиша: ' + key;
h;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
k:= Key;
Label2.Caption:= 'код нажатой клавиши: '+ IntToStr(key);
h;
end;
procedure TForm1.h;
begin
if k = 13 then Label1.Caption:= 'нажата клавиша: Enter';
if k = 18 then Label1.Caption:= 'нажата клавиша: Atl';
if k = 17 then Label1.Caption:= 'нажата клавиша: Ctrl';
if k = 32 then Label1.Caption:= 'нажата клавиша: Spase';
end;