플그램시러시러 님이 쓰신 글 :
: 감사합니다...
:
: 프로그램의 종료는 잘 됩니다. 다만 하나의 문제가 발생해서 감사의 인사와 동시에, 질문을 하나 추구합니다.
:
: 컴퓨터 리부팅 또는 종료를 눌렀을때, 프로그램은 종료가 잘 되나 시스템은 종료되지 않습니다. (아까보다는 확실히 나아졌습니다.. ^^)P
:
: 일단 상황을 말씀드리면...
: Form의 CloseQueryCall 이 먼저 실행되고, 후에 ShutDown Event가 발생해서 들어옵니다.
:
: 그러다보니, 시스템이 종료되다가 마치 "취소"버튼을 누른 것 마냥 더이상 진행이 되지 않습니다.
: 혹시나해서 Msg.Result = 0; 부분을 없애보기도 하고, 다시 Form->Close를 불러보기도 했습니다만,
: 중지되었던 종료루틴이 다시 수행되어 시스템이 부팅되거나 종료되지를 않습니다.
:
: 아마 해보셨던 부분이니까, 답을 알고 계실것 같아 드리는 질문입니다. 여기서, 무엇인지도 모르고, ShutDown 또는 restart를 직접 수행하는 것은 약간 낭비가 아닐까 해서요...
:
: 미리 감사드립니다.
:
: 플그램시러시러
시스템 종료 요청이 있는 경우 Windows는 실행 중인 모든 애플리케이션에 종료 가능한지 WM_QUERYENDSESSION 메시지를 보내 질의합니다.
모든 애플리케이션이 종료 가능하다고 응답하는 경우 WM_ENDSESSION 메시지를 보내 각 애플리케이션 스스로 종료할 기회를 준 다음 시스템이 종료됩니다.
따라서, 자동으로 종료시키려면 WM_QUERYENDSESSION 메시지 핸들러 내에서 종료가능하다고 응답한 다음 WM_ENDSESSION 메시지 핸들러 내에서 폼을 Close해야 합니다.
다른 곳에서 폼을 Close해야 하는 상황도 있다면 이 메시지와의 관련성을 잘 따져서 하면 되겠습니다.
자세한 것은 Win API 도움말과 함께 아래를 참고하세요.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=15752
|