procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
h1: HWND; //ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΠΊΠ½Π°
procedure logon(); //Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π²ΡΠ΅, ΠΏΠΎΠΊΠ° ΠΏΠ°ΡΠΎΠ»Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²Π²Π΅Π΄Π΅Π½ Π²Π΅ΡΠ½ΠΎ
procedure check(); //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΡΠΎΠ»Ρ
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.check();
begin
if pass.Text = 'password' then //Π΅ΡΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Π²Π΅ΡΠ½ΡΠΉ
begin
//ΡΠ·Π½Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π Π°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°
h1:= FindWindow('Progman',nil);
//ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ Π Π°Π±ΠΎΡΠΈΠΌ ΡΡΠΎΠ»ΠΎΠΌ
ShowWindow(h1, sw_show);
// ΡΠ·Π½Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ
h1:= FindWindow('Shell_traywnd',nil);
//ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°Π½Π΅Π»ΡΡ Π·Π°Π΄Π°Ρ
ShowWindow(h1, sw_show);
halt; //Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
end // ΠΈΠ½Π°ΡΠ΅, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π΅Π²Π΅ΡΠ½ΠΎΠΌ ΠΏΠ°ΡΠΎΠ»Π΅
else ShowMessage('Wrong password!');
end;
procedure TForm1.logon();
begin
//ΡΠ·Π½Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π Π°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°
h1:= FindWindow('Progman', nil);
ShowWindow(h1, sw_hide); //ΠΏΡΡΡΠ΅ΠΌ Π Π°Π±ΠΎΡΠΈΠΉ ΡΡΠΎΠ»
// Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΠ°Π½Π΅Π»Ρ Π·Π°Π΄Π°Ρ
h1:= FindWindow('Shell_traywnd', nil);
ShowWindow(h1, sw_hide); //ΠΏΡΡΡΠ΅ΠΌ ΠΏΠ°Π½Π΅Π»Ρ Π·Π°Π΄Π°Ρ
{ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π½Π΅ Π·Π°ΠΏΡΡΠ΅Π½ Π»ΠΈ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ}
h1:= FindWindow(nil, 'ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°ΡWindows');
{Π΅ΡΠ»ΠΈ Π΄Π°, ΡΠΎ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° Π·Π°Π΄Π°Ρ}
if (h1 <> 0) then PostMessage(h1, WM_QUIT, 1, 0);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
logon;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
check;
end;
procedure TForm1.passKeyPress(Sender: TObject; var Key:Char);
begin
if key = #13 then // Π΅ΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ° <Enter>
check; //Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ check
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:= False;
end;
procedure TForm1.FormCreate(Sender; TObject);
var
Reg: TRegistry;//ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π΅ΡΡΡΠΎΠΌ
begin
Reg:= TRegistry.Create;
Reg.RootKey:= HKEY_CURRENT_USER; //ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', true); //ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°Π·Π΄Π΅Π» Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ Π² ΡΠ΅Π΅ΡΡΡΠ΅
//ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
Reg.WriteString('Logon', Application.ExeName);
Reg.CloseKey; //Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ΅Π΅ΡΡΡ
Reg.Free; //ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΠΏΠ°ΠΌΡΡΡ
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
h1:= FindWindow('Progman', nil); //ΠΏΠΎΠΈΡΠΊ Π Π°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°
ShowWindow(h1, sw_hide); //ΠΏΡΡΡΠ΅ΠΌ Π Π°Π±ΠΎΡΠΈΠΉ ΡΡΠΎΠ»
CloseWindow(h1); //ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ Π Π°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°
pass.SetFocus; //ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΠΊΡΡΡΠΎΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅
end;
end.
β ΠΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ Chapter 10.
ΠΠ»Π°Π²Π° 11
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ, ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΡΠΌΡ
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Delphi ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Caption ΡΠΎΡΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Memory Info.
ΠΠ»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Label ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Standard. Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΎΠ΄ΠΈΠ½ Π½Π°Π΄ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ΅ΠΌΡ ΡΠ°ΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΏΡΠΈΡΠ²ΠΎΠΈΠ² ΡΠ²ΠΎΠΉΡΡΠ²Ρ Left ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 230, Π° ΡΠ²ΠΎΠΉΡΡΠ²Ρ Caption β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0.
Π‘Π»Π΅Π²Π° ΠΎΡ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΠΌΠ΅ΡΠΎΠΊ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π² ΡΡΠΎΠ»Π±Π΅Ρ Π΅ΡΠ΅ ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Label, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΡΡΠ½ΡΡΡ ΡΠΈΡΠ»Π°, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ ΡΠ΅ΠΌΡΡ ΠΌΠ΅ΡΠΊΠ°ΠΌΠΈ. ΠΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Caption ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΡΠ²Π΅ΡΡ Ρ Π²Π½ΠΈΠ·): ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ:, ΠΡΠ΅Π³ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ:, Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ:, ΠΡΠ΅Π³ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ:. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ:, ΠΡΠ΅Π³ΠΎ swap: Π Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎ swap:.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΡΡΠΈ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Gauge ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Samples. Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²Π΄ΠΎΠ»Ρ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ ΡΠΎΡΠΌΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Kind Π½Π° gkVerticalBar, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Gauge.Progress ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΈΡΡ Π²Π΄ΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΊΠ°Π»Ρ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Π°Π²ΡΠΎΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Timer ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ System. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° SpinEdit ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Samples. Π Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ MaxValue Π½Π° 60, a MinValue β Π½Π° 1. ΠΡΠΎ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Π΄Π°Π²Π°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΡ 1 Π΄ΠΎ 60 ΡΠ΅ΠΊΡΠ½Π΄.
Π‘Π»Π΅Π²Π° ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° SpinEdit ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ½ΡΡΡΡΡ ΠΌΠ΅ΡΠΊΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ Π§Π°ΡΡΠΎΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ:, Π° ΡΠΏΡΠ°Π²Π° β ΠΌΠ΅ΡΠΊΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΡΠ΅ΠΊΡΠ½Π΄.
Π ΠΏΡΠ°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ³Π»Ρ ΡΠΎΡΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Button ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Standard) ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ Π΅Π΅ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Caption Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ. ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ SpinEdit ΡΠ°ΡΡΠΎΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ ΡΠΎΡΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΈΡ. 11.1.
Π ΠΈΡ. 11.1. Π€ΠΎΡΠΌΠ° Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ: ΠΏΠ΅ΡΠ²Π°Ρ β ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ Timer1.OnTimer, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ; Π²ΡΠΎΡΠ°Ρ β ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ OnClick ΠΊΠ½ΠΎΠΏΠΊΠΈ Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ°ΡΡΠΎΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π²Π½Π°ΡΠ°Π»Π΅ Π³Π»Π°Π²Π½ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ Timer1.OnTimer:
procedure TForm1.Timer1Timer(Sender: TObject);
var
mem: TMemoryStatus; //Ρ ΡΠ°Π½ΠΈΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ
begin
mem.dwLength:= SizeOf(mem); //ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ
GlobalMemoryStatus(mem); //ΡΠ·Π½Π°Π΅ΠΌ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ
//Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΊΠΈ
with mem do begin
// ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ
Label1.Caption:= IntToStr(dwMemoryLoad) + ' %';
Label2.Caption:= IntToStr((dwTotalPhys) div 1024) + 'ΠΠ±Π°ΠΉΡ'; // ΠΡΠ΅Π³ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ
Label3.Caption:= IntToStr((dwAvailPhys) div 1024) + 'ΠΠ±Π°ΠΉΡ'; // Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ
Label4.Caption:= IntToStr((dwTotalPageFile) div 1024) + 'ΠΠ±Π°ΠΉΡ'; // ΠΡΠ΅Π³ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ
Label5.Caption:= IntToStr((dwAvailPageFile) div 1024) + 'ΠΠ±Π°ΠΉΡ'; // Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ
Label6.Caption:= IntToStr((dwTotalVirtual) div 1024) + 'ΠΠ±Π°ΠΉΡ'; // ΠΡΠ΅Π³ΠΎ swap
Label7.Caption:= IntToStr((dwAvailVirtual) div 1024) + ' ΠΠ±Π°ΠΉΡ'; // Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎ swap
Gauge1.MaxValue:= dwTotalPhys; //ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ
//ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΠΏΡΠΎΡΠ΅Π½Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ
Gauge1.Progress:= dwTotalPhys-dwAvailPhys;
end;
end;
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ mem, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ GlobalMemoryStatus. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ, Π΄Π΅Π»ΠΈΠΌ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° 1024, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡΡ. ΠΠ°ΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠΊ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Gauge.
ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Timer1.Interval. ΠΠ±ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ:
procedure TForm1.Button1Click(Sender: TObject);
begin
//ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
Timer1.Interval:= SpinEdit1.Value*1000;
end;
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π΄Π»Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π·Π°Π΄Π°Π΅ΡΡΡ Π² ΠΌΡ, Π° Π² SpinEdit ΠΌΡ Π²Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , ΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° SpinEdit.Value Π½Π° 1000.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΈΡ. 11.2.
Π ΠΈΡ. 11.2. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ
ΠΠΎΠ»Π½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠ΄ΡΠ»Ρ
ΠΠΎΠ»Π½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 11.1.
ΠΠΈΡΡΠΈΠ½Π³ 11.1. ΠΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Memory infounit Unit1
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Gauges, ExtCtrls, Spin;
type TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Gauge1: TGauge;
Timer1: TTimer;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
SpinEdit1: TSpinEdit;