📄 mainun.pas
字号:
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 + -