例如桌面上已有了WORD的一个实例,那么如何通过编程,打开一个WORD文档.
看了一些关于ShellExecute资料,使用后发觉会产生新的实例.有谁碰到过这个问题吗?

解决方案 »

  1.   

    1。调用程序本身的打开这样的接口
    2。象记事本等没这样的接口的,可以考虑drag drop模拟,不知行不
      

  2.   

    f(!WordApp.CreateDispatch("Word.Application", fileName))
    {
    AfxMessageBox("faint");}
    WordApp.SetVisible(true);
      

  3.   

    控制Word要通过自动化,比如用GetActiveObject获取运行的Word实例。
      

  4.   

    试了一下午都没出来,原来是CLSID给弄错了.贴点代码,保留一下,非常感谢你们.
    HRESULT hResult;
    hResult = CoInitialize(NULL);//初始化COM库
    if (FAILED(hResult)) 
    {
    printf("Initialize COM library failed!\n");
    return -1;
    }
    ISldWorksPtr p;//定义智能指针
    // IDispatch *pIDis;
    CComPtr <IModelDoc2>                    pModel;
    HRESULT hr; wchar_t progid[] = L"SldWorks.Application";
    CLSID clsid;
    ::CLSIDFromProgID(progid,&clsid); hr = p.CreateInstance(L"SldWorks.Application");//查找组件
    if( FAILED(hr) )
    return 0; hr = p.GetActiveObject(clsid);//连接到一个实例
    if( FAILED(hr) )
    {
    long i = ::GetLastError();
    return 0;
    }
    hr = p->get_IActiveDoc2(&pModel);//调用接口函数

    // if( pModel == NULL )
    {
    _variant_t file("E:\\Program Files\\SolidWorks\\data\\templates\\零件.prtdot");
    p->INewDocument2(file.bstrVal,0,0,0,&pModel );
    }
    }