用Delphi或VC创建了一个COM对象(DLL),如何才能让javascript脚本识别并使用,并不是用new ActiveXObject()方式,而是让javascript象使用内部(或“内置”)对象一样使用,例如象window对象?这怎样做呢?

解决方案 »

  1.   

    javascript 调用ActiveX就得new ActiveXObject()。。
      

  2.   

    回楼上。我已经看见一个国外商业软件已经可以这样实现了。
    其实目的很简单:应用程序内嵌入TWebBrowse,TWebBrowse装载一个本地的Html文件,该文件内有一段javascript脚本,脚本内可以直接(不用new)使用本应用程序加载的一个COM组件。
    简而言之就是实现javascript与应用程序的双向通信。
    我自己猜测,可能会使用到动态组件加载技术。
      

  3.   

    agree  cnhgj(戏子) (微型潜艇)
    may be must use new activexobject.
      

  4.   

    那些所谓'内置'的javascript对象,实质是MSHTML解析HTML文档,然后生成的支持IDISPATCH的COM对象.是可以在应用程序里先实例化COM对象,然后传给WEBBROWSER里面脚本调用..
    主要问题是脚本从哪些途径取到这个COM对象..实现方法一:
    比如你可以在程序中动态往网页里面插入你的COM对象到一个节点,这个COM对象大概得实现IHTMLElement接口..这时候你的脚本对这个节点操作,就是对你的COM对象操作了.
      

  5.   

    谢谢各位的支持,这个问题我已经解决了。
    使用JScript,而非JavaScript,从IE4开始,微软提供了一个ICustomDoc接口,ICustomDoc的SetUIHandler允许用户设置一个基于IDocHostUIHandler的接口来接管界面处理器,在IDocHostUIHandler提供了很多的虚拟方法,需要重载他们实现不同的定制功能,重载GetExternal方法来扩展IE DOM,如果成功的扩展了DOM,那么就这可以编写脚本代码来实现与本地程序交互。
    请大家参考文章:http://siney.nease.net/article/newintf.htm