js调用时提示“灾难性错误”,请问这是怎么回事具体的js代码
var obj = null;obj = new ActiveXObject("ATVCMD.atvcmdCtrl.1");
var val = null;
obj.RunCmd("notepad");////错误出现在这一行
高手们帮帮我看看怎么处理。

解决方案 »

  1.   

    选MFC的时候把自动化给勾上
    也就是实现IDispatch
      

  2.   

    向导窗体中不是有,一个是Automation,另一个是Windows Sockets
      

  3.   

    恩?在建立mfc项目时有你说的这个选项,
    可是创建mfc activex项目时没有这选项刚开始搞com,最好能多给我说说谢谢了!
      

  4.   

    mfc activex默认就实现了双接口,你只要用类向导来添加方法或属性即可
      

  5.   

    那就继续疑问,致命性错误是怎么回事?我用vc程序可以调用这个控件,可js就抱错郁闷!
      

  6.   

    “灾难性错误”一般表示方法调用中有未处理的异常,你可以调试一下试试
    VC调用和js调用是不同的
    vc是编译型语言,它是直接调用vTable,也就是虚方法表,这种一般速度比较快
    js是解释型语言,它是调用IDispatch的Invoke方法,它需要根据方法名查dispid,然后根据类型库信息找到对应的虚方法,这种调用速度比较慢,同时对象还必须实现IDispatch,也就是支持Automation。
    看你的情况应该是脚本调用GetIDsOfNames或Invoke的时候异常了,你可以调试一下试试。
      

  7.   

    现在是这样一个问题
    我直接编写一个js文件。就是最上面出的错误而我把这个javascript加载到html的时候运行。
    则报错:意外的调用方法和属性访问,提示出现代码行obj = new ActiveXObject("ATVCMD.atvcmdCtrl.1"); 唉,无从下手了。按你说的js属于解释性语言,那么怎么判断这个ocx满足js使用?
      

  8.   

    RunCmd的参数是LPCTSTR  返回值:BSTR是不是给js使用需要什么特别的接口??
      

  9.   

    那你在你组件的构造函数中加上
    m_bInitialized = TRUE;
    吧,虽然我不知道这样做是否正确