89 lines
2.2 KiB
ObjectPascal
89 lines
2.2 KiB
ObjectPascal
unit NtSvcDemoDependent;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, Buttons, WinSvc, JclSvcCtrl, ComCtrls;
|
|
|
|
type
|
|
TfrmDependent = class(TForm)
|
|
boxDependOn: TGroupBox;
|
|
boxDependBy: TGroupBox;
|
|
btnOK: TBitBtn;
|
|
treeDependOn: TTreeView;
|
|
treeDependBy: TTreeView;
|
|
procedure treeDependDblClick(Sender: TObject);
|
|
private
|
|
m_SelectedSvc: TJclNtService;
|
|
|
|
procedure ShowDependent(const NtSvc: TJclNtService);
|
|
public
|
|
class function Execute(const NtSvc: TJclNtService): TJclNtService;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses NtSvcDemoGroups;
|
|
|
|
{$R *.DFM}
|
|
|
|
{ TfrmDependent }
|
|
|
|
class function TfrmDependent.Execute(const NtSvc: TJclNtService): TJclNtService;
|
|
begin
|
|
with TfrmDependent.Create(nil) do
|
|
try
|
|
ShowDependent(NtSvc);
|
|
|
|
m_SelectedSvc := nil;
|
|
ShowModal;
|
|
Result := m_SelectedSvc;
|
|
finally
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmDependent.ShowDependent(const NtSvc: TJclNtService);
|
|
var
|
|
I, J: Integer;
|
|
Node: TTreeNode;
|
|
SvcGrp: TJclServiceGroup;
|
|
begin
|
|
treeDependOn.ShowLines := NtSvc.DependentGroupCount <> 0;
|
|
treeDependOn.ShowRoot := NtSvc.DependentGroupCount <> 0;
|
|
|
|
for I:=0 to NtSvc.DependentGroupCount-1 do
|
|
begin
|
|
SvcGrp := NtSvc.DependentGroups[I];
|
|
Node := treeDependOn.Items.AddObject(nil, SvcGrp.Name, SvcGrp);
|
|
for J:=0 to SvcGrp.ServiceCount-1 do
|
|
treeDependOn.Items.AddChildObject(Node,
|
|
SvcGrp.Services[J].ServiceName, SvcGrp.Services[J]);
|
|
end;
|
|
|
|
for I:=0 to NtSvc.DependentServiceCount-1 do
|
|
treeDependOn.Items.AddObject(nil, NtSvc.DependentServices[I].ServiceName,
|
|
NtSvc.DependentServices[I]);
|
|
|
|
for I:=0 to NtSvc.DependentByServiceCount-1 do
|
|
treeDependBy.Items.AddObject(nil, NtSvc.DependentByServices[I].ServiceName,
|
|
NtSvc.DependentByServices[I]);
|
|
|
|
treeDependOn.FullExpand;
|
|
treeDependBy.FullExpand;
|
|
end;
|
|
|
|
procedure TfrmDependent.treeDependDblClick(Sender: TObject);
|
|
begin
|
|
with TTreeView(Sender) do
|
|
if Assigned(Selected) then
|
|
if TObject(Selected.Data).ClassType = TJclNtService then
|
|
begin
|
|
m_SelectedSvc := TJclNtService(Selected.Data);
|
|
Close;
|
|
end;
|
|
end;
|
|
|
|
end.
|