2013-03-07 2 views
2

C로 작성된 창없이 Win32 응용 프로그램이 있습니다. 제 질문은 : 응용 프로그램의 종료를 처리 할 수있는 방법이 있습니까? 전의. 작업 관리자 또는 콘솔을 통해 닫습니다.Win32 응용 프로그램 종료 처리 방법

+0

"종료 처리"란 무엇을 의미합니까? Windows 작업 관리자를 사용하는 방법을 묻는 중입니까? – Lundin

+1

키보드에 대한 전역 후크를 만들고 있는데, 응용 프로그램이 작업 관리자에서 없어지기 전에 제거하고 싶습니다. KILL 신호를 리눅스에서 처리하는 것과 비슷한 동작이 필요합니다. –

+1

왜 투표가 실패 했습니까? 이것은 명확한 유스 케이스가 아닌가? – alk

답변

2

질문에서 명확하지 않지만 콘솔 모드 응용 프로그램 인 경우 SetConsoleCtrlHandler을 호출하면 Windows가 응용 프로그램을 종료하기 전에 호출 할 콜백을 설치할 수 있습니다. 이 콜백은 별도의 스레드에서 실행되므로 콜백 함수를 신속하게 완료해야합니다.

그냥 창을 만들지 않는 네이티브 Windows 프로그램 인 경우 다음과 같은 알림을 받으려면 실제로 창이 필요합니다. 어느 것이 문제가 아니며 눈에 띄지 않아도됩니다. ShowWindow()를 호출하지 마십시오.

위에서 언급 한 atexit()가 작동하지 않는다는 점에 유의하십시오. 이는 프로그램이 정상적인 종료 시퀀스를 진행하지 못하게하는 무례한 중단입니다.

+0

나는 단순성을 위해 창을 만들겠다. –

1

atexit() 함수 (http://msdn.microsoft.com/en-us/library/tze57ck3%28v=vs.100%29.aspx)를 살펴볼 수 있습니다.

이 기능을 사용하면 프로그램이 종료 될 때 호출되는 핸들러를 설치할 수 있습니다.

+0

작업 관리자에서 "작업 끝내기"를 처리하지 못하지만 여전히 아무것도 아닌 것보다 낫습니다. –