- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开发了一个控制台 ATL 应用程序,想捕获关闭?、退出?、终止?事件,以便我可以关闭日志文件并在退出时执行常规清理。
我如何捕获因有人在任务管理器中结束 .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();
}
}
最佳答案
您无法从任务管理器的“进程”选项卡中捕获“结束进程”。如果一个程序可以捕获它,您将如何杀死它?
要响应任务管理器中“应用程序”选项卡上的“结束进程”,请处理主窗口中的 WM_CLOSE 消息。
这假定您的 ATL 应用程序是 Windows GUI 应用程序。如果是控制台应用程序,则需要查看 SetConsoleCtrlHandler。
关于c++ - 干净地关闭 ATL 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/487340/
我正在使用 embarcadero C++ XE8 32 位。当我包含以下文件时: #include #include #include #include 我收到以下错误: [bcc32 Fatal
我正在将 VS2008(VC++) 代码迁移到 VS2013。我收到以下错误: error C2664: 'HRESULT _CopyItfFromAdaptItf::copy(T **,ATL::C
我试图在 Visual Studio 2013 上运行这个程序,但是当我包含一个对象 - myparser.obj 时,我收到以下错误: 1>MyParser.obj : error LNK2001:
如何正确转换这种方式? VARIANT varIndex; CString csIndex; //Index BSTR csIndex = (LPCSTR)(_bstr
因此,我正在使用向导在 visual studio 2008 中创建一个 ATL 项目(此处推荐 - How to create ActiveX DLL in Visual C++ - 以及其他地方)
我有一个关于 ATL(C++) VS2010 的项目。我创建了一个对话框类。有两个按钮,想要添加文本框之类的东西。我读到负责此组件 CEdit。 CEdit* pEdit = (CEdit*)GetD
我使用 Visual Studio 2005 向导创建了一个 ATL COM Server C++ 项目。我使用 ATL 简单对象向导添加了一个新的 COM 类。现在,当我尝试从我的服务器(在 ATL
我们有一个已经存在很长时间(可能早在 Visual Studio 6)的 DLL 项目,它已针对 VS 的每个新版本进行了更新。该项目包含许多使用 ATL 实现的 COM 类。 升级到 VS 2010
我有一个使用 ATL 库的 C++ 项目。在 Visual Studio 2012 中,我曾经看到过以下两个文件: 程序文件 (x86)\Microsoft Visual Studio11.0\VC\
我以前从未使用过 COM,并且我的任务是编写一个使用某些第三方 COM 对象的应用程序。如果有人能给我一些关于如何使用它们的好教程,我将不胜感激。更直接的是,我似乎没有安装事件模板库。我在网上搜索过,
我必须创建 BYTE* 数组来为 Http 请求存储一些文本和二进制数据。像这样的东西: Content-Type: multipart/form-data; boundary=Asrf456BGe4
我不熟悉这个,可以使用kick start。 我正在使用 ATL(非托管 C++)用户控件并希望使用 ShockWave ActiveX 对象。我需要知道如何声明它,以便我可以设置属性或调用方法。 例
我使用 ATL 宏,如 A2T 和 A2CW。在开发计算机上一切正常。当我在另一台计算机上使用应用程序 (visual studio 2008 pro) 时 - ATL 宏转换的输出不可读。 我希望有
我正在尝试使用以下方式注册 atl 服务 ExeName.exe/服务 如此处所述:http://msdn.microsoft.com/en-us/library/74y2334x(VS.80).as
任何人都可以帮我找到一个最新的、工作的 ATL 项目,它有一个主窗口和一些组件吗?请看在上帝的份上,不要告诉我使用 WTL/Qt 或其他。我需要 ATL。没有关于它的最新项目。我只需要一个主窗口,仅此
我最近遇到了 atls.lib 的链接问题。我更新了链接器的附加依赖项行: comctl32.lib C:\WinDDK\7600.16385.1\lib\ATL\i386\atls.lib C:\W
ATL::CComModule::RegisterServer(TRUE) 调用究竟做了什么(它写入了哪些注册表项)? 最佳答案 对于每个使用 OBJECT_ENTRY_AUTO 的类宏,它将运行资源
我的硬盘中有 atls.lib,但无法将其链接到我的 Visual Studio 项目中。我知道 atls.lib 是 ATL 特定的库文件,并且我拥有所有 ATL 文件/ header /库。但是,
我正在为一个项目使用 ATL 和 WTL 的组合,并从 CWindowImpl 派生了我自己的类,它看起来像这样: class CMyControl : public CWindowImpl { pu
我正在尝试将XText与EMF的ATL模型结合起来进行模型转换。我正在读取我的 DSL,将其转储到 EMF 的 XMI 资源中,然后将其放入 ATL api 中:ATL 不会给我任何错误并且运行正确:
我是一名优秀的程序员,十分优秀!