Componentes.Terceros.jvcl/official/3.32/archive/JvgSysInf.pas

215 lines
6.1 KiB
ObjectPascal

{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.
The Original Code is: JvgSysInf.PAS, released on 2003-01-15.
The Initial Developer of the Original Code is Andrey V. Chudin, [chudin att yandex dott ru]
Portions created by Andrey V. Chudin are Copyright (C) 2003 Andrey V. Chudin.
All Rights Reserved.
Contributor(s):
Michael Beck [mbeck att bigfoot dott com].
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvgSysInf.pas 10610 2006-05-19 13:35:08Z elahn $
unit JvgSysInf;
{$I jvcl.inc}
interface
uses
{$IFDEF USEJVCL}
{$IFDEF UNITVERSIONING}
JclUnitVersioning,
{$ENDIF UNITVERSIONING}
{$ENDIF USEJVCL}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
{$IFDEF USEJVCL}
StdCtrls, ExtCtrls,
JvComponent;
{$ELSE}
StdCtrls, ExtCtrls;
{$ENDIF USEJVCL}
type
{$IFDEF USEJVCL}
TJvgSysInfo = class(TJvComponent)
{$ELSE}
TJvgSysInfo = class(TComponent)
{$ENDIF USEJVCL}
private
FMemoryLoad: Integer;
FTotalPhys: Integer;
FAvailPhys: Integer;
FTotalPageFile: Integer;
FAvailPageFile: Integer;
FTotalVirtual: Integer;
FAvailVirtual: Integer;
FColorDepth: Integer;
FSystemFont: string;
FOSPlatform: string;
FVRefreshRate: Integer;
FGraphicResolution: string;
FCPUKind: Integer;
FCPUName: string;
FComputerName: string;
FUserName: string;
FINone: Integer;
FSNone: string;
protected
procedure Loaded; override;
public
procedure Refresh;
constructor Create(AOwner: TComponent); override;
published
property MemoryLoad: Integer read FMemoryLoad write FINone stored False;
property TotalPhys: Integer read FTotalPhys write FINone stored False;
property AvailPhys: Integer read FAvailPhys write FINone stored False;
property TotalPageFile: Integer read FTotalPageFile write FINone stored False;
property AvailPageFile: Integer read FAvailPageFile write FINone stored False;
property TotalVirtual: Integer read FTotalVirtual write FINone stored False;
property AvailVirtual: Integer read FAvailVirtual write FINone stored False;
property CPUKind: Integer read FCPUKind write FINone stored False;
property CPUName: string read FCPUName write FSNone stored False;
property ColorDepth: Integer read FColorDepth write FINone stored False;
property SystemFont: string read FSystemFont write FSNone stored False;
property OSPlatform: string read FOSPlatform write FSNone stored False;
property VRefreshRate: Integer read FVRefreshRate write FINone stored False;
property GraphicResolution: string read FGraphicResolution write FSNone stored False;
property ComputerName: string read FComputerName write FSNone stored False;
property UserName: string read FUserName write FSNone stored False;
end;
{$IFDEF USEJVCL}
{$IFDEF UNITVERSIONING}
const
UnitVersioning: TUnitVersionInfo = (
RCSfile: '$RCSfile$';
Revision: '$Revision: 10610 $';
Date: '$Date: 2006-05-19 15:35:08 +0200 (ven., 19 mai 2006) $';
LogPath: 'JVCL\run'
);
{$ENDIF UNITVERSIONING}
{$ENDIF USEJVCL}
implementation
uses
JvgUtils;
const
i8086 = 1; { & 8088 CPU }
i80286 = 2;
i80386 = 3;
i80486 = 4;
iPentium = 5; { P5 - Pentium }
iPentiumPro = 6; { P6 - Pentium Pro & Celeron}
constructor TJvgSysInfo.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
if csDesigning in ComponentState then
Refresh;
end;
procedure TJvgSysInfo.Loaded;
begin
// (rom) added inherited Loaded
inherited Loaded;
Refresh;
end;
procedure TJvgSysInfo.Refresh;
var
DC: HDC;
OSVersionInfo: TOSVersionInfo;
SI: TSystemInfo;
MS: TMemoryStatus;
begin
MS.dwLength := SizeOf(MS);
GlobalMemoryStatus(MS);
OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
GetVersionEx(OSVersionInfo);
GetSystemInfo(SI);
FMemoryLoad := MS.dwMemoryLoad;
FTotalPhys := MS.dwTotalPhys;
FAvailPhys := MS.dwAvailPhys;
FTotalPageFile := MS.dwTotalPageFile;
FAvailPageFile := MS.dwAvailPageFile;
FTotalVirtual := MS.dwTotalVirtual;
FAvailVirtual := MS.dwAvailVirtual;
FCPUKind := SI.wProcessorLevel;
case SI.wProcessorLevel of
i8086:
FCPUName := '8086';
i80286:
FCPUName := '80286';
i80386:
FCPUName := '80386';
i80486:
FCPUName := '80486';
iPentium:
FCPUName := 'Pentium';
iPentiumPro:
FCPUName := 'Pentium Pro/Celeron';
else
FCPUName := Format('P%d', [SI.wProcessorLevel]);
end;
if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
FOSPlatform := 'NT'
else
if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS then
FOSPlatform := '95';
DC := GetDC(HWND_DESKTOP);
FVRefreshRate := GetDeviceCaps(DC, VREFRESH);
FColorDepth := GetDeviceCaps(DC, BITSPIXEL);
FGraphicResolution := Format('%dx%d', [GetDeviceCaps(DC, HORZRES),
GetDeviceCaps(DC, VERTRES)]);
if GetDeviceCaps(DC, LOGPIXELSX) = 96 then
FSystemFont := 'SmallFont'
else
if GetDeviceCaps(DC, LOGPIXELSX) = 120 then
FSystemFont := 'BigFont';
ReleaseDC(HWND_DESKTOP, DC);
FComputerName := JvgUtils.ComputerName;
FUserName := JvgUtils.UserName;
end;
{$IFDEF USEJVCL}
{$IFDEF UNITVERSIONING}
initialization
RegisterUnitVersion(HInstance, UnitVersioning);
finalization
UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}
{$ENDIF USEJVCL}
end.