在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 相关文章推荐
两个Javascript小tip资料
Nov 23 Javascript
js 取时间差去掉周六周日实现代码
Dec 25 Javascript
JavaScript中“基本类型”之争小结
Jan 03 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
Jul 28 Javascript
js 弹出框只弹一次(二次修改之后的)
Nov 26 Javascript
js 验证身份证信息有效性
Mar 28 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
Jan 04 Javascript
iframe中使用jquery进行查找的方法【案例分析】
Jun 17 Javascript
浅谈Javascript数据属性与访问器属性
Jul 26 Javascript
基于JS设计12306登录页面
Dec 28 Javascript
JavaScript事件委托原理与用法实例分析
Jun 07 Javascript
vue中Axios的封装与API接口的管理详解
Aug 09 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
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
python字符串判断密码强弱
2020/03/18 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
python实现文法左递归的消除方法
2020/05/22 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
详解Python流程控制语句
2020/10/28 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
写好自荐信的几个要点
2013/12/26 职场文书
优秀员工表扬信
2014/01/17 职场文书
安全生产计划书
2014/05/04 职场文书
大学生读书笔记范文
2015/07/01 职场文书
小学生运动会广播
2015/08/19 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js