我写一段程序对Word进行操作,在正常的Word文件操作是没有问题,但如果是一份错误的Word文档,而且文件很大,Word尽管打开是乱码,但要花很长时间;
我设置一个工作线程做这个操作,等待5分钟超时,然后就TerminateProcess结束winword.exe 这个进程,但结束后再次调用CreateDispatch("Word.Application")时就出错,提示为Warning: CreateDispatch returning scode = CO_E_SERVER_STOPPING ($80080008).
希望高手能指点指点

解决方案 »

  1.   

    Object server is stopping when OLE service contacts it
      

  2.   

    多谢ldsjlzy(小李) 的关注,错误码的意思我也知道,但就是不知道为什么程序运行时杀掉word进程后,再CreateDispatch就出这种错,但关掉程序重开后CreateDispatch就正常了
      

  3.   

    如果服务不能关闭,可
    IUnknown *pUnk;
    IDispatch *pDisp;
    CLSID clsid;
    _Application m_wordApp;
    CLSIDFromProgID(L"Word.Application", &clsid); 
    //查看是否有已经打开的Word对象
    hr = GetActiveObject(clsid, NULL, (IUnknown**)&pUnk);
    if (!FAILED(hr)) 
    {
    hr = pUnk->QueryInterface(IID_IDispatch, (void **)&pDisp);
    ASSERT(!FAILED(hr));
    m_wordApp.AttachDispatch(pDisp,TRUE);
    pUnk->Release();
    }
    else
    // 若无,则新建一个Word对象
    {
    if(!m_wordApp.CreateDispatch("Word.Application",NULL))
    {
    AfxMessageBox("创建ms_word对象失败");
    exit(1);
    }
    }
      

  4.   

    当Word正在启动时,如果强行关闭,就会错误CO_E_SERVER_STOPPING。
    具体信息见MSDN:
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/enu_kbcompluskb/en-us/compluskb/Q234231.htm==================================
     CSDN助手 全面支持CSDN论坛
     监视、收藏、历史、签名走马灯
      

  5.   

    你不应该用TerminateProcess,而应该调用Quit方法
      

  6.   

    TerminateProcess内不可能连quit都没调吧
      

  7.   

    TerminateProcess是个异步运行的函数,当函数返回时,无法保证进程已经终止运行调用WaitForSingleObject函数
      

  8.   

    请问,如何检测WORD文件是否带有密码?
      

  9.   

    用TerminateProcess强行终止,并不能确保占用的资源被释放,下次再创建进程打开时自然会出现异常的情况.