用delphi咋样兑现启动截止windows服务

function StartService(AServName: string): Boolean; //use WinSvc
var
SCManager, hService: SC_ACCESS,HANDLE;
lpServiceArgVectors: PChar;
begin
SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
Result := SCManager <> 0;
if Result then
try
hService := OpenService(SCManager, PChar(AServName),
SERVICE_ALL_ACCESS);
Result := hService <> 0;
if (hService = 0) and (GetLastError = ERROR_SERVICE_DOES_NOT_EXIST)
then
Exception.Create(‘The specified service does not exist’);
if hService <> 0 then
try
lpServiceArgVectors := nil;
Result := WinSvc.StartService(hService, 0,
PChar(lpServiceArgVectors));
if not Result and (GetLastError = ERROR_SERVICE_ALREADY_RUNNING)
then
Result := True;
finally
CloseServiceHandle(hService);
end;
finally
CloseServiceHandle(SCManager);
end;
end;

//如若要轉載本文請注脚出處,免的出現版權紛爭,我不喜歡看到这種轉載了自己的小说卻不声明出處的人
Seven{See7di#Gmail.com}
function StopService(AServName: string): Boolean;
var
SCManager, hService: SC_HANDLE;
SvcStatus: TServiceStatus;
begin
SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
Result := SCManager <> 0;
if Result then
try
hService := OpenService(SCManager, PChar(AServName),
SERVICE_ALL_ACCESS);
Result := hService <> 0;
if Result then
try //截至并卸载服务;
Result := ControlService(hService, SERVICE_CONTROL_STOP, SvcStatus);
//删除服务,这一句可以不用;
// DeleteService(hService);
finally
CloseServiceHandle(hService);
end;
finally
CloseServiceHandle(SCManager);
end;
end;

相关文章