Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Учимся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 14

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ ΠŸΠ°Ρ€ΠΈΠΆΡΠΊΠΈΠΉ

 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 info

unit 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;