今天公司要求用C#写个验证码组件,让asp可以调用,在网上找了一堆资料,终于给我给搞出来了,因为本人第一次写组件,也是第一次发表文章,所有可能说的不是很好,大家请见谅。
csdn上有这么篇文章,想学习写组件的可以去看看:http://blog.csdn.net/KimmKing/archive/2008/12/04/3445233.aspx,因为本人就是仿照这个写的验证码组件,因为怕上面的文章丢失,我就在这里简单说下创建的过程:
1、创建一类库
2、实现一个类(具体代码下面详写)
3、给文件签名
方法:选择开始菜单中Vistual Studio目录下的Vistual Studio Tools下的Vistual Studio 命令提示。使用sn -k c:\myKey.snk生成签名文件。在项目上右键,点击属性,选择签名,选中为程序集签名,选择myKey.snk文件。

4、生成解决方案
在项目目录的\TestCom\bin\Debug中可以找到TestCom.dll
5、生成tlb类库
在Visual Studio命令提示符下,切换到此目录。
输入tlbexp TestCom.dll /out:TestCom.tlb
6、注册类型库
输入regasm TestCom.dll /tlb: TestCom.tlb /codebase,将类型库导入到注册表。提示成功注册了类型,说明操作成功,此时TestCom .dll可以作为一个com来使用。
7、添加dll到GAC
输入gacutil /i TestCom.dll,将此.net程序集添加到GAC。
这样创建组件的所有工作就完成了。剩下的就是调用了
在vb和net里面调用:导入dll,实例化对象就可以使用了
(Dim a As New TestCom.Class1)a.方法
(TestCom.Class1 aa = new TestCom.Class1())aa.方法
在asp调用:
<%
SET s = CreateObject("TestCom.Class1")
s.test()
%>

以上就是我找到的创建组件的资料,那么现在就开始编写验证码组件的代码吧
首先编写类库:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Security;
namespace TestComs
{
[ComVisible(true)]
public interface iClass1
{
string DoCode(int num);
byte[] DoImg(string code);
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class Class1 : iClass1
{
private double PI2;
public Class1()
{
PI2 = 6. ......
 posted on 2012-01-13 17:40  vingi_苍月  阅读(1709)  评论(0编辑  收藏  举报