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

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       MiTeC System Information Component              }
  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_GUI;
  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.   SysUtils, Windows, Classes;
  22.  
  23. const
  24.   cCompName = 'MiTeC System Information Component';
  25.   cVersion = '6.0';
  26.   cCopyright = 'Copyright ⌐ 1997,2001 Michal Mutl';
  27.  
  28. type
  29.   TExceptionMode = (emRaise, emMessage, emSilent);
  30.  
  31.   TGetInfo = procedure of object;
  32.  
  33.   TMSystemInfo = class(TComponent)
  34.   private
  35.     FCPU: TCPU;
  36.     FMemory: TMemory;
  37.     FOS :TOperatingSystem;
  38.     FDisk :TDisk;
  39.     FMachine: TMachine;
  40.     FNetwork: TNetwork;
  41.     FDisplay: TDisplay;
  42.     FEngines: TEngines;
  43.     FDevices: TDevices;
  44.     FAPM :TAPM;
  45.     FAbout: string;
  46.     FDirectX: TDirectX;
  47.     FMedia: TMedia;
  48.     FProcesses: TProcesses;
  49.     FPrinters: TPrinters;
  50.     FSoftware: TSoftware;
  51.     FStartup: TStartup;
  52.     FMode: TExceptionMode;
  53.     {$IFNDEF D6PLUS}
  54.     procedure SetAbout(const Value: string);
  55.     {$ENDIF}
  56.   public
  57.     constructor Create(AOwner :TComponent); override;
  58.     destructor Destroy; override;
  59.     procedure Refresh;
  60.     procedure Report(var sl :TStringList);
  61.     procedure ShowModalOverview;
  62.     procedure ShowModalOverviewWithAbout;
  63.     procedure ShowOverview;
  64.     procedure ShowOverviewWithAbout;
  65.   published
  66.     property About :string read FAbout {$IFNDEF D6PLUS} write SetAbout {$ENDIF} stored False;
  67.     property ExceptionMode: TExceptionMode read FMode write FMode;
  68.     property CPU :TCPU read FCPU {$IFNDEF D6PLUS} write FCPU {$ENDIF};
  69.     property Memory :TMemory read FMemory {$IFNDEF D6PLUS} write FMemory {$ENDIF};
  70.     property OS :TOperatingSystem read FOS {$IFNDEF D6PLUS} write FOS {$ENDIF};
  71.     property Disk :TDisk read FDisk {$IFNDEF D6PLUS} write FDisk {$ENDIF};
  72.     property Machine :TMachine read FMachine {$IFNDEF D6PLUS} write FMachine {$ENDIF};
  73.     property Network :TNetwork read FNetwork {$IFNDEF D6PLUS} write FNetwork {$ENDIF};
  74.     property Display :TDisplay read FDisplay {$IFNDEF D6PLUS} write FDisplay {$ENDIF};
  75.     property Media :TMedia read FMedia {$IFNDEF D6PLUS} write FMedia {$ENDIF};
  76.     property Devices :TDevices read FDevices {$IFNDEF D6PLUS} write FDevices {$ENDIF};
  77.     property Engines :TEngines read FEngines {$IFNDEF D6PLUS} write FEngines {$ENDIF};
  78.     property APM :TAPM read FAPM {$IFNDEF D6PLUS} write FAPM {$ENDIF};
  79.     property DirectX :TDirectX read FDirectX {$IFNDEF D6PLUS} write FDirectX {$ENDIF};
  80.     property Processes :TProcesses read FProcesses {$IFNDEF D6PLUS} write FProcesses {$ENDIF};
  81.     property Printers :TPrinters read FPrinters {$IFNDEF D6PLUS} write FPrinters {$ENDIF};
  82.     property Software :TSoftware read FSoftware {$IFNDEF D6PLUS} write FSoftware {$ENDIF};
  83.     property Startup: TStartup read FStartup {$IFNDEF D6PLUS} write FStartup {$ENDIF};
  84.   end;
  85.  
  86. implementation
  87.  
  88. uses MSI_Overview, MiTeC_Routines;
  89.  
  90. procedure MSafeCall(Func: TGetInfo; Description: string; Mode: TExceptionMode);
  91. begin
  92.   try
  93.     Func;
  94.   except
  95.     on e: exception do begin
  96.       case Mode of
  97.         emRaise: raise Exception.Create(Description+': '+e.message);
  98.         emMessage: if IsConsole then
  99.                      writeln(Description+': '+e.message)
  100.                    else
  101.                      MessageBox(0,PChar(Description+': '+e.message),'Error',MB_OK or MB_ICONERROR);
  102.         emSilent: ;
  103.       end;
  104.     end;
  105.   end;
  106. end;
  107.  
  108. { TMSystemInfo }
  109.  
  110. constructor TMSystemInfo.Create(AOwner: TComponent);
  111. begin
  112.   inherited;
  113.   FAbout:=cCompName+' '+cVersion+' - '+cCopyright;
  114.   FMode:=emMessage;
  115.   FCPU:=TCPU.Create;
  116.   FMemory:=TMemory.Create;
  117.   FOS:=TOperatingSystem.Create;
  118.   FDisk:=TDisk.Create;
  119.   FMachine:=TMachine.Create;
  120.   FNetwork:=TNetwork.Create;
  121.   FDisplay:=TDisplay.Create;
  122.   FMedia:=TMedia.Create;
  123.   FDevices:=TDevices.Create;
  124.   FEngines:=TEngines.Create;
  125.   FAPM:=TAPM.Create;
  126.   FDirectX:=TDirectX.Create;
  127.   FProcesses:=TProcesses.Create;
  128.   FPrinters:=TPrinters.Create;
  129.   FSoftware:=TSoftware.Create;
  130.   FStartup:=TStartup.Create;
  131.   if csDesigning in ComponentState then
  132.     Refresh;
  133. end;
  134.  
  135. destructor TMSystemInfo.Destroy;
  136. begin
  137.   FCPU.Free;
  138.   FMemory.Free;
  139.   FOS.Free;
  140.   FDisk.Free;
  141.   FMachine.Free;
  142.   FNetwork.Free;
  143.   FDisplay.Free;
  144.   FMedia.Free;
  145.   FDevices.Free;
  146.   FEngines.Free;
  147.   FAPM.Free;
  148.   FDirectX.Free;
  149.   FProcesses.Free;
  150.   FPrinters.Free;
  151.   FSoftware.Free;
  152.   FStartup.Free;
  153.   inherited;
  154. end;
  155.  
  156. procedure TMSystemInfo.Refresh;
  157. begin
  158.   MSafeCall(Devices.GetInfo,Devices.Classname+'.GetInfo',ExceptionMode);
  159.   MSafeCall(CPU.GetInfo,CPU.Classname+'.GetInfo',ExceptionMode);
  160.   MSafeCall(Memory.GetInfo,Memory.Classname+'.GetInfo',ExceptionMode);
  161.   MSafeCall(OS.GetInfo,OS.Classname+'.GetInfo',ExceptionMode);
  162.   MSafeCall(Disk.GetInfo,Disk.Classname+'.GetInfo',ExceptionMode);
  163.   Disk.Drive:=ExtractFileDrive(GetWinDir);
  164.   MSafeCall(Machine.GetInfo,Machine.Classname+'.GetInfo',ExceptionMode);
  165.   MSafeCall(Network.GetInfo,Network.Classname+'.GetInfo',ExceptionMode);
  166.   MSafeCall(Display.GetInfo,Display.Classname+'.GetInfo',ExceptionMode);
  167.   MSafeCall(Media.GetInfo,Media.Classname+'.GetInfo',ExceptionMode);
  168.   MSafeCall(Engines.GetInfo,Engines.Classname+'.GetInfo',ExceptionMode);
  169.   MSafeCall(APM.GetInfo,APM.Classname+'.GetInfo',ExceptionMode);
  170.   MSafeCall(DirectX.GetInfo,DirectX.Classname+'.GetInfo',ExceptionMode);
  171.   MSafeCall(Processes.GetInfo,Processes.Classname+'.GetInfo',ExceptionMode);
  172.   MSafeCall(Printers.GetInfo,Printers.Classname+'.GetInfo',ExceptionMode);
  173.   MSafeCall(Software.GetInfo,Software.Classname+'.GetInfo',ExceptionMode);
  174.   MSafeCall(Startup.GetInfo,Startup.Classname+'.GetInfo',ExceptionMode);
  175. end;
  176.  
  177. procedure TMSystemInfo.Report(var sl: TStringList);
  178. begin
  179.   sl.add('; '+About);
  180.   sl.add('');
  181.   Machine.Report(sl);
  182.   OS.Report(sl);
  183.   CPU.Report(sl);
  184.   Memory.Report(sl);
  185.   Display.Report(sl);
  186.   APM.Report(sl);
  187.   Media.Report(sl);
  188.   Network.Report(sl);
  189.   Devices.Report(sl);
  190.   Engines.Report(sl);
  191.   DirectX.Report(sl);
  192.   Disk.Report(sl);
  193.   Processes.Report(sl);
  194.   Printers.Report(sl);
  195.   Software.Report(sl);
  196.   Startup.Report(sl);
  197. end;
  198.  
  199. {$IFNDEF D6PLUS}
  200. procedure TMSystemInfo.SetAbout(const Value: string);
  201. begin
  202. end;
  203. {$ENDIF}
  204.  
  205. procedure TMSystemInfo.ShowModalOverview;
  206. begin
  207.   with TfrmMSI_Overview.Create(nil) do begin
  208.     SysInfo:=Self;
  209.     DisplayedPages:=pgAll;
  210.     ShowReportButton:=True;
  211.     cmRefresh(nil);
  212.     ShowModal;
  213.     Free;
  214.   end;
  215. end;
  216.  
  217. procedure TMSystemInfo.ShowModalOverviewWithAbout;
  218. begin
  219.   with TfrmMSI_Overview.Create(nil) do begin
  220.     SysInfo:=Self;
  221.     DisplayedPages:=pgAll+[pgAbout];
  222.     ShowReportButton:=True;
  223.     cmRefresh(nil);
  224.     ShowModal;
  225.     Free;
  226.   end;
  227. end;
  228.  
  229. procedure TMSystemInfo.ShowOverview;
  230. begin
  231.   try
  232.     frmMSI_Overview.Show;
  233.   except
  234.     frmMSI_Overview:=TfrmMSI_Overview.Create(nil);
  235.     with frmMSI_Overview do begin
  236.       SysInfo:=Self;
  237.       DisplayedPages:=pgAll;
  238.       ShowReportButton:=True;
  239.       cmRefresh(nil);
  240.       Show;
  241.     end;
  242.   end;
  243. end;
  244.  
  245. procedure TMSystemInfo.ShowOverviewWithAbout;
  246. begin
  247.   try
  248.     frmMSI_Overview.Show;
  249.   except
  250.     frmMSI_Overview:=TfrmMSI_Overview.Create(nil);
  251.     with frmMSI_Overview do begin
  252.       SysInfo:=Self;
  253.       DisplayedPages:=pgAll+[pgAbout];
  254.       ShowReportButton:=True;
  255.       cmRefresh(nil);
  256.       Show;
  257.     end;
  258.   end;
  259. end;
  260.  
  261. end.
  262.  
  263.