在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 相关文章推荐
JQuery写动态树示例代码
Jul 31 Javascript
js arguments,jcallee caller用法总结
Nov 30 Javascript
jqeury-easyui-layout问题解决方法
Mar 24 Javascript
jquery显示loading图片直到网页加载完成的方法
Jun 25 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
Jan 25 Javascript
动态的9*9乘法表效果的实现代码
May 16 Javascript
vue组件实例解析
Jan 10 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
Dec 26 Javascript
JQuery属性操作与循环用法示例
May 15 jQuery
jQuery实现简单全选框
Sep 13 jQuery
模拟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/11/12 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
python列表去重的二种方法
2014/02/14 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python实现猜单词小游戏
2020/05/22 Python
python处理document文档保留原样式
2019/09/23 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python super()方法原理详解
2020/03/31 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
建筑专业毕业生推荐信
2013/11/21 职场文书
运动会通讯稿300字
2014/02/02 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
确保工程质量承诺书
2015/04/29 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript