com 相关说明

1.  金山WPS 的try catch捕获能力弱,所以增加m_lpDispatch判断!!! 不过也是在容易出错的地方增加。

2.打开一个文档,在获取这个文档实例的时候需要相应的权限。 如果你是管理员打开的ppt文件,那么程序运行也需要管理员权限。
 
3.word,excel(通WPS文档,表格)采用InitGetQueryAPP才能获得激活程序实例,InitCreateApp不能获取。PPT,PS,AI两种模式都能获得激活程序实例

4. 微软Office:以普通用户身份或管理员身份调用CreateDispatch加载MsOffice组件都能成功。win7可以,win10不行。
金山Office:以普通用户身份调用CreateDispatch加载WpsOffice成功,但以管理员身份则失败,提示无效的类字符串,GetLastError值1008(试图引用不存在的令牌。)

 5.win10 以普通用户打开office,管理员运行CreateDispatch程序,提示“服务正在运行中”的一个对话框;以管理员打开office,普通用户运行CreateDispatch程序,报错信息提示需要权限不够。

6.VC 操作Word, Excel 出现"服务器正在运行中" Ole Server Busy对话框的原因分析和解决建议
如果你使用了MFC 应用程序并且初始化COM环境使用的是AfxOleInit,当执行一个需要很长时间返回的COM调用时就会遇到这个问题。
一般使用MFC客户应用程序,包含消息循环,推荐使用AfxOleInit来初始化COM. 而AfxOleInit默认会设置Ole消息过滤器.
AfxOleGetMessageFilter()->EnableBusyDialog(FALSE);
在出现该问题的操作之前加入下面代码即可:
if (!AfxOleInit()) return false;
AfxOleGetMessageFilter()->SetBusyReply(SERVERCALL_RETRYLATER);
AfxOleGetMessageFilter()->EnableNotRespondingDialog(TRUE);
AfxOleGetMessageFilter()->SetMessagePendingDelay(-1);
注意:在加入上面代码的源文件的顶部包含头文件:#include <afxole.h>

猜你喜欢

转载自blog.csdn.net/greless/article/details/103279490