• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 一个关于Automation的简单问题,盼高手们给出解答。

一个关于Automation的简单问题,盼高手们给出解答。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了automation错误,automation是什么意思,office automation,rockwell automation,automation studio等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 一个关于Automation的简单问题,盼高手们给出解答。
描述:

在exe文件中启动一个dll,在这个dll中又调用exe文件提供的接口函数出错???
主要现象:
1、这个exe文件提供了automation支持,将其中的CDocument自动化了,并提供了一些方法和属性。
2、在DLL中要是CoInitialize(NULL),就会返回S_FALSE,我估计是exe文件因为也CoInitialize(NULL)的缘故。
3、在这个dll中又调用exe文件提供的接口函数出错或根本未执行
4、如果用另外一个正常的测试程序exe中启动这个dll,并在dll中执行原来的exe提供的方法就一切OK了。
不知是什么原因???望高手给了一些解决方法。


解决方案1:

结果怎么会这样……………!!

解决方案2:

你的exe使用了一个dll,dll再调用exe提供的服务,这是完全可行的,首先,你调用dll方法的线程(exe线程)已经执行了CoInitialize,当它调用dll方法时,你又执行CoInitialize,当然会返回S_FALSE,然后它调用自身所属的exe提供的服务,这相当于exe的一个线程调用自己的服务,有什么不可以的?
你的dll是不是com?如果是,exe线程需要执行CoInitialize,否则不需要。
调用dll方法的exe线程,不会是提供服务的线程,你可以不考虑dll的存在,这只相当于exe线程调用自己的服务,这样如果可以,那使用了dll后也可以,问题是出在你的exe里。
你可以在exe里写个类似dll中的方法,先不用dll,看能不能成功。

解决方案3:

“在exe文件中启动一个dll,同时这个exe又作为自动化服务器,在这个dll中又调用exe文件提供的接口函数,”,这是可以行的通的,(并且这个Dll同时也可以是一个Com组件),代码:
IJb* appDesign=new IJb;
appDesign.AttachDispatch(pDispatchDesign);
试一试,pDispatchDesign是主程序传递过来的接口指针,这个指针用CCmdTarget::GetIDispatch()
来获取,主程序自动化类CDocument肯定也是继承于CCmdTarget吧,Dll所控制的就是当前的主程序.
我的问题更郁闷,Dll是个Com组件,还要动态获取其信息,哪位高手能参阅
http://community.csdn.net/Expert/topic/3477/3477461.xml?temp=.7351648
帮我解决一下

解决方案4:

pUnknownDesign->QueryInterface(IID_IDispatch,(LPVOID *)&pDispatchDesign);
你的COM组件实现了IID_IDispath么(返回的是不是NULL并且HRESULT为S_OK?)
 hrDesign=pUnknownDesign->QueryInterface(IID_IDispatch,(LPVOID *)&pDispatchDesign);
if(FAILED(hr)) throw(_T("没有取得IDispatchPtr"));
if(!pDispatchDesign) throw(_T("没有取得IDispatchPtr"));//试试
appDesign.AttachDispatch(pDispatchDesign);
appDesign.CopyGztImage(1); //执行这一句但是不正确,没有错误提示
pUnknownDesign->Release();
pUnknownDesign=NULL;

解决方案5:

if possible, send me your project: clineyuan@sina.com

解决方案6:

回楼上:这样说,问题可能出在hrDesign=::GetActiveObject(clsidDesign,NULL,&pUnknownDesign);这一句。第一种情况,该语句可能执行失败。而你的代码又没检查hrDesign?
另外if(FAILED(hr)) throw(_T("没有取得IDispatchPtr"));我没看见你在哪里定义了hr?

解决方案7:

不懂,学习

解决方案8:

200分的問題, 幫頂

解决方案9:

你在DLL中如何调exe提供的接口函数的?
1是自己CreateInstance,
2把Document的接口指针传到DLL
3GetActiveObject
?

解决方案10:

对 automation 了解不多
帮 UP

解决方案11:

dll是进程内组件,
直接把指针传递过去就完了,
不需要通过COM接口吧。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 请问一个关于ATL/automation简单的问题~
  • 用vc做了个automation的com组件,用mfc可以调用,但是用vb调用不了
  • com,automation,activeX有什么不同?
  • Automation组件DLL是如何管理MFC模块状态的?
  • 请教有关VC向导的Automation
  • 为何给AUTOMATION组件添加方法后,调用不了
  • COM,Automation和ActiveX的大侠来指点个方向
  • 再次紧急求救Automation操作Excel问题
  • WORDAutomation奇怪问题
  • 创建MFC对话框工程忘记勾上automation支持,怎么办?

相关文章

  • 2017-06-04 关于制作ActiveX控件遇到的两个重要的问题
  • 2017-06-04 DDSURFACEDESC2结构中的字段
  • 2017-06-04 关于add-in
  • 2017-06-04 谁有msdn上的资料关于如何用C语言调用COM?
  • 2017-06-05 多线程学习笔记---基础篇
  • 2017-06-05 Windows操作系统进行用户名、密码验证的函数是什么?或者是怎样获取主机的用户明、密码(关于Gina登陆替换方面的问题)
  • 2017-06-04 如何操作recordset,实现它的断开?
  • 2017-06-04 TransformFilter指定媒体类型问题
  • 2017-06-05 显示联接DLL,编译通过,但运行时弹出非法操作提示?
  • 2017-06-04 VC6CMsChart控件以创建就崩溃急!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 求助windows2000下(硬件)驱动程序或DLL的制作?也可以不要分,货币交易
    • 远程调用权限问题
    • 麻烦各位给在下解释一下!
    • UI线程和主线程通信的问题
    • Directshow如何提取当前"帧"的音频数据为音频可视效果使用
    • 100分急求一个ATL的COM,关于如何传递数组的问题
    • 哪里可以下载《COM本质论》????
    • 线程之间的转换精度是汇编指令么?
    • 关于VC调用VBActiveXDll组件的问题
    • 我在属性页里添加了一页来放置自己的设置,怎么让它每次出现都显示相应的当前值?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有