在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 相关文章推荐
zTree插件之多选下拉菜单实例代码
Nov 06 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
jQuery+html5实现div弹出层并遮罩背景
Apr 15 Javascript
学习javascript面向对象 javascript实现继承的方式
Jan 04 Javascript
深入浅析jQuery对象$.html
Aug 22 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
Mar 05 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
Aug 31 Javascript
Angular父子组件通过服务传参的示例方法
Oct 31 Javascript
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
Apr 27 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
thinkPHP自动验证机制详解
2016/12/05 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
微信小程序表单验证功能完整实例
2017/12/01 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
python对html代码进行escape编码的方法
2015/05/04 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Python中set与frozenset方法和区别详解
2016/05/23 Python
Python判断两个对象相等的原理
2017/12/12 Python
更新修改后的Python模块方法
2019/03/03 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
pycharm快捷键汇总
2020/02/14 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
金融专业应届生求职信
2013/11/02 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
活动总结报告怎么写
2014/07/03 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
教师党员个人整改措施
2014/10/27 职场文书
拉贝日记观后感
2015/06/05 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python