zoukankan      html  css  js  c++  java
  • C#写COM组件,JS调用控件

    1、c#2005中新建项目,类型为类库,项目名为AddCom确定。

      配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“生成”,选择“为COM Interop注册(_P)”

    2、打开AssemblyInfo.cs文件,设置[assembly: ComVisible(true)],如果不改则不能被其他程序调用

    3、编写com组件会用到guid(全球唯一ID),编写com组件必须要用到。c#会默认生成一个放在AssemblyInfo.cs,如没有生成,网上下一个生成guid的软件,有很多呢。

    4、c#中源代码如下,按如下方法编写代码后生成工程,/bin/release中得到AddCom.dll。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;

    namespace AddCom
    {

    [Guid("298D881C-E2A3-4638-B872-73EADE25511C")]
    public interface AddComInterface
    {
    [DispId(1)]
    int iadd(int a, int b);
    }

    [Guid("2C5B7580-4038-4d90-BABD-8B83FCE5A467")]
    [ClassInterface(ClassInterfaceType.None)]

    public class AddComService : AddComInterface
    {
    public AddComService()
    {
    }
    public int iadd(int a, int b)
    {
    int c = 0;
    c = a + b;
    return c;
    }
    }
    }

    5、dos下利用 e: egasm AddCom.dll 命令注册com组件,可以理解为非.net平台下的regsvr32注册dll组件。提示注册成功即可。

    regasm.exe一般存在C:WindowsMicrosoft.NETFrameworkv2.0.50727 ,如果提示不是命令符的话

    C:WindowsMicrosoft.NETFrameworkv2.0.50727 egasm   D: est.dll  ( D: est.dll 为dll所在目录)

    js调用com

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <OBJECT classid=CLSID:0045EA0A-2042-43F8-A2F4-B5CF54D45C10 id=COMTest width=0 height=0></OBJECT>
    <script language="JavaScript"> 
    
    alert("----------------------start-----------------------");
    var wmp;
    var iResult = 12345;
    alert(iResult);
    
    wmp = document.getElementById("ComTest"); 
    alert(wmp );
    
    if(wmp == null)
    {
        alert(wmp );
    }
    else
    {
        iResult = wmp.iadd(4,9);
        alert("Test Successful!");
    }
    
    alert("iadd(4,9) =" + iResult);
    alert("----------------------start-----------------------");
    </script>
    
    </head>
    </html>

    如果需要js调用新方法,需要在接口里定义后,再在类里实现

  • 相关阅读:
    grep使用多个查询条件--或
    Qt Quick App的两种启动模式
    ICP编程软件配置(烧写KEIL编译后的bin文件)
    C/C++语言中const的用法
    QT小插件类之QRoundProgressBar
    QT实现单个EXE文件
    QT小技巧学习记录
    无线路由器的五种工作模式
    Qt5.4静态编译方法
    Altium Designer极坐标布局方法
  • 原文地址:https://www.cnblogs.com/JohnnyBao/p/3865908.html
Copyright © 2011-2022 走看看