home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / zkuste / delphi / kompon / d2345 / MSYSINFO.ZIP / Demos / CP.pas < prev    next >
Pascal/Delphi Source File  |  2001-06-25  |  4KB  |  167 lines

  1. unit CP;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, ExtCtrls, ComCtrls;
  8.  
  9. type
  10.   TdlgCounter = class(TForm)
  11.     Panel1: TPanel;
  12.     Panel2: TPanel;
  13.     pc: TPageControl;
  14.     tsGeneral: TTabSheet;
  15.     Panel3: TPanel;
  16.     Bevel3: TBevel;
  17.     lType: TLabel;
  18.     stLevel: TLabel;
  19.     lScale: TLabel;
  20.     lSize: TLabel;
  21.     lName: TLabel;
  22.     Label1: TLabel;
  23.     Bevel1: TBevel;
  24.     stName: TEdit;
  25.     stType: TLabel;
  26.     stScale: TLabel;
  27.     stSize: TLabel;
  28.     Memo: TMemo;
  29.     tsObject: TTabSheet;
  30.     Bevel2: TBevel;
  31.     lCntr: TLabel;
  32.     lLevel1: TLabel;
  33.     lInst: TLabel;
  34.     lPage: TLabel;
  35.     lObjname: TLabel;
  36.     Label7: TLabel;
  37.     Bevel4: TBevel;
  38.     lCtrs: TLabel;
  39.     Bevel5: TBevel;
  40.     Bevel6: TBevel;
  41.     lTime: TLabel;
  42.     lFreq: TLabel;
  43.     stLevel1: TLabel;
  44.     stObjName: TLabel;
  45.     stCntr: TLabel;
  46.     stInst: TLabel;
  47.     stPage: TLabel;
  48.     Memo1: TMemo;
  49.     stCtrs: TLabel;
  50.     stTime: TLabel;
  51.     stFreq: TLabel;
  52.     Button1: TButton;
  53.     lLevel: TLabel;
  54.   private
  55.     FCounter: TObject;
  56.     FPerfLib: TObject;
  57.   public
  58.     property Counter: TObject read FCounter write FCounter;
  59.     property PerfLib: TObject read FPerfLib write FPerfLib;
  60.     procedure Refresh;
  61.   end;
  62.  
  63. procedure ShowPropsDlg(APerfLib: TObject; AParameter: Variant);
  64.  
  65. implementation
  66.  
  67. uses MiTeC_Routines, MiTeC_PerfLibNT, MiTeC_PerfLib9x;
  68.  
  69. {$R *.DFM}
  70.  
  71. procedure ShowPropsDlg(APerfLib: TObject; AParameter: Variant);
  72. var
  73.   po: TPerfObject;
  74.   p: PChar;
  75. begin
  76.   p:=nil;
  77.   with TdlgCounter.Create(Application.Mainform) do begin
  78.     FPerfLib:=APerfLib;
  79.     if IsNT then begin
  80.       if VarIsArray(AParameter) then begin
  81.         po:=TPerfLibNT(FPerfLib).Objects[TPerfLibNT(FPerfLib).GetIndexByName(AParameter[1])];
  82.         Counter:=po.Counters[po.GetCntrIndexByName(AParameter[0])];
  83.       end else begin
  84.         Counter:=TPerfLibNT(FPerfLib).Objects[TPerfLibNT(FPerfLib).GetIndexByName(AParameter)]
  85.       end;
  86.     end else begin
  87.       p:=AllocMem(255);
  88.       if VarIsArray(AParameter) then begin
  89.         strpcopy(p,AParameter[1]+'\'+AParameter[0]);
  90.         Counter:=TObject(p);
  91.       end else begin
  92.         strpcopy(p,AParameter);
  93.         Counter:=TObject(p);
  94.       end;
  95.     end;
  96.     Refresh;
  97.     ShowModal;
  98.     if Assigned(p) then
  99.       FreeMem(p);
  100.     Free;
  101.   end;
  102. end;
  103.  
  104. { TpropCounter }
  105.  
  106. procedure TdlgCounter.Refresh;
  107. var
  108.   po: TPerfObject;
  109.   sc,so: string;
  110.   i: integer;
  111. begin
  112.   if IsNT then begin
  113.     if Counter is TPerfCounter then begin
  114.       pc.ActivePage:=tsGeneral;
  115.       po:=TPerfCounter(Counter).ParentObject;
  116.     end else begin
  117.       pc.ActivePage:=tsObject;
  118.       tsGeneral.TabVisible:=False;
  119.       po:=TPerfObject(Counter);
  120.     end;
  121.     if Counter is TPerfCounter then
  122.       with TPerfCounter(Counter) do begin
  123.         stName.Text:=Name;
  124.         stType.Caption:=GetCounterTypeStr(CounterType);
  125.         stScale.Caption:=Format('%d',[DefaultScale]);
  126.         stSize.Caption:=Format('%d',[CounterSize]);
  127.         stLevel.Caption:=GetDetailLevelStr(DetailLevel);
  128.         Memo.Text:=Description;
  129.       end;
  130.     with po do begin
  131.       stObjName.Caption:=Name;
  132.       stCntr.Caption:=Format('%d',[DefaultCounter]);
  133.       stPage.Caption:=Format('%d',[CodePage]);
  134.       stLevel1.Caption:=GetDetailLevelStr(DetailLevel);
  135.       if InstanceCount>-1 then
  136.         stInst.Caption:=Format('%d',[InstanceCount])
  137.       else
  138.         stInst.Caption:='0';
  139.       stCtrs.Caption:=Format('%d',[CounterCount]);
  140.       stTime.Caption:=FormatSeconds(PerfTime.QuadPart div timer100n,True,False,True);
  141.       stFreq.Caption:=FormatFloat('#,#0',PerfFreq.QuadPart);
  142.       Memo1.Text:=Description;
  143.     end;
  144.   end else begin
  145.     sc:=StrPas(PChar(Counter));
  146.     i:=Pos('\',sc);
  147.     if i>0 then begin
  148.       pc.ActivePage:=tsGeneral;
  149.       so:=Copy(sc,1,i-1);
  150.     end else begin
  151.       pc.ActivePage:=tsObject;
  152.       tsGeneral.TabVisible:=False;
  153.       so:=sc;
  154.     end;
  155.     with TPerfLib9x(FPerfLib) do begin
  156.       if i>0 then begin
  157.         stName.Text:=SysDataName[sc];
  158.         Memo.Text:=SysDataDesc[sc];
  159.       end;
  160.       stObjName.Caption:=SysDataName[so];
  161.       Memo1.Text:=SysDataDesc[so];
  162.     end;
  163.   end;
  164. end;
  165.  
  166. end.
  167.