`
qingtian881223
  • 浏览: 35235 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Javascript调用COM组件

阅读更多
1. 找到COM的组件名,如"MSXML2.DOMDocument.3.0". 可以在注册表中去看.(HKEY_CLASSES_ROOT\...)

2. 在JS中创建对象:xmldoc = new ActiveXObject("MSXML2.DOMDocument.3.0");

3. 在对象上调用方法xmldoc.loadXML("xxxxxxx");

实例:查看MDACD版本.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>

<body>
<script language="JavaScript">
<!--
var ver ;
ver = new ActiveXObject("MDACVer.Version");
alert (ver.Major);
//-->
</script>
</body>
</html>


晴天的例子:
C#代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
namespace WindowsControlLibrary1
{

    public interface INewsMonitor
    {

        //    发送文件时,记录发送者,接收者和发送的文件名发送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名
        /**/
        /**/
        /**/
        /// <summary>
        /// 当发送文件时,记录发送者,接收者和发送的文件名
        /// </summary>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strTargetID">文件接受者</param>
        /// <param name="strFileName">文件名</param>
       // [DispId(8)]
        void SendFile(string strSendID, string strTargetID, string strFileName);

        //    接收文件时,记录文件接收者,发送者和发送的文件名接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名
        /**/
        /**/
        /**/
        /// <summary>
        /// 接受文件时,记录文件接收者,发送者和发送的文件名
        /// </summary>
        /// <param name="strReceiveID">文件接收者</param>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strFileName">文件名</param>
       // [DispId(2)]
        void RecvFile(string strReceiveID, string strSendID, string strFileName);

        //文件发送成功后,记录发送者,接收者和发送的文件名文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名
        /**/
        /**/
        /**/
        /// <summary>
        /// 文件发送成功后,记录发送者,接收者和发送的文件名
        /// </summary>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strTargetID">文件接收者</param>
        /// <param name="strFileName">文件名</param>
       // [DispId(3)]
        void FileSendOK(string strSendID, string strTargetID, string strFileName);

        //取消文件发送时,记录发送者,接收者和发送的文件名取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名
        /**/
        /**/
        /**/
        /// <summary>
        /// 取消文件发送时,记录发送者,接收者和发送的文件名
        /// </summary>
        /// <param name="strCancelID">取消文件发送者</param>
        /// <param name="strTargetID">文件发送对方</param>
        /// <param name="strFileName">文件名</param>
       // [DispId(4)]
        void FileSendCancel(string strCancelID, string strTargetID, string strFileName);

        void say();

    } // end interface INewsMonitor


    public interface IMove
    {
        void say();
    } 

    [Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IObjectSafety
    {
        // methods 
        void GetInterfacceSafyOptions(
            System.Int32 riid,
            out System.Int32 pdwSupportedOptions,
            out System.Int32 pdwEnabledOptions);
        void SetInterfaceSafetyOptions(
            System.Int32 riid,
            System.Int32 dwOptionsSetMask,
            System.Int32 dwEnabledOptions);
    } 


    [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B73")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public partial class MyUserControl : UserControl, INewsMonitor, IObjectSafety, IMove
    {

        public void GetInterfacceSafyOptions(Int32 riid, out Int32 pdwSupportedOptions, out Int32 pdwEnabledOptions)
        {
            // TODO:  添加 WebCamControl.GetInterfacceSafyOptions 实现 
            pdwSupportedOptions = 1;
            pdwEnabledOptions = 2;
        }

        public void SetInterfaceSafetyOptions(Int32 riid, Int32 dwOptionsSetMask, Int32 dwEnabledOptions)
        {
            // TODO:  添加 WebCamControl.SetInterfaceSafetyOptions 实现             
        } 

        public MyUserControl()
        {
            InitializeComponent();
        }


        public void say()
        {
            MessageBox.Show("aaaaaaaaaaaaa");
        }

        private void UserControl1_Load(object sender, EventArgs e)
        {
           
        }


        private string filePath = string.Empty;
        private string writeLine = string.Empty;

        private void NewsMsg()
        {
            StreamWriter sw = null;
            if (File.Exists(filePath))
            {
                sw = File.AppendText(filePath);
            }
            else
            {
                FileStream fs = File.Create(filePath);
                sw = new StreamWriter(fs);
            }
            sw.WriteLine(writeLine);
            sw.Close();
        }

        //送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名
        /**/
        /// <summary>
        /// 当发送文件时,记录发送者,接收者和发送的文件名
        /// </summary>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strTargetID">文件接受者</param>
        /// <param name="strFileName">文件名</param>
        public void SendFile(string strSendID, string strTargetID, string strFileName)
        {
            filePath = @"c:MsgMonitorSendFile.txt";
            writeLine = strSendID + " 向 " + strTargetID + " 发送 < " + strFileName + " > 文件";
            NewsMsg();
        }

        //接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名
        /**/
        /// <summary>
        /// 接受文件时,记录文件接收者,发送者和发送的文件名
        /// </summary>
        /// <param name="strReceiveID">文件接收者</param>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strFileName">文件名</param>
        public void RecvFile(string strReceiveID, string strSendID, string strFileName)
        {
            filePath = @"c:MsgMonitorRecvFile.txt";
            writeLine = strReceiveID + " 接收到 " + strSendID + " 发送的 < " + strFileName + " > 文件";
            NewsMsg();
        }

        //文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名
        /**/
        /// <summary>
        /// 文件发送成功后,记录发送者,接收者和发送的文件名
        /// </summary>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strTargetID">文件接收者</param>
        /// <param name="strFileName">文件名</param>
        public void FileSendOK(string strSendID, string strTargetID, string strFileName)
        {
            filePath = @"c:MsgMonitorFileSendOK.txt";
            writeLine = strSendID + " 已经成功向 " + strTargetID + " 发送 < " + strFileName + " > 文件";
            NewsMsg();
        }

        //取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名
        /**/
        /// <summary>
        /// 取消文件发送时,记录发送者,接收者和发送的文件名
        /// </summary>
        /// <param name="strCancelID">取消文件发送者</param>
        /// <param name="strTargetID">文件发送对方</param>
        /// <param name="strFileName">文件名</param>
        public void FileSendCancel(string strCancelID, string strTargetID, string strFileName)
        {
            filePath = @"c:MsgMonitorFileSendCancel.txt";
            writeLine = strCancelID + " 取消和 " + strTargetID + " 发送 < " + strFileName + " > 文件";
            NewsMsg();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}

使用ole view查看progid:

使用regeditt查看progid:


javascript访问:


<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">						
				function makecall()
				{
					   var myobj=new ActiveXObject("WindowsControlLibrary1.MyUserControl"); 
					   myobj.say();
					   alert(state);
				}
</SCRIPT>
<input type="button" onclick="makecall()" />

  • 大小: 206.5 KB
  • 大小: 133.3 KB
分享到:
评论

相关推荐

    在javascript函数中调用com组件的属性和方法

    本文介绍了在javascript函数中调用com组件的属性和方法的技术。

    COM组件中调用JavaScript函数详解及实例

    COM组件中调用JavaScript函数详解及实例 要求是很简单的,即有COM组件A在IE中运行,使用JavaScript(JS)调用A的方法longCalc(),该方法是一个耗时的操作,要求通知IE当前的进度。这就要求使用回调函数,设其名称为...

    Com调用JavaScript函数

    C++开发的Com组件调用JavaScript函数,传递多个参数给JS函数,并从JS函数中获取返回值

    JavaScript+OCX+COM组件,实现网页对客户端DLL的调用

    JavaScript+OCX+COM组件,实现网页对客户端DLL的调用.

    javascript调用ocx控件实现加载进度条

    由于网页中很难实现进度条的添加,所以开发了一个com组件来实现网页中加载进度条控件

    漂亮的消息提示框 消息提示组件 Javascript写的

    组件名称:ymPrompt消息提示组件 2.0 演示地址:http://bbs.okajax.com/demo/31/ =============================================================================== 组件说明:在web开发中,对于浏览器默认的消息...

    在javascript中使用com组件的简单实现方法

    首先创建一个COM组件,插入一个双接口Itest,在此接口上实现以下三个方法: STDMETHODIMP Ctest::test(void) //无输入输出参数  {  // TODO: 在此添加实现代码  MessageBox(NULL,L"test",L"test",MB_OK);  ...

    用JavaScript调用WebService的示例

    步骤如下: 下载微软HTC组件:http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/behaviors/library/webservice/default.asp Web服务WSDL: &lt;?xml version=”1.0″ encoding=...

    Chart 极品web报表控件收集(Flot,AmCharts, Emprise JavaScript Charts...)

    • Visifire - Visifire 是用 Silverlight 做的,是一个开源可视化数据组件,使用Visifire你能创建动画 Silverlight 图表,支持 ASP, ASP.Net, PHP, JSP, ColdFusion, Ruby on Rails 或者 简单 HTML调用. ...

    QQ客服QQ通讯组件悬浮代码

    *就改了一下图片,把图片中的文字去掉,原版本的js调用代码没有加入 language='JavaScript' charset='gb2312' 导致utf-8显示不正常。如果这样调用还不正常的话,用EditPlus把jqqonline.js另存为utf-8格式直接调用JS...

    aardio桌面软件开发工具v30.0 支持COM动态静态接口+标准DLL组件.zip

    aardio是专用于桌面软件快速开发的新一代混合型编程语言,aardio支持COM动态、静态接口、支持标准DLL组件,兼具动态、静态语言优势,兼容流行C系语法、Pascal语法,学习成本最低。 软件特色 一键发布为绿色软件。 ...

    javascript表格的渲染组件

    表格的渲染组件,demo请点击http://lovewebgames.com/jsmodule/table.html,git源码请点击https://github.com/tianxiangbing/table 如上图所示,功能基本包括常用表格中遇到的分页、搜索、删除、AJAX操作。由于是用...

    使用加密狗做网站程序身份认证方案

    精锐5 身份认证“组件”...不同于 COM 组件访问加密锁的方式,本产品提供的 Web 接口可用 JavaScript 调用,开发者不需要学习额外的技能即可完成功能集成,兼容市面主流的浏览器(IE、Chrome、360、Firefox 等)。

    PluginOK浏览器插件开发框架

    自从2015年谷歌浏览器升级到42版不支持NPAPI插件后,想要在网页中调用本地OCX或DLL是非常...插件可以用对COM组件支持比较好的C++及C#语言开发,非常方便,同时提供了一个安装升级插件的引擎,实现前端自动升级插件。

    javascript写的windows资源管理器

    javascript写的windows资源管理器 解压运行scripting.html,... javascript方面主要就是程序设计与功能的实现,主要还是用到了Scripting组件。 CSS就随便写了一点,反正2个页面,不过用的都是常用的一些属性。

    dreamweaver的各种组件

    Replicator 使用这个Command 可以复制任何您选种的HTML组件,并可以设定要在 复制的组件中所插入的分割符。 Window maximizer 自动将当前的HTML文件最大化。 Preview Page 您是不是和我一样讨厌用Dreamweaver的...

    VUE 2.0 微信网页共享组件

    【2】对应的网页里,一定要加入这么一句,&lt;script type="javascript" src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"&gt;&lt;/script&gt;,我是加在根文件里了 【3】用的时候就比较简单了,引入到VUE原型中,然后传参...

    ASP网页设计制作(配合李炎恢asp-视频教程)

    换句话说,ASP 程序包含“脚本语言程序”(Scripting Language) 、“嵌入HTML(Embedded HTML)”“ COM 组件调用”等3 个部分,前者可由VBScript,Jscript(微软版的JavaScript)、PerlScript、Python、REXX 等程序...

Global site tag (gtag.js) - Google Analytics