unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
StartTime: TDateTime;
UsedTime: TDateTime;
TotalPhys: Integer;
StartMemoryLoad: Integer;
EndMemoryLoad: Integer;
StartAvailPhys: Integer;
EndAvailPhys: Integer;
StartAvailPageFile: Integer;
EndAvailPageFile: Integer;
StartAvailVirtual: Integer;
EndAvailVirtual: Integer;
public
{ Public declarations }
procedure StartTimeMem;
procedure StopTimeMem;
function DisplayInfo: String;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// ºÎÇÏ(load)·® °Ë»ç ½ÃÀÛ
procedure TForm1.StartTimeMem;
var
SysMemoryStatus: TMemoryStatus;
begin
// GlobalMemoryStatus() ´Â ¹°¸®ÀûÀÎ(physical) ¸Þ¸ð¸®, °¡»ó(virtual) ¸Þ¸ð¸®ÀÇ
// ÇöÀç »óŸ¦ ¾Ë¾Æ ³»´Âµ¥ »ç¿ëÇÑ´Ù
GlobalMemoryStatus(SysMemoryStatus);
// percent of memory in use
StartMemoryLoad := SysMemoryStatus.dwMemoryLoad;
// free physical memory bytes
StartAvailPhys := SysMemoryStatus.dwAvailPhys;
// free bytes of paging file
StartAvailPageFile := SysMemoryStatus.dwAvailPageFile;
// free user bytes
StartAvailVirtual := SysMemoryStatus.dwAvailVirtual;
StartTime := NOW;
end;
// ºÎÇÏ(load)·® °Ë»ç Á¾·á
procedure TForm1.StopTimeMem;
var
SysMemoryStatus: TMemoryStatus;
begin
UsedTime := NOW - StartTime; // ÃÑ °Ë»ç½Ã°£
GlobalMemoryStatus(SysMemoryStatus);
TotalPhys := SysMemoryStatus.dwTotalPhys;
EndMemoryLoad := SysMemoryStatus.dwMemoryLoad;
EndAvailPhys := SysMemoryStatus.dwAvailPhys;
EndAvailPageFile := SysMemoryStatus.dwAvailPageFile;
EndAvailVirtual := SysMemoryStatus.dwAvailVirtual;
end;
// ºÎÇÏ(load)·® °Ë»ç Á¤º¸
function TForm1.DisplayInfo: String;
var
Hour, Min, Sec, MSec: Word;
TimeMemMessage: String;
var
UsedMemoryLoad, UsedAvailPhys, UsedAvailPageFile, UsedAvailVirtual,
StrStartMemoryLoad, StrStartAvailPhys, StrStartAvailPageFile,
StrStartAvailVirtual,
StrEndMemoryLoad, StrTotalPhys, StrEndAvailPhys, StrEndAvailPageFile,
StrEndAvailVirtual: String;
begin
// TDateTimeÇüÀÇ ÃÑ °Ë»ç½Ã°£À» °¢°¢ ºÐ¸®ÇÑ´Ù
DecodeTime(UsedTime, Hour, Min, Sec, MSec);
UsedMemoryLoad := IntToStr(EndMemoryLoad - StartMemoryLoad);
UsedAvailPhys :=
FloatToStrF( (StartAvailPhys - EndAvailPhys), ffNumber, 10, 0) ;
UsedAvailPageFile :=
FloatToStrF( (StartAvailPageFile - EndAvailPageFile), ffNumber, 10, 0) ;
UsedAvailVirtual :=
FloatToStrF( (StartAvailVirtual - EndAvailVirtual), ffNumber, 10, 0) ;
StrTotalPhys := FloatToStrF(TotalPhys, ffNumber, 13, 0);
StrStartMemoryLoad := FloatToStrF(StartMemoryLoad, ffNumber, 13, 0);
StrStartAvailPhys := FloatToStrF(StartAvailPhys, ffNumber, 13, 0);
StrStartAvailPageFile := FloatToStrF(StartAvailPageFile, ffNumber, 13, 0);
StrStartAvailVirtual := FloatToStrF(StartAvailVirtual, ffNumber, 13, 0);
StrEndMemoryLoad := FloatToStrF(EndMemoryLoad, ffNumber, 13, 0);
StrEndAvailPhys := FloatToStrF(EndAvailPhys, ffNumber, 13, 0);
StrEndAvailPageFile := FloatToStrF(EndAvailPageFile, ffNumber, 13, 0);
StrEndAvailVirtual := FloatToStrF(EndAvailVirtual, ffNumber, 13, 0);
TimeMemMessage := 'Elapsed time: ' + IntToStr(Min) + ' Minutes '
+ IntToStr(Sec) + ' Seconds '
+ IntToStr(MSec)+ ' Milliseconds'
+#10+#13+#10+#13+
'Total physical memory: ' + StrTotalPhys + #10+#13+#10+#13 +
'Percent of memory in use:' + #10+#13 +
#9 + StrStartMemoryLoad + '% before' + #10+#13 +
#9 + StrEndMemoryLoad + '% after' + #10+#13 +
#9 + UsedMemoryLoad + '% used' + #10+#13+#10+#13 +
'Free physical memory:' + #10+#13 +
#9 + StrStartAvailPhys + ' before' + #10+#13 +
#9 + StrEndAvailPhys + ' after' + #10+#13 +
#9 + UsedAvailPhys + ' used' + #10+#13+#10+#13 +
'Paging file free:' + #10+#13 +
#9 + StrStartAvailPageFile + ' before' + #10+#13 +
#9 + StrEndAvailPageFile + ' after' + #10+#13 +
#9 + UsedAvailPageFile + ' used' + #10+#13+#10+#13 +
'Available virtual address space:' + #10+#13 +
#9 + StrStartAvailVirtual + ' before' + #10+#13 +
#9 + StrEndAvailVirtual + ' after' + #10+#13 +
#9 + UsedAvailVirtual + ' used';
DisplayInfo := TimeMemMessage;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
RunCommand: array[0..MAX_PATH] of Char;
begin
StartTimeMem; // ºÎÇÏ(load)·® °Ë»ç ½ÃÀÛ
// ºÎÇÏ·®À» ÃøÁ¤Çϱâ À§ÇØ À©µµ¿ìÁî Ž»ö±â¸¦ Çϳª ½ÇÇàÇÑ´Ù
GetWindowsDirectory(RunCommand, MAX_PATH);
StrCat(RunCommand, PChar('EXPLORER.EXE /n,/e'));
WinExec(RunCommand, SW_SHOWNORMAL);
StopTimeMem; // ºÎÇÏ(load)·® °Ë»ç Á¾·á
ShowMessage(DisplayInfo); // ºÎÇÏ(load)·® °Ë»ç Á¤º¸
end;
end.
|
|