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

📄 main.pas

📁 一个很不错的系统信息控件
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -