⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 computerinfo.pas

📁 超级Delphi函数包,包括编程时常需要的一些函数
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{-------------------------------------------------------------------------------

   单元: 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 + -