对了,是不是我前几次忘了调用releasedispatch()函数释放掉ppt接口阿但问题是我现在在CNewApp::ExitInstance()中写了 ppt.ReleaseDispatch(); 但仍然不能成功执行ppt.CreateDispatch("msppt.Application.9");而我要是换成调用excel的话就可以了;这种情况怎么处理阿???

解决方案 »

  1.   

    把"msppt.Application.9"改成"msppt.Application"试试。
    你的机器安装了powerpoint 吗?
      

  2.   

    安装了阿!!!我觉得会不会与我前几次调试程序的时候没有调用相应的ReleaseDispatch()从而造成内存泄漏什么的有关把??
      

  3.   

    这一句
    pUnk->QueryInterface(IID_IDispatch,
      (void**)&pDisp);
    改为
    pUnk->QueryInterface(IID_IDispatch,
      reinterpret_cast<void**>(&pDisp));试试。
      

  4.   

    先谢谢你们,不过问题主要处在这一句----------
    ppt.CreateDispatch("msppt.Application.9")前面那一句绝对没问题!!~~~~~~~~~~~~~各位继续阿!~~~~~
      

  5.   

    *************i am waiting for your join!!*********************
      

  6.   

    如果EXCEL支持这个不行要么你的”msppt.Application.9“写错啦,要么根本就不支持这种方法 
      

  7.   

        LPDISPATCH pDisp;
    LPUNKNOWN pUnk;
    CLSID clsid;
    BeginWaitCursor();
    ::CLSIDFromProgID(L"PowerPoint.Application",&clsid);
    if(::GetActiveObject(clsid,NULL,&pUnk)==S_OK)
    {
    VERIFY(pUnk->QueryInterface(IID_IDispatch,
    (void**)&pDisp)==S_OK);
    ppt.AttachDispatch(pDisp);
    pUnk->Release(); 
    }
    else
    {
    if(!ppt.CreateDispatch("PowerPoint.Application"))
    {
    AfxMessageBox("ppt failed!!");
    return ;
    }
            AfxMessageBox("god is with me!!");
    ppt.SetVisible(true);
    }