热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一个自动化组件,定义了双接口为出接口,JavaScript和VBScript怎么跟它Advise来连接该组件?

有一个普通的自动化的组件(非ActiveX),实现了以下接口structIMath:publicIDispatch{virtualHRESULT__stdcallAd
有一个普通的自动化的组件(非ActiveX),实现了以下接口

struct IMath:public IDispatch
{
   virtual HRESULT __stdcall  Add(  ULONG a, ULONG b, ULONG* pret ) = 0;
   virtual HRESULT __stdcall  Sub(  ULONG a, ULONG b, ULONG* pret ) = 0;
};

    同时组件定义了一个双接口作为出接口如下

struct IMathEvent:public IDispatch
{
   virtual HRESULT __stdcall onTooLarge( ULONG r ) = 0;
};

    当IMath::Add或IMath::Sub方法的结果大于5时,组件就会通过客户端实现的IDispath接口来调用客户的onTooLarge函数.

    使用C++测试没有问题.但是在Javascript和Vbscript都不能正常响应该事件,跟到组件的代码里,发现是IMathEvent出接口的连接点没有被连接.
    C++中是使用Advise显示连接的事件连接点.但是在Javascript和Vbscript里,应该怎么样Advise呢?以下是我的脚本测试代码,请各位帮我看看有什么问题

/////Javascript的测试代码










//////Vbscript测试代码







    我在网上查了很多例子,它们的事件响应都是这么写的,为什么我这样写就不行呢?是不是普通的COM(非ActiveX)根本就不能使用脚本客户端的出接口呢?
    
    请大家帮忙看看啊

5 个解决方案

#1


  
这一句里的 "for 那个引号是我编辑文章时无意弄上去的,代码里本来没有.

#2


你的ocx在别的程序能用吗?例如vc

#3


估计你的组件没有实现IProvideClassInfo2接口,加上下面几行 (把CLSID, DIID, LIBID改为你的组件的数据)
        public IProvideClassInfo2Impl<&CLSID_Math,&DIID__IMathEvents, &LIBID_MATHEVENTLib>,

        COM_INTERFACE_ENTRY(IProvideClassInfo)
        COM_INTERFACE_ENTRY(IProvideClassInfo2)

#4


masterz,你说得完全正确哦.不过我不是用MFC写的,是COM API写的

#5


CathySun118,是可以用的.

推荐阅读
  • <tablecellspacing0cellpadding0>&l ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
  • 【编程游戏】贺岁霓虹灯。(第一名奖励10000可用分)效果图评分参观[目前Firefox中好使,其他浏览器需复制到本地,存为html文件看效果]<html><head>&l ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 本文介绍了一道经典的状态压缩题目——关灯问题2,并提供了解决该问题的算法思路。通过使用二进制表示灯的状态,并枚举所有可能的状态,可以求解出最少按按钮的次数,从而将所有灯关掉。本文还对状压和位运算进行了解释,并指出了该方法的适用性和局限性。 ... [详细]
  • vb.net面试题,请大家帮忙,谢谢。如果需要讲详细一点,那就加我QQ531412815第4题,潜在的错误,这里的错误不是常规错误,属于那种只有在运行是才知道的错误:Catchex ... [详细]
  • http:www.cnblogs.compirloarchive200909091563368.html以前操作Excel的话,一般都会去用Microsoft.Jet.OLEDB.4. ... [详细]
  • 特需要使用集合的时候,无法找到VBScript中的Collection对象;到处找不到,那就自己写一个吧!注:1.需要VBScript5.0或更高版本,使用Class及 ... [详细]
  • IsitpossibletocallaVBScriptfunctionfromaJavaScriptcall,oralternatelycallJavaScriptfr ... [详细]
author-avatar
我很丑但我可以很温柔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有