在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 参数传递的实际应用代码分析
Sep 13 Javascript
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
May 25 Javascript
关于图片按比例自适应缩放的js代码
Oct 30 Javascript
javascript 获取iframe里页面中元素值的方法
Feb 17 Javascript
Javascript函数中的arguments.callee用法实例分析
Sep 16 Javascript
javascript高级模块化require.js的具体使用方法
Oct 31 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
Feb 03 Javascript
JavaScript基础教程之如何实现一个简单的promise
Sep 11 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
Sep 14 Javascript
vue中导出Excel表格的实现代码
Oct 18 Javascript
微信小程序实现左滑动删除效果
Mar 30 Javascript
JavaScript实现淘宝商品图切换效果
Apr 29 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
带你了解python装饰器
2017/06/15 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
pyhton列表转换为数组的实例
2018/04/04 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
利用python汇总统计多张Excel
2020/09/22 Python
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
师生聚会感言
2014/01/26 职场文书
社团招新策划书
2014/02/04 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
租房合同协议书
2014/04/09 职场文书
师德演讲稿范文
2014/05/06 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技