在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 容错处理代码, 屏蔽错误信息
Mar 09 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
JavaScript中把数字转换为字符串的程序代码
Jun 19 Javascript
get(0).tagName获得作用标签示例代码
Oct 08 Javascript
Javascript基础教程之JavaScript语法
Jan 18 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
Jun 19 Javascript
JavaScript用构造函数如何获取变量的类型名
Dec 23 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
JavaScript的数据类型转换原则(干货)
Mar 15 Javascript
微信小程序开发的基本流程步骤
Jan 31 Javascript
js实现带箭头的进度流程
Mar 26 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 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中用正则表达式清除字符串的空白
2011/01/17 PHP
php SQL Injection with MySQL
2011/02/27 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
php中explode函数用法分析
2014/11/15 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
Django基于ORM操作数据库的方法详解
2018/03/27 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
《童年的发现》教学反思
2014/02/14 职场文书
家长会主持词
2014/03/26 职场文书
工作作风承诺书
2014/08/30 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
配置nginx负载均衡
2022/05/06 Servers
python双向链表实例详解
2022/05/25 Python