📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls, CheckLst, Menus, AppEvnts, MSI_Common;
type
Twnd_msicstest_Main = class(TForm)
Button1: TButton;
Box: TMemo;
Button2: TButton;
cbxReport: TCheckBox;
GroupBox1: TGroupBox;
clb: TCheckListBox;
PopupMenu1: TPopupMenu;
Checkall1: TMenuItem;
Uncheckall1: TMenuItem;
Inverse1: TMenuItem;
cbxExtra: TCheckBox;
cbxSafe: TCheckBox;
GroupBox2: TGroupBox;
clbPL: TCheckListBox;
ApplicationEvents1: TApplicationEvents;
cbxSI: TCheckBox;
GroupBox3: TGroupBox;
cbxVM: TCheckBox;
cbxVPC: TCheckBox;
bDM: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Checkall1Click(Sender: TObject);
procedure Inverse1Click(Sender: TObject);
procedure MiTeC_Debug(Sender: TMiTeC_MSIC_Component; Msg: string);
procedure bDMClick(Sender: TObject);
private
st: Int64;
hs,hss,hsf: THeapStatus;
ec: Integer;
debugs: TStringList;
public
procedure CheckAll;
procedure Log(AMessage: string);
end;
var
wnd_msicstest_Main: Twnd_msicstest_Main;
implementation
uses Registry, MSI_CPU, MSI_Machine, MSI_Devices, MSI_Display, MSI_Network, MSI_Media,
MSI_Memory, MSI_Engines, MSI_APM, MSI_Disk, MSI_OS, MSI_SMBIOS,
MSI_Printers, MSI_Software, MSI_Startup, MSI_Storage, MSI_GUI, MSI_MSProduct,
MSI_USB, MSI_Processes, MSI_Monitor, MiTeC_Routines, MiTeC_Shares, MiTeC_StrUtils,
DM;
{$R *.DFM}
function ProcessList_GetInfo_ThreadExecute(Parameter: Pointer): Integer;
begin
try
TMiTeC_ProcessList(Parameter).RefreshData;
Result:=0;
except
Result:=GetLastError;
end;
end;
procedure Twnd_msicstest_Main.Button1Click(Sender: TObject);
begin
Close;
end;
procedure Twnd_msicstest_Main.CheckAll;
var
pl: TMiTeC_ProcessList;
tl,n,i: DWORD;
th: THandle;
ss: string;
begin
debugs.Clear;
tl:=0;
ec:=0;
Screen.Cursor:=crHourGlass;
try
Box.Lines.Add('MSICS '+cVersion+' Testing Application');
Box.Lines.Add('--------------------------------------------------------------');
ss:=ChangeFileExt(Application.ExeName,'.sis');
Box.Lines.Add(Format('OS: %s %d.%d.%d %s ',[OSName,OSVIX.dwMajorVersion,OSVIX.dwMinorVersion,OSVIX.dwBuildNumber,OSEdition]));
with TMiTeC_Memory.Create(nil) do
try
try
RefreshData;
Box.Lines.Add(Format('Memory: %d MB (%d KB free)',[PhysicalTotal div 1024 div 1024,PhysicalFree div 1024]));
except
end;
finally
Free;
end;
with TMiTeC_CPU.Create(nil) do
try
try
RefreshData;
Box.Lines.Add(Format('CPU: %d x %s %s - %d Mhz (%d cores, %d threads)',[CPUCount,
cVendorNames[Vendor].Prefix,
CPUName,Frequency,
CPUPhysicalCount*CorePerPackage,
CPUPhysicalCount*LogicalPerPackage]));
except
end;
finally
Free;
end;
if IsNT and IsAdmin then
Box.Lines.Add(Format('Admin privs: %s',[BoolToStr(IsAdmin,True)]));
if cbxVM.Checked then
Box.Lines.Add(Format('VMWare: %s',[BoolToStr(IsVMWare,True)]));
if cbxVPC.Checked then
Box.Lines.Add(Format('Virtual PC: %s',[BoolToStr(IsVPC,True)]));
Box.Lines.Add('--------------------------------------------------------------');
Box.Lines.Add('');
try
if clb.Checked[clb.Items.IndexOf('Devices')] then begin
Log('Devices.Create...');
hss:=GetHeapStatus;
with TMiTeC_Devices.Create(nil) do begin
onDebug:=MiTeC_Debug;
//ExceptionModes:=[emExceptionStack,emJournal];
Log('Devices.RefreshData...');
RefreshData;
if cbxReport.Checked then begin
Log('Devices.SaveToStorage...');
SaveToStorage(ss);
Log('Devices.LoadFromStorage...');
LoadFromStorage(ss);
end;
Log('Devices.Destroy...');
Free;
hsf:=GetHeapStatus;
if hsf.TotalAllocated>hss.TotalAllocated then begin
tl:=tl+hsf.TotalAllocated-hss.TotalAllocated;
Log(Format('*MEMORY LEAK = %d B',[hsf.TotalAllocated-hss.TotalAllocated]));
end;
Log('');
end;
end;
except on e: Exception do begin
Inc(ec);
Log(Format('*ERROR = %s'#13#10,[e.Message]));
end end;
try
if clb.Checked[clb.Items.IndexOf('CPU')] then begin
Log('CPU.Create...');
hss:=GetHeapStatus;
with TMiTeC_CPU.Create(nil) do begin
onDebug:=MiTeC_Debug;
//ExceptionModes:=[emExceptionStack,emJournal];
Log('CPU.RefreshData...');
RefreshData;
if cbxReport.Checked then begin
Log('CPU.SaveToStorage...');
SaveToStorage(ss);
Log('CPU.LoadFromStorage...');
LoadFromStorage(ss);
end;
Log('CPU.Destroy...');
Free;
end;
hsf:=GetHeapStatus;
if hsf.TotalAllocated>hss.TotalAllocated then begin
tl:=tl+hsf.TotalAllocated-hss.TotalAllocated;
Log(Format('*MEMORY LEAK = %d B',[hsf.TotalAllocated-hss.TotalAllocated]));
end;
Log('');
end;
except on e: Exception do begin
Inc(ec);
Log(Format('*ERROR = %s'#13#10,[e.Message]));
end end;
try
if clb.Checked[clb.Items.IndexOf('Memory')] then begin
Log('Memory.Create...');
hss:=GetHeapStatus;
with TMiTeC_Memory.Create(nil) do begin
onDebug:=MiTeC_Debug;
//ExceptionModes:=[emExceptionStack,emJournal];
Log('Memory.RefreshData...');
RefreshData;
if cbxReport.Checked then begin
Log('Memory.SaveToStorage...');
SaveToStorage(ss);
Log('Memory.LoadFromStorage...');
LoadFromStorage(ss);
end;
Log('Memory.Destroy...');
Free;
hsf:=GetHeapStatus;
if hsf.TotalAllocated>hss.TotalAllocated then begin
tl:=tl+hsf.TotalAllocated-hss.TotalAllocated;
Log(Format('*MEMORY LEAK = %d B',[hsf.TotalAllocated-hss.TotalAllocated]));
end;
Log('');
end;
end;
except on e: Exception do begin
Inc(ec);
Log(Format('*ERROR = %s'#13#10,[e.Message]));
end end;
try
if clb.Checked[clb.Items.IndexOf('SMBIOS')] then begin
Log('SMBIOS.Create...');
hss:=GetHeapStatus;
with TMiTeC_SMBIOS.Create(nil) do begin
onDebug:=MiTeC_Debug;
//ExceptionModes:=[emExceptionStack,emJournal];
Log('SMBIOS.RefreshData...');
RefreshData;
if cbxReport.Checked then begin
Log('SMBIOS.SaveToStorage...');
SaveToStorage(ss);
Log('SMBIOS.LoadFromStorage...');
LoadFromStorage(ss);
end;
Log('SMBIOS.Destroy...');
Free;
hsf:=GetHeapStatus;
if hsf.TotalAllocated>hss.TotalAllocated then begin
tl:=tl+hsf.TotalAllocated-hss.TotalAllocated;
Log(Format('*MEMORY LEAK = %d B',[hsf.TotalAllocated-hss.TotalAllocated]));
end;
Log('');
end;
end;
except on e: Exception do begin
Inc(ec);
Log(Format('*ERROR = %s'#13#10,[e.Message]));
end end;
try
if clb.Checked[clb.Items.IndexOf('BIOS')] then begin
Log('BIOS.Create...');
hss:=GetHeapStatus;
with TMiTeC_BIOS.Create(nil) do begin
onDebug:=MiTeC_Debug;
//ExceptionModes:=[emExceptionStack,emJournal];
Log('BIOS.RefreshData...');
RefreshData;
if cbxReport.Checked then begin
Log('BIOS.SaveToStorage...');
SaveToStorage(ss);
Log('BIOS.LoadFromStorage...');
LoadFromStorage(ss);
end;
Log('BIOS.Destroy...');
Free;
hsf:=GetHeapStatus;
if hsf.TotalAllocated>hss.TotalAllocated then begin
tl:=tl+hsf.TotalAllocated-hss.TotalAllocated;
Log(Format('*MEMORY LEAK = %d B',[hsf.TotalAllocated-hss.TotalAllocated]));
end;
Log('');
end;
end;
except on e: Exception do begin
Inc(ec);
Log(Format('*ERROR = %s'#13#10,[e.Message]));
end end;
try
if clb.Checked[clb.Items.IndexOf('Machine')] then begin
Log('Machine.Create...');
hss:=GetHeapStatus;
with TMiTeC_Machine.Create(nil) do begin
onDebug:=MiTeC_Debug;
//ExceptionModes:=[emExceptionStack,emJournal];
Log('Machine.RefreshData...');
RefreshData;
if cbxReport.Checked then begin
Log('Machine.SaveToStorage...');
SaveToStorage(ss);
Log('Machine.LoadFromStorage...');
LoadFromStorage(ss);
end;
Log('Machine.Destroy...');
Free;
hsf:=GetHeapStatus;
if hsf.TotalAllocated>hss.TotalAllocated then begin
tl:=tl+hsf.TotalAllocated-hss.TotalAllocated;
Log(Format('*MEMORY LEAK = %d B',[hsf.TotalAllocated-hss.TotalAllocated]));
end;
Log('');
end;
end;
except on e: Exception do begin
Inc(ec);
Log(Format('*ERROR = %s'#13#10,[e.Message]));
end end;
try
if clb.Checked[clb.Items.IndexOf('Display')] then begin
Log('Display.Create..');
hss:=GetHeapStatus;
with TMiTeC_Display.Create(nil) do begin
onDebug:=MiTeC_Debug;
//ExceptionModes:=[emExceptionStack,emJournal];
Log('Display.RefreshData..');
RefreshData;
if cbxReport.Checked then begin
Log('Display.SaveToStorage...');
SaveToStorage(ss);
Log('Display.LoadFromStorage...');
LoadFromStorage(ss);
end;
Log('Display.Destroy...');
Free;
hsf:=GetHeapStatus;
if hsf.TotalAllocated>hss.TotalAllocated then begin
tl:=tl+hsf.TotalAllocated-hss.TotalAllocated;
Log(Format('*MEMORY LEAK = %d B',[hsf.TotalAllocated-hss.TotalAllocated]));
end;
Log('');
end;
end;
except on e: Exception do begin
Inc(ec);
Log(Format('*ERROR = %s'#13#10,[e.Message]));
end end;
try
if clb.Checked[clb.Items.IndexOf('Monitor')] then begin
Log('Monitor.Create..');
hss:=GetHeapStatus;
with TMiTeC_Monitor.Create(nil) do begin
onDebug:=MiTeC_Debug;
//ExceptionModes:=[emExceptionStack,emJournal];
Log('Monitor.RefreshData..');
RefreshData;
if cbxReport.Checked then begin
Log('Monitor.SaveToStorage...');
SaveToStorage(ss);
Log('Monitor.LoadFromStorage...');
LoadFromStorage(ss);
end;
Log('Monitor.Destroy...');
Free;
hsf:=GetHeapStatus;
if hsf.TotalAllocated>hss.TotalAllocated then begin
tl:=tl+hsf.TotalAllocated-hss.TotalAllocated;
Log(Format('*MEMORY LEAK = %d B',[hsf.TotalAllocated-hss.TotalAllocated]));
end;
Log('');
end;
end;
except on e: Exception do begin
Inc(ec);
Log(Format('*ERROR = %s'#13#10,[e.Message]));
end end;
try
if clb.Checked[clb.Items.IndexOf('Winsock')] then begin
Log('Winsock.Create...');
hss:=GetHeapStatus;
with TMiTeC_Winsock.Create(nil) do begin
onDebug:=MiTeC_Debug;
//ExceptionModes:=[emExceptionStack,emJournal];
Log('Winsock.RefreshData...');
RefreshData;
Log('Winsock.Destroy...');
Free;
hsf:=GetHeapStatus;
if hsf.TotalAllocated>hss.TotalAllocated then begin
tl:=tl+hsf.TotalAllocated-hss.TotalAllocated;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -