home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kompon / d56 / MSYSINFO.ZIP / Source / MSI_Console.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-07-24  |  8.0 KB  |  270 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       MiTeC System Information Console Object         }
  5. {           version 6.0 for Delphi 5,6                  }
  6. {                                                       }
  7. {       Copyright ⌐ 1997,2001 Michal Mutl               }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. {$INCLUDE MITEC_DEF.INC}
  12.  
  13. unit MSI_Console;
  14.  
  15. interface
  16.  
  17. uses
  18.   MSI_CPU, MSI_Machine, MSI_Devices, MSI_Display, MSI_Network, MSI_Media,
  19.   MSI_Memory, MSI_Engines, MSI_APM, MSI_Disk, MSI_DirectX, MSI_OS, MSI_Processes,
  20.   MSI_Printers, MSI_Software, MSI_Startup,
  21.   Windows, SysUtils, Classes;
  22.  
  23. const
  24.   cCompName = 'MiTeC System Information Object';
  25.   cVersion = '6.0';
  26.   cCopyright = 'Copyright (c) 1997,2001 Michal Mutl';
  27.  
  28. type
  29.   TSubObject = (soCPU, soMachine, soDevices, soDisplay, soNetwork, soMedia,
  30.                 soMemory, soEngines, soAPM, soDisk, soDirectX, soOS, soProcesses,
  31.                 soPrinters, soSoftware, soStartup);
  32.  
  33.   TSubObjects = set of TSubObject;
  34.  
  35.   TExceptionMode = (emRaise, emMessage, emSilent);
  36.  
  37.   TGetInfo = procedure of object;
  38.  
  39.  
  40. const
  41.   soAll = [soCPU, soMachine, soDevices, soDisplay, soNetwork, soMedia,
  42.            soMemory, soEngines, soAPM, soDisk, soDirectX, soOS, soProcesses,
  43.            soPrinters, soSoftware, soStartup];
  44.  
  45. type
  46.   TMSI = class(TPersistent)
  47.   private
  48.     FCPU: TCPU;
  49.     FMemory: TMemory;
  50.     FOS :TOperatingSystem;
  51.     FDisk :TDisk;
  52.     FMachine: TMachine;
  53.     FNetwork: TNetwork;
  54.     FDisplay: TDisplay;
  55.     FEngines: TEngines;
  56.     FDevices: TDevices;
  57.     FAPM :TAPM;
  58.     FAbout: string;
  59.     FDirectX: TDirectX;
  60.     FMedia: TMedia;
  61.     FProcesses: TProcesses;
  62.     FPrinters: TPrinters;
  63.     FSoftware: TSoftware;
  64.     FStartup: TStartup;
  65.     FMode: TExceptionMode;
  66.   public
  67.     constructor Create(ASubObjects: TSubObjects = soAll);
  68.     destructor Destroy; override;
  69.     procedure Refresh;
  70.     procedure Report(var sl :TStringList);
  71.  
  72.     property About :string read FAbout;
  73.     property ExceptionMode: TExceptionMode read FMode write FMode;
  74.     property CPU :TCPU read FCPU;
  75.     property Memory :TMemory read FMemory;
  76.     property OS :TOperatingSystem read FOS;
  77.     property Disk :TDisk read FDisk;
  78.     property Machine :TMachine read FMachine;
  79.     property Network :TNetwork read FNetwork;
  80.     property Display :TDisplay read FDisplay;
  81.     property Media :TMedia read FMedia;
  82.     property Devices :TDevices read FDevices;
  83.     property Engines :TEngines read FEngines;
  84.     property APM :TAPM read FAPM;
  85.     property DirectX :TDirectX read FDirectX;
  86.     property Processes :TProcesses read FProcesses;
  87.     property Printers :TPrinters read FPrinters;
  88.     property Software :TSoftware read FSoftware;
  89.     property Startup: TStartup read FStartup;
  90.   end;
  91.  
  92. implementation
  93.  
  94. uses MiTeC_Routines;
  95.  
  96. procedure MSafeCall(Func: TGetInfo; Description: string; Mode: TExceptionMode);
  97. begin
  98.   try
  99.     Func;
  100.   except
  101.     on e: exception do begin
  102.       case Mode of
  103.         emRaise: raise Exception.Create(Description+': '+e.message);
  104.         emMessage: if IsConsole then
  105.                      writeln(Description+': '+e.message)
  106.                    else
  107.                      MessageBox(0,PChar(Description+': '+e.message),'Error',MB_OK or MB_ICONERROR);
  108.         emSilent: ;
  109.       end;
  110.     end;
  111.   end;
  112. end;
  113.  
  114. { TMSI }
  115.  
  116. constructor TMSI.Create;
  117. begin
  118.   FAbout:=cCompName+' '+cVersion+' - '+cCopyright;
  119.   FMode:=emMessage;
  120.   if soCPU in ASubObjects then
  121.     FCPU:=TCPU.Create;
  122.   if soMemory in ASubObjects then
  123.     FMemory:=TMemory.Create;
  124.   if soOS in ASubObjects then
  125.     FOS:=TOperatingSystem.Create;
  126.   if soDisk in ASubObjects then
  127.     FDisk:=TDisk.Create;
  128.   if soMachine in ASubObjects then
  129.     FMachine:=TMachine.Create;
  130.   if soNetwork in ASubObjects then
  131.     FNetwork:=TNetwork.Create;
  132.   if soDisplay in ASubObjects then
  133.     FDisplay:=TDisplay.Create;
  134.   if soMedia in ASubObjects then
  135.     FMedia:=TMedia.Create;
  136.   if soDevices in ASubObjects then
  137.     FDevices:=TDevices.Create;
  138.   if soEngines in ASubObjects then
  139.     FEngines:=TEngines.Create;
  140.   if soAPM in ASubObjects then
  141.     FAPM:=TAPM.Create;
  142.   if soDirectX in ASubObjects then
  143.     FDirectX:=TDirectX.Create;
  144.   if soProcesses in ASubObjects then
  145.     FProcesses:=TProcesses.Create;
  146.   if soPrinters in ASubObjects then
  147.     FPrinters:=TPrinters.Create;
  148.   if soSoftware in ASubObjects then
  149.     FSoftware:=TSoftware.Create;
  150.   if soStartup in ASubObjects then
  151.     FStartup:=TStartup.Create;
  152. end;
  153.  
  154. destructor TMSI.Destroy;
  155. begin
  156.   if Assigned(FCPU) then
  157.     FCPU.Free;
  158.   if Assigned(FMemory) then
  159.     FMemory.Free;
  160.   if Assigned(FOS) then
  161.     FOS.Free;
  162.   if Assigned(FDisk) then
  163.     FDisk.Free;
  164.   if Assigned(FMachine) then
  165.     FMachine.Free;
  166.   if Assigned(FNetwork) then
  167.     FNetwork.Free;
  168.   if Assigned(FDisplay) then
  169.     FDisplay.Free;
  170.   if Assigned(FMedia) then
  171.     FMedia.Free;
  172.   if Assigned(FDevices) then
  173.     FDevices.Free;
  174.   if Assigned(FEngines) then
  175.     FEngines.Free;
  176.   if Assigned(FAPM) then
  177.     FAPM.Free;
  178.   if Assigned(FDirectX) then
  179.     FDirectX.Free;
  180.   if Assigned(FProcesses) then
  181.     FProcesses.Free;
  182.   if Assigned(FPrinters) then
  183.     FPrinters.Free;
  184.   if Assigned(FSoftware) then
  185.     FSoftware.Free;
  186.   if Assigned(FStartup) then
  187.     FStartup.Free;
  188.   inherited;
  189. end;
  190.  
  191. procedure TMSI.Refresh;
  192. begin
  193.   if Assigned(Devices) then
  194.     MSafeCall(Devices.GetInfo,Devices.Classname+'.GetInfo',ExceptionMode);
  195.   if Assigned(CPU) then
  196.     MSafeCall(CPU.GetInfo,CPU.Classname+'.GetInfo',ExceptionMode);
  197.   if Assigned(Memory) then
  198.     MSafeCall(Memory.GetInfo,Memory.Classname+'.GetInfo',ExceptionMode);
  199.   if Assigned(OS) then
  200.     MSafeCall(OS.GetInfo,OS.Classname+'.GetInfo',ExceptionMode);
  201.   if Assigned(Disk) then begin
  202.     MSafeCall(Disk.GetInfo,Disk.Classname+'.GetInfo',ExceptionMode);
  203.     Disk.Drive:=ExtractFileDrive(GetWinDir);
  204.   end;
  205.   if Assigned(Machine) then
  206.     MSafeCall(Machine.GetInfo,Machine.Classname+'.GetInfo',ExceptionMode);
  207.   if Assigned(Network) then
  208.     MSafeCall(Network.GetInfo,Network.Classname+'.GetInfo',ExceptionMode);
  209.   if Assigned(Display) then
  210.     MSafeCall(Display.GetInfo,Display.Classname+'.GetInfo',ExceptionMode);
  211.   if Assigned(Media) then
  212.     MSafeCall(Media.GetInfo,Media.Classname+'.GetInfo',ExceptionMode);
  213.   if Assigned(Engines) then
  214.     MSafeCall(Engines.GetInfo,Engines.Classname+'.GetInfo',ExceptionMode);
  215.   if Assigned(APM) then
  216.     MSafeCall(APM.GetInfo,APM.Classname+'.GetInfo',ExceptionMode);
  217.   if Assigned(DirectX) then
  218.     MSafeCall(DirectX.GetInfo,DirectX.Classname+'.GetInfo',ExceptionMode);
  219.   if Assigned(Processes) then
  220.     MSafeCall(Processes.GetInfo,Processes.Classname+'.GetInfo',ExceptionMode);
  221.   if Assigned(Printers) then
  222.     MSafeCall(Printers.GetInfo,Printers.Classname+'.GetInfo',ExceptionMode);
  223.   if Assigned(Software) then
  224.     MSafeCall(Software.GetInfo,Software.Classname+'.GetInfo',ExceptionMode);
  225.   if Assigned(Startup) then
  226.     MSafeCall(Startup.GetInfo,Startup.Classname+'.GetInfo',ExceptionMode);
  227. end;
  228.  
  229. procedure TMSI.Report(var sl: TStringList);
  230. begin
  231.   sl.add('; '+About);
  232.   sl.add('');
  233.   if Assigned(FMachine) then
  234.     Machine.Report(sl);
  235.   if Assigned(FOS) then
  236.     OS.Report(sl);
  237.   if Assigned(FCPU) then
  238.     CPU.Report(sl);
  239.   if Assigned(Fmemory) then
  240.     Memory.Report(sl);
  241.   if Assigned(FDisplay) then
  242.     Display.Report(sl);
  243.   if Assigned(FAPM) then
  244.     APM.Report(sl);
  245.   if Assigned(FMedia) then
  246.     Media.Report(sl);
  247.   if Assigned(FNetwork) then
  248.     Network.Report(sl);
  249.   if Assigned(FDevices) then
  250.     Devices.Report(sl);
  251.   if Assigned(FEngines) then
  252.     Engines.Report(sl);
  253.   if Assigned(FDirectX) then
  254.     DirectX.Report(sl);
  255.   if Assigned(FDisk) then
  256.     Disk.Report(sl);
  257.   if Assigned(FProcesses) then
  258.     Processes.Report(sl);
  259.   if Assigned(FPrinters) then
  260.     Printers.Report(sl);
  261.   if Assigned(FSoftware) then
  262.     Software.Report(sl);
  263.   if Assigned(FStartup) then
  264.     Startup.Report(sl);
  265. end;
  266.  
  267.  
  268. end.
  269.  
  270.