?? 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
Filename: string;
Tile: Boolean;
Stretch: Boolean;
Patterns: TStrings;
Pattern: string;
end;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -