您好,欢迎来到爱站旅游。
搜索
您的当前位置:首页DELPHI服务

DELPHI服务

来源:爱站旅游
delphi Æô¶¯¡¢Í£Ö¹·þÎñº¯Êý

usesWinsvc,..,;

function RunServies(svr:String):Boolean;//Æô¶¯Ä³¸ö·þÎñ£» var

schService:SC_HANDLE; schSCManager:SC_HANDLE; ssStatus:TServiceStatus; Argv:PChar; begin

schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS); schService:=OpenService(schSCManager,Pchar(svr),SERVICE_ALL_ACCESS);

result := True; try

if StartService(schService,0,Argv) then begin

while (QueryServiceStatus(schService,ssStatus)) do begin

Sleep(500);

Application.ProcessMessages;

if ssStatus.dwCurrentState=SERVICE_START_PENDING then Sleep(500) else

Break;

end;//while

if ssStatus.dwCurrentState=SERVICE_RUNNING then result := True else

result := False; end

else

result := False;

finally

CloseServiceHandle(schService); CloseServiceHandle(schSCManager);

end;

end;function StopServies(svr:String):Boolean;//ֹͣij¸ö·þÎñ£» var

schService:SC_HANDLE; schSCManager:SC_HANDLE; ssStatus:TServiceStatus; begin

schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS); schService:=OpenService(schSCManager,Pchar(svr),SERVICE_ALL_ACCESS); try

if ControlService(schService,SERVICE_CONTROL_STOP,ssStatus) then begin

Sleep(1000);

while (QueryServiceStatus(schService,ssStatus)) do begin

Application.ProcessMessages;

if ssStatus.dwCurrentState=SERVICE_STOP_PENDING then Sleep(1000) else break;

end; //while

if ssStatus.dwCurrentState=SERVICE_STOPPED then result := True else

result := False; end else

result := False; finally

CloseServiceHandle(schService); CloseServiceHandle(schSCManager); end; end;

function ServiceIsInstalled(ServiceName: string): Boolean;//°²×°·þÎñ var

SCManager: THandle; HService: THandle; begin

Result := false; if HInst = 0 then Exit;

if Assigned(OpenSCManager) and Assigned(OpenService) and Assigned(CloseServiceHandle) then

begin

SCManager := OpenSCManager(nil, nil, GENERIC_READ); if SCManager <> 0 then begin

HService := OpenService(SCManager,

PChar(ServiceName),

GENERIC_READ);

Result := HService <> 0; if HService <> 0 then begin

CloseServiceHandle(HService); end;

CloseServiceHandle(SCManager); end; end; end;

function

ServiceIsRunning(ServiceName:

string):

Boolean;//ÅжϷþÎñÊÇ·ñÆô¶¯ var

SCManager: THandle; HService: THandle;

ServiceStatus: TServiceStatus; begin

Result := false; if HInst = 0 then Exit;

SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); if SCManager <> 0 then begin

HService := GENERIC_READ);

OpenService(SCManager,

PChar(ServiceName),

if HService <> 0 then begin if ControlService(HService, ServiceStatus) then begin

SERVICE_CONTROL_INTERROGATE,

// If QueryServiceStatus(hService, ServiceStatus) Then Begin

if ServiceStatus.dwCurrentState = SERVICE_RUNNING then begin

Result := true; end; end;

CloseServiceHandle(HService); end;

CloseServiceHandle(SCManager); end; end;

function ChangeServiceConfig(ServiceName: Integer): Boolean;//ÅäÖ÷þÎñ var

SCManager, HService: THandle; PConfig: PQueryServiceConfigA; Buf: DWORD; begin

Result := False; if HInst = 0 then Exit;

SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); if SCManager <> 0 then begin

HService

:=

OpenService(SCManager,

PChar(ServiceName), string;

StartType:

SERVICE_ALL_ACCESS);

if HService <> 0 then

begin

New(PConfig);

QueryServiceConfigA(HService,

PConfig,

SizeOf(_QUERY_SERVICE_CONFIGA), Buf);

ChangeServiceConfigA(HService, PConfig.dwServiceType,

StartType, PConfig.dwErrorControl, PConfig.lpBinaryPathName, PConfig.lpLoadOrderGroup, 0, PConfig.lpDependencies, PConfig.lpServiceStartName, '', PConfig.lpDisplayName);

CloseServiceHandle(HService); DisPose(PConfig); Result := True; end else

Result := False;

CloseServiceHandle(SCManager); end else

Result := False; end;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- azee.cn 版权所有 赣ICP备2024042794号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务