在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入门之事件、cookie、定时等
Oct 21 Javascript
js中对象的声明方式以及数组的一些用法示例
Dec 11 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
May 11 Javascript
node.js中使用node-schedule实现定时任务实例
Jun 03 Javascript
JavaScript组件焦点与页内锚点间传值的方法
Feb 02 Javascript
基于javascript实现仿百度输入框自动匹配功能
Jan 03 Javascript
javascript使用 concat 方法对数组进行合并的方法
Sep 08 Javascript
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
微信小程序实现人脸识别登陆的示例代码
Apr 02 Javascript
JavaScript运行机制实例分析
Apr 11 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
Jan 15 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
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
PHP 编写的 25个游戏脚本
2009/05/11 PHP
PHP读取xml方法介绍
2013/01/12 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP制作万年历
2015/01/07 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
如何通过python检查文件是否被占用
2020/12/18 Python
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
新驾驶员个人自我评价
2014/01/03 职场文书
合伙经营协议书范本
2014/04/18 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
Go语言怎么使用变长参数函数
2022/07/15 Golang