在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 相关文章推荐
IE8 兼容性问题(属性名区分大小写)
Jun 04 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
May 12 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
jquery常用方法及使用示例汇总
Nov 08 Javascript
jQuery zclip插件实现跨浏览器复制功能
Nov 02 Javascript
利用JS实现简单的日期选择插件
Jan 23 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
详解如何在vue-cli中使用vuex
Aug 07 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
vue实现固定位置显示功能
May 30 Javascript
javascript 函数的暂停和恢复实例详解
Apr 25 Javascript
JavaScript实现复选框全选和取消全选
Nov 20 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
php文件上传的简单实例
2013/10/19 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python创建日历实例
2014/08/21 Python
Python类属性与实例属性用法分析
2015/05/09 Python
详解Python编程中time模块的使用
2015/11/20 Python
python监控文件并且发送告警邮件
2018/06/21 Python
django框架CSRF防护原理与用法分析
2019/07/22 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
Linux文件系统类型
2012/09/16 面试题
团支书的期末学习总结自我评价
2013/11/01 职场文书
小学生打架检讨书
2014/01/26 职场文书
励志演讲稿300字
2014/08/21 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
财务务虚会发言材料
2014/10/20 职场文书
Python 用户输入和while循环的操作
2021/05/23 Python