一、导出启动powerpoint所需的COM组件(开发工具使用的是visual studio 2008)
导出具体步骤如下:
右键工程-->添加-->类
在弹出的对话框中选择Microsoft PowerPoint 16.0 Object Library,导出PowerPoint的COM组件类
得到这样的类头文件
接下来导出Micorsoft Office的COM组件类
导出之后得到
通过导出的PowerPoint类库函数,可以启动PowerPoint程序来打开需要处理的ppt文件
获取当前已打开的PPT程序实例的代码:
bool MyGetActiveObject(CPPTApplication& app, std::string strProgID)
{
CString csProgID = strProgID.c_str();
CLSID clsid;
HRESULT hr = ::CLSIDFromProgID((CA2W)csProgID, &clsid);
if(FAILED(hr))
{
return false;
}
IUnknown *pUnknown=NULL;
hr = ::GetActiveObject(clsid, NULL,&pUnknown);
if(FAILED(hr))
{
return false;
}
LPDISPATCH pDispatch = NULL;
hr = pUnknown->QueryInterface(IID_IDispatch, (void**)&pDispatch);
if(FAILED(hr))
{
return false;
}
if (pDispatch != NULL)
{
app.AttachDispatch(pDispatch);
}
return true;
}
启动PPT程序的代码
bool MyStartApplication(CPPTApplication& app, std::string strProgID)
{
CString csPrgID = strProgID.c_str()/*(bWPS)?"KWPP.Application":*//*"PowerPoint.Application"*/;
COleException OleExcept;
return app.CreateDispatch(csPrgID, &OleExcept);
}
通过COM的uuid来启动COM组件实例的代码
bool MyCoCreateInstance(COleDispatchDriver& driver, std::string strUUID)
{
bool bRet = false;
COleException OleExcept;
//CLSID clsid;
//CLSIDFromString((CA2W)CString(strUUID.c_str()), &clsid);
bRet = driver.CreateDispatch(strUUID.c_str(), &OleExcept);
return bRet;
}