VC 调用OFFICE,CreateDispatch问题

icesword2300 2013-09-04 05:44:31
将打开POWERPOINT封装成了一个DLL,实现在功能是将PPT转换为JPG图片;

外部在线程中每次加载DLL,调用接口,然后释放DLL;

以上一切是正常;

现在问题是:
打开比较大的PPT文件时,保存为图片时,比较耗时,所以在线程中进行,每打开来个PPT创建一个线程;但发现连续打一两个PPT文件时,只有在第一个转换完了,第二个PPT才开始转换;

经过跟踪代码,发现在第一个线程未将图片转换完关,第二个线程一直停留在app.CreateDispatch这里,也不返回错误,就是一直等待。
BOOL CPPTManager::InitPPT()
{
AfxMessageBox(_T("InitPPT IN"));
BOOL bCDispatch = app.CreateDispatch(_T("Powerpoint.Application"),NULL);
if (!bCDispatch)
{
AfxMessageBox(_T("InitPPT IN 2"));
return FALSE;
}
else
{
//app.put_Visible(1);//不显示窗体;
AfxMessageBox(_T("InitPPT IN 3"));
}
//BOOL bCDispatch2 = app.CreateDispatch(_T("Powerpoint.Application"), NULL);
AfxMessageBox(_T("InitPPT IN 4"));

return TRUE;
}



上面是启动的代码,

有大神知道这是为什么吗?为什么不能同时启动多个powerpoint?
COM的初始化肯定进行了,释放也是成对的;DLL内,或者DLL外都进行了尝试,一直是同样的问题。
...全文
193 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
icesword2300 2013-09-06
  • 打赏
  • 举报
回复
谢谢LS上的,已经找到答案了; 这个应该是OFFICE自己的机制或者BUG吧; 打开一个比较大的PPT,比如里面1000多个幻灯片,然后将所有幻灯片另存为JPG时,此时再时打开新的powerpoint是无法创建进程的,必须等待另存完成。
fishion 2013-09-04
  • 打赏
  • 举报
回复
在线程里都要调用CoInitialize(NULL)方法,同时office组件好像是有点问题,虽然在外部用ole方式打开了多个文件文件,但其实更像是向同一个进程组件提出操作需求的,以前操作excel时就有类似的问题了
icesword2300 2013-09-04
  • 打赏
  • 举报
回复
anybody?有人来吗?求助啊
本资源包含两部分,第一部分是WPS OFFICE 2012二次开发FAQ,目录如下,内含部分VC和VB的源码指导,第二部分是WPS Office二次开发帮助文档,详细描述了wps,et,wpp的对象、属性和方法等接口,值得你拥有 1 二次开发的兼容性FAQ.....................................................................................................................3 1.1 WPS Office 2012 的二次开发开发和微软的Office 二次开发有什么异同..........................3 1.1.1 模块对象的区别........................................................................................................... 3 1.1.2 枚举常量的区别........................................................................................................... 3 1.1.3 commandbars 调用的区别............................................................................................. 3 1.2 WPS Office2012 的接口类对象和对应的DLL 文件.............................................................4 1.3 原有的与WPS Office 2003(WPS2003)、WPS Office 2002(WPS2002)、WPS Office2005 (WPS2005)、WPS Office 2007(2007)、WPS Office 2009(2009)结合的第三方程序,可 以直接和WPS Office2012 结合运行吗?.................................................................................... 4 1.4 原有的与WPS Office 2003 或者WPS Office 2002 结合的第三方程序,需要做什么改动 才能正常和WPS Office2012 结合运行?.................................................................................... 4 1.5 调用WPS 接口API 方法时要注意Variant 参数类型的传递。.......................................... 5 1.6 通过注册表修改宏代码的安全级别。.................................................................................. 5 2 二次开发文字部分FAQ.....................................................................................................................6 2.1 如何启动WPS 文字模块?....................................................................................................6 2.2 如何退出WPS 文字模块?....................................................................................................6 2.3 如何得到WPS 中的工具栏数?............................................................................................6 2.4 如何隐藏工具栏?..................................................................................................................6 2.5 如何使工具栏的按钮失效?.................................................................................................. 7 2.6 如何获得一个文档?..............................................................................................................7 2.7 如何打开wps 文档?............................................................................................................. 7 2.8 如何关闭一个文档?..............................................................................................................7 2.9 如何保存一个文档?..............................................................................................................7 2.10 如何获得或修改当前用户名?............................................................................................7 2.11 如何在当前文档中添加一个表格?.................................................................................... 8 2.12 如何获取表格的行和列?....................................................................................................8 2.13 如何选中一个表?................................................................................................................8 2.14 如何修改一个表格的某个单元格的内容?........................................................................8 2.15 .如何设置一个表格的单元格的高度和宽度?....................................................................8 2.16 表格增加一行之后,要获取增加表格的内容,必须重新给表格变量赋值.................... 9 2.17 如何添加一个书签?............................................................................................................9 2.18 如何替换一个书签的内容?..............................................................................................10 2.19 如何获取和设置默认打印机?..........................................................................................10 2.20 如何打印一篇已打开的文档?..........................................................................................10 2.21 如何获取和设置某些文字的字体属性?..........................................................................10 2.22 如何获取和设置段落的格式?.......................................................................................... 11 2 2.23 如何通过注册表获取WPS 安装版本及安装路径?........................................................11 2.24 如何在插入对象里添加WPS 文档对象?.......................................................................12 2.25 在WPS 文字中使用Find 的用法...................................................................................... 12 2.26 去掉Find 替换后出现的对话框........................................................................................ 12 2.27 如何通过MIME 设置实现WPS 文字嵌入浏览器的方式打开服务器DOC 或WPS 文档 ...................................................................................................................................................... 12 2.28 如何在不破坏书签的情况下设置内容?..........................................................................13 2.29 为什么在使用Range.Text 为文档、书签,或用FormField.Result 为窗体域设置文本内 容时,回车符不见了?............................................................................................................... 13 2.30 如何判断文档的设计模式状态,如何退出设计模式?.................................................. 13 2.31 如何隐藏表格的智能扩展标记?......................................................................................13 2.32 如何通过API 实现不显示表格虚线?............................................................................. 14 3 二次开发电子表格部分FAQ...........................................................................................................14 3.1 如何启动WPS 电子表格模块?..........................................................................................14 3.2 如何退出电子表格?............................................................................................................14 3.3 如何打开一个电子表格文档?............................................................................................ 14 3.4 如何关闭一个电子表格文档?............................................................................................ 15 3.5 如何保存一个电子表格文档?............................................................................................ 15 3.6 如何设置一个单元格的大小?............................................................................................ 15 3.7 如何获取单元格中的内容?................................................................................................ 15 3.8 如何设置单元格中的内容?................................................................................................ 15 3.9 如何设置单元格中的公式?................................................................................................ 16 3.10 如何设置单元格的边框?..................................................................................................16 3.11 如何读取批注的内容.......................................................................................................... 16 3.12 如何添加批注?..................................................................................................................16 3.13 如何设置单元格内字体的属性?......................................................................................17 3.14 如何打印电子表格文档?.................................................................................................... 17 3.15 如何在插入对象里添加WPS 表格对象?.........................................................................17 3.16 WPS 表格中如何在默认位置插入图片..............................................................................18 3.17 WPS 表格中如何插入图表................................................................................................. 18 3.18 通过MIME 设置WPS 表格嵌入浏览器方式打开服务器的et 或xls 文档....................18

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧