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:\regasm AddCom.dll 命令注册com组件,可以理解为非.net平台下的regsvr32注册dll组件。提示注册成功即可。

regasm.exe一般存在C:\Windows\Microsoft.NET\Framework\v2.0.50727 ,如果提示不是命令符的话

C:\Windows\Microsoft.NET\Framework\v2.0.50727 \regasm   D:\test.dll  ( D:\test.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调用新方法,需要在接口里定义后,再在类里实现

最新文章

  1. php实现数据粘性例子
  2. [python实现设计模式]-5.迭代器模式-一起撸串嗨皮啦
  3. Kafka安装
  4. Reverse链表 非递归实现
  5. atitit.提升开发效率---MDA 软件开发方式的革命(4)----编辑表单建模
  6. JSP下载txt 和 Excel两种文件
  7. JavaScript —— 局部变量和全局变量
  8. Sysrq 诊断系统故障 与 gdb 调试core dump
  9. Call-time pass-by-reference has been deprecated
  10. This manual page is part of Xcode Tools version 5.0
  11. Bower的入门
  12. android中shape属性大全
  13. [RHEL 6]GPT分区--parted
  14. IIS异常:CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\.。。”--“拒绝访问
  15. Ubuntu apt-get提示被锁住
  16. python---定义一个session类(无错)
  17. springMVC3学习--ModelAndView对象(转)
  18. shiro 实现 用户 a 操作b 的权限 ,用户 b 能够及时获知。b不需要退出登陆 。 关闭鉴权缓存,或者不配置缓存
  19. 铁乐学python_day01-作业
  20. 与(&amp;)、或(|)等运算符理解及其特殊用途

热门文章

  1. 利用mysql5.6 的st_distance 实现按照距离远近排序。 (转载)
  2. STL_算法_删除(unique、unique_copy)
  3. Could not find action or result: There is no Action mapped for namespace [/] and action name [GetG
  4. 4、python基本知识点及字符串常用方法
  5. 【物理/数学】—— 概念的理解 moment、momentum
  6. Ubuntu UEFI 模式下安装基本原则
  7. 观CSDN站点小Bug有感
  8. [CSS] Use Generated Content to Augment Information
  9. [Angular2 Form] Angular 2 Template Driven Form Custom Validator
  10. js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();)