在javascript中使用com组件的方法
转载自: http://dhailin.blog.163.com/blog/static/230738322011128102043880/
首先创建一个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组件的方法的更多相关文章
- 在JS中使用COM组件的方法
首先创建一个COM组件,插入一个双接口Itest,在此接口上实现以下三个方法: STDMETHODIMP Ctest::test(void) //无输入输出参数 { // TODO: 在此添加实现代码 ...
- VC中调用COM组件的方法(转载)
原文参考:http://hi.baidu.com/mingyueye/item/53ebecd44da76917d80e4449 总结一下在VC中调用COM组件的方法 准备及条件: COM服务器为进程 ...
- vc中调用Com组件的方法详解
vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口: IGetRes--方法Hello(), IGet ...
- 总结Javascript中数组各种去重的方法
相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...
- JavaScript中类似PHP的uniqid()方法
JavaScript中类似PHP的uniqid()方法: function generateUIDNotMoreThan1million() { return ("0000" + ...
- 深入了解JavaScript中的Symbol的使用方法
这篇文章主要介绍了深入了解JavaScript中的Symbol的使用方法,本文针对ES6版本的JS进行讲解,需要的朋友可以参考下 Symbol 是什么? Symbols 不是图标,也不是指在代码中可以 ...
- JavaScript中Number常用属性和方法
title: JavaScript中Number常用属性和方法 toc: false date: 2018-10-13 12:31:42 Number.MAX_VALUE--1.79769313486 ...
- vue组件之间的通信以及如何在父组件中调用子组件的方法和属性
在Vue中组件实例之间的作用域是孤立的,以为不能直接在子组件上引用父组件的数据,同时父组件也不能直接使用子组件的数据 一.父组件利用props往子组件传输数据 父组件: <div> < ...
- Javascript中对象的Obeject.defineProperty()方法-------------(ES5/个人理解)
在讲到Obeject.defineProperty()方法之前先得说明一下ECMAScript中有两种属性:数据属性和访问器属性. 两种属性存在的意义:描述对象属性(key)的一些特性,因为这些属性是 ...
随机推荐
- 06_Elasticsearch 批量获取mget
06_Elasticsearch 批量获取mget 现在有: http://192.168.32.81:9200/bank/bank_account/1 http://192.168.32.81:92 ...
- unix c 11
多线程(thread) 操作系统支持多进程,进程内部使用多线程. 进程是 重量级的,拥有自己 独立的内存空间. 线程是 轻量级的,不需要拥有自己 独立的内存空间,线程的内存空间:1 ...
- 杭电1142(最短路径+dfs)
A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- 计算直线的交点数(set + 打表)
计算直线的交点数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- Apache与tomcat
联系 1)Apache和tomcat都是web网络服务器 2)Apache是普通的服务器,本身支持html即普通网页,可以通过插件支持php也可以与Tomcat连通 (Apache单向连接tomca ...
- stm32之通用定时器TIM
STM32系列的CPU,有多达8个定时器: 1.其中TMI1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动:它们的时钟有APB2的输出产生: 2.其它6个为普通定时器,时钟由 ...
- jQuery_easyUI 合并单元格 (DataGrid 数据表格)
<table id="dg" style="height:350px;z-index:-5555; " class="easyui-datagr ...
- ActiveMQ发布订阅模式(转)
ActiveMQ的另一种模式就SUB/HUB即发布订阅模式,是SUB/hub就是一拖N的USB分线器的意思.意思就是一个来源分到N个出口.还是上节的例子,当一个订单产生后,后台N个系统需要联动,但有一 ...
- CSS 规划
1)在拿到psd效果图后,我会将所有的效果图看一遍,然后开始打草稿,在纸上画,在PS中标注都可以.一般都是做个大概的统计,太详细不太现实,既费时间也费精力. 2)网站的浏览器兼容性要顾及到哪些,IE6 ...
- 莫比乌斯反演题目泛做(为了对应smz的课件)
题1:BZOJ2190 SDOI 2010 仪仗队 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 算法讨论: 我们先来考虑一个点被 ...