LOCAL MSSQL As Win32Service MSSQL = CREATEOBJECT("Win32Service", "MSSQLSERVER") IF MSSQL.GetWmiObject() = NULL * the service is not found RETURN ENDIF ? "The service is running:", MSSQL.IsStarted() * end of main DEFINE CLASS Win32Service As Session PROTECTED wmiserver, servicename, service servicename="" service=NULL PROCEDURE Init(cServiceName) THIS.servicename = m.cServiceName THIS.wmiserver = GetObject("winmgmts:\\" +; "." + "\root\cimv2") THIS.InterrogateService PROCEDURE InterrogateService LOCAL oCollection, oMember oCollection = THIS.wmiserver.ExecQuery(; "SELECT * FROM Win32_Service " +; "WHERE name='" + THIS.servicename + "'") FOR EACH oMember IN oCollection THIS.service = oMember NEXT PROCEDURE GetWmiObject RETURN THIS.service PROCEDURE StartService RETURN THIS.service.StartService() PROCEDURE StopService RETURN THIS.service.StopService() PROCEDURE PauseService RETURN THIS.service.PauseService() PROCEDURE ResumeService RETURN THIS.service.ResumeService() PROCEDURE GetServiceName RETURN THIS.servicename PROCEDURE GetProperty(cProperty, oDefault) LOCAL oValue TRY oValue = EVALUATE("THIS.service." + cProperty) CATCH oValue = m.oDefault ENDTRY RETURN NVL(m.oValue, m.oDefault) PROCEDURE GetCaption RETURN THIS.GetProperty("Caption","") PROCEDURE GetDescription RETURN THIS.GetProperty("Description","") PROCEDURE GetServiceType RETURN THIS.GetProperty("ServiceType","") PROCEDURE IsStarted RETURN THIS.GetProperty("Started",.F.) PROCEDURE GetStartMode RETURN THIS.GetProperty("StartMode","") PROCEDURE GetStartName RETURN THIS.GetProperty("StartName","") PROCEDURE GetServiceState RETURN THIS.GetProperty("State","") PROCEDURE GetServiceStatus RETURN THIS.GetProperty("Status","") PROCEDURE GetPathName RETURN THIS.GetProperty("PathName","") ENDDEFINEOriginal link: