Я разработал консольное приложение ATL и хочу перехватить закрытие ?, выйти ?, завершить? событие, чтобы я мог закрыть файлы журнала и выполнить общую очистку при выходе.
Как я могу перехватить событие 'terminate', которое может произойти, если кто-то завершит работу .exe в диспетчере задач?
EDIT:
Это консольное приложение, я прикрепил основной класс. Не могли бы вы указать, где и как я должен использовать SetConsoleCtrlHandler
?
// Override CAtlExeModuleT members
int WinMain(int nShowCmd) throw()
{
if (CAtlBaseModule::m_bInitFailed) //ctor failed somewhere
{
ATLASSERT(0);
return -1;
}
HRESULT hr = S_OK;
LPTSTR lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT
if( ParseCommandLine( lpCmdLine, &hr ) )
{
if( SUCCEEDED( RegisterClassObjects( CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE ) ) )
{
CComPtr<IRORCAdapterMain> pAdapter;
if( SUCCEEDED( pAdapter.CoCreateInstance( L"RORCAdapter.RORCAdapterMain" ) ) )
{
if( SUCCEEDED( pAdapter->StartAdapter() ) )
{
MSG msg;
while( GetMessage( &msg, 0, 0, 0 ) )
DispatchMessage( &msg );
}
}
RevokeClassObjects();
}
}