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

📄 mainun.pas

📁 pipe类 pipe类 pipe类 pipe类 pipe类
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit MainUn;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, ImgList, ComCtrls, ExtCtrls,
  Buttons, StdCtrls,
  OMCDrv, SMBus, cCPUinfo, CMonitoring, PCI, Memory, {CITools,}
  Menus, jpeg, RzCmboBx, RzPanel, RzBorder, RzLabel, RzTabs,
  ShellApi, PNGImage, ProcessorConsts, Registry, XPMan;

type
  TMainFrm = class(TForm)
    MainPC: TRzPageControl;
    ProcessorPage: TRzTabSheet;
    ProcessorGB: TRzGroupBox;   
    CpuName: TRzLabel;
    CodeName: TRzLabel;
    Platform: TRzLabel;
    Fam: TRzLabel;
    Model: TRzLabel;
    ExtName: TRzLabel;
    ExtFam: TRzLabel;
    ExtMod: TRzLabel;
    ExtStepping: TRzLabel;
    Stepping: TRzLabel;
    Devider: TRzBorder;
    LogoB: TRzBorder;
    CpuSelection: TRzLabel;
    APICID: TRzLabel;
    BrandID: TRzLabel;
    DieSize: TRzLabel;
    VCore: TRzLabel;
    TranQ: TRzLabel;
    TP: TRzLabel;
    LogoIm: TImage;
    CpuNameV: TRzPanel;
    CodeNameV: TRzPanel;
    PlatformV: TRzPanel;
    ExtNameV: TRzPanel;
    FamV: TRzPanel;
    ExtFamV: TRzPanel;
    ModV: TRzPanel;
    ExtModV: TRzPanel;
    SteppingV: TRzPanel;
    ExtSteppingV: TRzPanel;
    BrandIDV: TRzPanel;
    DieSizeV: TRzPanel;
    TranQV: TRzPanel;
    TPV: TRzPanel;
    APICIDV: TRzPanel;
    VCoreV: TRzPanel;
    CpuSelectionV: TRzComboBox;
    CacheGB: TRzGroupBox;
    Level1Instr: TRzLabel;
    Level1Data: TRzLabel;
    Level2: TRzLabel;
    Level3: TRzLabel;
    Level1DataV: TRzPanel;
    Level2V: TRzPanel;
    Level3V: TRzPanel;
    Level1InstrV: TRzPanel;
    ClocksGB: TRzGroupBox;
    Multiplier: TRzLabel;
    Core: TRzLabel;
    Bus: TRzLabel;
    BusSpeed: TRzLabel;
    CoreV: TRzPanel;
    BusV: TRzPanel;
    BusSpeedV: TRzPanel;
    MultiplierV: TRzPanel;
    FFlagsPage: TRzTabSheet;
    CachePage: TRzTabSheet;
    PowerPage: TRzTabSheet;
    AboutPage: TRzTabSheet;
    FeaturesFlagsGB: TRzGroupBox;
    Feat0: TRzLabel;
    Feat16: TRzLabel;
    Feat0V: TRzPanel;
    Feat1V: TRzPanel;
    Feat1: TRzLabel;
    Feat2V: TRzPanel;
    Feat2: TRzLabel;
    Feat3V: TRzPanel;
    Feat3: TRzLabel;
    Feat5V: TRzPanel;
    Feat5: TRzLabel;
    Feat6V: TRzPanel;
    Feat6: TRzLabel;
    Feat4V: TRzPanel;
    Feat4: TRzLabel;
    Feat7V: TRzPanel;
    Feat7: TRzLabel;
    Feat8V: TRzPanel;
    Feat8: TRzLabel;
    Feat9V: TRzPanel;
    Feat9: TRzLabel;
    Feat10V: TRzPanel;
    Feat10: TRzLabel;
    Feat11V: TRzPanel;
    Feat11: TRzLabel;
    Feat12V: TRzPanel;
    Feat12: TRzLabel;
    Feat13V: TRzPanel;
    Feat13: TRzLabel;
    Feat14V: TRzPanel;
    Feat14: TRzLabel;
    Feat15V: TRzPanel;
    Feat15: TRzLabel;
    Feat16V: TRzPanel;
    Feat17: TRzLabel;
    Feat17V: TRzPanel;
    Feat18: TRzLabel;
    Feat18V: TRzPanel;
    Feat19: TRzLabel;
    Feat19V: TRzPanel;
    Feat20: TRzLabel;
    Feat20V: TRzPanel;
    Feat21: TRzLabel;
    Feat21V: TRzPanel;
    Feat22: TRzLabel;
    Feat22V: TRzPanel;
    Feat23: TRzLabel;
    Feat23V: TRzPanel;
    Feat24: TRzLabel;
    Feat24V: TRzPanel;
    Feat25: TRzLabel;
    Feat25V: TRzPanel;
    Feat26: TRzLabel;
    Feat26V: TRzPanel;
    Feat27: TRzLabel;
    Feat27V: TRzPanel;
    Feat28: TRzLabel;
    Feat28V: TRzPanel;
    Feat29: TRzLabel;
    Feat29V: TRzPanel;
    Feat30: TRzLabel;
    Feat30V: TRzPanel;
    Feat31: TRzLabel;
    Feat31V: TRzPanel;
    ffButtonsGB: TRzGroupBox;
    SystemPage: TRzTabSheet;
    MBInfoGB: TRzGroupBox;
    SensMod: TRzLabel;
    SensModV: TRzPanel;
    NBridge: TRzLabel;
    NBridgeV: TRzPanel;
    SBridge: TRzLabel;
    SBridgeV: TRzPanel;
    Revision: TRzLabel;
    RevisionV: TRzPanel;
    VendorString: TRzLabel;
    VendorStringV: TRzPanel;
    Features: TRzLabel;
    FeaturesV: TRzPanel;
    Extended2ffB: TRzPanel;
    Extended2ff: TSpeedButton;
    Extended1ffB: TRzPanel;
    Extended1ff: TSpeedButton;
    Standard2ffB: TRzPanel;
    Standard2ff: TSpeedButton;
    Standard1ffB: TRzPanel;
    Standard1ff: TSpeedButton;
    CacheButtonsGB: TRzGroupBox;
    Level1btB: TRzPanel;
    Level1bt: TSpeedButton;
    Level2btB: TRzPanel;
    Level2bt: TSpeedButton;
    Level3btB: TRzPanel;
    Level3bt: TSpeedButton;
    Block1GB: TRzGroupBox;
    Bl1assoc: TRzLabel;
    Bl1Size: TRzLabel;
    Bl1LS: TRzLabel;
    Bl1LPT: TRzLabel;
    Bl1SizeV: TRzPanel;
    Bl1LSV: TRzPanel;
    Bl1LPTV: TRzPanel;
    Bl1assocV: TRzPanel;
    Block3GB: TRzGroupBox;
    Bl3assoc: TRzLabel;
    Bl3entr: TRzLabel;
    Bl3entrV: TRzPanel;
    Bl3assocV: TRzPanel;
    Block5GB: TRzGroupBox;
    Bl5assoc: TRzLabel;
    Bl5entr: TRzLabel;
    Bl5entrV: TRzPanel;
    Bl5assocV: TRzPanel;
    Block2GB: TRzGroupBox;
    Bl2LPT: TRzLabel;
    Bl2LS: TRzLabel;
    Bl2assoc: TRzLabel;
    Bl2Size: TRzLabel;
    Bl2SizeV: TRzPanel;
    Bl2LSV: TRzPanel;
    Bl2LPTV: TRzPanel;
    Bl2assocV: TRzPanel;
    Block4GB: TRzGroupBox;
    Bl4assoc: TRzLabel;
    Bl4entr: TRzLabel;
    Bl4entrV: TRzPanel;
    Bl4assocV: TRzPanel;
    Block6GB: TRzGroupBox;
    Bl6assoc: TRzLabel;
    Bl6entr: TRzLabel;
    Bl6entrV: TRzPanel;
    Bl6assocV: TRzPanel;
    PMGB: TRzGroupBox;
    CPUTemp: TRzLabel;
    SysTemp: TRzLabel;
    PMFeat: TRzLabel;
    RadioButton5: TRadioButton;
    CPUTempV: TRzPanel;
    SysTempV: TRzPanel;
    PMFeatV: TRzPanel;
    ODCMGB: TRzGroupBox;
    odcm125: TRadioButton;
    odcm250: TRadioButton;
    odcm375: TRadioButton;
    odcm500: TRadioButton;
    odcm635: TRadioButton;
    odcm750: TRadioButton;
    odcm875: TRadioButton;
    odcm1000: TRadioButton;
    TMCGB: TRzGroupBox;
    TM1: TRadioButton;
    TM2: TRadioButton;
    TM0: TRadioButton;
    FVControl: TRzGroupBox;
    VIDlb: TRzLabel;
    FIDlb: TRzLabel;
    VIDcb: TRzComboBox;
    FIDcb: TRzComboBox;
    ApplyBTP: TRzPanel;
    ApplyBT: TSpeedButton;
    RefreshBTP: TRzPanel;
    RefreshBT: TSpeedButton;
    AboutPrGB: TRzGroupBox;
    PrSignature: TRzLabel;
    OverSoftImB: TRzBorder;
    OverSoftIm: TImage;
    Copyright: TRzLabel;
    AboutTod: TRzLabel;
    AboutDaemon: TRzLabel;
    AboutNikita: TRzLabel;
    AboutThanks: TRzLabel;
    AboutForums: TRzLabel;
    AboutGerk: TRzLabel;
    AboutAsteroid: TRzLabel;
    AboutQnx: TRzLabel;
    ToolsGB: TRzGroupBox;
    TextRepBTB: TRzPanel;
    TextRepBT: TSpeedButton;
    Temp: TRzLabel;
    TempV: TRzPanel;
    ExtFeatures: TRzLabel;
    ExtFeaturesV: TRzPanel;
    Mem_SumGB: TRzGroupBox;
    m_Type: TRzLabel;
    m_Size: TRzLabel;
    m_Chan: TRzLabel;
    m_Freq: TRzLabel;
    m_Accel: TRzLabel;
    m_Div: TRzLabel;
    m_TypeV: TRzPanel;
    m_ChanV: TRzPanel;
    m_FreqV: TRzPanel;
    m_SizeV: TRzPanel;
    m_AccelV: TRzPanel;
    m_DivV: TRzPanel;
    Mem_TimGB: TRzGroupBox;
    mt_tRAS: TRzLabel;
    mt_tRP: TRzLabel;
    mt_tRCD: TRzLabel;
    mt_CL: TRzLabel;
    mt_Idle: TRzLabel;
    mt_Refr: TRzLabel;
    mt_CLV: TRzPanel;
    mt_tRPV: TRzPanel;
    mt_tRASV: TRzPanel;
    mt_tRCDV: TRzPanel;
    mt_IdleV: TRzPanel;
    mt_RefrV: TRzPanel;
    VCoreMenu: TPopupMenu;
    CpuTempMenu: TPopupMenu;
    MbTempMenu: TPopupMenu;
    MbMan: TRzLabel;
    MbManV: TRzPanel;
    MbMod: TRzLabel;
    MbModV: TRzPanel;
    Nav_upB: TRzPanel;
    Nav_up: TSpeedButton;
    Nav_downB: TRzPanel;
    Nav_down: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure CpuSelectionVChange(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ThLb1Click(Sender: TObject);
    procedure Standard1ffBMouseEnter(Sender: TObject);
    procedure Standard1ffBMouseLeave(Sender: TObject);
    procedure Standard1ffMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Standard1ffMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Standard2ffBMouseEnter(Sender: TObject);
    procedure Standard2ffBMouseLeave(Sender: TObject);
    procedure Standard2ffMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Standard2ffMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Extended1ffBMouseEnter(Sender: TObject);
    procedure Extended1ffBMouseLeave(Sender: TObject);
    procedure Extended1ffMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Extended1ffMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Extended2ffBMouseEnter(Sender: TObject);
    procedure Extended2ffBMouseLeave(Sender: TObject);
    procedure Extended2ffMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Extended2ffMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Level1btBMouseEnter(Sender: TObject);
    procedure Level1btBMouseLeave(Sender: TObject);
    procedure Level1btMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Level1btMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Level2btBMouseEnter(Sender: TObject);
    procedure Level2btBMouseLeave(Sender: TObject);
    procedure Level2btMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Level2btMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Level3btBMouseEnter(Sender: TObject);
    procedure Level3btBMouseLeave(Sender: TObject);
    procedure Level3btMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Level3btMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure TextRepBTMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure TextRepBTMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure TextRepBTBMouseEnter(Sender: TObject);
    procedure TextRepBTBMouseLeave(Sender: TObject);
    procedure AboutTodMouseEnter(Sender: TObject);
    procedure AboutTodMouseLeave(Sender: TObject);
    procedure AboutTodClick(Sender: TObject);
    procedure AboutDaemonClick(Sender: TObject);
    procedure AboutDaemonMouseEnter(Sender: TObject);
    procedure AboutDaemonMouseLeave(Sender: TObject);
    procedure AboutNikitaMouseEnter(Sender: TObject);
    procedure AboutNikitaMouseLeave(Sender: TObject);
    procedure AboutNikitaClick(Sender: TObject);
    procedure AboutForumsMouseEnter(Sender: TObject);
    procedure AboutForumsMouseLeave(Sender: TObject);
    procedure AboutForumsClick(Sender: TObject);
    procedure AboutQnxClick(Sender: TObject);
    procedure AboutQnxMouseEnter(Sender: TObject);
    procedure AboutQnxMouseLeave(Sender: TObject);
    procedure ApplyBTPMouseEnter(Sender: TObject);
    procedure ApplyBTPMouseLeave(Sender: TObject);
    procedure ApplyBTMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ApplyBTMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure RefreshBTMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure RefreshBTMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure RefreshBTPMouseEnter(Sender: TObject);
    procedure RefreshBTPMouseLeave(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SysTempVDblClick(Sender: TObject);
    procedure Nav_upBMouseEnter(Sender: TObject);
    procedure Nav_upBMouseLeave(Sender: TObject);
    procedure Nav_downBMouseLeave(Sender: TObject);
    procedure Nav_downBMouseEnter(Sender: TObject);
    procedure Nav_downClick(Sender: TObject);
    procedure Nav_upClick(Sender: TObject);
    procedure VoltMenuClick(Sender: TObject);
    procedure CpuMenuClick(Sender: TObject);
    procedure MbMenuClick(Sender: TObject);
  private
    { Private declarations }
    VCoreItems, CpuTempItems, MbTempItems: array of tMenuItem;
  public
    { Public declarations }
    fPCIInfo: cPCIInfo;

    procedure ShowCpuInfo(index: byte);
    procedure ShowClocksInfo(index: byte);
    procedure ShowMemoryInfo;

    procedure ShowStd1ff(index: byte);
    procedure ShowStd2ff(index: byte);
    procedure ShowExt1ff(index: byte);
    procedure ShowExt2ff(index: byte);

    procedure ShowLevel1(index: byte);
    procedure ShowLevel2(index: byte);
    procedure ShowLevel3(index: byte);

    procedure CreateSensorMenus;
    procedure UpdateSensorMenus;
    procedure DestroySensorMenus;

    procedure ShowInfoAtOnce;

    procedure ShowEPM;
    procedure InitFIDVIDData;
    procedure RefreshPMdata;
    procedure ApplyPMdata;

    function GetScreenShot(var AImage: TBitmap): Boolean;
    procedure MakeTextReport(isDialog: boolean);

    procedure LoadSettingsFromRegistry;
    procedure SaveSettingsToRegistry;
  end;

  mclThread = class(TThread)
  private
    { Private declarations }
    ifStart, ifCont: boolean;
    InfoTimeRef, ClocksTimeRef: DWord;
    InfoTimeCntr, ClocksTimeCntr: DWord;
  public
    constructor Create;
    procedure UpdateInfo;
    procedure UpdateClocks;
    destructor Destroy; override;
  protected
    procedure Execute; override;
  end;

const
  VersionSignature='1.0 Beta';

type
  tSensorInfo = packed record //1.00
    ID: Word;
    Bus: Byte; //1 - ISA, 2 - SMBus
    ChipNum, Num: Byte;
    Preset: Byte;
  end;

var
  MainFrm: TMainFrm;
  mclThr: mclThread;
  CriticalSection: TRTLCriticalSection;
  isLoadDr: boolean;
  CurrentCpuNum: byte;
  Monitoring: tMonitoring;
  ClassLoadHndl: THandle;
  VCoreSensor, CpuSensor,
  MbSensor: tSensorInfo;
  ScreenSSave: String;
  CPUInfo: array of cCPUid; //TO-DO: REMOVE ME: Global variable 

function GetCPUCount: DWord;

implementation

uses CommonTypes;

{$R *.dfm}
{$R Logos.res}

{$I ProcessorShow.inc}
{$I mclThread.inc}
{$I FeaturesShow.inc}
{$I CacheShow.inc}
{$I FIDVIDTables.inc}
{$I Tools.inc}

var
  TMCounter: byte = 0;
  ActButton: byte = 1;
  ActButtonC: byte = 1;
  isShiftDown: boolean = false;
  isCtrlDown: boolean = false;
  debug: boolean = false;

function GetCPUCount: DWord;
var
  si: _system_info; //System info for determination of cpu count
begin
  GetSystemInfo(si);
  result:=si.dwNumberOfProcessors; //Getting logical cpu count
end;

procedure TMainFrm.FormCreate(Sender: TObject);
var
  i: byte; //Counter
  symdll: THandle;
  data: DWord;
begin
  try
  LoadSettingsFromRegistry;
  if (ParamSTR(1)='-debug') or (ParamSTR(2)='-debug') or (ParamSTR(3)='-debug') then debug:=true;
  isLoadDr := GetInstance.LoadDriver;
  if not isLoadDr then MessageBox(MainFrm.Handle,'Couldn''t Start I/O Driver! Some features will be disabled!', 'Couldn''t Start I/O Driver!', MB_ICONINFORMATION);
  mclThr:=mclThread.Create;                     //Creating main thread for cCPUid class
  fPCIInfo:= GetPciInfoInstance();
  SMB:=cSMBus.Create;
  Monitoring:=tMonitoring.Create(0);               //Creating monitoring class
  MemInfo:=cMemory.Create;                      //Creating memory controller info class

  {if not LoadCITools('CITools.dll') then ShowMessage('Failed to load CITools.dll!');
  IdeTools := cIdeTools.Create;}

  WaitForSingleObject(ClassLoadHndl, INFINITE); //We need some delay before trying to access cpuid engine
  CloseHandle(ClassLoadHndl);                   //Closing start event handle

  if (ParamSTR(1)='-mtrep') or (ParamSTR(2)='-mtrep') or (ParamSTR(3)='-mtrep') then begin MakeTextReport(false); Application.Terminate; end;
  //Filling CPU Selection comboBox
  for i:=1 to GetCPUCount do
    CpuSelectionV.Items.Add('CPU #'+IntToStr(i));

  MemInfo.FillMemCtrlInfo(CPUInfo[0].Clocks.lpCpuFrequency, CPUInfo[0].Clocks.Bus, CPUInfo[0].Clocks.Multiplier);
  CpuSelectionV.ItemIndex:=0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -