📄 ntsvcdemogroups.pas
字号:
unit NtSvcDemoGroups;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Buttons, JclSvcCtrl;
type
TfrmServiceGroups = class(TForm)
treeServices: TTreeView;
btnOK: TBitBtn;
procedure treeServicesDblClick(Sender: TObject);
private
m_SelectedSvc: TJclNtService;
procedure ShowGroups(const NtSvc: TJclNtService);
public
class function Execute(const NtSvc: TJclNtService): TJclNtService;
end;
implementation
{$R *.DFM}
{ TfrmServiceGroups }
class function TfrmServiceGroups.Execute(const NtSvc: TJclNtService): TJclNtService;
begin
with TfrmServiceGroups.Create(nil) do
try
ShowGroups(NtSvc);
m_SelectedSvc := nil;
ShowModal;
Result := m_SelectedSvc;
finally
Free;
end;
end;
procedure TfrmServiceGroups.ShowGroups(const NtSvc: TJclNtService);
var
GrpIdx, SvcIdx: Integer;
GrpNode, SvcNode: TTreeNode;
CurGrp: TJclServiceGroup;
CurNtSvc: TJclNtService;
begin
with NtSvc.SCManager do
for GrpIdx:=0 to GroupCount-1 do
begin
CurGrp := Groups[GrpIdx];
if CurGrp.Name = '' then Continue;
GrpNode := treeServices.Items.AddChildObject(nil, CurGrp.Name, CurGrp);
for SvcIdx:=0 to CurGrp.ServiceCount-1 do
begin
CurNtSvc := CurGrp.Services[SvcIdx];
SvcNode := treeServices.Items.AddChildObject(GrpNode, CurNtSvc.ServiceName, CurNtSvc);
if NtSvc = CurNtSvc then
treeServices.Selected := SvcNode;
end;
end;
end;
procedure TfrmServiceGroups.treeServicesDblClick(Sender: TObject);
begin
if Assigned(treeServices.Selected) and (treeServices.Selected.Level = 1) then
begin
m_SelectedSvc := TJclNtService(treeServices.Selected.Data);
Close;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -