현재 실행중인 프로그램이 있는 경우 , 시스템이 종료될 때 이를 감지(?)해서 시스템 종료를 막기 위해서 어떤 코드를 삽입하면 될까요?

조회수 1161회

매일 오후 9시가 되면 특정 작업을 하도록 파이썬 프로그램을 윈도8.1의 시작프로그램에 등록해 놓았습니다.

그런데 9시 전에 컴퓨터를 종료해버리면 해당 프로그램은 실행되지 못하게 됩니다.

이런 상황을 예방하기 위해 컴퓨터 사용자가 모르고 컴퓨터를 종료시키려 하면, 종료상태(시스템종료버턴클릭한것)를 감지해서 현재 진행중인 프로그램이 있음을 알리고, 컴퓨터 종료 여부를 묻게 하고 싶습니다.

어디서부터 손을 봐야 할지 막막해 질문드립니다.^

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 윈도우에서 log off 나 shutdown 이벤트가 발생하면 callback 을 받을 수 있습니다. 콜백은 윈도우 메세지로 받을 수 있습니다.

    https://docs.microsoft.com/ko-kr/windows/win32/shutdown/wm-endsession?redirectedfrom=MSDN

    즉 윈도우가 로그오프되거나 종료를 요청하면 WM_ENDSESSION 메세지가 발생되므로 그 메세지를 받으면 처리해주면 됩니다.

    종료를 감지하는 프로그램을 트레이에 넣던지 서비스로 등록하던지(이 경우는 메세지를 띄울순 없습니다.) 합니다.

    혹...파이썬으로 하는 방법을 물을 수 있는데...win32 모듈이 있어서 파이썬으로 윈도우 프로그래밍이 가능하긴 합니다만 기본적인 지식이 있어야 합니다.

    핸들, 메세지 펌프, 메세지 다루기, lparam, rparam 같은 윈도우에서 사용하는 파라미터들....

    공부할 것이 제법됩니다만 불가능하지 않으니 한번 해보세요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)