A comprehensive Delphi VCL component that provides detailed information about computer hardware, operating system, and system directories using Windows API.
-
CPU Information
- CPU Name, Vendor, Identifier
- CPU Speed (MHz)
- Number of processors/cores
- CPU Architecture (x86, x64, ARM, ARM64)
-
Memory Information
- Total physical memory
- Available memory
- Memory load percentage
- Page file size (total and free)
-
Mainboard Information
- Manufacturer
- Product name
- BIOS Vendor, Version, and Date
-
Disk Information
- List of all drives (A-Z)
- Drive letter, type (Fixed, Removable, Network, CD-ROM, RAM Disk)
- Volume label and file system
- Total and free space
- Serial number
- Windows Directory
- System Directory
- Temp Directory
- Program Files Directory
- Program Files (x86) Directory
- Common Files Directory
- Desktop
- Documents
- Music
- Pictures
- Videos
- Downloads
- Start Menu
- Startup
- User Profile Directory
- AppData (Roaming)
- Local AppData
- Common AppData (All Users)
- Current user name
- Computer name
- User domain
- Windows version and build number
- Windows product name
- System uptime (in milliseconds)
- Is running as administrator
- Is 64-bit operating system
- Is 64-bit process
- Open Delphi IDE
- Open the runtime package:
- File → Open → Select
SysInfoR.dpk - Right-click on the package → Compile
- File → Open → Select
- Open the design-time package:
- File → Open → Select
SysInfoD.dpk - Right-click on the package → Compile
- Right-click on the package → Install
- File → Open → Select
- The component will appear in the "System" category of the Tool Palette
-
Add the directory containing
SysInfo.pasto your project's search path:- Project → Options → Delphi Compiler → Search path
- Add the path to the directory
-
Add
SysInfoto your uses clause:uses SysInfo;
- Drop a
TSysInfocomponent onto your form from the "System" category - All properties are published and visible in the Object Inspector at design-time
- Properties are read-only and retrieve live system information at runtime
- Access properties at runtime:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('CPU: ' + SysInfo1.CPUName);
ShowMessage('Total Memory: ' + IntToStr(SysInfo1.TotalMemory div (1024*1024)) + ' MB');
ShowMessage('User: ' + SysInfo1.UserName);
ShowMessage('Documents: ' + SysInfo1.DocumentsDirectory);
end;Note: All properties have stored False to prevent saving values to the DFM since they are dynamically retrieved from the system.
uses
SysInfo;
procedure TForm1.Button1Click(Sender: TObject);
var
SysInfo: TSysInfo;
I: Integer;
begin
SysInfo := TSysInfo.Create(nil);
try
// CPU Information
Memo1.Lines.Add('CPU Name: ' + SysInfo.CPUName);
Memo1.Lines.Add('CPU Vendor: ' + SysInfo.CPUVendor);
Memo1.Lines.Add('CPU Speed: ' + IntToStr(SysInfo.CPUSpeed) + ' MHz');
Memo1.Lines.Add('CPU Count: ' + IntToStr(SysInfo.CPUCount));
Memo1.Lines.Add('CPU Architecture: ' + SysInfo.CPUArchitecture);
Memo1.Lines.Add('');
// Memory Information
Memo1.Lines.Add('Total Memory: ' + IntToStr(SysInfo.TotalMemory div (1024*1024)) + ' MB');
Memo1.Lines.Add('Available Memory: ' + IntToStr(SysInfo.AvailableMemory div (1024*1024)) + ' MB');
Memo1.Lines.Add('Memory Load: ' + IntToStr(SysInfo.MemoryLoad) + '%');
Memo1.Lines.Add('');
// Mainboard Information
Memo1.Lines.Add('Mainboard Manufacturer: ' + SysInfo.MainboardManufacturer);
Memo1.Lines.Add('Mainboard Product: ' + SysInfo.MainboardProduct);
Memo1.Lines.Add('BIOS Vendor: ' + SysInfo.BIOSVendor);
Memo1.Lines.Add('BIOS Version: ' + SysInfo.BIOSVersion);
Memo1.Lines.Add('BIOS Date: ' + SysInfo.BIOSDate);
Memo1.Lines.Add('');
// Disk Information
Memo1.Lines.Add('Disks:');
for I := 0 to SysInfo.DiskList.Count - 1 do
begin
with SysInfo.DiskList[I] do
begin
Memo1.Lines.Add(Format(' %s: %s (%s) - %s', [
DriveLetter + ':\',
VolumeLabel,
FileSystem,
DriveType
]));
Memo1.Lines.Add(Format(' Total: %d MB, Free: %d MB', [
TotalSpace div (1024*1024),
FreeSpace div (1024*1024)
]));
end;
end;
Memo1.Lines.Add('');
// System Directories
Memo1.Lines.Add('Windows Directory: ' + SysInfo.WindowsDirectory);
Memo1.Lines.Add('System Directory: ' + SysInfo.SystemDirectory);
Memo1.Lines.Add('Temp Directory: ' + SysInfo.TempDirectory);
Memo1.Lines.Add('Program Files: ' + SysInfo.ProgramFilesDirectory);
Memo1.Lines.Add('');
// User Directories
Memo1.Lines.Add('Desktop: ' + SysInfo.DesktopDirectory);
Memo1.Lines.Add('Documents: ' + SysInfo.DocumentsDirectory);
Memo1.Lines.Add('Music: ' + SysInfo.MusicDirectory);
Memo1.Lines.Add('Pictures: ' + SysInfo.PicturesDirectory);
Memo1.Lines.Add('Videos: ' + SysInfo.VideosDirectory);
Memo1.Lines.Add('Downloads: ' + SysInfo.downloadsDirectory);
Memo1.Lines.Add('');
// AppData Directories
Memo1.Lines.Add('AppData: ' + SysInfo.AppDataDirectory);
Memo1.Lines.Add('Local AppData: ' + SysInfo.LocalAppDataDirectory);
Memo1.Lines.Add('Common AppData: ' + SysInfo.CommonAppDataDirectory);
Memo1.Lines.Add('');
// User Information
Memo1.Lines.Add('User Name: ' + SysInfo.UserName);
Memo1.Lines.Add('Computer Name: ' + SysInfo.ComputerName);
Memo1.Lines.Add('User Domain: ' + SysInfo.UserDomain);
Memo1.Lines.Add('User Directory: ' + SysInfo.UserDirectory);
Memo1.Lines.Add('');
// Windows Information
Memo1.Lines.Add('Windows: ' + SysInfo.WindowsProductName);
Memo1.Lines.Add('Version: ' + SysInfo.WindowsVersion);
Memo1.Lines.Add('Build: ' + SysInfo.WindowsBuild);
Memo1.Lines.Add('');
// System Status
Memo1.Lines.Add('Uptime: ' + IntToStr(SysInfo.SystemUptime div 1000) + ' seconds');
Memo1.Lines.Add('Is Administrator: ' + BoolToStr(SysInfo.IsAdmin, True));
Memo1.Lines.Add('64-bit OS: ' + BoolToStr(SysInfo.Is64BitOS, True));
Memo1.Lines.Add('64-bit Process: ' + BoolToStr(SysInfo.Is64BitProcess, True));
finally
SysInfo.Free;
end;
end;The disk list is automatically populated when the component is created. To refresh the disk information:
SysInfo1.RefreshAll;Or refresh just the disk list:
SysInfo1.DiskList.Refresh;CPUName: string- Full CPU name (e.g., "Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz")CPUVendor: string- CPU vendor (e.g., "GenuineIntel", "AuthenticAMD")CPUIdentifier: string- CPU identifier stringCPUSpeed: Integer- CPU speed in MHzCPUCount: Integer- Number of logical processorsCPUArchitecture: string- Architecture (x86, x64, ARM, ARM64, IA64)
TotalMemory: Int64- Total physical memory in bytesAvailableMemory: Int64- Available physical memory in bytesMemoryLoad: Integer- Memory usage percentage (0-100)PageFileTotal: Int64- Total page file size in bytesPageFileFree: Int64- Available page file size in bytes
MainboardManufacturer: string- Mainboard manufacturerMainboardProduct: string- Mainboard product nameBIOSVendor: string- BIOS vendorBIOSVersion: string- BIOS versionBIOSDate: string- BIOS release date
DiskList: TDiskList- Collection of disk informationCount: Integer- Number of drivesItems[Index]: TDiskInfo- Access individual drive informationDriveLetter: Char- Drive letter (A-Z)VolumeLabel: string- Volume labelFileSystem: string- File system type (NTFS, FAT32, etc.)DriveType: string- Drive type (Fixed, Removable, Network, CD-ROM, RAM Disk)TotalSpace: Int64- Total space in bytesFreeSpace: Int64- Free space in bytesSerialNumber: Cardinal- Volume serial number
WindowsDirectory: string- Windows installation directorySystemDirectory: string- Windows System32 directoryTempDirectory: string- Temporary files directoryProgramFilesDirectory: string- Program Files directoryProgramFilesX86Directory: string- Program Files (x86) directoryCommonFilesDirectory: string- Common Files directory
DesktopDirectory: string- User's Desktop folderDocumentsDirectory: string- User's Documents folderMusicDirectory: string- User's Music folderPicturesDirectory: string- User's Pictures folderVideosDirectory: string- User's Videos folderDownloadsDirectory: string- User's Downloads folderStartMenuDirectory: string- User's Start Menu folderStartupDirectory: string- User's Startup folder
AppDataDirectory: string- User's AppData\Roaming folderLocalAppDataDirectory: string- User's AppData\Local folderCommonAppDataDirectory: string- ProgramData (All Users) folder
UserName: string- Current user's login nameComputerName: string- Computer nameUserDomain: string- User's domain or workgroupUserDirectory: string- User's profile directory
WindowsVersion: string- Windows version numberWindowsBuild: string- Windows build numberWindowsProductName: string- Windows edition nameSystemUptime: Int64- System uptime in millisecondsIsAdmin: Boolean- True if running with administrator privilegesIs64BitOS: Boolean- True if running on 64-bit WindowsIs64BitProcess: Boolean- True if this is a 64-bit process
- Delphi XE2 or later (for 64-bit support)
- Windows XP or later
- VCL Framework
This component is provided as-is for free use in both commercial and non-commercial projects.
- All directory properties use Windows API calls (SHGetFolderPath, GetWindowsDirectory, etc.)
- Memory values are in bytes; divide by (10241024) to get MB or (10241024*1024) to get GB
- Some properties may return empty strings if the information is not available on the system
- Administrator check requires Windows Vista or later
- The component automatically initializes disk information when created
- Use
RefreshAllmethod to update dynamic information (disk space, available memory, etc.)
See the usage examples above for a complete demonstration of all features.
For issues, questions, or contributions, please refer to the component source code and Windows API documentation.