13. [pywin32] NotifyChangeEventLog() 함수

pywin32/win32evtlog|2020. 7. 25. 23:24

NotifyChangeEventLog(handle, handle)

 

이벤트 로그가 쓰여지면 알려주는 함수입니다.

 

인자로는 handle : int, handle : int 가 있습니다.

 

handle 은 OpenEventLog 함수의 리턴값으로 감시할 이벤트 로그의 핸들값입니다.

 

2번째 handle은 win32 event 핸들값으로 이벤트 로그에 로그가 쓰여지면 이 handle이 가리키는 이벤트 핸들에서 알람을 감지할 수 있습니다.

import win32evtlog
import win32event
import win32api
import win32con

pHandle = win32evtlog.OpenEventLog(None, "Application")
# Application 로그 오픈
cHandle = win32event.CreateEvent(None, win32con.TRUE, win32con.FALSE, None)
# 새로운 이벤트를 생성
win32evtlog.NotifyChangeEventLog(pHandle, cHandle)

while True:
    x = win32event.WaitForSingleObject(cHandle, win32event.INFINITE) # 대기
    if x == win32event.WAIT_OBJECT_0:	# 로그가 쓰여지는 걸 감지
        print(f"signaled!")
        break


win32api.CloseHandle(cHandle)
win32evtlog.CloseEventLog(pHandle)
# 핸들 값 반환

위 코드를 실행하면 무한 대기할 것입니다.

 

다른 파이썬 쉘을 키고, ReportEvent 함수를 실행해봅시다. (ReportEvent 코드 참조)

 

이벤트 로그가 쓰여졌으니 이를 감지하고 signaled!를 출력하였습니다.

win32event.WaitForSingleObject 에 대해서는 win32event에서 설명하겠습니다~

 

[pywin32/win32event] - 3. [pywin32] WaitForSingleObject 함수

 

3. [pywin32] WaitForSingleObject 함수

int = WaitForSingleObject(hHandle, milliseconds ) 이벤트 하나를 등록시켜놓고 이벤트가 셋트 되면 이를 알려주는 함수입니다. 인자로는 hHandle : PyHANDLE, milliseconds : int 가 있습니다. hHandle: 대기상..

ssjune.tistory.com

 

반응형

댓글()