教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> 编程基地 >> C# >> .net中编写COM组件 RSS订阅
.net中编写COM组件
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   

Encrypt( string pToEncrypt,string sKey ) //加密
Decrypt( string pToDecrypt,string sKey ) //解密
然后你这样写代码:
using System;
using System.Runtime.InteropServices;
namespace 名称空间
{
    // 首先建立接口,这个是Com必须使用的
    [Guid( "61BB24CB-4C2C-40f8-9E13-1AC5E558D56A" )]
    public interface IEncrypt
    {
        string Encrypt( string pToEncrypt,string sKey );
        string Decrypt( string pToDecrypt,string sKey );
    }
    // 写接口的实现
    [Guid( "CB52E990-185E-4448-A7E8-C88ECAD563AB" )]
    public class 类名称 : IEncrypt
    {
        public string Encrypt( string pToEncrypt,string sKey )
        {
            // 复制FAQ加密代码
        }
        public string Decrypt( string pToDecrypt,string sKey )
        {
            // 复制FAQ解密代码
        }
    }
}
然后用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的代码复制.
然后你复制这个代码
using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
namespace Csic
{
    // 首先建立接口,这个是Com必须使用的
    [Guid( "61BB24CB-4C2C-40f8-9E13-1AC5E558D56A" )]
    public interface IEncrypt
    {
        string Encrypt( string pToEncrypt,string sKey );
        string Decrypt( string pToDecrypt,string sKey );
    }
    // 写接口的实现
    [Guid( "CB52E990-185E-4448-A7E8-C88ECAD563AB" )]
    public class Crypt : IEncrypt
    {
        public string Encrypt( string pToEncrypt,string sKey )
        {
            // 复制FAQ加密代码
        }
        public string Decrypt( string pToDecrypt,string sKey )
        {
            // 复制FAQ解密代码
        }
    }
}
把上面的文件保存成vs.net项目的一个类库工程.
然后使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符
在命令行内打下
cd c:\ <回车>
sn -k myKey.snk<回车>
就在C盘根目录下生成一个名叫myKey.snk的强名称文件,然后关闭提示符窗口.
在vs.net的那个类库工程自动生成的AssemblyInfo.cs文件内把
[assembly: AssemblyKeyFile( "" )]
改成
[assembly: AssemblyKeyFile( @"C:\myKey.snk" )]
把[assembly: AssemblyVersion( "1.0.*" )]
改成
[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
在对话框中输入
d:<回车>
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 客户端可用 .
三、 将程序集添加到全局程序集缓存中
进入提示符窗口,输入
gacutil /I Csic.Crypt.dll<回车>
这时,你的这个dll就被复制到全局程序集缓存中了.也就是说无论在这个电脑的哪个硬盘上都可以使用此dll组件了.
四、使用方法
asp内的使用方法
set obj = Server.CreateObject( "Csic.Crypt" )
dim str1
str1 = obj.Encrypt( "要加密内容","密码" ) // 加密
dim str2
str2 = obj.Decrypt( "要解密内容","密码" ) // 解密

来源:十度教育
作者:
关键字:
发表日期:2006-10-2 11:16:49

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:.NET泛型技巧之打造可复用的抽象工厂   下一篇:COM和.NET的互操作


2008-8-28 7:31:30
本文的相类似文章
在学习中进步 在进步中成长 教程中国相随您的成长之路
华腾联合科技股份有限公司版权所有
广告联系:Rosibo@163.com