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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access