为什么MS Word在我发布最后一个COM接口后没有关闭?
Why doesn't MS Word close after I release its last COM interface?
我认为COM自动化对象在其最后一个接口发布时会自行关闭。
然而,打开并释放MS Word接口的这段代码使WINWORD.EXE进程仍在运行。我已经追踪到了,我知道iUnkn->Release()
正在被调用。
我在这里做错了什么?
if (SUCCEEDED(CoInitialize(NULL)))
{
CLSID clsid;
if (SUCCEEDED(CLSIDFromProgID(OLESTR("Word.Application"), &clsid)))
{
IUnknown* iUnkn = NULL;
if (SUCCEEDED(CoCreateInstance(clsid, NULL, CLSCTX_SERVER, Word::IID__Application, (void**) &iUnkn)) && iUnkn)
{
iUnkn->Release();
}
}
CoUninitialize();
}
这是经过设计的。
当释放对其Application
COM接口的最后一个引用时,没有任何内容强制Word退出(假设代码中包含的引用实际上是最后一个)。该应用程序可以并且将继续为未来的请求提供服务。
如果您希望进程退出,则必须查询Word.Application
的IDispatch
接口并调用其Quit()方法。
相关文章:
- COM 接口 c# 封送数组数组
- c++ com 如何继承 IUIAutomationPropertyChangedEventHandler 接口
- 如何通过COM接口将64位整数从C++发送到C#
- 如何在C++中用属性声明COM接口
- 2 个 COM 对象,并在另一个对象中使用其中一个对象的接口
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- 从 COM 接口中的函数返回多个值
- 可视化 使用 C++ API 注册 COM DLL 的所有接口
- COM 使用 CoMarshalInterThreadInterfaceInStream 封送接口
- C#COM组装实现C 接口
- 使用带有COM接口的STL智能指针
- 如何从MFC DLL中获取与COM包裹的C#对象的接口
- 将指向COM接口指针的指针从托管c++传递到.NET c#
- 当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
- 创建 COM 接口指针在开发计算机上有效,但会导致其他计算机上的应用程序崩溃
- 如何实现C#使用本机C 的com的接口
- 如何用C 包裹的COM接口部署C#库
- 我可以从不同的线程访问COM对象的接口吗
- 在C++中使用COM/ATL接口时,C#对象未被销毁
- 从未通过 C# 注册C++ COM 服务器访问 COM 接口