コンソール ATL アプリケーションを開発しましたが、close?、exit?、terminate? をトラップしたいと考えています。ログ ファイルを閉じて、終了時に一般的なクリーンアップを実行できるようにします。
誰かがタスク マネージャーで .exe を終了した結果発生する「終了」イベントをトラップするにはどうすればよいですか?
編集:
これはコンソール アプリケーションです。メイン クラスを追加しました。をどこでどのように使用すればよいか教えていただけます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();
}
}