home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2004 February
/
Chip_2004-02_cd1.bin
/
zkuste
/
konfig
/
download
/
msic
/
D5
/
MSI_Overview.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2003-10-21
|
74KB
|
2,441 lines
{*******************************************************}
{ }
{ MiTeC System Information Component }
{ System Overview }
{ version 8.5 for Delphi 5,6,7 }
{ }
{ Copyright ⌐ 1997,2003 Michal Mutl }
{ }
{*******************************************************}
{$INCLUDE MITEC_DEF.INC}
unit MSI_Overview;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
MSI_GUI, ComCtrls, StdCtrls, ExtCtrls, CheckLst,
ImgList, Mask, Menus, Buttons, MSI_Storage, MSI_USB;
const
iiComputer = 0;
iiSystem = 1;
iiDisplay = 2;
iiMonitor = 3;
iiVolumes = 4;
iiFDD = 5;
iiHDD = 6;
iiCDROM = 7;
iiTape = 8;
iiAPM = 9;
iiImaging = 10;
iiKeyboard = 11;
iiMouse = 12;
iiModem = 13;
iiPort = 14;
iiAdapter = 15;
iiPackage = 16;
iiSCSI = 17;
iiDriver = 18;
iiSound = 19;
iiUSB = 20;
iiGame = 21;
iiNet = 22;
iiProcess = 23;
iiPCMCIA = 24;
iiChanger = 25;
iiHID = 26;
iiGPS = 27;
iiReader = 28;
iiInfrared = 29;
iiMIDI = 30;
iiWave = 31;
iiMixer = 32;
iiAUX = 33;
iiDirectX = 34;
iiPrinter = 35;
iiPrinterDef = 36;
iiNetPrinter = 37;
iiNetPrinterDef = 38;
iiController = 39;
iiMemory = 40;
iiCPU = 41;
type
TfrmMSI_Overview = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
bRefresh: TButton;
Panel3: TPanel;
pc: TPageControl;
tsWksta: TTabSheet;
tsOS: TTabSheet;
tsCPU: TTabSheet;
pNumLock: TPanel;
pCapsLock: TPanel;
pScrollLock: TPanel;
bOK: TButton;
Image2: TImage;
lVersion: TLabel;
lVerNo: TLabel;
Bevel1: TBevel;
bEnvironment: TButton;
Image3: TImage;
lCPU: TLabel;
tsMemory: TTabSheet;
tsDisplay: TTabSheet;
Image5: TImage;
cbDisplay: TEdit;
Label33: TLabel;
tsAPM: TTabSheet;
GroupBox13: TGroupBox;
Label38: TLabel;
Label39: TLabel;
eAC: TEdit;
eBat: TEdit;
Image6: TImage;
GroupBox14: TGroupBox;
Label40: TLabel;
Label41: TLabel;
eBatFull: TEdit;
eBatLife: TEdit;
tsMedia: TTabSheet;
Label42: TLabel;
Panel5: TPanel;
img: TImageList;
tsNetwork: TTabSheet;
tsDevices: TTabSheet;
psd: TPrinterSetupDialog;
tsPrinters: TTabSheet;
Label48: TLabel;
Panel7: TPanel;
lvPrinter: TListView;
bPrint: TButton;
tsEngines: TTabSheet;
GroupBox17: TGroupBox;
Image7: TImage;
lODBC: TLabel;
lBDE: TLabel;
tsDrives: TTabSheet;
Label54: TLabel;
cbDrive: TComboBox;
GroupBox19: TGroupBox;
imgDrive: TImage;
lDriveType: TLabel;
clbFlags: TCheckListBox;
Label55: TLabel;
Label56: TLabel;
eUNC: TEdit;
eDSN: TEdit;
Bevel3: TBevel;
lCapacity: TLabel;
lFree: TLabel;
lBPS: TLabel;
lSPC: TLabel;
lTC: TLabel;
lFC: TLabel;
Bevel4: TBevel;
bReport: TButton;
ReportMenu: TPopupMenu;
pmAll: TMenuItem;
pmSelected: TMenuItem;
gDisk: TProgressBar;
gAPM: TProgressBar;
tsTZ: TTabSheet;
Panel12: TPanel;
Image10: TImage;
gbStd: TGroupBox;
Label12: TLabel;
Label73: TLabel;
eStdStart: TEdit;
eStdBias: TEdit;
eTZ: TEdit;
Label74: TLabel;
gbDay: TGroupBox;
Label75: TLabel;
Label76: TLabel;
Label77: TLabel;
edayStart: TEdit;
eDayBias: TEdit;
pcCPU: TPageControl;
tsID: TTabSheet;
tsFeatures: TTabSheet;
GroupBox5: TGroupBox;
lFamily: TLabel;
lSerial: TLabel;
lVendor: TLabel;
GroupBox6: TGroupBox;
Panel4: TPanel;
clbCPU: TCheckListBox;
lDAO: TLabel;
tsAbout: TTabSheet;
FooterPanel: TPanel;
sbMail: TSpeedButton;
TitlePanel: TPanel;
imgIcon: TImage;
Panel16: TPanel;
Memo: TMemo;
tsStartup: TTabSheet;
tsSoftware: TTabSheet;
tcStartup: TTabControl;
bNTSpec: TButton;
lvMedia: TListView;
Panel18: TPanel;
lvSound: TListView;
Label14: TLabel;
Panel20: TPanel;
lvSW: TListView;
Panel21: TPanel;
lvStartup: TListView;
lTitle: TLabel;
lVer: TLabel;
lADO: TLabel;
lCSD: TLabel;
lDVD: TLabel;
pcOS: TPageControl;
tsGeneral: TTabSheet;
tsFolders: TTabSheet;
tsInternet: TTabSheet;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label15: TLabel;
ePID: TEdit;
eRegUser: TEdit;
eRegOrg: TEdit;
ePKey: TEdit;
Panel15: TPanel;
FolderList: TListView;
Label43: TLabel;
Label44: TLabel;
Label45: TLabel;
Label46: TLabel;
eBrowser: TEdit;
eProxy: TEdit;
email: TEdit;
lCT: TLabel;
Bevel2: TBevel;
eMachine: TEdit;
pcEng: TPageControl;
tsDirectX: TTabSheet;
tsASPI: TTabSheet;
Panel19: TPanel;
lvDirectX: TListView;
ilEng: TImageList;
Panel22: TPanel;
lvASPI: TListView;
lASPI: TLabel;
Bevel5: TBevel;
lDirectX: TLabel;
Bevel6: TBevel;
tsLocale: TTabSheet;
Panel17: TPanel;
LocaleList: TListView;
Panel23: TPanel;
pcMem: TPageControl;
tsmemGen: TTabSheet;
GroupBox7: TGroupBox;
Image4: TImage;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
ePT: TEdit;
ePF: TEdit;
eFT: TEdit;
eFF: TEdit;
eVT: TEdit;
eVF: TEdit;
GroupBox9: TGroupBox;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
Label31: TLabel;
Label32: TLabel;
eAG: TEdit;
eAppAddr: TEdit;
ePS: TEdit;
tsmemMeas: TTabSheet;
GroupBox8: TGroupBox;
gMemory: TProgressBar;
GroupBox1: TGroupBox;
lGDI: TLabel;
lSystem: TLabel;
lUser: TLabel;
pbGDI: TProgressBar;
pbSystem: TProgressBar;
pbUser: TProgressBar;
Label13: TLabel;
Label50: TLabel;
gPhys: TProgressBar;
Label49: TLabel;
gPage: TProgressBar;
Label51: TLabel;
gVirt: TProgressBar;
Panel24: TPanel;
pcMachine: TPageControl;
tsMachineGeneral: TTabSheet;
tsMachineSMBIOS: TTabSheet;
gbMID: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Image1: TImage;
eWksta: TEdit;
eUser: TEdit;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Label7: TLabel;
Label8: TLabel;
eLastBoot: TEdit;
eSysTime: TEdit;
Panel25: TPanel;
Label60: TLabel;
eSMVer: TEdit;
Bevel7: TBevel;
pcSM: TPageControl;
tsSMSystem: TTabSheet;
GroupBox4: TGroupBox;
Label61: TLabel;
Label62: TLabel;
lSysVer: TLabel;
lSysSer: TLabel;
lSysID: TLabel;
eSysMod: TEdit;
eSysMan: TEdit;
eSysVer: TEdit;
eSysSer: TEdit;
eSysID: TEdit;
tsSMMB: TTabSheet;
GroupBox15: TGroupBox;
Label67: TLabel;
Label68: TLabel;
Label70: TLabel;
Label71: TLabel;
eMBMod: TEdit;
eMBMan: TEdit;
eMBVer: TEdit;
eMBSer: TEdit;
tsSMCH: TTabSheet;
GroupBox18: TGroupBox;
Label78: TLabel;
Label79: TLabel;
Label80: TLabel;
Label81: TLabel;
eCHMod: TEdit;
eCHMan: TEdit;
eCHVer: TEdit;
eCHSer: TEdit;
tsSMCPU: TTabSheet;
tsSMMem: TTabSheet;
Panel26: TPanel;
lvMem: TListView;
tsSMPort: TTabSheet;
Panel27: TPanel;
lvPort: TListView;
tsSMSlot: TTabSheet;
Panel28: TPanel;
lvSlot: TListView;
tsSMTables: TTabSheet;
Panel29: TPanel;
lvTables: TListView;
Label66: TLabel;
eSMTables: TEdit;
SpeedButton1: TSpeedButton;
Panel6: TPanel;
pcNet: TPageControl;
tsNetGeneral: TTabSheet;
Label47: TLabel;
Panel13: TPanel;
lvNetwork: TListView;
GroupBox16: TGroupBox;
Panel14: TPanel;
Label69: TLabel;
lbMAC: TListBox;
Panel30: TPanel;
Label64: TLabel;
lbIP: TListBox;
bProto: TButton;
bServ: TButton;
bCli: TButton;
tsNetWinsock: TTabSheet;
Label57: TLabel;
Label58: TLabel;
Label59: TLabel;
eWSDesc: TEdit;
eWSVer: TEdit;
eWSStat: TEdit;
tsNetTCPIP: TTabSheet;
Label72: TLabel;
Label82: TLabel;
eHost: TEdit;
eDomain: TEdit;
Panel31: TPanel;
AdapterList: TListView;
Bevel8: TBevel;
cbxProxy: TCheckBox;
cbxRouting: TCheckBox;
cbxDNS: TCheckBox;
cbAdapters: TComboBox;
Label87: TLabel;
tsSMCaches: TTabSheet;
Panel32: TPanel;
lvCache: TListView;
ePA: TEdit;
Label91: TLabel;
cbxDHCP: TCheckBox;
cbxWINS: TCheckBox;
Label92: TLabel;
eNode: TEdit;
Label93: TLabel;
eDNS: TEdit;
Label94: TLabel;
eAT: TEdit;
DNSBox: TListBox;
Label95: TLabel;
Panel33: TPanel;
tsCache: TTabSheet;
GroupBox20: TGroupBox;
Panel34: TPanel;
lModel: TLabel;
lStepping: TLabel;
lnamestring: TLabel;
lFriendlyname: TLabel;
lType: TLabel;
lLevel1: TLabel;
lLevel2: TLabel;
lLevel3: TLabel;
CacheBox: TListBox;
Label63: TLabel;
lFreq: TLabel;
sd: TSaveDialog;
Image8: TImage;
Image9: TImage;
lCodename: TLabel;
pcDisplay: TPageControl;
tsDisplay1: TTabSheet;
tsDisplay2: TTabSheet;
GroupBox10: TGroupBox;
Label34: TLabel;
Label35: TLabel;
Label36: TLabel;
Label37: TLabel;
Label65: TLabel;
eChip: TEdit;
eDAC: TEdit;
eMem: TEdit;
bModes: TButton;
eBIOSString: TEdit;
GroupBox12: TGroupBox;
eBIOS: TEdit;
Panel35: TPanel;
lvDisp: TListView;
GroupBox11: TPanel;
bCurve: TButton;
bLine: TButton;
bPoly: TButton;
bRaster: TButton;
bText: TButton;
Button1: TButton;
Button2: TButton;
tsStorage: TTabSheet;
tsBIOS: TTabSheet;
GroupBox21: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label53: TLabel;
eBIOSVendor: TEdit;
eBIOSVer: TEdit;
eBIOSDate: TEdit;
eBIOSSize: TEdit;
Label97: TLabel;
Label98: TLabel;
Label99: TLabel;
eSBCopy: TEdit;
eSBName: TEdit;
eSBDate: TEdit;
Label100: TLabel;
eSBExt: TEdit;
Label101: TLabel;
edate: TEdit;
Label102: TLabel;
Panel36: TPanel;
pcDev: TPageControl;
tsDevTree: TTabSheet;
tsDevRes: TTabSheet;
Panel8: TPanel;
Tree: TTreeView;
Panel9: TPanel;
bProps: TButton;
bRes: TButton;
Panel37: TPanel;
ResList: TListView;
tsSMMC: TTabSheet;
GroupBox22: TGroupBox;
Label103: TLabel;
Label104: TLabel;
Label105: TLabel;
Label106: TLabel;
Label107: TLabel;
eMCI: TEdit;
eMCSS: TEdit;
eMCST: TEdit;
eMCSV: TEdit;
eMCMS: TEdit;
Label108: TLabel;
Label109: TLabel;
eMCSC: TEdit;
tsUSB: TTabSheet;
ilUSB: TImageList;
Panel38: TPanel;
USBTree: TTreeView;
Panel10: TPanel;
StorageTree: TTreeView;
ilStorage: TImageList;
tsProcesses: TTabSheet;
Panel11: TPanel;
ProcList: TListView;
Label83: TLabel;
eCHAT: TEdit;
Label84: TLabel;
eMBAT: TEdit;
Label85: TLabel;
eMBLIC: TEdit;
lvProcs: TListView;
tsOBD: TTabSheet;
Panel39: TPanel;
lvOBD: TListView;
lHF: TLabel;
bES: TButton;
tsMemDev: TTabSheet;
Panel40: TPanel;
lvMemDev: TListView;
tsMonitor: TTabSheet;
cbMon: TComboBox;
Image11: TImage;
GroupBox23: TGroupBox;
Label52: TLabel;
Label86: TLabel;
Label90: TLabel;
eMonName: TEdit;
eMonSize: TEdit;
eMonSN: TEdit;
Label88: TLabel;
eMonMan: TEdit;
Label89: TLabel;
eGamma: TEdit;
Label96: TLabel;
eMonDate: TEdit;
Label110: TLabel;
eEDID: TEdit;
Label111: TLabel;
eMonMod: TEdit;
procedure FormCreate(Sender: TObject);
procedure cmRefresh(Sender: TObject);
procedure cmClose(Sender: TObject);
procedure cmEnvironment(Sender: TObject);
procedure cmCaps(Sender: TObject);
procedure cmPrintSetup(Sender: TObject);
procedure cbDriveChange(Sender: TObject);
procedure cmReportClick(Sender: TObject);
procedure cmReportAll(Sender: TObject);
procedure cmReportCurrent(Sender: TObject);
procedure clbClickCheck(Sender: TObject);
procedure cmModes(Sender: TObject);
procedure cmProto(Sender: TObject);
procedure cmServ(Sender: TObject);
procedure cmCli(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TreeChange(Sender: TObject; Node: TTreeNode);
procedure cmProps(Sender: TObject);
procedure cmMail(Sender: TObject);
procedure tcStartupChange(Sender: TObject);
procedure cmNTSpec(Sender: TObject);
procedure cmWeb(Sender: TObject);
procedure cbAdaptersChange(Sender: TObject);
procedure cbxClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure cmRes(Sender: TObject);
procedure USBTreeCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure TreeDeletion(Sender: TObject; Node: TTreeNode);
procedure StorageTreeCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure bESClick(Sender: TObject);
procedure cbMonChange(Sender: TObject);
private
FPages: TInfoPages;
FSysInfo: TMSystemInfo;
FShowRepBut: Boolean;
procedure SeTInfoPages(const Value: TInfoPages);
procedure SetShowRepBut(const Value: Boolean);
procedure SetCaptionText(const Value: string);
function FindUSBNode(AIndex: Integer): TTreeNode;
public
Report :TStringList;
property DisplayedPages: TInfoPages read FPages write SeTInfoPages;
property SysInfo: TMSystemInfo read FSysInfo write FSysInfo;
property ShowReportButton: Boolean read FShowRepBut write SetShowRepBut;
property CaptionText: string Write SetCaptionText;
procedure RefreshOverview(ForceRefresh: Boolean);
procedure GetInfo;
procedure GetWkstaInfo;
procedure GetOSInfo;
procedure GetCPUInfo;
procedure GetMemoryInfo;
procedure GetDisplayInfo;
procedure GetMonitorInfo;
procedure GetAPMInfo;
procedure GetMediaInfo;
procedure GetNetInfo;
procedure GetDeviceInfo;
procedure GetEngInfo;
procedure GetDriveInfo;
procedure GetTZInfo;
procedure GetPrintInfo;
procedure GetStartupInfo;
procedure GetSWInfo;
procedure GetStorageInfo;
procedure GetUSBInfo;
procedure GetProcessesInfo;
end;
var
frmMSI_Overview: TfrmMSI_Overview;
implementation
uses ShellAPI, ShlObj, MiTeC_Routines, MSI_Devices, MSI_DetailDlg, MSI_OS, MSI_APM,
MSI_Startup, MSI_Common, MiTeC_Datetime, MSI_SMBIOS,
MSI_Network, MSI_CPU, MiTeC_StrUtils, MSI_Machine, MSI_ResourcesDlg, MiTeC_NTDDK,
MiTeC_USB, MiTeC_WinIOCTL, MSI_Display;
{$R *.DFM}
const
cDeviceImageIndex: array[TDeviceClass] of integer =
(iiAPM, iiSystem, iiVolumes, iiDisplay, iiCDROM, iiVolumes,
iiFDD, iiGPS, iiHID, iiVolumes, iiDriver, iiImaging,
iiInfrared, iiKeyboard, iiChanger, iiDriver, iiMouse, iiModem,
iiMonitor, iiReader, iiPort, iiAdapter, iiDriver,
iiPackage, iiDriver, iiAdapter, iiPort, iiPrinter, iiSCSI,
iiReader, iiSound, iiHDD, iiSystem, iiTape, iiController,
iiTape, iiUSB, iiCPU);
{ TfrmMSI_Overview }
procedure TfrmMSI_Overview.GetWkstaInfo;
var
i: Integer;
begin
with SysInfo.Machine do begin
if Trim(Computer)<>'' then
eMachine.Text:=' '+Computer+' ';
eWksta.text:=Name;
eUser.text:=User;
eSBCopy.Text:=BIOS.Copyright;
eSBName.Text:=BIOS.Name;
eSBDate.Text:=BIOS.Date;
eSBExt.Text:=BIOS.ExtendedInfo;
eLastBoot.text:=datetimetostr(LastBoot);
eSysTime.text:=formatseconds(SystemUpTime,true,false,false);
if NumLock then
pNumLock.color:=clLime
else
pNumLock.color:=clSilver;
if CapsLock then
pCapsLock.color:=clLime
else
pCapsLock.color:=clSilver;
if ScrollLock then
pScrollLock.color:=clLime
else
pScrollLock.color:=clSilver;
with SMBIOS do begin
eSMVer.Text:=Version;
eSMTables.Text:=Format('%d',[Length(StructTables)]);
if BIOSVendor='' then
eBIOSVendor.Text:=BIOS.Copyright
else
eBIOSVendor.Text:=BIOSVendor;
if BIOSVersion='' then
eBIOSVer.Text:=BIOS.Name+' '+BIOS.ExtendedInfo
else
eBIOSVer.Text:=BIOSVersion;
if BIOSDate='' then
eBIOSDate.Text:=BIOS.Date
else
eBIOSDate.Text:=BIOSDate;
eBIOSSize.Text:=Format('%d',[BIOSSize]);
eSysMod.Text:=SystemModel;
eSysMan.Text:=SystemManufacturer;
eSysVer.Text:=SystemVersion;
eSysSer.Text:=SystemSerial;
eSysID.Text:=SystemUUID;
eMBMod.Text:=MainBoardModel;
eMBMan.Text:=MainBoardManufacturer;
eMBVer.Text:=MainBoardVersion;
eMBSer.Text:=MainBoardSerial;
eMBAT.Text:=MainBoardAssetTag;
eMBLIC.Text:=MainBoardLocationInChassis;
eCHMod.Text:=ChassisTypes[ChassisModel];
eCHMan.Text:=ChassisManufacturer;
eCHVer.Text:=ChassisVersion;
eCHSer.Text:=ChassisSerial;
eCHAT.Text:=ChassisAssetTag;
eMCI.Text:=Format('%s / %s',[InterleaveSupports[MemCtrlCurrentInterleave],
InterleaveSupports[MemCtrlSupportedInterleave]]);
eMCSS.Text:=GetMemorySpeedStr(MemCtrlSupportedSpeeds);
eMCST.Text:=GetMemoryTypeStr(MemCtrlSupportedTypes);
eMCSV.Text:=GetMemoryVoltageStr(MemCtrlSupportedVoltages);
eMCMS.Text:=Format('%d',[MemCtrlMaxSize]);
eMCSC.Text:=Format('%d',[MemCtrlSlotCount]);
lvProcs.Items.Clear;
for i:=0 to ProcessorCount-1 do
with lvProcs.Items.Add do begin
Caption:=Processor[i].Manufacturer;
SubItems.Add(Processor[i].Version);
SubItems.Add(Processor[i].Socket);
SubItems.Add(Upgrades[Processor[i].Upgrade]);
SubItems.Add(Format('%1.1f V',[Processor[i].Voltage]));
SubItems.Add(Format('%d MHz',[Processor[i].Frequency]));
SubItems.Add(Format('%d MHz',[Processor[i].ExternalClock]));
SubItems.Add(Processor[i].SerialNumber);
SubItems.Add(Processor[i].AssetTag);
SubItems.Add(Processor[i].PartNumber);
ImageIndex:=iiCPU;
end;
lvCache.Items.Clear;
for i:=0 to CacheCount-1 do
with lvCache.Items.Add do begin
Caption:=Cache[i].Designation;
SubItems.Add(CacheTypes[Cache[i].Typ]);
SubItems.Add(CacheAssociativities[Cache[i].Associativity]);
SubItems.Add(SRAMTypes[Cache[i].SRAMType]);
SubItems.Add(Format('%d KB',[Cache[i].InstalledSize]));
SubItems.Add(Format('%d KB',[Cache[i].MaxSize]));
SubItems.Add(Format('%d ns',[Cache[i].Speed]));
ImageIndex:=iiMemory;
end;
lvMem.Items.Clear;
for i:=0 to MemoryModuleCount-1 do
with lvMem.Items.Add do begin
Caption:=MemoryModule[i].Socket;
SubItems.Add(GetMemoryTypeStr(MemoryModule[i].Types));
SubItems.Add(Format('%d MB',[MemoryModule[i].Size]));
SubItems.Add(Format('%d ns',[MemoryModule[i].Speed]));
ImageIndex:=iiMemory;
end;
lvMemDev.Items.Clear;
for i:=0 to MemoryDeviceCount-1 do
with lvMemDev.Items.Add do begin
Caption:=MemoryDevice[i].DeviceLocator;
SubItems.Add(MemoryDevice[i].BankLocator);
SubItems.Add(MemoryDeviceTypes[MemoryDevice[i].Device]);
SubItems.Add(GetMemoryTypeDetailsStr(MemoryDevice[i].TypeDetails));
SubItems.Add(MemoryFormFactors[MemoryDevice[i].FormFactor]);
SubItems.Add(Format('%d MB',[MemoryDevice[i].Size]));
SubItems.Add(Format('%d MHz',[MemoryDevice[i].Speed]));
SubItems.Add(Format('%d b',[MemoryDevice[i].TotalWidth]));
SubItems.Add(Format('%d b',[MemoryDevice[i].DataWidth]));
SubItems.Add(MemoryDevice[i].Manufacturer);
SubItems.Add(MemoryDevice[i].SerialNumber);
SubItems.Add(MemoryDevice[i].AssetTag);
SubItems.Add(MemoryDevice[i].PartNumber);
ImageIndex:=iiMemory;
end;
lvPort.Items.Clear;
for i:=0 to PortCount-1 do
with lvPort.Items.Add do begin
Caption:=PortTypes[Port[i].Typ];
SubItems.Add(Port[i].InternalDesignator);
SubItems.Add(ConnectorTypes[Port[i].InternalConnector]);
SubItems.Add(Port[i].ExternalDesignator);
SubItems.Add(ConnectorTypes[Port[i].ExternalConnector]);
ImageIndex:=iiPort;
end;
lvSlot.Items.Clear;
for i:=0 to SystemSlotCount-1 do
with lvSlot.Items.Add do begin
Caption:=SlotTypes[SystemSlot[i].Typ];
SubItems.Add(DataBusTypes[SystemSlot[i].DataBus]);
SubItems.Add(SlotUsages[SystemSlot[i].Usage]);
SubItems.Add(SlotLengths[SystemSlot[i].Length]);
ImageIndex:=iiAdapter;
end;
lvOBD.Items.Clear;
for i:=0 to OnBoardDeviceCount-1 do
with lvOBD.Items.Add do begin
Caption:=OnBoardDevice[i].DeviceName;
SubItems.Add(OnBoardDeviceTypes[OnBoardDevice[i].Typ]);
if OnBoardDevice[i].Status then
SubItems.Add('Enabled')
else
SubItems.Add('Disabled');
ImageIndex:=iiAdapter;
end;
lvTables.Items.Clear;
for i:=0 to High(StructTables) do
with lvTables.Items.Add do begin
Caption:=Format('Type %d: %s',[StructTables[i].Indicator,StructTables[i].Name]);
SubItems.Add(Format('%d',[StructTables[i].Length]));
SubItems.Add(Format('%4.4x',[StructTables[i].Handle]));
ImageIndex:=-1;
end;
end;
end;
end;
procedure TfrmMSI_Overview.GetOSInfo;
var
i: integer;
s: string;
begin
with SysInfo.OS do begin
if IsNT then
s:=OSVersion
else
s:=OSVersionEx;
case Platform of
opWin31: tsOS.Caption:='Windows 3.1x';
opWin9x: tsOS.Caption:='Windows 9x';
opWinNT: tsOS.Caption:='Windows NT';
end;
if IsNT then begin
s:=s+' '+NTSpecific.GetProductTypeStr(NTSpecific.ProductType);
lCSD.caption:=CSD;
lHF.Caption:='Hot Fixes: '+NTSpecific.HotFixes;
end;
lVersion.caption:=s;
if IsNT then
lVerNo.caption:=format('Version: %d.%d.%d (%s)',[MajorVersion,MinorVersion,BuildNumber,Version])
else
lVerNo.caption:=format('Version: %d.%d.%d',[MajorVersion,MinorVersion,BuildNumber]);
bNTSpec.Enabled:=Is2K or IsXP or IsNET;
ePID.text:=ProductID;
ePKey.text:=ProductKey;
eRegUser.text:=RegisteredUser;
eRegOrg.text:=RegisteredOrg;
if DVDRegion<>'' then
lDVD.Caption:='DVD Region: '+DVDRegion;
FolderList.Items.Clear;
for i:=0 to Folders.Count-1 do
if Folders.Values[Folders.Names[i]]<>'' then
with FolderList.Items.Add do begin
Caption:=Folders.Names[i];
SubItems.Add(Folders.Values[Folders.Names[i]]);
end;
LocaleList.Items.Clear;
with LocaleList.Items.Add do begin
Caption:='Abbreviate Country Code';
SubItems.Add(LocaleInfo.AbbreviateCountryCode);
end;
with LocaleList.Items.Add do begin
Caption:='Abbreviate Language Code';
SubItems.Add(LocaleInfo.AbbreviateLanguageName);
end;
with LocaleList.Items.Add do begin
Caption:='Country Code';
SubItems.Add(LocaleInfo.CountryCode);
end;
with LocaleList.Items.Add do begin
Caption:='Currency Decimal Digits';
SubItems.Add(LocaleInfo.CurrencyDecimalDigits);
end;
with LocaleList.Items.Add do begin
Caption:='Full Country Code';
SubItems.Add(LocaleInfo.FullCountryCode);
end;
with LocaleList.Items.Add do begin
Caption:='Full English Language Name';
SubItems.Add(LocaleInfo.FullLanguageEnglishName);
end;
with LocaleList.Items.Add do begin
Caption:='Full Localize Language Name';
SubItems.Add(LocaleInfo.FullLocalizeLanguage);
end;
with LocaleList.Items.Add do begin
Caption:='Intl. Monetary Symbol';
SubItems.Add(LocaleInfo.InternationalMonetarySymbol);
end;
with LocaleList.Items.Add do begin
Caption:='Local Monetary Symbol';
SubItems.Add(LocaleInfo.LocalMonetarySymbol);
end;
with LocaleList.Items.Add do begin
Caption:='Positive Currency Mode';
case LocaleInfo.PositiveCurrencyMode of
Prefix_No_Separation: SubItems.Add('Prefix_No_Separation');
Suffix_No_Separation: SubItems.Add('Suffix_No_Separation');
Prefix_One_Char_Separation: SubItems.Add('Prefix_One_Char_Separation');
Suffix_One_Char_Separation: SubItems.Add('Suffix_One_Char_Separation');
end;
end;
with LocaleList.Items.Add do begin
Caption:='Negative Currency Mode';
SubItems.Add(LocaleInfo.NegativeCurrencyMode);
end;
with LocaleList.Items.Add do begin
Caption:='Currency Decimal Separator';
SubItems.Add(LocaleInfo.CurrencyDecimalSeparator);
end;
with LocaleList.Items.Add do begin
Caption:='Currency Thousand Separator';
SubItems.Add(LocaleInfo.CurrencyThousandSeparator);
end;
with LocaleList.Items.Add do begin
Caption:='Decimal Separator';
SubItems.Add(LocaleInfo.DecimalSeparator);
end;
with LocaleList.Items.Add do begin
Caption:='Number Of Decimal Digits';
SubItems.Add(LocaleInfo.NumberOfDecimalDigits);
end;
with LocaleList.Items.Add do begin
Caption:='List Separator';
SubItems.Add(LocaleInfo.ListSeparator);
end;
with LocaleList.Items.Add do begin
Caption:='Date Separator';
SubItems.Add(LocaleInfo.DateSeparator);
end;
with LocaleList.Items.Add do begin
Caption:='Long Date Order';
case LocaleInfo.LongDateOrder of
MDY: SubItems.Add('M-D-Y');
DMY: SubItems.Add('D-M-Y');
YMD: SubItems.Add('Y-M-D');
end;
end;
with LocaleList.Items.Add do begin
Caption:='Short Date Order';
case LocaleInfo.ShortDateOrder of
MDY: SubItems.Add('M-D-Y');
DMY: SubItems.Add('D-M-Y');
YMD: SubItems.Add('Y-M-D');
end;
end;
with LocaleList.Items.Add do begin
Caption:='Short Date Format';
SubItems.Add(LocaleInfo.ShortDateFormat);
end;
with LocaleList.Items.Add do begin
Caption:='Time Format';
SubItems.Add(LocaleInfo.TimeFormat);
end;
with LocaleList.Items.Add do begin
Caption:='Time Format Specifier';
case LocaleInfo.TimeFormatSpecifier of
H12: SubItems.Add('12H');
H24: SubItems.Add('24H');
end;
end;
with LocaleList.Items.Add do begin
Caption:='Year Format';
case LocaleInfo.YearFormat of
TwoDigit: SubItems.Add('Two Digit');
FourDigit: SubItems.Add('Four Digit');
end;
end;
with LocaleList.Items.Add do begin
Caption:='Measurement System';
case LocaleInfo.MeasurementSystem of
Metric: SubItems.Add('Metric');
US: SubItems.Add('U.S.');
end;
end;
eBrowser.Text:=Internet.DefaultBrowser;
eMail.Text:=Internet.DefaultMailClient;
eProxy.Text:=Internet.ProxyServer;
lCT.Caption:=Internet.GetConnTypeStr(Internet.ConnectionType);
end;
end;
procedure TfrmMSI_Overview.GetCPUInfo;
var
sl :TStringList;
i :Longint;
begin
with SysInfo.CPU do begin
//if Trim(CPUIDNameString)='' then
lCPU.caption:=format('%d x %s %s - %d MHz',[Count,CPUVendors[VendorType],FriendlyName,Frequency]);
{else
lCPU.caption:=format('%d x %s - %d MHz',[Count,Trim(CPUIDNameString),Frequency]);}
lFamily.caption:=format( 'Family: %d (%d)',[Family,ExtendedFamily]);
lModel.caption:=format( 'Model: %d (%d)',[Model,ExtendedModel]);
lStepping.caption:=format('Stepping: %d (%d)',[Stepping,ExtendedStepping]);
lType.Caption:=Format('Type: %s',[CPUTypes[CPUType]]);
lFreq.Caption:=Format('Frequency: %d MHz',[Frequency]);
lVendor.Caption:='Vendor: '+Vendor;
lnamestring.Caption:='Name String: '+CPUIDNameString;
lFriendlyname.Caption:='Friendly Name: '+FriendlyName;
lCodename.Caption:='Code Name: '+CodeName;
if Features.PSN then
lSerial.caption:='Serial Number: '+SerialNumber
else
lSerial.caption:='Serial Number is not supported.';
sl:=TStringList.Create;
Features.GetFeaturesStr(sl);
sl.Add(Format('FDIV Bug=%d',[integer(FDIVBug)]));
clbCPU.items.Clear;
for i:=1 to sl.count-1 do begin
clbCPU.items.Add(sl.Names[i]);
clbCPU.Checked[clbCPU.items.count-1]:=Boolean(StrToInt(sl.Values[sl.Names[i]]));
end;
sl.Free;
lLevel1.Caption:=Format('Level 1: %d KB (%d KB Data + %d KB Instruction)',[Cache.Level1,Cache.L1data,cache.L1Code]);
lLevel2.Caption:=Format('Level 2: %d KB',[Cache.Level2]);
lLevel3.Caption:=Format('Level 3: %d KB',[Cache.Level3]);
CacheBox.Items.Clear;
CacheBox.Items.AddStrings(Cache.Descriptions);
end;
end;
procedure TfrmMSI_Overview.GetMemoryInfo;
begin
pcMem.ActivePage:=tsmemGen;
with SysInfo.Memory do begin
eAG.text:=formatfloat('#,##',AllocGranularity);
eAppAddr.text:=format('%s - %s',[inttohex(MinAppAddress,8),inttohex(MaxAppAddress,8)]);
ePS.text:=formatfloat('#,##',PageSize);
ePT.text:=formatfloat('#,##',PhysicalTotal);
ePF.text:=formatfloat('#,#0',PhysicalFree);
eFT.text:=formatfloat('#,##',PageFileTotal);
eFF.text:=formatfloat('#,#0',PageFileFree);
eVT.text:=formatfloat('#,##',VirtualTotal);
eVF.text:=formatfloat('#,#0',VirtualFree);
try
gMemory.Position:=MemoryLoad;
gPhys.Max:=PhysicalTotal;
gPhys.Position:=PhysicalFree;
gPage.Max:=PageFileTotal;
gPage.Position:=PageFileFree;
gVirt.Max:=VirtualTotal;
gVirt.Position:=VirtualFree;
except
end;
try
pbGDI.Position:=Resources.GDI;
pbUser.Position:=Resources.User;
pbSystem.Position:=Resources.System;
lGDI.Caption:=Format('GDI - %d%% free',[pbGDI.Position]);
lUser.Caption:=Format('User - %d%% free',[pbUser.Position]);
lSystem.Caption:=Format('System - %d%% free',[pbSystem.Position]);
except
end;
end;
end;
procedure TfrmMSI_Overview.GetDisplayInfo;
begin
pcDisplay.ActivePage:=tsDisplay1;
with SysInfo, Display do begin
cbDisplay.Text:=Adapter;
eChip.text:=Chipset;
eDAC.text:=DAC;
eBIOSString.text:=BIOSString;
eMem.text:=IntToStr(Memory);
eBIOS.text:=format('%s',[BIOSVersion]);
edate.text:=format('%s',[BIOSDate]);
with lvDisp, Items do begin
Clear;
with Add do begin
Caption:='Technology';
SubItems.Add(Technology);
end;
with Add do begin
Caption:='Device Driver Version';
SubItems.Add(format('%d',[DeviceDriverVersion]));
end;
with Add do begin
Caption:='Resolution';
SubItems.Add(Format('%d x %d - %d bit',[HorzRes,VertRes,ColorDepth]));
end;
with Add do begin
Caption:='Physical Size';
SubItems.Add(Format('(%d x %d) mm',[HorzSize,VertSize]));
end;
with Add do begin
Caption:='Pixel Width';
SubItems.Add(format('%d',[PixelWidth]));
end;
with Add do begin
Caption:='Pixel Height';
SubItems.Add(format('%d',[PixelHeight]));
end;
with Add do begin
Caption:='Pixel Diagonal';
SubItems.Add(format('%d',[PixelDiagonal]));
end;
with Add do begin
Caption:='Font Resolution';
SubItems.Add(format('%d dpi',[FontResolution]));
end;
if IsNT then
with Add do begin
Caption:='Vertical Refresh Rate';
SubItems.Add(format('%d Hz',[VerticalRefreshRate]));
end;
end;
end;
end;
procedure TfrmMSI_Overview.GetAPMInfo;
begin
with SysInfo.APM do begin
eAC.text:=GetACPSStr(ACPowerStatus);
eBat.text:=GetBSStr(BatteryChargeStatus);
if BatteryLifePercent<=100 then begin
eBatFull.text:=formatseconds(BatteryLifeFullTime,true,false,false);
eBatLife.text:=formatseconds(BatteryLifeTime,true,false,false);
gAPM.Position:=BatteryLifePercent;
end else begin
eBatFull.text:='<info not available>';
eBatLife.text:='<info not available>';
end;
end;
end;
procedure TfrmMSI_Overview.GetMediaInfo;
var
i :integer;
begin
with SysInfo.Media do begin
lvMedia.Items.beginUpdate;
lvMedia.items.clear;
for i:=0 to Devices.count-1 do
with lvMedia.items.add do begin
caption:=Devices[i];
if i=GamePortIndex then
imageindex:=iiGame
else
if i=SoundCardIndex then
imageindex:=iiAdapter
else
imageindex:=iiSound;
end;
lvMedia.Items.EndUpdate;
lvSound.Items.beginUpdate;
lvSound.items.clear;
for i:=0 to WaveIn.count-1 do
with lvSound.items.add do begin
caption:=WaveIn[i];
SubItems.Add('Wave In');
ImageIndex:=iiWave;
end;
for i:=0 to WaveOut.count-1 do
with lvSound.items.add do begin
caption:=WaveOut[i];
SubItems.Add('Wave Out');
ImageIndex:=iiWave;
end;
for i:=0 to MIDIIn.count-1 do
with lvSound.items.add do begin
caption:=MIDIIn[i];
SubItems.Add('MIDI In');
ImageIndex:=iiMIDI;
end;
for i:=0 to MIDIOut.count-1 do
with lvSound.items.add do begin
caption:=MIDIOut[i];
SubItems.Add('MIDI Out');
ImageIndex:=iiMIDI;
end;
for i:=0 to AUX.count-1 do
with lvSound.items.add do begin
caption:=AUX[i];
SubItems.Add('AUX');
ImageIndex:=iiAUX;
end;
for i:=0 to Mixer.count-1 do
with lvSound.items.add do begin
caption:=Mixer[i];
SubItems.Add('Mixer');
ImageIndex:=iiMixer;
end;
end;
lvSound.Items.endUpdate;
end;
procedure TfrmMSI_Overview.GetNetInfo;
var
i :integer;
begin
with SysInfo.Network do begin
pcNet.ActivePage:=tsNetGeneral;
lvNetwork.items.clear;
for i:=0 to Adapters.count-1 do
with lvNetwork.items.add do begin
caption:=Adapters[i];
if CardAdapterIndex=i then
imageindex:=iiAdapter
else
imageindex:=iiNet;
end;
lbIP.Items.Text:=IPAddresses.Text;
lbMAC.Items.Text:=MACAddresses.Text;
eWSDesc.Text:=Winsock.Description;
eWSVer.Text:=Format('%d.%d',[Winsock.MajorVersion,Winsock.MinorVersion]);
eWSStat.Text:=Winsock.Status;
with TCPIP do begin
eDomain.Text:=DomainName;
eHost.Text:=HostName;
eNode.Text:=NodeTypes[NodeType];
eDNS.Text:=PrimaryDNSSuffix;
cbxProxy.Checked:=EnableProxy;
cbxRouting.Checked:=EnableRouting;
cbxDNS.Checked:=EnableDNS;
cbAdapters.Items.Clear;
for i:=0 to AdapterCount-1 do
cbAdapters.Items.Add(Adapter[i].Name);
DNSBox.Items.Clear;
for i:=0 to DNSServers.Count-1 do begin
DNSBox.Items.Add(DNSServers[i]);
if DNSSuffixes.Count>i then
DNSBox.Items[DNSBox.Items.Count-1]:=DNSBox.Items[DNSBox.Items.Count-1]+' '+DNSSuffixes[i];
end;
if cbAdapters.Items.Count>0 then begin
cbAdapters.ItemIndex:=0;
cbAdaptersChange(nil);
end;
end;
end;
end;
procedure TfrmMSI_Overview.GetDeviceInfo;
var
i,c: integer;
r,n: TTreeNode;
cn,dn: string;
pi: PInteger;
ldc: TDeviceClass;
RL: TResourceList;
begin
ldc:=dcUnknown;
with SysInfo, Devices, Tree,Items do begin
c:=DeviceCount-1;
BeginUpdate;
while Count>0 do begin
if Assigned(Items[Count-1].Data) then
FreeMem(Items[Count-1].Data);
Delete(Items[Count-1]);
end;
r:=Add(nil,GetMachine);
r.ImageIndex:=0;
r.SelectedIndex:=r.ImageIndex;
n:=nil;
for i:=0 to c do begin
if Trim(Devices[i].ClassDesc)<>'' then
cn:=Devices[i].ClassDesc
else
cn:=Devices[i].ClassName;
if not Assigned(n) or (Devices[i].DeviceClass<>ldc) then begin
ldc:=Devices[i].DeviceClass;
n:=AddChild(r,cn);
n.ImageIndex:=cDeviceImageIndex[Devices[i].DeviceClass];
n.SelectedIndex:=n.ImageIndex;
end;
if Trim(Devices[i].FriendlyName)='' then
dn:=Devices[i].Description
else
dn:=Devices[i].FriendlyName;
with AddChild(n,dn) do begin
ImageIndex:=n.ImageIndex;
SelectedIndex:=ImageIndex;
new(pi);
pi^:=i;
Data:=pi;
end;
n.AlphaSort;
end;
r.AlphaSort;
r.Expand(False);
EndUpdate;
end;
with SysInfo, Devices, ResList, Items do begin
GetResourceList(RL);
BeginUpdate;
try
Clear;
for i:=0 to High(RL) do
with Add do begin
Caption:=RL[i].Resource;
SubItems.Add(ResourceShareStr(RL[i].Share));
SubItems.Add(RL[i].Device);
ImageIndex:=cDeviceImageIndex[RL[i].DeviceClass];
end;
finally
EndUpdate;
end;
end;
end;
procedure TfrmMSI_Overview.GetEngInfo;
var
i: integer;
begin
with SysInfo.Engines do begin
if ODBC<>'' then
lODBC.caption:='Open Database Connectivity '+ODBC
else
lODBC.caption:='Open Database Connectivity not found';
if BDE<>'' then
lBDE.caption:='Borland Database Engine '+BDE
else
lBDE.caption:='Borland Database Engine not found';
if DAO<>'' then
lDAO.caption:='Microsoft Data Access Objects '+DAO
else
lDAO.caption:='Microsoft Data Access Objects not found';
if ADO<>'' then
lADO.caption:='Microsoft ActiveX Data Objects '+ADO
else
lADO.caption:='Microsoft ActiveX Data Objects not found';
end;
with SysInfo.Engines.DirectX do begin
if Version<>'' then begin
lDirectX.caption:='Installed version: '+Version;
lvDirectX.Items.beginUpdate;
lvDirectX.items.clear;
for i:=0 to Direct3D.count-1 do
with lvDirectX.items.add do begin
caption:=Direct3D[i];
SubItems.Add('Direct3D');
ImageIndex:=iiDirectX;
end;
for i:=0 to DirectMusic.count-1 do
with lvDirectX.items.add do begin
caption:=DirectMusic[i];
SubItems.Add('DirectMusic');
ImageIndex:=iiDirectX;
end;
for i:=0 to DirectPlay.count-1 do
with lvDirectX.items.add do begin
caption:=DirectPlay[i];
SubItems.Add('DirectPlay');
ImageIndex:=iiDirectX;
end;
lvDirectX.Items.endUpdate;
end else
lDirectX.caption:='Not installed.';
end;
with SysInfo.Engines.ASPI32 do begin
if ASPI<>'' then
lASPI.caption:='Adaptec ASPI '+ASPI
else
lASPI.caption:='Adaptec ASPI not found';
//lvASPI.Items.beginUpdate;
lvASPI.items.Clear;
for i:=0 to Configuration.Adapter.Count-1 do
with lvASPI.items.add do begin
caption:=Configuration.Vendor[i]+Configuration.Product[i];
SubItems.Add(Configuration.Revision[i]);
SubItems.Add(Configuration.Adapter[i]);
SubItems.Add(Configuration.ID[i]);
SubItems.Add(Configuration.Typ[i]);
SubItems.Add(Configuration.Spec[i]);
ImageIndex:=-1;
end;
//lvASPI.Items.beginUpdate;
end;
end;
procedure TfrmMSI_Overview.GetDriveInfo;
var
i,j :integer;
s :string;
begin
j:=0;
with SysInfo.Disk do begin
cbDrive.items.clear;
for i:=1 to length(AvailableDisks) do begin
s:=uppercase(copy(AvailableDisks,i,1));
cbDrive.items.add(s+':');
if s=uppercase(copy(SysInfo.OS.Folders.Values['Windows'],1,1)) then
j:=i-1;
end;
cbDrive.itemindex:=j;
cbDriveChange(nil);
end;
end;
procedure TfrmMSI_Overview.GetInfo;
begin
screen.cursor:=crhourglass;
try
if pgWksta in DisplayedPages then
GetWkstaInfo;
if pgOS in DisplayedPages then
GetOSInfo;
if pgCPU in DisplayedPages then
GetCPUInfo;
if pgMem in DisplayedPages then
GetMemoryInfo;
if pgDisplay in DisplayedPages then
GetDisplayInfo;
if pgMonitor in DisplayedPages then
GetMonitorInfo;
if pgAPM in DisplayedPages then
GetAPMInfo;
if pgMedia in DisplayedPages then
GetMediaInfo;
if pgNet in DisplayedPages then
GetNetInfo;
if pgDev in DisplayedPages then
GetDeviceInfo;
if pgEng in DisplayedPages then
GetEngInfo;
if pgDisk in DisplayedPages then
GetDriveInfo;
if pgTZ in DisplayedPages then
GetTZInfo;
if pgPrn in DisplayedPages then
GetPrintInfo;
if pgStartup in DisplayedPages then
GetStartupInfo;
if pgSoftware in DisplayedPages then
GetSWInfo;
if pgStorage in DisplayedPages then
GetStorageInfo;
if pgUSB in DisplayedPages then
GetUSBInfo;
if pgProcesses in DisplayedPages then
GetProcessesInfo;
finally
screen.cursor:=crdefault;
end;
end;
procedure TfrmMSI_Overview.FormCreate(Sender: TObject);
begin
Report:=TStringList.Create;
DisplayedPages:=pgAll;
pc.activepage:=tsWksta;
pcCPU.ActivePage:=tsID;
pcMachine.ActivePage:=tsMachineGeneral;
pcSM.ActivePage:=tsBIOS;
lTitle.Caption:=cCompName;
lVer.Caption:='Version '+cVersion;
FooterPanel.Caption:=cCopyright;
pcOS.ActivePage:=tsGeneral;
pcEng.ActivePage:=tsDirectX;
pcDev.ActivePage:=tsDevTree;
bRes.Visible:=IsNT;
tsDevRes.TabVisible:=IsNT;
{$IFNDEF ERROR_INTERCEPT}
bES.Hide;
{$ENDIF}
end;
procedure TfrmMSI_Overview.cmRefresh(Sender: TObject);
begin
RefreshOverview(True);
end;
procedure TfrmMSI_Overview.cmClose(Sender: TObject);
begin
close;
end;
procedure TfrmMSI_Overview.cmEnvironment(Sender: TObject);
var
i: integer;
begin
with TdlgMSI_Detail.Create(Self) do begin
Notebook.pageindex:=3;
TabSheet1.Caption:='Environment';
for i:=0 to SysInfo.OS.Environment.Count-1 do
with lv.Items.Add do begin
Caption:=SysInfo.OS.Environment.Names[i];
SubItems.Add(SysInfo.OS.Environment.Values[SysInfo.OS.Environment.Names[i]]);
end;
showmodal;
free;
end;
end;
procedure TfrmMSI_Overview.cmCaps(Sender: TObject);
var
i :integer;
sl :TStringList;
begin
with TdlgMSI_Detail.Create(self) do begin
Notebook.pageindex:=1;
sl:=TStringList.Create;
case TComponent(sender).tag of
0: begin
TabSheet1.Caption:='Curve Capabilities';
GetCurveCapsStr(SysInfo.Display.CurveCaps,sl);
end;
1: begin
TabSheet1.Caption:='Line Capabilities';
GetLineCapsStr(SysInfo.Display.LineCaps,sl);
end;
2: begin
TabSheet1.Caption:='Polygonal Capabilities';
GetPolygonCapsStr(SysInfo.Display.PolygonCaps,sl);
end;
3: begin
TabSheet1.Caption:='Raster Capabilities';
GetRasterCapsStr(SysInfo.Display.RasterCaps,sl);
end;
4: begin
TabSheet1.Caption:='Text Capabilities';
GetTextCapsStr(SysInfo.Display.TextCaps,sl);
end;
5: begin
TabSheet1.Caption:='Shade Blend Capabilities';
GetShadeBlendCapsStr(SysInfo.Display.ShadeBlendCaps,sl);
end;
6: begin
TabSheet1.Caption:='Color Management Capabilities';
GetColorMgmtCapsStr(SysInfo.Display.ColorMgmtCaps,sl);
end;
end;
clb.items.clear;
for i:=0 to sl.count-1 do begin
clb.items.Add(sl.Names[i]);
clb.Checked[clb.items.count-1]:=Boolean(StrToInt(sl.Values[sl.Names[i]]));
end;
sl.free;
showmodal;
free;
end;
end;
procedure TfrmMSI_Overview.cmPrintSetup(Sender: TObject);
begin
psd.execute;
end;
procedure TfrmMSI_Overview.cbDriveChange(Sender: TObject);
var
p,i :Word;
b :pchar;
sl :TStringList;
begin
with SysInfo.Disk do begin
gdisk.Position:=0;
b:=stralloc(255);
p:=0;
if cbDrive.Text='' then
Exit;
Drive:=copy(cbDrive.text,1,2);
strpcopy(b,Drive+'\');
lDriveType.caption:=GetMediaTypeStr(MediaType)+' - '+FileSystem;
if MediaPresent then
imgDrive.picture.icon.handle:=extractassociatedicon(hinstance,b,p)
else
imgDrive.picture.icon.handle:=0;
strdispose(b);
eUNC.text:=expanduncfilename(Drive);
eDSN.text:=SerialNumber;
if pos('[',cbdrive.items[cbdrive.itemindex])=0 then begin
i:=cbdrive.itemindex;
cbdrive.items[i]:=cbdrive.items[i]+' ['+VolumeLabel+']';
cbdrive.itemindex:=i;
end;
lCapacity.caption:=formatfloat('Capacity: #,#0 B',Capacity);
lFree.caption:=formatfloat('Free space: #,#0 B',FreeSpace);
try
gDisk.Position:=round((Capacity-FreeSpace)/Capacity*100);
except
end;
lBPS.caption:=formatfloat('Bytes/sector: 0',BytesPerSector);
lSPC.caption:=formatfloat('Sector/cluster: 0',SectorsPerCluster);
lFC.caption:=formatfloat('Free clusters: #,#0',FreeClusters);
lTC.caption:=formatfloat('Total clusters: #,#0',TotalClusters);
sl:=TStringList.Create;
GetFileFlagsStr(sl);
clbFlags.items.Clear;
for i:=1 to sl.count-1 do begin
clbFlags.items.Add(sl.Names[i]);
clbFlags.Checked[clbFlags.items.count-1]:=Boolean(StrToInt(sl.Values[sl.Names[i]]));
end;
sl.Free;
end;
end;
procedure TfrmMSI_Overview.cmReportClick(Sender: TObject);
var
p :tpoint;
begin
p.y:=twincontrol(sender).top+twincontrol(sender).height;
p.x:=twincontrol(sender).left;
p:=twincontrol(sender).parent.clienttoscreen(p);
ReportMenu.Popup(p.x,p.y);
end;
procedure TfrmMSI_Overview.cmReportAll(Sender: TObject);
begin
Report.Clear;
sd.Filename:=MachineName+'_SystemInfo.xml';
if sd.Execute then begin
Screen.Cursor:=crHourGlass;
try
SysInfo.Report(Report);
Report.SaveToFile(sd.Filename);
finally
Screen.Cursor:=crDefault;
end;
end;
end;
procedure TfrmMSI_Overview.cmReportCurrent(Sender: TObject);
begin
Report.Clear;
sd.Filename:=MachineName+'_'+Trim(pc.ActivePage.Caption)+'.xml';
if sd.Execute then begin
Screen.Cursor:=crHourGlass;
try
case pc.activepage.pageindex of
0: SysInfo.Machine.Report(Report);
1: SysInfo.OS.Report(Report);
2: SysInfo.CPU.Report(Report);
3: SysInfo.Memory.Report(Report);
4: SysInfo.Display.Report(Report);
5: SysInfo.APM.Report(Report);
6: SysInfo.Media.Report(Report);
7: SysInfo.Network.Report(Report);
8: SysInfo.Devices.Report(Report);
9: SysInfo.Printers.Report(Report);
10: SysInfo.Storage.Report(Report);
11: SysInfo.USB.Report(Report);
12: SysInfo.Engines.Report(Report);
13: SysInfo.Disk.Report(Report);
14: SysInfo.OS.TimeZone.Report(Report);
15: SysInfo.Startup.Report(Report);
16: SysInfo.Software.Report(Report);
17: SysInfo.ProcessList.Report(Report);
end;
Report.SaveToFile(sd.filename);
finally
Screen.Cursor:=crDefault;
end;
end;
end;
procedure TfrmMSI_Overview.clbClickCheck(Sender: TObject);
var
OCC: TNotifyEvent;
idx: integer;
p: TPoint;
begin
with TCheckListBox(Sender) do begin
OCC:=OnClickCheck;
OnClickCheck:=nil;
GetCursorPos(p);
p:=ScreenToClient(p);
idx:=ItemAtPos(p,True);
if idx>-1 then
Checked[idx]:=not Checked[idx];
OnClickCheck:=OCC;
end;
end;
procedure TfrmMSI_Overview.SeTInfoPages(const Value: TInfoPages);
var
i: integer;
begin
FPages:=Value;
for i:=pc.PageCount-1 downto 0 do begin
pc.Pages[i].TabVisible:=TInfoPage(i) in DisplayedPages;
if pc.Pages[i].TabVisible then
pc.ActivePage:=pc.Pages[i];
end;
end;
procedure TfrmMSI_Overview.SetShowRepBut(const Value: Boolean);
begin
FShowRepBut:=Value;
bReport.Visible:=FShowRepBut;
end;
procedure TfrmMSI_Overview.cmModes(Sender: TObject);
var
i: integer;
begin
with TdlgMSI_Detail.Create(self) do begin
Notebook.pageindex:=1;
clb.items.clear;
clb.Items.AddStrings(SysInfo.Display.Modes);
for i:=0 to clb.Items.Count-1 do
clb.Checked[i]:=True;
TabSheet1.Caption:='Supported Video Modes';
showmodal;
free;
end;
end;
procedure TfrmMSI_Overview.GetTZInfo;
begin
with SysInfo.OS.TimeZone do begin
eTZ.Text:=DisplayName;
gbStd.Caption:=' '+StandardName+' ';
gbDay.Caption:=' '+DaylightName+' ';
eStdStart.Text:=DateTimeToStr(StandardStart);
eStdBias.Text:=IntToStr(StandardBias);
eDayStart.Text:=DateTimeToStr(DaylightStart);
eDayBias.Text:=IntToStr(DaylightBias);
end;
end;
procedure TfrmMSI_Overview.cmProto(Sender: TObject);
var
i: integer;
begin
with TdlgMSI_Detail.Create(self) do begin
Notebook.pageindex:=1;
clb.items.clear;
clb.Items.AddStrings(SysInfo.Network.Protocols);
for i:=0 to clb.Items.Count-1 do
clb.Checked[i]:=True;
TabSheet1.Caption:='Protocols';
showmodal;
free;
end;
end;
procedure TfrmMSI_Overview.cmServ(Sender: TObject);
var
i: integer;
begin
with TdlgMSI_Detail.Create(self) do begin
Notebook.pageindex:=1;
clb.items.clear;
clb.Items.AddStrings(SysInfo.Network.Services);
for i:=0 to clb.Items.Count-1 do
clb.Checked[i]:=True;
TabSheet1.Caption:='Services';
showmodal;
free;
end;
end;
procedure TfrmMSI_Overview.cmCli(Sender: TObject);
var
i: integer;
begin
with TdlgMSI_Detail.Create(self) do begin
Notebook.pageindex:=1;
clb.items.clear;
clb.Items.AddStrings(SysInfo.Network.Clients);
for i:=0 to clb.Items.Count-1 do
clb.Checked[i]:=True;
TabSheet1.Caption:='Clients';
showmodal;
free;
end;
end;
procedure TfrmMSI_Overview.SetCaptionText(const Value: string);
begin
Caption:=Value;
end;
procedure TfrmMSI_Overview.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfrmMSI_Overview.TreeChange(Sender: TObject; Node: TTreeNode);
begin
bProps.Enabled:=Assigned(Node) and (Node.Level=2);
bRes.Enabled:=bProps.Enabled;
end;
procedure TfrmMSI_Overview.cmProps(Sender: TObject);
var
dr: TDevice;
i: integer;
begin
if Assigned(Tree.Selected) and (Tree.Selected.Level=2) then
with TdlgMSI_Detail.Create(self) do begin
Notebook.pageindex:=3;
lv.items.clear;
i:=PInteger(Tree.Selected.Data)^;
dr:=SysInfo.Devices.Devices[i];
with lv.Items.Add do begin
Caption:='Device Name';
Subitems.Add(Tree.Selected.Text);
ImageIndex:=-3;
end;
with lv.Items.Add do begin
Caption:='Class Name';
Subitems.Add(dr.ClassName);
end;
with lv.Items.Add do begin
Caption:='Class Description';
Subitems.Add(Tree.Selected.Parent.Text);
end;
{with lv.Items.Add do begin
Caption:='Class GUID';
Subitems.Add(dr.GUID);
end;}
with lv.Items.Add do begin
Caption:='Manufacturer';
Subitems.Add(dr.Manufacturer);
end;
{with lv.Items.Add do begin
Caption:='Location';
SubItems.Add(dr.Location);
end;}
with lv.Items.Add do begin
Caption:='PCI Number';
Subitems.Add(Format('%d',[dr.PCINumber]));
end;
with lv.Items.Add do begin
Caption:='Device Number';
Subitems.Add(Format('%d',[dr.DeviceNumber]));
end;
with lv.Items.Add do begin
Caption:='Function Number';
Subitems.Add(Format('%d',[dr.FunctionNumber]));
end;
with lv.Items.Add do begin
Caption:='Vendor ID';
Subitems.Add(Format('%4.4x',[dr.VendorID]));
end;
with lv.Items.Add do begin
Caption:='Device ID';
Subitems.Add(Format('%4.4x',[dr.DeviceID]));
end;
with lv.Items.Add do begin
Caption:='SubSystem';
Subitems.Add(Format('%8.8x',[dr.SubSysID]));
end;
with lv.Items.Add do begin
Caption:='Revision';
Subitems.Add(Format('%2.2x',[dr.Revision]));
end;
with lv.Items.Add do begin
Caption:='';
ImageIndex:=-2;
end;
with lv.Items.Add do begin
Caption:='Driver Version';
SubItems.Add(dr.DriverVersion);
ImageIndex:=-3;
end;
with lv.Items.Add do begin
Caption:='Driver Date';
SubItems.Add(dr.DriverDate);
end;
with lv.Items.Add do begin
Caption:='Driver Provider';
SubItems.Add(dr.DriverProvider);
end;
with lv.Items.Add do begin
Caption:='';
ImageIndex:=-2;
end;
with lv.Items.Add do begin
Caption:='Service Name';
if dr.ServiceName='' then
SubItems.Add(dr.Service)
else
SubItems.Add(dr.ServiceName);
ImageIndex:=-3;
end;
with lv.Items.Add do begin
Caption:='Service Group';
SubItems.Add(dr.ServiceGroup);
end;
TabSheet1.Caption:='Device Properties';
showmodal;
free;
end;
end;
procedure TfrmMSI_Overview.cmMail(Sender: TObject);
begin
ShellExecute(handle,'open',
cEmail+'?subject='+cCompName,
nil,nil,SW_NORMAL);
end;
procedure TfrmMSI_Overview.GetPrintInfo;
var
i: integer;
begin
with SysInfo.Printers do begin
lvPrinter.items.clear;
for i:=0 to Names.count-1 do
with lvPrinter.items.add do begin
caption:=Names[i];
SubItems.Add(Ports[i]);
if Pos('\\',Ports[i])>0 then
ImageIndex:=iiNetPrinter
else
ImageIndex:=iiPrinter;
if i=DefaultIndex then
ImageIndex:=ImageIndex+1;
end;
end;
end;
procedure TfrmMSI_Overview.tcStartupChange(Sender: TObject);
var
i,c: integer;
begin
with SysInfo, lvStartup, Items do begin
BeginUpdate;
Clear;
case tcStartup.TabIndex of
0: begin
c:=Startup.User_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.User_Runs[i];
SubItems.Add(GetSpecialFolder(GetDesktopWindow,CSIDL_STARTUP));
SubItems.Add(Startup.GetRunCommand(rtUser,i));
ImageIndex:=iiProcess;
end;
c:=Startup.Common_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.Common_Runs[i];
SubItems.Add(GetSpecialFolder(GetDesktopWindow,CSIDL_COMMON_STARTUP));
SubItems.Add(Startup.GetRunCommand(rtCommon,i));
ImageIndex:=iiProcess;
end;
end;
1: begin
c:=Startup.HKCU_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKCU_Runs[i];
SubItems.Add('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run');
SubItems.Add(Startup.GetRunCommand(rtHKCU,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKCUOnce_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKCUOnce_Runs[i];
SubItems.Add('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce');
SubItems.Add(Startup.GetRunCommand(rtHKCUOnce,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKCUOnceEx_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKCUOnceEx_Runs[i];
SubItems.Add('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceEx');
SubItems.Add(Startup.GetRunCommand(rtHKCUOnceEx,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKCUServices_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKCUServices_Runs[i];
SubItems.Add('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices');
SubItems.Add(Startup.GetRunCommand(rtHKCUServices,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKCUServicesOnce_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKCUServicesOnce_Runs[i];
SubItems.Add('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce');
SubItems.Add(Startup.GetRunCommand(rtHKCUServicesOnce,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKCULoad_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKCULoad_Runs[i];
SubItems.Add('HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows');
SubItems.Add(Startup.GetRunCommand(rtHKCULoad,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKLM_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKLM_Runs[i];
SubItems.Add('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run');
SubItems.Add(Startup.GetRunCommand(rtHKLM,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKLMOnce_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKLMOnce_Runs[i];
SubItems.Add('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce');
SubItems.Add(Startup.GetRunCommand(rtHKLMOnce,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKLMOnceEx_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKLMOnceEx_Runs[i];
SubItems.Add('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx');
SubItems.Add(Startup.GetRunCommand(rtHKLMOnceEx,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKLMServices_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKLMServices_Runs[i];
SubItems.Add('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices');
SubItems.Add(Startup.GetRunCommand(rtHKLMServices,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKLMServicesOnce_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKLMServicesOnce_Runs[i];
SubItems.Add('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce');
SubItems.Add(Startup.GetRunCommand(rtHKLMServicesOnce,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKLMSessionManager_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKLMSessionManager_Runs[i];
SubItems.Add('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager');
SubItems.Add(Startup.GetRunCommand(rtHKLMSessionManager,i));
ImageIndex:=iiProcess;
end;
c:=Startup.HKLMWinLogon_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.HKLMWinLogon_Runs[i];
SubItems.Add('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon');
SubItems.Add(Startup.GetRunCommand(rtHKLMWinLogon,i));
ImageIndex:=iiProcess;
end;
end;
2: begin
c:=Startup.WININI_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.WININI_Runs[i];
Subitems.Add('WIN.INI');
Subitems.Add(Startup.GetRunCommand(rtWININI,i));
ImageIndex:=iiProcess;
end;
c:=Startup.SYSTEMINI_Count-1;
for i:=0 to c do
with lvStartup.Items.Add do begin
Caption:=Startup.SYSTEMINI_Runs[i];
Subitems.Add('SYSTEM.INI');
Subitems.Add(Startup.GetRunCommand(rtSYSTEMINI,i));
ImageIndex:=iiProcess;
end;
end;
end;
EndUpdate;
end;
end;
procedure TfrmMSI_Overview.GetStartupInfo;
begin
tcStartupChange(tcStartup);
end;
procedure TfrmMSI_Overview.GetSWInfo;
var
i: integer;
begin
with SysInfo.Software, lvSW, Items do begin
BeginUpdate;
Clear;
for i:=0 to Products.Count-1 do
with Add do begin
Caption:=Products[i];
SubItems.Add(Versions[i]);
SubItems.Add(Uninstalls[i]);
ImageIndex:=iiPackage;
end;
EndUpdate;
end;
end;
procedure TfrmMSI_Overview.cmNTSpec(Sender: TObject);
var
sl: TStringList;
i: integer;
begin
with TdlgMSI_Detail.Create(self) do begin
Notebook.pageindex:=1;
TabSheet1.Caption:='Installed Suites';
clb.items.clear;
sl:=TStringList.Create;
SysInfo.OS.NTSpecific.GetInstalledSuitesStr(sl);
for i:=0 to sl.count-1 do begin
clb.items.Add(sl.Names[i]);
clb.Checked[clb.items.count-1]:=Boolean(StrToInt(sl.Values[sl.Names[i]]));
end;
sl.Free;
showmodal;
free;
end;
end;
procedure TfrmMSI_Overview.cmWeb(Sender: TObject);
begin
ShellExecute(handle,'open',
cWWW,
nil,nil,SW_NORMAL);
end;
procedure TfrmMSI_Overview.cbAdaptersChange(Sender: TObject);
var
i: Integer;
begin
if cbAdapters.ItemIndex>-1 then
with AdapterList.Items, SysInfo.Network.TCPIP.Adapter[cbAdapters.ItemIndex] do begin
Clear;
ePA.Text:=Address;
eAT.Text:=AdapterTypes[Typ];
cbxDHCP.Checked:=EnableDHCP;
cbxWINS.Checked:=HaveWINS;
for i:=0 to IPAddress.Count-1 do
with Add do begin
Caption:='Local';
SubItems.Add(IPAddress[i]);
SubItems.Add(IPAddressMask[i]);
end;
for i:=0 to Gateway_IPAddress.Count-1 do
with Add do begin
Caption:='Gateway';
SubItems.Add(Gateway_IPAddress[i]);
SubItems.Add(Gateway_IPAddressMask[i]);
end;
for i:=0 to DHCP_IPAddress.Count-1 do
with Add do begin
Caption:='DHCP Server';
SubItems.Add(DHCP_IPAddress[i]);
SubItems.Add(DHCP_IPAddressMask[i]);
end;
for i:=0 to PrimaryWINS_IPAddress.Count-1 do
with Add do begin
Caption:='Primary WINS Server';
SubItems.Add(PrimaryWINS_IPAddress[i]);
SubItems.Add(PrimaryWINS_IPAddressMask[i]);
end;
for i:=0 to SecondaryWINS_IPAddress.Count-1 do
with Add do begin
Caption:='Secondary WINS Server';
SubItems.Add(SecondaryWINS_IPAddress[i]);
SubItems.Add(SecondaryWINS_IPAddressMask[i]);
end;
end;
end;
procedure TfrmMSI_Overview.cbxClick(Sender: TObject);
var
oc: TNotifyEvent;
begin
with TCheckBox(Sender) do begin
oc:=OnClick;
OnClick:=nil;
Checked:=not Checked;
OnClick:=oc;
end;
end;
procedure TfrmMSI_Overview.FormDestroy(Sender: TObject);
var
i: integer;
begin
for i:=0 to Tree.Items.Count-1 do
Dispose(Tree.Items[i].Data);
Report.Free;
end;
procedure TfrmMSI_Overview.GetStorageInfo;
var
i,j: Integer;
n,r: TTreeNode;
pi: PInteger;
begin
with SysInfo.Storage do
try
Screen.Cursor:=crHourGlass;
GetInfo;
StorageTree.Items.Clear;
for i:=0 to DeviceCount-1 do begin
New(pi);
pi^:=i;
r:=StorageTree.Items.AddChildObject(nil,Format('%s %s - %d MB',[MiTeC_WinIOCTL.GetMediaTypeStr(Devices[i].Geometry.MediaType),Devices[i].Model,(Devices[i].Capacity div 1024) div 1024]),pi);
case Devices[i].Geometry.MediaType of
Fixedmedia: r.ImageIndex:=0;
Removablemedia: r.ImageIndex:=1;
else r.ImageIndex:=1;
end;
r.SelectedIndex:=r.ImageIndex;
for j:=0 to High(Devices[i].Layout) do begin
n:=StorageTree.Items.AddChild(r,Format('%s / %s - %d MB',[
GetPartitionType(Devices[i].Layout[j].PartitionNumber,Devices[i].Layout[j].PartitionType),
GetPartitionSystem(Devices[i].Layout[j].PartitionType),
(Devices[i].Layout[j].PartitionLength.QuadPart div 1024) div 1024]));
n.ImageIndex:=r.ImageIndex;
n.SelectedIndex:=n.ImageIndex;
end;
r.Expand(False);
end;
finally
Screen.Cursor:=crDefault;
end;
end;
procedure TfrmMSI_Overview.cmRes(Sender: TObject);
var
d: TDevice;
i: Integer;
DR: TDeviceResources;
dn: string;
begin
if Assigned(Tree.Selected) and (Tree.Selected.Level=2) then begin
i:=PInteger(Tree.Selected.Data)^;
d:=SysInfo.Devices.Devices[i];
if not IsEmptyString(d.ResourceListKey) then begin
Screen.Cursor:=crHourGlass;
try
SysInfo.Devices.GetDeviceResources(d,DR);
finally
Screen.Cursor:=crDefault;
end;
if IsEmptyString(d.FriendlyName) then
dn:=d.Description
else
dn:=d.FriendlyName;
ShowResourcesDlg(dn,DR);
end else
MessageDlg('No resource list available.',mtInformation,[mbOK],0);
end;
end;
procedure TfrmMSI_Overview.GetUSBInfo;
var
ii,i: Integer;
s: string;
pi: PInteger;
r,n: TTreeNode;
begin
with SysInfo.USB do begin
GetInfo;
USBTree.Items.Clear;
for i:=0 to USBNodeCount-1 do
with USBNodes[i] do begin
s:='';
ii:=Integer(USBClass);
case USBClass of
usbHostController: s:=s+Format('%s %d',[ClassNames[Integer(USBClass)],USBDevice.Port]);
usbHub: s:=s+ClassNames[Integer(USBClass)];
else begin
if USBDevice.ConnectionStatus=1 then begin
if USBClass=usbExternalHub then
s:=s+Format('Port[%d]: %s',[USBDevice.Port,ClassNames[Integer(USBClass)]])
else
s:=s+Format('Port[%d]: %s',[USBDevice.Port,USBDevice.Product]);
end else begin
s:=s+Format('Port[%d]: %s',[USBDevice.Port,ConnectionStates[USBDevice.ConnectionStatus]]);
ii:=13;
end;
end;
end;
r:=FindUSBNode(ParentIndex);
new(pi);
pi^:=i;
n:=USBTree.Items.AddChildObject(r,s,pi);
n.ImageIndex:=ii;
n.SelectedIndex:=n.ImageIndex;
if Assigned(r) then
r.Expand(False);
r:=n;
if (USBClass in [usbReserved..usbStorage,usbVendorSpec]) and (USBDevice.ConnectionStatus=1) then begin
ii:=15;
n:=USBTree.Items.AddChild(r,Format('Classname: %s',[ClassNames[Integer(USBClass)]]));
n.ImageIndex:=ii;
n.SelectedIndex:=n.ImageIndex;
n:=USBTree.Items.AddChild(r,Format('Manufacturer: %s',[USBDevice.Manufacturer]));
n.ImageIndex:=ii;
n.SelectedIndex:=n.ImageIndex;
n:=USBTree.Items.AddChild(r,Format('Serial: %s',[USBDevice.Serial]));
n.ImageIndex:=ii;
n.SelectedIndex:=n.ImageIndex;
n:=USBTree.Items.AddChild(r,Format('Power consumption: %d mA',[USBDevice.MaxPower]));
n.ImageIndex:=ii;
n.SelectedIndex:=n.ImageIndex;
n:=USBTree.Items.AddChild(r,Format('Specification: %d.%d',[USBDevice.MajorVersion,USBDevice.MinorVersion]));
n.ImageIndex:=ii;
n.SelectedIndex:=n.ImageIndex;
end;
end;
end;
end;
procedure TfrmMSI_Overview.USBTreeCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
usb: TUSBNode;
begin
if Assigned(Node) then begin
if Assigned(Node.data) then begin
usb:=SysInfo.USB.USBNodes[PInteger(Node.Data)^];
if usb.USBClass in [usbReserved..usbStorage,usbVendorSpec] then begin
if usb.USBDevice.ConnectionStatus=1 then
Sender.Canvas.Font.Style:=[fsBold];
end;
end else begin
if cdsSelected in State then
Sender.Canvas.Font.Color:=clWhite
else
Sender.Canvas.Font.Color:=clNavy;
end;
end;
end;
procedure TfrmMSI_Overview.TreeDeletion(Sender: TObject;
Node: TTreeNode);
begin
if Assigned(Node.Data) then
Dispose(PInteger(Node.Data));
end;
function TfrmMSI_Overview.FindUSBNode(AIndex: Integer): TTreeNode;
var
n: TTreeNode;
begin
Result:=nil;
n:=USBTree.Items.GetFirstNode;
while Assigned(n) do begin
if Assigned(n.Data) and (PInteger(n.Data)^=AIndex) then begin
Result:=n;
Break;
end;
n:=n.GetNext;
end;
end;
procedure TfrmMSI_Overview.StorageTreeCustomDrawItem(
Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
if Assigned(Node) then
if Assigned(Node.data) then
Sender.Canvas.Font.Style:=[fsBold];
end;
procedure TfrmMSI_Overview.GetProcessesInfo;
var
i: Integer;
begin
with SysInfo.ProcessList do
try
if Win32Platform<>VER_PLATFORM_WIN32_NT then begin
ProcList.Columns[2].Caption:='Threads';
ProcList.Columns[3].Caption:='Usage';
end;
ProcList.Items.BeginUpdate;
ProcList.Items.Clear;
GetInfo;
for i:=0 to ProcessCount-1 do
with ProcList.Items.Add do begin
Caption:=Processes[i].Name;
if Win32Platform<>VER_PLATFORM_WIN32_NT then begin
SubItems.Add(Format('%x',[Processes[i].PID]));
SubItems.Add(Format('%d',[Processes[i].ThreadCount]));
SubItems.Add(Format('%d',[Processes[i].Usage]));
end else begin
SubItems.Add(Format('%d',[Processes[i].PID]));
SubItems.Add(FormatSeconds((Processes[i].UserTime.QuadPart+Processes[i].KernelTime.QuadPart)/10000000,True,False,True));
SubItems.Add(Format('%d KB',[Processes[i].VMCounters.WorkingSetSize div 1024]));
end;
end;
finally
ProcList.Items.EndUpdate;
end;
end;
procedure TfrmMSI_Overview.RefreshOverview(ForceRefresh: Boolean);
begin
screen.cursor:=crhourglass;
try
if ForceRefresh then
SysInfo.Refresh;
GetInfo;
finally
screen.cursor:=crdefault;
end;
end;
procedure TfrmMSI_Overview.bESClick(Sender: TObject);
begin
{$IFDEF ERROR_INTERCEPT}
ShowExceptionStack;
{$ENDIF}
end;
procedure TfrmMSI_Overview.GetMonitorInfo;
var
i: integer;
begin
with SysInfo, Monitor do begin
cbMon.Items.Clear;
for i:=0 to Count-1 do
cbMon.Items.Add(Monitors[i].DeviceDesription);
cbMon.ItemIndex:=0;
cbMonChange(nil);
end;
end;
procedure TfrmMSI_Overview.cbMonChange(Sender: TObject);
begin
with SysInfo, Monitor.Monitors[cbMon.ItemIndex] do begin
eMonName.Text:=Format('%s %s',[Name,ProductNumber]);
eMonMan.Text:=Manufacturer;
eMonSize.Text:=Format('(%d x %d) cm',[Width,Height]);
eMonSN.Text:=Format('%8.8x',[SerialNumber]);
eGamma.Text:=Format('%1.2f',[Gamma]);
eMonDate.Text:=Format('%d/%d',[Year,Week]);
eEDID.Text:=EDID_Version;
eMonMod.Text:=Model;
end;
end;
end.