1: //启动服务器 Begin //ControlService(rHandle,SERVICE_CONTROL_START,rec_status); StartService(rHandle,0,servicearg); i:=0; While i<30 Do Begin QueryServiceStatus(RHandle,Rec_status); if rec_status.dwCurrentState =SERVICE_RUNNING then Begin result :=True; CloseServiceHandle(RHandle); Break; End; sleep(1000); i:=i+1; End; End; 2: //暂停服务进程 Begin ControlService(rHandle,SERVICE_CONTROL_PAUSE,rec_status); i:=0; While i<30 Do Begin QueryServiceStatus(RHandle,Rec_status); if rec_status.dwCurrentState =SERVICE_PAUSED then Begin result :=true; CloseServiceHandle(RHandle); Break; End; Sleep(1000); i:=i+1; End; End; 3: //唤醒服务进程 Begin ControlService(rHandle,SERVICE_CONTROL_CONTINUE,rec_status); i:=0; While i<30 do Begin QueryServiceStatus(RHandle,Rec_status); if rec_status.dwCurrentState =SERVICE_RUNNING then Begin result :=True; CloseServiceHandle(RHandle); Break; End; Sleep(1000); i:=i+1; End; End; 4: //停止服务进程 begin ControlService(rHandle,SERVICE_CONTROL_STOP,rec_status); i:=0; While i<30 Do Begin QueryServiceStatus(RHandle,Rec_status); if rec_status.dwCurrentState =SERVICE_STOPPED then Begin result :=True; CloseServiceHandle(RHandle); Break; End; Sleep(1000); i:=i+1; End; End; 5: //关闭服务程序 SERVICE_CONTROL_SHUTDOWN Begin rec_status.dwCurrentState :=SERVICE_RUNNING;
ControlService(rHandle,SERVICE_CONTROL_STOP,rec_status); i:=0; While i<30 Do Begin QueryServiceStatus(RHandle,Rec_status); if rec_status.dwCurrentState =SERVICE_STOPPED then Begin result :=True; CloseServiceHandle(RHandle); Break; End; Sleep(1000); i:=i+1; End; End; end; Result :=true; {关闭句柄} if rHandle <> 0 then CloseServiceHandle(RHandle); End; End; Except End;
end;
function TService.IsServiceStart(ServiceName: String): Boolean; Var RHandle:Integer; rc :Boolean; Rec_status :TServiceStatus; begin Try OpenScmHandle(); Result :=False; If 上一页 [1] [2] [3] 下一页 |