
win32_set_service_status 함수의 \'dwCurrentState\' 매개변수는 현재 서비스의 상태를 나타내며, 서비스가 시작 중, 실행 중, 중지 중, 또는 중지된 상태 중 하나를 지정할 수 있습니다.
\'dwWin32ExitCode\' 매개변수는 서비스가 종료한 이유를 나타내며, 서비스가 정상적으로 종료되면 0이 반환됩니다.
서비스가 비정상적으로 종료되면, 서비스가 종료한 이유를 나타내는 오류 코드가 반환됩니다.
예를 들어, 서비스가 시스템 오류로 종료되면 1060이 반환됩니다.
서비스의 상태를 변경하는 예제 코드는 다음과 같습니다.
#hostingforum.kr
python
import win32serviceutil
import win32service
import win32event
class MyService(win32serviceutil.ServiceFramework):
_svc_name_ = 'MyService'
_svc_display_name_ = 'My Service'
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
def SvcDoRun(self):
self.ReportServiceStatus(win32service.SERVICE_START_PENDING)
try:
self.ReportServiceStatus(win32service.SERVICE_RUNNING)
# 서비스 로직을 수행합니다.
except Exception as e:
self.ReportServiceStatus(win32service.SERVICE_STOPPED)
raise
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def main():
service = MyService()
service.start()
win32serviceutil.ServiceController.WaitForStop(service._svc_name_)
service.stop()
if __name__ == '__main__':
main()
이 예제 코드에서는 서비스의 상태를 시작 중, 실행 중, 중지 중, 또는 중지된 상태 중 하나로 변경할 수 있습니다.
서비스가 비정상적으로 종료되면, 서비스가 종료한 이유를 나타내는 오류 코드가 반환됩니다.
이러한 예제 코드를 참고하여 서비스의 상태를 변경하는 코드를 작성할 수 있습니다.
2025-05-18 05:28