使用API Private Declare Function OpenSCManager Lib "advapi32.dll" Alias "OpenSCManagerA" (ByVal strMachineName As String, ByVal strDBName As String, ByVal lAccessReq As Long) As Long Declare Function OpenService Lib "advapi32.dll" Alias "OpenServiceA" (ByVal hSCManager As Long, ByVal strServiceName As String, ByVal lAccessReq As Long) As Long Declare Function StartService Lib "advapi32.dll" Alias "StartServiceA" (ByVal hService As Long, ByVal lNumServiceArgs As Long, ByVal strArgs As String) As Boolean Declare Function ControlService Lib "advapi32.dll" (ByVal hService As Long, ByVal lControlCode As Long, lpServiceStatus As SERVICE_STATUS) As Boolean Declare Function CloseServiceHandle Lib "advapi32.dll" (ByVal hHandle As Long) As BooleanPublic Type SERVICE_STATUS dwServiceType As Long dwCurrentState As Long dwControlsAccepted As Long dwWin32ExitCode As Long dwServiceSpecificExitCode As Long dwCheckPoint As Long dwWaitHint As Long End TypePublic Const SERVICE_QUERY_CONFIG = &H1 Public Const SERVICE_CHANGE_CONFIG = &H2 Public Const SERVICE_QUERY_STATUS = &H4 Public Const SERVICE_ENUMERATE_DEPENDENTS = &H8 Public Const SERVICE_START = &H10 Public Const SERVICE_STOP = &H20 Public Const SERVICE_PAUSE_CONTINUE = &H40 Public Const SERVICE_INTERROGATE = &H80 Public Const SERVICE_USER_DEFINED_CONTROL = &H100 Public Const SERVICE_ALL_ACCESS = &H1FF Public Const SC_MANAGER_CONNECT = &H1 Public Const SC_MANAGER_CREATE_SERVICE = &H2 Public Const SC_MANAGER_ENUMERATE_SERVICE = &H4 Public Const SC_MANAGER_LOCK = &H8 Public Const SC_MANAGER_QUERY_LOCK_STATUS = &H10 Public Const SC_MANAGER_MODIFY_BOOT_CONFIG = &H20 Public Const SC_MANAGER_ALL_ACCESS = &H40 Public Const SERVICE_STOPPED = &H1 Public Const SERVICE_START_PENDING = &H2 Public Const SERVICE_STOP_PENDING = &H3 Public Const SERVICE_RUNNING = &H4 Public Const SERVICE_CONTINUE_PENDING = &H5 Public Const SERVICE_PAUSE_PENDING = &H6 Public Const SERVICE_PAUSED = &H7 Public Const SERVICE_CONTROL_STOP = &H1 Public Const SERVICE_CONTROL_PAUSE = &H2 Public Const SERVICE_CONTROL_CONTINUE = &H3 Public Const SERVICE_CONTROL_INTERROGATE = &H4 Public Const SERVICE_CONTROL_SHUTDOWN = &H5 Public Const SERVICE_CONTROL_PARAMCHANGE = &H6 Public Const SERVICE_CONTROL_NETBINDADD = &H7 Public Const SERVICE_CONTROL_NETBINDREMOVE = &H8 Public Const SERVICE_CONTROL_NETBINDENABLE = &H9 Public Const SERVICE_CONTROL_NETBINDDISABLE = &HA '查询服务状态 Public Function QuerySvc(strServiceName As String) As SERVICE_STATUS Dim retCode As Long, scHandle As Long, svcHandle As Long, svcStatus As SERVICE_STATUSscHandle = OpenSCManager(vbNullString, vbNullString, &H4) svcHandle = OpenService(scHandle, strServiceName, SERVICE_ALL_ACCESS) retCode = ControlService(svcHandle, SERVICE_QUERY_STATUS, QuerySvc) retCode = CloseServiceHandle(svcHandle) retCode = CloseServiceHandle(scHandle)'开始服务 Public Function StartSvc(strServiceName As String) As BooleanDim retCode As Long, scHandle As Long, svcHandle As LongscHandle = OpenSCManager(vbNullString, vbNullString, &H4) svcHandle = OpenService(scHandle, strServiceName, SERVICE_ALL_ACCESS) StartSvc = StartService(svcHandle, 0&, 0&) retCode = CloseServiceHandle(svcHandle) retCode = CloseServiceHandle(scHandle)End Function '停止服务 Public Function StopSvc(strServiceName As String) As BooleanDim retCode As Long, scHandle As Long, svcHandle As Long, svcStatus As SERVICE_STATUSscHandle = OpenSCManager(vbNullString, vbNullString, &H4) svcHandle = OpenService(scHandle, strServiceName, SERVICE_ALL_ACCESS) StopSvc = ControlService(svcHandle, SERVICE_CONTROL_STOP, svcStatus) retCode = CloseServiceHandle(svcHandle) retCode = CloseServiceHandle(scHandle)End Function
Private Declare Function OpenSCManager Lib "advapi32.dll" Alias "OpenSCManagerA" (ByVal strMachineName As String, ByVal strDBName As String, ByVal lAccessReq As Long) As Long
Declare Function OpenService Lib "advapi32.dll" Alias "OpenServiceA" (ByVal hSCManager As Long, ByVal strServiceName As String, ByVal lAccessReq As Long) As Long
Declare Function StartService Lib "advapi32.dll" Alias "StartServiceA" (ByVal hService As Long, ByVal lNumServiceArgs As Long, ByVal strArgs As String) As Boolean
Declare Function ControlService Lib "advapi32.dll" (ByVal hService As Long, ByVal lControlCode As Long, lpServiceStatus As SERVICE_STATUS) As Boolean
Declare Function CloseServiceHandle Lib "advapi32.dll" (ByVal hHandle As Long) As BooleanPublic Type SERVICE_STATUS
dwServiceType As Long
dwCurrentState As Long
dwControlsAccepted As Long
dwWin32ExitCode As Long
dwServiceSpecificExitCode As Long
dwCheckPoint As Long
dwWaitHint As Long
End TypePublic Const SERVICE_QUERY_CONFIG = &H1
Public Const SERVICE_CHANGE_CONFIG = &H2
Public Const SERVICE_QUERY_STATUS = &H4
Public Const SERVICE_ENUMERATE_DEPENDENTS = &H8
Public Const SERVICE_START = &H10
Public Const SERVICE_STOP = &H20
Public Const SERVICE_PAUSE_CONTINUE = &H40
Public Const SERVICE_INTERROGATE = &H80
Public Const SERVICE_USER_DEFINED_CONTROL = &H100
Public Const SERVICE_ALL_ACCESS = &H1FF
Public Const SC_MANAGER_CONNECT = &H1
Public Const SC_MANAGER_CREATE_SERVICE = &H2
Public Const SC_MANAGER_ENUMERATE_SERVICE = &H4
Public Const SC_MANAGER_LOCK = &H8
Public Const SC_MANAGER_QUERY_LOCK_STATUS = &H10
Public Const SC_MANAGER_MODIFY_BOOT_CONFIG = &H20
Public Const SC_MANAGER_ALL_ACCESS = &H40
Public Const SERVICE_STOPPED = &H1
Public Const SERVICE_START_PENDING = &H2
Public Const SERVICE_STOP_PENDING = &H3
Public Const SERVICE_RUNNING = &H4
Public Const SERVICE_CONTINUE_PENDING = &H5
Public Const SERVICE_PAUSE_PENDING = &H6
Public Const SERVICE_PAUSED = &H7
Public Const SERVICE_CONTROL_STOP = &H1
Public Const SERVICE_CONTROL_PAUSE = &H2
Public Const SERVICE_CONTROL_CONTINUE = &H3
Public Const SERVICE_CONTROL_INTERROGATE = &H4
Public Const SERVICE_CONTROL_SHUTDOWN = &H5
Public Const SERVICE_CONTROL_PARAMCHANGE = &H6
Public Const SERVICE_CONTROL_NETBINDADD = &H7
Public Const SERVICE_CONTROL_NETBINDREMOVE = &H8
Public Const SERVICE_CONTROL_NETBINDENABLE = &H9
Public Const SERVICE_CONTROL_NETBINDDISABLE = &HA
'查询服务状态
Public Function QuerySvc(strServiceName As String) As SERVICE_STATUS
Dim retCode As Long, scHandle As Long, svcHandle As Long, svcStatus As SERVICE_STATUSscHandle = OpenSCManager(vbNullString, vbNullString, &H4)
svcHandle = OpenService(scHandle, strServiceName, SERVICE_ALL_ACCESS)
retCode = ControlService(svcHandle, SERVICE_QUERY_STATUS, QuerySvc)
retCode = CloseServiceHandle(svcHandle)
retCode = CloseServiceHandle(scHandle)'开始服务
Public Function StartSvc(strServiceName As String) As BooleanDim retCode As Long, scHandle As Long, svcHandle As LongscHandle = OpenSCManager(vbNullString, vbNullString, &H4)
svcHandle = OpenService(scHandle, strServiceName, SERVICE_ALL_ACCESS)
StartSvc = StartService(svcHandle, 0&, 0&)
retCode = CloseServiceHandle(svcHandle)
retCode = CloseServiceHandle(scHandle)End Function
'停止服务
Public Function StopSvc(strServiceName As String) As BooleanDim retCode As Long, scHandle As Long, svcHandle As Long, svcStatus As SERVICE_STATUSscHandle = OpenSCManager(vbNullString, vbNullString, &H4)
svcHandle = OpenService(scHandle, strServiceName, SERVICE_ALL_ACCESS)
StopSvc = ControlService(svcHandle, SERVICE_CONTROL_STOP, svcStatus)
retCode = CloseServiceHandle(svcHandle)
retCode = CloseServiceHandle(scHandle)End Function