📄 computerinfo.pas
字号:
{-------------------------------------------------------------------------------
单元: ComputerInfo.pas
作者: 姚乔锋 - yaoqiaofeng@sohu.com
日期: 2004.12.06
版本: 1.00
说明: 这是一个关于检测系统信息的函数库
-------------------------------------------------------------------------------}
unit ComputerInfo;
Interface
uses
SysUtils, Windows, Messages, Registry, Classes, ShlObj,
ShellAPi, Graphics, Dialogs;
{---------------------------------------------------
以下是关于获取硬盘信息的类型声明和函数
----------------------------------------------------}
const
SysUNKNOWN = '未知';
SysNOROOTDIR = '坏盘';
SysREMOVABLE = '可移动(软盘)驱动器';
SysFIXEDDRIVE = '固定驱动器';
SysREMOTE = '网络驱动器';
SysCDROM = '光盘驱动器';
SysRAMDISK = 'RAM驱动器';
type
TSysDriveType = (
dtUnknown, //未知的驱动器类型
dtNoRootDir, //损坏的驱动器类型
dtRemovable, //可移动驱动器类型 一般为软盘驱动器
dtFixed, //固定驱动器类型 一般为硬盘
dtNetwork, //网络驱动器
dtCDROM, //光盘驱动器
dtRAM //RAM驱动器
);
TSysFileSystemOption = (
fsCaseIsPreserved, // The file system preserves the case of file names when it places a name on disk.
fsCaseSensitive, // The file system supports case-sensitive file names.
fsSupportsUnicode, // The file system supports Unicode in file names as they appear on disk.
fsPersistentACLs, // The file system preserves and enforces ACLs. For example, NTFS preserves and enforces ACLs, and FAT does not.
fsSupportsCompression, // The file system supports file-based compression.
fsIsCompressed, // The specified volume is a compressed volume; for example, a DoubleSpace volume.
fsSupportsQuotas // The file system supports disk quotas.
);
TSysFileSystemOptions = set of TSysFileSystemOption;
TDriveRec = record
BytesPerSector: DWORD; //每一扇区的大小
DiskSize: Int64; //硬盘大小
DiskFree: Int64; //硬盘可用空间
Drive: Char; //硬盘盘符
DriveType: TSysDriveType; //硬盘类型
DriveTypeString : String; //硬盘类型字符串
FileSystem: string; //文件系统
SectorsPerCluster: DWORD; //
MaximumLength: DWORD; //
SerialNumber: string; //硬盘序列号
Options: TSysFileSystemOptions; //文件系统选项
VolumeLabel: string; //硬盘卷标
end;
TDriveInfo = array of TDriveRec;
{ GetDriveRec 返回指定盘符的驱动器的信息 }
function GetDriveRec(Drive: Char): TDriveRec;
{ GetDriveInfo 返回系统所有可用驱动器的信息 }
function GetDriveInfo: TDriveInfo;
{---------------------------------------------------
以下是关于获取内存信息的类型声明和函数
----------------------------------------------------}
type
TMemoryInfo = record
UsePercent : Longint; (*内存使用百分比*)
MemoryTotal : Longint; (*实际内存总字节数*)
MemoryUsable : Longint; (*可用的实际内存字节数*)
PageTotal : LongInt; (*分页文件总字节数*)
PageUsable : LongInt; (*分页文件可用字节数*)
VirtualTotal : LongInt; (*虚拟内存的总字节数*)
VirtualUsable : LongInt; (*可用的虚拟内存字节数*)
PageSize : Cardinal;
MinAppAddress : Cardinal;
MaxAppAddress : Cardinal;
AllocGranularity : Cardinal;
end;
{ GetMemoryInfo 返回系统内存信息 }
function GetMemoryInfo : TMemoryInfo;
{---------------------------------------------------
以下是关于获取CPU信息的类型声明和函数
----------------------------------------------------}
type
TCPUVendor = (
vn_None, vnIntel, vnAMD, vnCyrix, vnIDT, vnNexGen, vnUMC, vnRise);
TCPUType = (
CPU_Primary, CPU_Overdrive, CPU_Secondary, CPU_Reserved);
TCPUFeature = (
fe00_FPU, fe01_VME, fe02_DE, fe03_PSE, fe04_TSC, fe05_MSR,
fe06_PAE, fe07_MCE, fe08_CX8, fe09_APIC, fe10_resv, fe11_SEP,
fe12_MTRR, fe13_PGE, fe14_MCA, fe15_CMOV, fe16_PAT, fe17_PSE36,
fe18_PPN, fe19_CLFLSH, fe20_resv, fe21_DTES, fe22_ACPI, fe23_MMX,
fe24_FXSR, fe25_XMM, fe26_ISSE2, fe27_SSNOOP, fe28_resv, fe29_ACC,
fe30_JMPE, fe31_resv );
TCPUFeatureSet = set of TCPUFeature;
TCPURec = record
Name : String; //CPU名称
Firm : String; //厂商字符串
ID : String; //标识符
MHZ : LongInt; //CPU主频
cType : TCPUType;
Features : TCPUFeatureSet;
FeatureStr : String;
Vendor : TCPUVendor;
end;
TCPUInfo = packed record
CPUCount : Integer; //CPU的数量
CPUUsage : Byte; //CPU利用率
CPUs : array of TCPURec;
end;
{ GetCPUVendor 返回CPU产家信息 }
function GetCPUVendor(nLevel : Integer): TCPUVendor;
{ GetCPUType 返回CPU的类型 }
function GetCPUType(nLevel : Integer): TCPUType;
{ GetCPUName 返回CPU的名称 }
function GetCPUName(nLevel : Integer): string;
{ GetCPUFeature 返回CPU的所有特征 }
function GetCPUFeature(nLevel : Integer): TCPUFeatureSet;
{ GetCPURec 返回单个CPU的所有信息 }
function GetCPURec(nLevel : Integer): TCPURec;
{ GetCPUInfo 返回所有CPU的所有信息 }
function GetCPUInfo: TCPUInfo;
{ CPUFeatureToStr 转换CPU特征到字符串 }
function CPUFeatureToStr(Features : TCPUFeatureSet): string;
{---------------------------------------------------
以下是关于获取键盘和鼠标的信息的类型声明和函数
----------------------------------------------------}
type
TKeyboardInfo = record
Delay : LongInt;
Speed : LongInt;
NumLock : Boolean;
CapsLock : Boolean;
Types : Integer;
SubType : Integer;
Layout : string;
TypeStr : String;
CaretBlinkTime : LongInt;
ScrollLock : Boolean;
FunctionKeys : Integer;
end;
TMouseInfo = record
Btns: Word;
DoubleClickTime: Word;
SnapToDefault: Boolean;
SwapBtns: Boolean;
Exist: Boolean;
Wheel: Boolean;
Speed: Integer;
DblClickWidth: Integer;
DblClickHeight: Integer;
CurSchemeFiles: TStrings;
CursorSchemes: TStrings;
CursorScheme: string;
Comment : string;
end;
TKeyboardState = set of (
ksNumLock, // 数字锁定键 Num Lock 的状态
ksCapsLock, // 大写锁定键 Caps Lock 的状态
ksLeftShift, // 左边Shift是否按下
ksLeftCtrl, // 左边Ctrl是否按下
ksLeftAlt, // 左边Alt是否按下
ksLeftWin, // 左边windows键是否按下
ksRightShift, // 右边Shift是否按下
ksRightCtrl, // 右边Ctrl是否按下
ksRightAlt, // 右边Alt是否按下
ksRightWin // 右边windows键是否按下
);
{ GetKeyboardInfo 返回键盘信息 }
function GetKeyboardInfo : TKeyboardInfo;
{ GetKeyBoardTypeName 返回键盘类型的字符串 }
function GetKeyBoardTypeName: String;
{ GetKeyboardState 返回键盘状态 }
function GetKeyboardState:TKeyboardState;
{ GetMouseInfo 返回鼠标信息 }
function GetMouseInfo : TMouseInfo;
{---------------------------------------------------
以下是关于获取系统软件卸载的信息的类型声明和函数
----------------------------------------------------}
type
TUninstallInfo = array of record
RegProgramName: string;
ProgramName : string;
UninstallPath : string;
Publisher : string;
PublisherURL : string;
Version : string;
HelpLink : string;
UpdateInfoURL : string;
RegCompany : string;
RegOwner : string;
end;
{ GetUninstallInfo 返回系统软件卸载的信息 }
function GetUninstallInfo : TUninstallInfo;
{---------------------------------------------------
以下是关于获取系统基本信息的类型声明和函数
----------------------------------------------------}
const
{ function GetVersion return }
OS_UNKNOW = $0000;
OS_WINDOWS31 = $0001;
OS_WINDOWS95 = $0002;
OS_WINDOWS95OSR2 = $0003;
OS_WINDOWS98 = $0004;
OS_WINDOWS98SE = $0005;
OS_WINDOWSME = $0006;
OS_WINDOWSNT3 = $0007;
OS_WINDOWSNT4 = $0008;
OS_WINDOWSNT4SP4 = $0009;
OS_WINDOWS2000 = $0010;
OS_WINDOWSXP = $0011;
type
TSysFolders = array of record
Name : string;
Path : string;
end;
TWindowInfo = record
WindowVersion : Integer; //系统版本
WindowName : string; //系统名称
Folders : TSysFolders; //各个目录
CSDVersion: string; //补丁版本
ProductID: string; //产品序列号
ProductName: string; //产品名称
Version: string; //版本号
RegisteredCompany: string; //计算机名
RegisteredOwner: string; //用户名
BuildNumber: Cardinal;
PlatformID: Cardinal; //平台标识号
MajorVersion: Cardinal; //主版本号
MinorVersion: Cardinal; //次版本号
Language : string; //语言版本
CurrentUserName : string; //当前用户名
end;
{ GetWindowInfo 返回系统的基本信息}
function GetWindowInfo : TWindowInfo;
{ GetSystemFolders 返回所有可用的系统文件夹 }
function GetSystemFolders: TSysFolders;
{ GetVersion 返回系统版本常量 }
function GetVersion : Integer;
{ GetVersionName 返回系统名称 }
function GetVersionName(Version : Integer): string;
{ GetUserName 返回系统当前用户名 }
function GetUserName : string;
{ GetSystemDefaultLangName 返回系统当前默认的语言名称 }
function GetSystemDefaultLangName : string;
{---------------------------------------------------
以下是关于获取系统时区信息的类型声明和函数
----------------------------------------------------}
type
TTZStandardInfo = array of record
Display : string;
Dlt : string;
Index : Longint;
MapID : string;
Std : string;
end;
TTimeZoneInfo = record
Bias : LongInt;
DayLightBias : LongInt;
StandardBias : LongInt;
DayLightName : string;
StandardName : string;
DayLightDate : TDateTime;
StandardDate : TDateTime;
Standards : TTZStandardInfo;
end;
{ GetTimeZoneinfo 返回系统时区的信息 }
function GetTimeZoneinfo : TTimeZoneInfo;
{---------------------------------------------------
以下是关于获取屏幕保护的信息的类型声明和函数
----------------------------------------------------}
type
TScreenSaverInfo = record
Active: Boolean; //是否启用了屏幕保护
Delay: Cardinal; //延时的时间,单位秒
Secure: Boolean;
UsePassword : Boolean; //是否使用密码
Running: Boolean; //是否正在运行
ScreenSaver: string; //当前使用屏幕保护的名
ScreenSavers: TStrings; //所有屏幕保护的名
end;
{ GetScreenSaverinfo 返回屏幕保护的信息 }
function GetScreenSaverInfo: TScreenSaverInfo;
{ StartupScreenSaver 启动一个屏幕瓮中保护 }
function StartScreenSaver(const ExeName, Paras : string): THandle;
{---------------------------------------------------
以下是关于获取屏幕保护的信息的类型声明和函数
----------------------------------------------------}
type
TACLineStatus = (lsOffline, lsOnline, lsUnknown);
TBatteryFlag = (bfHigh, bfLow, bfCritical, bfCharging, bfNoSystemBat, bfUnkown);
TBatteryFlags = set of TBatteryFlag;
TPowerStatusInfo = record
ACLineStatus: TACLineStatus;
BatteryFlags: TBatteryFlags;
BatterLifePercent: Byte;
BatteryLifeTime: DWORD;
BatteryFullLifeTime: DWORD;
end;
{ GetPowerStatusInfo 返回电源状态和其它信息 }
function GetPowerStatusInfo : TPowerStatusInfo;
{---------------------------------------------------
以下是关于获取IE浏览器的信息的类型声明和函数
----------------------------------------------------}
type
TInetZoneInfo = record
Name : string;
Description : string;
Sites : TStrings;
end;
TInetAdvPropInfo = record
Name: string;
Value: Boolean;
end;
TInternetInfo = record
IEVersion : string; //IE版本
HomePage: string; //默认主页
HTMLEditor: string; //默认HTML编辑器
EMailClient: string; //默认EMail软件
NewsClient: string; //默认新闻组软件
Calendar: string; //默认日历软件
InetCall: string; //默认联系软件
Contacts: string; //默认通迅录软件
TempPath: String; //临时文件目录
TempSize: Longint; //临时文件夹的大小
InetZones : array of TInetZoneInfo;
InerAdvProps: array of TInetAdvPropInfo;
end;
{ GetInternetInfo 返回IE浏览器的基本信息 }
function GetInternetInfo : TInternetInfo;
{---------------------------------------------------
以下是关于获取墙纸的信息的类型声明和函数
----------------------------------------------------}
type
TWallpaperInfo = record
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -