* Service Control Manager object specific access types >#define SC_MANAGER_CONNECT 0x0001 >#define SC_MANAGER_CREATE_SERVICE 0x0002 >#define SC_MANAGER_ENUMERATE_SERVICE 0x0004 >#define SC_MANAGER_LOCK 0x0008 >#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010 >#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020 > >* Service object specific access type >#define SERVICE_QUERY_CONFIG 0x0001 >#define SERVICE_CHANGE_CONFIG 0x0002 >#define SERVICE_QUERY_STATUS 0x0004 >#define SERVICE_ENUMERATE_DEPENDENTS 0x0008 >#define SERVICE_START 0x0010 >#define SERVICE_STOP 0x0020 >#define SERVICE_PAUSE_CONTINUE 0x0040 >#define SERVICE_INTERROGATE 0x0080 >#define SERVICE_USER_DEFINED_CONTROL 0x0100 > >* Service State -- for CurrentState >#define SERVICE_STOPPED 0x00000001 >#define SERVICE_START_PENDING 0x00000002 >#define SERVICE_STOP_PENDING 0x00000003 >#define SERVICE_RUNNING 0x00000004 >#define SERVICE_CONTINUE_PENDING 0x00000005 >#define SERVICE_PAUSE_PENDING 0x00000006 >#define SERVICE_PAUSED 0x00000007 > >DECLARE Long OpenSCManager IN Advapi32 ; > STRING lpMachineName, STRING lpDatabaseName, Long dwDesiredAccess >DECLARE Long OpenService IN Advapi32 ; > Long hSCManager, String lpServiceName, Long dwDesiredAccess >DECLARE Long QueryServiceStatus IN Advapi32 ; > Long hService, String @ lpServiceStatus >DECLARE Long CloseServiceHandle IN Advapi32 ; > Long hSCObject > >lhSCManager = OpenSCManager(0, 0, SC_MANAGER_CONNECT + SC_MANAGER_ENUMERATE_SERVICE) >IF lhSCManager = 0 > * Error >ENDIF >lcServiceName = "MSSQLSERVER" >lhSChandle = OpenService(lhSCManager, lcServiceName, SERVICE_QUERY_STATUS) >IF lhSCManager = 0 > * Error >ENDIF >lcQueryBuffer = REPLICATE(CHR(0), 4*7 ) >lnRetVal = QueryServiceStatus(lhSChandle, @lcQueryBuffer ) >IF lnRetVal = 0 > * Error >ENDIF >* Close Handles >CloseServiceHandle(lhSChandle) >CloseServiceHandle(lhSCManager) >lnServiceStatus = ASC(SUBSTR(lcQueryBuffer,5,1)) >IF lnServiceStatus <> SERVICE_RUNNING > * Service isn't running > ? "Service isn't running" >ENDIF >