home *** CD-ROM | disk | FTP | other *** search
- unit ServiceProps;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ExtCtrls, ComCtrls, StdCtrls, ImgList;
-
- type
- TpropService = class(TFrame)
- pc: TPageControl;
- tsGeneral: TTabSheet;
- Panel1: TPanel;
- lDispName: TLabel;
- stName: TEdit;
- eDispName: TEdit;
- bSrvProps: TButton;
- tsDepend: TTabSheet;
- lName: TLabel;
- lDesc: TLabel;
- eDesc: TEdit;
- lFile: TLabel;
- eFile: TEdit;
- lStartup: TLabel;
- eStartup: TEdit;
- Bevel1: TBevel;
- lStatus: TLabel;
- stStatus: TStaticText;
- bStart: TButton;
- bStop: TButton;
- bPause: TButton;
- bResume: TButton;
- lStart: TLabel;
- ePars: TEdit;
- Label2: TLabel;
- Label1: TLabel;
- l: TLabel;
- lvDeps: TListView;
- img: TImageList;
- tsOther: TTabSheet;
- Bevel2: TBevel;
- lTag: TLabel;
- lErrCtrl: TLabel;
- lObject: TLabel;
- lType: TLabel;
- stTag: TStaticText;
- stErrCtrl: TStaticText;
- stObject: TStaticText;
- stType: TStaticText;
- lLoadOrder: TLabel;
- stLoadOrder: TStaticText;
- procedure cmSrvProps(Sender: TObject);
- procedure cmStart(Sender: TObject);
- procedure cmStop(Sender: TObject);
- procedure cmPause(Sender: TObject);
- procedure cmResume(Sender: TObject);
- private
- FService: TObject;
- public
- property Service: TObject read FService write FService;
- procedure Refresh;
- end;
-
- implementation
-
- uses MiTeC_AdvAPI, MiTeC_EnumsNT, MiTeC_Routines;
-
- {$R *.DFM}
-
- { TpropService }
-
- procedure TpropService.Refresh;
- var
- sl: TStringList;
- i: integer;
- begin
- pc.ActivePage:=tsGeneral;
- with PNTService(Service)^ do begin
- stName.Text:=Name;
- eDispName.Text:=DisplayName;
- eDesc.Text:=Description;
- bSrvProps.Enabled:=FileExists(ImageName);
- eFile.Text:=ImageName;
- eFile.Hint:=eFile.Text;
- eStartup.Text:=szStartup;
- Status:=ServiceGetStatus(Machinename,Name);
- stStatus.Caption:=ServiceGetStatStr(Status);
- bStart.Enabled:=(Startup<>SERVICE_DISABLED) and (Status=SERVICE_STOPPED);
- ePars.Enabled:=bStart.Enabled;
- bStop.Enabled:=(Status=SERVICE_RUNNING) or (Status=SERVICE_PAUSED);
- bPause.Enabled:=Status=SERVICE_RUNNING;
- bResume.Enabled:=Status=SERVICE_PAUSED;
- if ePars.Enabled then
- ePars.Color:=clWindow
- else
- ePars.Color:=clBtnFace;
- stObject.caption:=ObjectName;
- stType.Caption:=szTyp;
- stErrCtrl.Caption:=szErrCtrl;
- stTag.Caption:=Format('%d',[Tag]);
-
- sl:=TStringList.Create;
- lvDeps.Items.BeginUpdate;
- lvDeps.Items.Clear;
- sl.CommaText:=StringReplace(DependOnGroup,' ',',',[rfReplaceAll,rfIgnoreCase]);
- for i:=0 to sl.Count-1 do
- with lvDeps.Items.Add do begin
- Caption:=sl[i];
- ImageIndex:=0;
- end;
- sl.CommaText:=StringReplace(DependOnService,' ',',',[rfReplaceAll,rfIgnoreCase]);
- for i:=0 to sl.Count-1 do
- with lvDeps.Items.Add do begin
- Caption:=sl[i];
- ImageIndex:=1;
- end;
- lvDeps.Items.EndUpdate;
- sl.Free;
- stLoadOrder.Caption:=Group;
- end;
- end;
-
- procedure TpropService.cmSrvProps(Sender: TObject);
- begin
- if FileExists(eFile.Text) then
- DisplayPropDialog(Self.Parent.Handle,eFile.Text);
- end;
-
- procedure TpropService.cmStart(Sender: TObject);
- begin
- if MessageDlg('Start service?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
- try
- Screen.Cursor:=crHourGlass;
- ServiceStart(MachineName,PNTService(Service)^.Name,ePars.Text);
- finally
- Refresh;
- Screen.Cursor:=crDefault;
- end;
- end;
-
- procedure TpropService.cmStop(Sender: TObject);
- begin
- if MessageDlg('Stop service?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
- try
- Screen.Cursor:=crHourGlass;
- ServiceStop(MachineName,PNTService(Service)^.Name);
- finally
- Refresh;
- Screen.Cursor:=crDefault;
- end;
- end;
-
- procedure TpropService.cmPause(Sender: TObject);
- begin
- if MessageDlg('Pause service?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
- try
- Screen.Cursor:=crHourGlass;
- ServicePause(MachineName,PNTService(Service)^.Name);
- finally
- Refresh;
- Screen.Cursor:=crDefault;
- end;
- end;
-
- procedure TpropService.cmResume(Sender: TObject);
- begin
- if MessageDlg('Resume service?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
- try
- Screen.Cursor:=crHourGlass;
- ServiceContinue(MachineName,PNTService(Service)^.Name);
- finally
- Refresh;
- Screen.Cursor:=crDefault;
- end;
- end;
-
- end.
-