procedure OnQUERYENDSESSION(var Msg: TMessage); message WM_QUERYENDSESSION;
이렇게 선언하시고.
procedure TForm1.test(var Msg: TMessage);
begin
if (Msg.LParam = ENDSESSION_LOGOFF) then
begin
// 로그오프 처리
end
else
begin
// 셧다운 처리
end;
end;
적당히 처리하시면 될듯 ^^;
결론을 말씀드리자면 저는 메시지를 구분하는 키를 찾지 못하였습니다.
MSDN을 찾아봐도 시스템다운 관련해서는 그냥 한가지 메시지만 오더군요
그래서 종료가 되지 않는 원인을 찾아서 해결하고 종료처리는 OS에 맡기는 방식으로
처리하였습니다.
프로그램상에서 OS의 종료를 방해하던 원인은
1. FastNet그룹의 컴포넌트들을 사용했을때
2. 처리중 thread.sleep 을 사용하였을때
이더군요.
FastNet으로 구성된 컴포넌트는 기본컴포넌트로 대체하고 기능구현하니 잘작동됨니다.
좀 귀찬긴 하지만. sleep은 여러가지 방법이 있겠지만 ㅡ.ㅡ 전 초보라 걍 타임 컴포넌트 추가해서
처리 하였습니다.
검색을 해보니 질문은 몇번 올라와 있는데 답변이 없네요 WM_ENDSESSION, WM_QUERYENDSESSION 메시지가 날아왔을 때 시스템이 Shutdown, Logoff, Reboot중 어느 작업인지 확인하는 방법이 없을까요 ? 메세지가 왔을때 시스템종료의 유형이...
박민엽
•
2006.03.14 00:00
procedure OnQUERYENDSESSION(var Msg: TMessage); message WM_QUERYENDSESSION;
이렇게 선언하시고.
p...
원주영
•
2005.08.01 18:27
결론을 말씀드리자면 저는 메시지를 구분하는 키를 찾지 못하였습니다.
MSDN을 찾아봐도 시스템다운 관련...
이렇게 선언하시고.
procedure TForm1.test(var Msg: TMessage);
begin
if (Msg.LParam = ENDSESSION_LOGOFF) then
begin
// 로그오프 처리
end
else
begin
// 셧다운 처리
end;
end;
적당히 처리하시면 될듯 ^^;