2014-02-27 1 views
0

컴퓨터를 종료 할 때 다른 응용 프로그램에 경고하는 응용 프로그램을 만들고 싶습니다.C++의 PC 종료에 대한 필수 처리

함수

onShutdown() { 
    [Send my message] 
} 

PC가 종료 될 때 내 경고가 다른 하나의 응용 프로그램에서 이동하는 guanrantee인가?

편집 : 의견을 읽고, 나는 그것이 종결 메시지를받는 첫 번째 것이 필수적이라고 덧붙일 것이다. "onShutdown()"이 내 응용 프로그램이 처음 멈추는 것을 보장하기에 충분하지 않을 수 있기 때문에 그 메시지를 얻을 수있는 방법이 있습니까?

RE-EDIT가 :

SetConsoleCtrlHandler(); 

아직도 비에 대한 단서를 얻지 : IHM를 들어,이

WindowProc() {} 

그리고 비 IHM 위해를 사용하는 것이 가장 것, 그것을 사용하는 것이 가장 보인다 창 응용 프로그램.

+0

이 기사를 읽었습니까? [MSDN의 메시지 전용 Windows] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms632599%28v=vs.85%29.aspx#message_only) [http : //stackoverflow.com/questions/20029338/how-to-send...](http://stackoverflow.com/questions/20029338/how-to-send-a-message-from-one-windows-console- application-to-another) –

+2

신뢰할 수 없습니다. 다른 애플리케이션이 먼저 'WM_ENDSESSION' 메시지를 받았고 이미 종료 된 경우 어떻게 될까요? –

+0

@ FrédéricHamidi 자신의 응용 프로그램을 어떻게 든 메시지를받는 첫 번째 방법이 될 수 있을까요? 아니면 응용 프로그램이 임의의 순서로 메시지를 받습니까? –

답변

1

WM_QUERYENDSESSION에 응답하여 메시지를 보낼 수 있습니다. 이제는 다른 응용 프로그램이 아무 때 나 문자 그대로 사라질 수 있으므로 어쨌든 100 % 보장이 불가능합니다. 그러나 WM_QUERYENDSESSION은 응용 프로그램 종료를 유발할 가능성이 매우 낮으므로 다른 응용 프로그램이 그 순간에 죽을 까봐 두려워 할 특별한 이유가 없습니다.

+0

또한 WM_QUERYENDSESSION (윈도우가 메시지를 고소하기 전에 최대 5 초가 허용됨)에서 돌아 오기 전에 차단하여 다른 앱이 메시지를 처리 ​​할 시간을 부여 할 수 있습니다. – Sneftel

+0

좋아요,하지만 "LRESULT CALLBACK WindowProc() {}"은 Man-To-Machine 인터페이스가없는 프로세스에 적용 할 수 있습니까? – Xaltar

+0

@Xaltar : John Odom의 첫 번째 설명을 참조하십시오. – MSalters