Private Type SERVICE_STATUS dwServiceType As Long dwCurrentState As Long dwControlsAccepted As Long dwWin32ExitCode As Long dwServiceSpecificExitCode As Long dwCheckPoint As Long dwWaitHint As LongEnd TypePrivate Declare Function OpenSCManager Lib "advapi32.dll" Alias _ "OpenSCManagerA" (ByVal lpMachineName As String, _ ByVal lpDatabaseName As String, ByVal dwDesiredAccess As Long) As LongPrivate Declare Function CloseServiceHandle Lib "advapi32.dll" (ByVal hSCObject _ As Long) As LongPrivate Declare Function OpenService Lib "advapi32.dll" Alias "OpenServiceA" _ (ByVal hSCManager As Long, ByVal lpServiceName As String, _ ByVal dwDesiredAccess As Long) As LongPrivate Declare Function StartService Lib "advapi32.dll" Alias "StartServiceA" _ (ByVal hService As Long, ByVal dwNumServiceArgs As Long, _ ByVal lpServiceArgVectors As Long) As LongPrivate Declare Function ControlService Lib "advapi32.dll" (ByVal hService As _ Long, ByVal dwControl As Long, lpServiceStatus As SERVICE_STATUS) As LongConst GENERIC_EXECUTE = &H20000000Const SERVICE_CONTROL_STOP = 1Const SERVICE_CONTROL_PAUSE = 2Const SERVICE_CONTROL_CONTINUE = 3' start/stop/pause/continue a service' SERVICENAME is the internal name of the service' COMMAND can be 0=Start, 1=Stop, 2=Pause, 3=Continue'' returns True if successful, False otherwise' if any error, call Err.LastDLLError for more informationFunction ServiceCommand(ByVal ServiceName As String, ByVal command As Long) As _ Boolean Dim hSCM As Long Dim hService As Long Dim res As Long Dim lpServiceStatus As SERVICE_STATUS ' first, check the command If command < 0 Or command > 3 Then Err.Raise 5 ' open the connection to Service Control Manager, exit if error hSCM = OpenSCManager(vbNullString, vbNullString, GENERIC_EXECUTE) If hSCM = 0 Then Exit Function ' open the given service, exit if error hService = OpenService(hSCM, ServiceName, GENERIC_EXECUTE) If hService = 0 Then GoTo CleanUp ' start the service Select Case command Case 0 ' to start a service you must use StartService res = StartService(hService, 0, 0) Case SERVICE_CONTROL_STOP, SERVICE_CONTROL_PAUSE, _ SERVICE_CONTROL_CONTINUE ' these commands use ControlService API ' (pass a NULL pointer because no result is expected) res = ControlService(hService, command, lpServiceStatus) End Select If res = 0 Then GoTo CleanUp ' return success ServiceCommand = TrueCleanUp: If hService Then CloseServiceHandle hService ' close the SCM CloseServiceHandle hSCM End Function


GM Creates Open Source uProtocol and Invites Automakers to Adopt It: Revolutionizing Automotive Software Development.
General Motors (GM) recently announced its entry into the Eclipse Foundation. The Eclipse Foundation is a prominent open-source software foundation. In addition, GMC announced its contribution of “uProtocol” to facilitate