Код:

[Code]
type
Int64 = record
Intlow: Integer;
IntHigh: Integer;
end;
_MEMORYSTATUSEX = record
dwLength: DWORD;
dwMemoryLoad: DWORD;
ullTotalPhys: Int64;
ullAvailPhys: Int64;
ullTotalPageFile: Int64;
ullAvailPageFile: Int64;
ullTotalVirtual: Int64;
ullAvailVirtual: Int64;
ullAvailExtendedVirtual: Int64;
end;
function GlobalMemoryStatusEx( var lpBuffer: _MEMORYSTATUSEX ): BOOL; external 'GlobalMemoryStatusEx@kernel32.dll stdcall';
function StrFormatByteSize64( qdw: Currency; var pszBuf: Char; cchBuf: UINT ): PAnsiChar; external 'StrFormatByteSize64A@shlwapi.dll stdcall';
function BytesToSize( const Bytes: Extended ): String;
var
pszBuf: array [0..15] of Char;
begin
try
Result := StrFormatByteSize64( Abs ( Bytes div 1E4 ), pszBuf[0], sizeof( pszBuf ) );
except
end;
end;
function Size64( const IntLow: Integer; const IntHigh: Integer ): Extended;
begin
Result := ( ( IntHigh + Integer( IntLow < 0 ) ) * 4.294967296E9 + IntLow );
end;
procedure InitializeWizard();
var
msEx: _MEMORYSTATUSEX;
szMemoryLoad: String;
szTotalPhys: String;
szAvailPhys: String;
szTotalPageFile: String;
szAvailPageFile: String;
szTotalVirtual: String;
szAvailVirtual: String;
begin
msEx.dwLength := SizeOf( msEx ) ;
if not GlobalMemoryStatusEx( msEx ) then Exit;
szMemoryLoad := Format( '%s: %d%s', ['MemoryLoad', msEx.dwMemoryLoad, '%'] );
szTotalPhys := Format( '%s: %s', ['TotalPhys', BytesToSize( Size64( msEx.ullTotalPhys.Intlow, msEx.ullTotalPhys.IntHigh ) )] );
szAvailPhys := Format( '%s: %s', ['AvailPhys', BytesToSize( Size64( msEx.ullAvailPhys.Intlow, msEx.ullAvailPhys.IntHigh ) )] );
szTotalPageFile := Format( '%s: %s', ['TotalPageFile', BytesToSize( Size64( msEx.ullTotalPageFile.Intlow, msEx.ullTotalPageFile.IntHigh ) )] );
szAvailPageFile := Format( '%s: %s', ['AvailPageFile', BytesToSize( Size64( msEx.ullAvailPageFile.Intlow, msEx.ullAvailPageFile.IntHigh ) )] );
szTotalVirtual := Format( '%s: %s', ['TotalVirtual', BytesToSize( Size64( msEx.ullTotalVirtual.Intlow, msEx.ullTotalVirtual.IntHigh ) )] );
szAvailVirtual := Format( '%s: %s', ['AvailVirtual', BytesToSize( Size64( msEx.ullAvailVirtual.Intlow, msEx.ullAvailVirtual.IntHigh ) )] );
MsgBox(
szMemoryLoad + #13#10 +
szTotalPhys + #13#10 +
szAvailPhys + #13#10 +
szTotalPageFile + #13#10 +
szAvailPageFile + #13#10 +
szTotalVirtual + #13#10 +
szAvailVirtual,
mbInformation,
MB_OK
);
end;