O'Reilly logo

Python Programming On Win32 by Mark Hammond, Andy Robinson

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Controlling a Service

If you haven’t already guessed, to control a service you use the win32service.ControlService() function. This function is simple: it takes a handle to the service you wish to control and an integer identifying the control to send. The function returns the new status for the service, in the same format returned by the win32service.QueryServiceStatus() function.

Let’s stop the messenger service:

>>> newStatus=win32service.ControlService(hs, win32service.SERVICE_CONTROL_STOP)
>>>

And use the helper function to decode the status:

>>> PrintServiceStatus(newStatus)
The service shares a process with other services
The service is stopping
>>>

The service status reports the service is stopping. If you query the service status in a few seconds, note that it finally stopped:

>>> PrintServiceStatus(win32service.QueryServiceStatus(hs))
The service shares a process with other services
The service is stopped

This is an important point. win32service.ControlService() returns immediately when the service has accepted the control request; it may take some time for the service to complete the request.

Let’s restart the service to bring everything back to the same state in which we found it. Starting a service requires the use of the win32service.StartService() function. This function takes a handle to the service to start and the arguments for the service or None if there are no arguments.

Now restart the service:

>>> win32service.StartService(hs, None)
>>>

The service now goes through ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required