vc操作word后,word进程退不出来
我是利用MsWord9.olb将_Application、Documents和Selection类导入到工程中,将一个word文档中的内容拷贝到剪贴板上,再粘帖到m_Edit 中显示出来。但执行之后,word的进程没有退出来,这样在下次打开该文档时就有问题了。请大家帮帮忙改一下:
static char BASED_CODE szFilter[]="Word Files(*doc)|*.DOC||";
CFileDialog fd(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,NULL);
CString strFilePath;//用来保存打开的文件名;
if(fd.DoModal()==IDOK)
strFilePath=fd.GetPathName();//获取要打开的Word文档的名字;
_Application m_App;//定义Word提供的应用程序对象;
Documents m_Docs;//定义Word提供的文档对象;
Selection m_Sel;//定义Word提供的选择对象;
m_Docs.ReleaseDispatch();
m_Sel.ReleaseDispatch();
m_App.m_bAutoRelease=true;
if(!m_App.CreateDispatch("Word.Application"))
{
AfxMessageBox("创建Word2000服务失败!");
exit(1);
}
//下面是定义VARIANT变量;
COleVariant varFilePath(strFilePath);
COleVariant varstrNull("");
COleVariant varTrue(short(1),VT_BOOL);
COleVariant varFalse(short(0),VT_BOOL);
COleVariant varLong((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
m_Docs.AttachDispatch(m_App.GetDocuments());//将接口关联起来;
m_Docs.Open(varFilePath,varFalse,varFalse,varFalse,
varstrNull,varstrNull,varFalse,varstrNull,
varstrNull,varTrue,varTrue,varTrue);
//打开Word文档;
m_Sel.AttachDispatch(m_App.GetSelection
m_Sel.WholeStory();//选择文档中的全部内容;
m_Sel.Copy();//将数据拷贝到剪贴板
m_Edit.Paste();
m_Edit.UpdateData();
m_Sel.ReleaseDispatch();
m_Docs.ReleaseDispatch();//断开关联;
m_App.ReleaseDispatch();
m_Docs.Close(varLong,varLong,varLong);
m_App.Quit(varLong,varLong,varLong);
问题点数:20、回复次数:4Top
1 楼ifengfeng(fengfeng)回复于 2003-11-04 18:35:16 得分 10
去掉m_App.ReleaseDispatch();可以关闭吗?
就执行这个m_App.Quit(varLong,varLong,varLong);
Top
2 楼canjian(奋斗,探求,不达目的誓不罢休!)回复于 2003-11-04 18:59:07 得分 0
学习Top
3 楼sxxny(轻云(Srj))回复于 2003-11-04 19:53:00 得分 10
你想要它马上就结束进程的话可以调用一下CoUninitle(..)(函数名错了)
就可以了Top
4 楼fzq426(天涯海角 不见不散)回复于 2003-11-05 09:04:53 得分 0
谢谢各位的帮忙,sxxny的方法可行。是调用CoInitialize()函数。Top




