activex js,允许activex控件交互

  activex js,允许activex控件交互

  4.实现从ActiveX调用网页中的javascript。

  设计思路:从上面项目中生成的calc.html创建一个Js函数来调用控件的CallWebJs方法,CallWebJs方法调用页面中的js方法printMsg();

  具体操作如下:和3一样,为控件添加一个名为CallWebJs的方法,

  在calc.cpp中找到这个方法,并按如下方式实现它:

  STDMETHODIMP Ccalc:call webjs(VARIANT script callback)

  {

  //TODO:在此添加您的实现代码

  CComPtr IDispatch spCallback

  if(script callback . VT==VT _ DISPATCH)

  sp callback=script callback . pdispval;

  CComVariant avar params[1];

  avar params[0]= hhheeee ;//指定回调函数的参数

  DISPPARAMS params={ avarParams,NULL,1,0 }。

  if(spCallback)

  spCallback- Invoke(0,

  IID空,

  区域设置_用户_默认,

  分派_方法,

  params,NULL,NULL,NULL);

  返回S _ OK

  }

  在calc.html中添加call按钮,并修改html文件,如下所示:

  超文本标记语言

  头

  对象计算/标题的标题ATL 8.0测试页

  /头

  身体

  OBJECTID= calc classid= CLSID:4a 524 b 99-8 caf-44e 9-B788-70536908 f048 /OBJECT

  inputtype=buttonvalue=Add /

  input type= button value= call webjs /

  scripttype=text/javascript

  函数add() {

  var calc=document . getelementbyid( calc );

  var结果=calc。添加(2,3);

  警报(结果);

  }

  功能测试(){

  var Calc=document . getelementbyid( Calc );

  varresult=calc。call web js(printMsg);

  }

  函数printMsg(msg) {

  警报(消息);

  }

  /脚本

  /BODY

  /HTML

  点击页面中的CallWebJs按钮,看到效果,通过ActiveX回调Js。

  注意:

  楼是新来的。他只是记录了自己的问题。请大家批判性阅读,如有错误请指出:-)。文章前回调函数的参数在js中指定,会造成调用后scriptCallback.vt类型不正确,从而导致Invoke无法触发。现在,参数是在回调函数中指定的。另外,不推荐这种回调方法。使用这种方法不太灵活,尤其是在参数的指定方面。最好使用事件触发的方法,在ActiveX中创建事件和事件函数,由js绑定。后续文章会详细介绍,也可以网上搜。

activex js,允许activex控件交互