`
fengzgxing
  • 浏览: 238956 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

浅析C#编写COM组件的几种方法

阅读更多
转载于:http://developer.51cto.com/art/200909/153811.htm
谢谢:

.NET中的C#编写COM组件进行详细的介绍。包括生成.NET程序集,注册并创建一个程序库
1.Encrypt( string pToEncrypt,string sKey ) //加密  2.Decrypt( string pToDecrypt,string sKey ) //解密 然后你这样写代码:


1.using System;  2.using System.Runtime.InteropServices;  3.namespace 名称空间  4.{  5.    // 首先建立接口,这个是Com必须使用的  6.    [Guid( "61BB24CB-4C2C-40f8-9E13-1AC5E558D56A" )]  7.    public interface IEncrypt  8.    {  9.        string Encrypt( string pToEncrypt,string sKey );  10.        string Decrypt( string pToDecrypt,string sKey );  11.    }  12.    // 写接口的实现  13.    [Guid( "CB52E990-185E-4448-A7E8-C88ECAD563AB" )]  14.    public class 类名称 : IEncrypt  15.    {  16.        public string Encrypt( string pToEncrypt,string sKey )  17.        {  18.            // 复制FAQ加密代码  19.        }  20.        public string Decrypt( string pToDecrypt,string sKey )  21.        {  22.            // 复制FAQ解密代码  23.        }  24.    }  25.} 然后用vs.net打包成.dll类库文件,假设名称为MyEncrypt.dll

然后用如下工具

regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb

这个.tlb文件就是类型库,可以由vb6和vc++6引用.

注意上面的guid是使用vs.net工具菜单里面的创建guid工具生成的.

还要注意,vs.net自动生成的assemblyinfo.cs文件中必须添加强名称和版本号,因为Com组件需要版本号,不要改动版本号,也不要用vs.net自动的1.*这样的版本号,最好使用

1.1.1.1这样的固定版本,而且必须一次添加,不能多次添加.

步骤

一 生成.net程序集:

首先你把http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=35935的代码复制.

然后你复制这个代码


1.using System;  2.using System.IO;  3.using System.Text;  4.using System.Runtime.InteropServices;  5.using System.Security.Cryptography;   6.namespace Csic  7.{  8.    // 首先建立接口,这个是Com必须使用的  9.    [Guid( "61BB24CB-4C2C-40f8-9E13-1AC5E558D56A" )]  10.    public interface IEncrypt  11.    {  12.        string Encrypt( string pToEncrypt,string sKey );  13.        string Decrypt( string pToDecrypt,string sKey );  14.    }  15.    // 写接口的实现  16.    [Guid( "CB52E990-185E-4448-A7E8-C88ECAD563AB" )]  17.    public class Crypt : IEncrypt  18.    {  19.        public string Encrypt( string pToEncrypt,string sKey )  20.        {  21.            // 复制FAQ加密代码  22.        }  23.        public string Decrypt( string pToDecrypt,string sKey )  24.        {  25.            // 复制FAQ解密代码  26.        }  27.    }  28.} 把上面的文件保存成vs.net项目的一个类库工程.

然后使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符

在命令行内打下

1.cd c:\ <回车> 2.sn -k myKey.snk<回车> 就在C盘根目录下生成一个名叫myKey.snk的强名称文件,然后关闭提示符窗口.

在vs.net的那个类库工程自动生成的AssemblyInfo.cs文件内把

1.[assembly: AssemblyKeyFile( "" )]  改成

1.[assembly: AssemblyKeyFile( @"C:\myKey.snk" )]  把[assembly: AssemblyVersion( "1.0.*" )]

改成

1.[assembly: AssemblyVersion( "1.0.0.0" )] // 注意:这时你的Com组件版本为1.0.0.0版  然后按Shift + Ctrl + B键生成dll库(使用Release模式),假设是Csic.Crypt.dll.

这时候,程序集就建立成功了.

二、注册该程序集并创建一个类型库

仍然使用开始菜单中的Vistual Studio .Net命令提示符

进入你的项目目录,假设为D:\myProject\bin\Release

在对话框中输入

1.d:<回车> 2.cd myproject\bin\release<回车> 然后输入 dir 命令可以看见Csic.Crypt.dll文件

然后输入:regasm /tlb Csic.Crypt.tlb Csic.Crypt.dll<回车>

然后就在这个目录下生成了Csic.Crypt.tlb类型库文件.不要关闭此提示符窗口.

这时候,这个.dll的.net程序集就变成一个标准的Com组件了,但是还不能用,必须让它变成全局Com组件.

这个regasm 实用程序将创建一个类型库并在 Windows 注册表中对其进行注册,以使 PhysServer2.dll 中的类对 COM 客户端可用 .

三、 将程序集添加到全局程序集缓存中

进入提示符窗口,输入

1.gacutil /I Csic.Crypt.dll<回车>  这时,你的这个dll就被复制到全局程序集缓存中了.也就是说无论在这个电脑的哪个硬盘上都可以使用此dll组件了.

四、C#编写COM组件使用方法

asp内的使用方法

1.set obj = Server.CreateObject( "Csic.Crypt" )  2.dim str1  3.str1 = obj.Encrypt( "要加密内容","密码" ) // 加密  4.dim str2  5.str2 = obj.Decrypt( "要解密内容","密码" ) // 解密
分享到:
评论

相关推荐

    浅析C#编程中的内存管理

    浅析C#编程中的内存管理浅析C#编程中的内存管理

    浅析C#委托和事件实例

    浅析C#委托和事件实例 当第一次听到委托、事件时感觉比较抽象、很好奇,当看到老师在课堂上利用委托和事件实现两个窗体调用时、感觉委托太神奇了,呵、不废话了……  C#委托和事件在做程序是很常见到的,对于像我...

    浅析C# 内存管理

    本文浅析了windows和C#的内存管理的机制,介绍了基本的内存管理方法

    浅析C#中object-sender与EventArgs-e

    浅析C#中object_sender与EventArgs_e

    浅析malloc()的几种实现方式

    浅析malloc()的几种实现方式 浅析malloc()的几种实现方式 浅析malloc()的几种实现方式 浅析malloc()的几种实现方式 浅析malloc()的几种实现方式

    浅析灵敏度分析的几种数学方法.pdf

    浅析灵敏度分析的几种数学方法

    用Visual C#做DLL文件

    作为软件设计和开发人员大都有过使用DLL(动态连接库)的经历,DLL的产生使得我们的应用程序...作为新一代的程序开发语言--Visual C#,到底是如何编写和使用DLL的呢!本文就试着就这方面的问题来进行简单的介绍。......

    浅析C#中的图形编程

    像Java一样,C#提供了一整套相当丰富的类库、方法以及事件以供开发者使用。C#还引入了GDI+,它是由GDI演变而来的,具有比GDI更强大的功能而且简化了程序员的编程工作。所以开发者运用这些,就可以很方便的开发出...

    浅析C#中的文件操作

    浅析C#中的文件操作 个人学习参考之用 与大家分享

    浅析C# 状态机Stateless

    主要介绍了C# 状态机Stateless的的相关资料,文中讲解非常详细,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

    浅析PLC用户程序几种编程方法-论文

    浅析PLC用户程序几种编程方法

    浅析C#异步操作

    C#异步调用: .NET Framework 允许您C#异步调用任何方法。定义与您需要调用的方法具有相同签名的委托;公共语言运行库将自动为该委托定义具有适当签名的 BeginInvoke 和 EndInvoke 方法。

    浅析C#中object sender与EventArgs e

    在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理。 EventArgs是包含事件数据的基类,用于传递事件的细节。 EventHandler是一个委托声明如下 public delegate void EventHandler...

    浅析C#图形编程

    C#提供了一整套相当丰富的类库、方法以及事件以供开发者使用。C#还引入了GDI+,它是由GDI演变而来的,具有比GDI更强大的功能而且简化了程序员的编程工作。所以开发者运用这些,就可以很方便的开发出具有强大图形...

    浅析C# 中object sender与EventArgs e

    了解C#中的预定义事件处理机制 在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理。 EventArgs是包含事件数据的类的基类,用于传递事件的细节。 EventHandler是一个委托声明如下 ...

    浅析C#中的套接字编程.docx

    浅析C#中的套接字编程.docx,文章,不错

    C# Tread浅析

    C# Tread浅析

    浅析汽车冲压件降成本的几种方法.pdf

    浅析汽车冲压件降成本的几种方法.pdf

Global site tag (gtag.js) - Google Analytics