在javascript中使用com组件的简单实现方法


Posted in Javascript onAugust 17, 2016

首先创建一个COM组件,插入一个双接口Itest,在此接口上实现以下三个方法:

STDMETHODIMP Ctest::test(void) //无输入输出参数 
{ 
// TODO: 在此添加实现代码 
MessageBox(NULL,L"test",L"test",MB_OK); 

return S_OK; 
} 

STDMETHODIMP Ctest::test1(BSTR a1) //有一个字符串输入参数 
{ 
// TODO: 在此添加实现代码 
MessageBox(NULL,a1,L"test",MB_OK); 
return S_OK; 
} 
STDMETHODIMP Ctest::test3(BSTR* a1) //有一个BSTR* 输出参数 
{ 
// TODO: 在此添加实现代码 

MessageBox(NULL,L"test3",L"test",MB_OK); 
*a1=::SysAllocString (L"烽火连三月家书抵万金"); 
return S_OK; 
} 

COM 中的上述三个方法分别演示无输入输出参数、有一个输入参数、有一个输出参数三种情况。程序编制好后,用regsvr32在系统中注册组件,然后就可以在IE中用javascript调用com 组件的方法了,分两种情况掉用,示例如下:

1、直接调用com方法

建立一个html文本,并输入以下内容:

<html> 
 
<head> 
 
<title> 调用com组件的方法示例 </title> 
 
<script language="javascript"> 
 
document.write("<hr>") 
 
var xml=new ActiveXObject("atldll.test.1") 
 
xml.test() 
 
xml.test1("向com方法中传递参数并调用com方法")        
 
var str=xml.test3() //从com方法中返回参数 
document.write("str"+str) 
 
document.write(“<hr>”) 
 
</script> 
 
</head> 
 
<body> 

演示IE脚本程序中调用com组件的方法 
</body> 
 
</html>

2、在javascript函数中调用com方法

建立一个html文本,并输入以下内容:

<html> 
 
<head> 
 
<title> donghailin active object </title> 
 
<script type="text/javascript"> 
 
function displaymessage() 
 
{ 
 
document.write("<hr>") 
 
var xml=new ActiveXObject("atldll.test.1") 
 
xml.test() 
 
xml.test1("向com组件传递字符串")        
 
var str=xml.test3() //从com组件返回字符串 
document.write("str"+str) 
 
document.write(“<hr>”) 
 
} 
 
</script> 
 
</head> 
 
<body> 
 
<form> 
 
<input type="button" value="Click me!" onclick="displaymessage()" > 
 
</form> 
 
</body> 
 
</html>

注意编写的com组件供其他系统调用,因此输入输出参数字符串应是BSTR类型。

3、设置com组件的属性的方法

首先在com组件中设置属性。在接口类中赠加属性变量

BSTR m_bstr;

右键单击接口,选择“赠加”-〉“添加属性”在”添加属性向导中“输入属性类型” 中输入参数类型“BSTR” ,“属性名”输入“bstr",向导自动生成属性函数put_bstr和get_bstr,如下:

STDMETHODIMP Ctest::get_bstr(BSTR* pVal) 
{ 
 // TODO: 在此添加实现代码 
 *pVal=m_bstr; 
 return S_OK; 
} 
 
STDMETHODIMP Ctest::put_bstr(BSTR newVal) 
{ 
 // TODO: 在此添加实现代码 
 m_bstr=newVal; 
 
 MessageBox(NULL,m_bstr,L"属性测试",MB_OK); 
 return S_OK; 
}

下面的代码演示在IE的javascript脚本中设置和获得属性

<html> 
<head> 
<title> donghailin active object </title> 
 
<script type="text/javascript"> 
function displaymessage() 
{ 
document.write("<hr>") 
var xml=new ActiveXObject("atldll.test.1") 
xml.bstr="满园春色锁不住一枝红杏出墙来" //属性是bstr,C++ 中属性设置是put_bstr(...) 
document.write("属性返回值是:"+xml.bstr) //c++中获得属性值get_bstr(变量指针) 
document.write("<hr>") 
} 
</script> 
 
</head> 
<body> 
<table  align=center  width=50>  
<form> 
<input type="button" value="Click me!" onclick="displaymessage()" > 
</form> 
</table> 
 
</body> 
</html>

以上这篇在javascript中使用com组件的简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS与框架页的操作代码
Jan 17 Javascript
JS trim去空格的最佳实践
Oct 30 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
Aug 29 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
JavaScript合并两个数组并去除重复项的方法
Jun 13 Javascript
最全面的JS倒计时代码
Sep 17 Javascript
jquery 实现回车登录详解及实例代码
Oct 23 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
Jan 27 Javascript
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
解决vue路由后界面没有变化,但是链接有的问题
Sep 01 Javascript
详解微信小程序网络请求接口封装实例
May 02 Javascript
详解node和ES6的模块导出与导入
Feb 19 Javascript
模拟javascript中的sort排序(简单实例)
Aug 17 #Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
Aug 17 #Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 #Javascript
BOM系列第二篇之定时器requestAnimationFrame
Aug 17 #Javascript
AngularJS 视图详解及示例代码
Aug 17 #Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 #Javascript
AngularJS Ajax详解及示例代码
Aug 17 #Javascript
You might like
多文件上载系统完整版
2006/10/09 PHP
图书管理程序(二)
2006/10/09 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
AngularJS基础知识
2014/12/21 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
js给selected添加options的方法
2015/05/06 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
python 与服务器的共享文件夹交互方法
2018/12/27 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
中专毕业个人的自荐信格式
2013/09/21 职场文书
旷课检讨书大全
2014/01/21 职场文书
语文教学感言
2014/02/06 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
委托公证书范本
2014/04/03 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
商业项目策划方案
2014/06/05 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
vue 实现上传组件
2021/05/31 Vue.js