home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 March / Chip_2002-03_cd1.bin / zkuste / delphi / kompon / d56 / MSYSINFO.ZIP / Demos / GUI / ServiceProps.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2002-01-04  |  4.5 KB  |  178 lines

  1. unit ServiceProps;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ExtCtrls, ComCtrls, StdCtrls, ImgList;
  8.  
  9. type
  10.   TpropService = class(TFrame)
  11.     pc: TPageControl;
  12.     tsGeneral: TTabSheet;
  13.     Panel1: TPanel;
  14.     lDispName: TLabel;
  15.     stName: TEdit;
  16.     eDispName: TEdit;
  17.     bSrvProps: TButton;
  18.     tsDepend: TTabSheet;
  19.     lName: TLabel;
  20.     lDesc: TLabel;
  21.     eDesc: TEdit;
  22.     lFile: TLabel;
  23.     eFile: TEdit;
  24.     lStartup: TLabel;
  25.     eStartup: TEdit;
  26.     Bevel1: TBevel;
  27.     lStatus: TLabel;
  28.     stStatus: TStaticText;
  29.     bStart: TButton;
  30.     bStop: TButton;
  31.     bPause: TButton;
  32.     bResume: TButton;
  33.     lStart: TLabel;
  34.     ePars: TEdit;
  35.     Label2: TLabel;
  36.     Label1: TLabel;
  37.     l: TLabel;
  38.     lvDeps: TListView;
  39.     img: TImageList;
  40.     tsOther: TTabSheet;
  41.     Bevel2: TBevel;
  42.     lTag: TLabel;
  43.     lErrCtrl: TLabel;
  44.     lObject: TLabel;
  45.     lType: TLabel;
  46.     stTag: TStaticText;
  47.     stErrCtrl: TStaticText;
  48.     stObject: TStaticText;
  49.     stType: TStaticText;
  50.     lLoadOrder: TLabel;
  51.     stLoadOrder: TStaticText;
  52.     procedure cmSrvProps(Sender: TObject);
  53.     procedure cmStart(Sender: TObject);
  54.     procedure cmStop(Sender: TObject);
  55.     procedure cmPause(Sender: TObject);
  56.     procedure cmResume(Sender: TObject);
  57.   private
  58.     FService: TObject;
  59.   public
  60.     property Service: TObject read FService write FService;
  61.     procedure Refresh;
  62.   end;
  63.  
  64. implementation
  65.  
  66. uses MiTeC_AdvAPI, MiTeC_EnumsNT, MiTeC_Routines;
  67.  
  68. {$R *.DFM}
  69.  
  70. { TpropService }
  71.  
  72. procedure TpropService.Refresh;
  73. var
  74.   sl: TStringList;
  75.   i: integer;
  76. begin
  77.   pc.ActivePage:=tsGeneral;
  78.   with PNTService(Service)^ do begin
  79.     stName.Text:=Name;
  80.     eDispName.Text:=DisplayName;
  81.     eDesc.Text:=Description;
  82.     bSrvProps.Enabled:=FileExists(ImageName);
  83.     eFile.Text:=ImageName;
  84.     eFile.Hint:=eFile.Text;
  85.     eStartup.Text:=szStartup;
  86.     Status:=ServiceGetStatus(Machinename,Name);
  87.     stStatus.Caption:=ServiceGetStatStr(Status);
  88.     bStart.Enabled:=(Startup<>SERVICE_DISABLED) and (Status=SERVICE_STOPPED);
  89.     ePars.Enabled:=bStart.Enabled;
  90.     bStop.Enabled:=(Status=SERVICE_RUNNING) or (Status=SERVICE_PAUSED);
  91.     bPause.Enabled:=Status=SERVICE_RUNNING;
  92.     bResume.Enabled:=Status=SERVICE_PAUSED;
  93.     if ePars.Enabled then
  94.       ePars.Color:=clWindow
  95.     else
  96.       ePars.Color:=clBtnFace;
  97.     stObject.caption:=ObjectName;
  98.     stType.Caption:=szTyp;
  99.     stErrCtrl.Caption:=szErrCtrl;
  100.     stTag.Caption:=Format('%d',[Tag]);
  101.  
  102.     sl:=TStringList.Create;
  103.     lvDeps.Items.BeginUpdate;
  104.     lvDeps.Items.Clear;
  105.     sl.CommaText:=StringReplace(DependOnGroup,' ',',',[rfReplaceAll,rfIgnoreCase]);
  106.     for i:=0 to sl.Count-1 do
  107.       with lvDeps.Items.Add do begin
  108.         Caption:=sl[i];
  109.         ImageIndex:=0;
  110.       end;
  111.     sl.CommaText:=StringReplace(DependOnService,' ',',',[rfReplaceAll,rfIgnoreCase]);
  112.     for i:=0 to sl.Count-1 do
  113.       with lvDeps.Items.Add do begin
  114.         Caption:=sl[i];
  115.         ImageIndex:=1;
  116.       end;
  117.     lvDeps.Items.EndUpdate;
  118.     sl.Free;
  119.     stLoadOrder.Caption:=Group;
  120.   end;
  121. end;
  122.  
  123. procedure TpropService.cmSrvProps(Sender: TObject);
  124. begin
  125.   if FileExists(eFile.Text) then
  126.     DisplayPropDialog(Self.Parent.Handle,eFile.Text);
  127. end;
  128.  
  129. procedure TpropService.cmStart(Sender: TObject);
  130. begin
  131.   if MessageDlg('Start service?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
  132.     try
  133.       Screen.Cursor:=crHourGlass;
  134.       ServiceStart(MachineName,PNTService(Service)^.Name,ePars.Text);
  135.     finally
  136.       Refresh;
  137.       Screen.Cursor:=crDefault;
  138.     end;
  139. end;
  140.  
  141. procedure TpropService.cmStop(Sender: TObject);
  142. begin
  143.   if MessageDlg('Stop service?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
  144.     try
  145.       Screen.Cursor:=crHourGlass;
  146.       ServiceStop(MachineName,PNTService(Service)^.Name);
  147.     finally
  148.       Refresh;
  149.       Screen.Cursor:=crDefault;
  150.     end;
  151. end;
  152.  
  153. procedure TpropService.cmPause(Sender: TObject);
  154. begin
  155.   if MessageDlg('Pause service?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
  156.     try
  157.       Screen.Cursor:=crHourGlass;
  158.       ServicePause(MachineName,PNTService(Service)^.Name);
  159.     finally
  160.       Refresh;
  161.       Screen.Cursor:=crDefault;
  162.     end;
  163. end;
  164.  
  165. procedure TpropService.cmResume(Sender: TObject);
  166. begin
  167.   if MessageDlg('Resume service?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
  168.     try
  169.       Screen.Cursor:=crHourGlass;
  170.       ServiceContinue(MachineName,PNTService(Service)^.Name);
  171.     finally
  172.       Refresh;
  173.       Screen.Cursor:=crDefault;
  174.     end;
  175. end;
  176.  
  177. end.
  178.