C#.NETcom组件的编写
环境:VS2010...WIN7系统
设置工程属性:“生成”-> “为COM Interop注册”。
当然也可以为每个接口设置COM可见性,ComVisibleAttribute类提供了这样的控制。
更改AssemblyInfo.cs……设置COM可见
目前创新互联公司已为近1000家的企业提供了网站建设、域名、网站空间、网站托管、服务器租用、企业网站设计、湟源网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
// 将? ComVisible 设Θ?置?为a false 使?此?程ì序ò集ˉ中D的?类え?型í
// 对? COM 组哩?件t不?可é见?。£如?果?需è要癮从洙?COM 访?问ê此?程ì序ò集ˉ中D的?类え?型í,?
// 则ò将?该?类え?型í上?的? ComVisible 特?性?设Θ?置?为a true。£
[assembly: ComVisible(true)]
建立源码
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace MyLib
{
[ComVisible(true)]
[Guid("2CBD3D76-35F1-4f9d-9C1B-9DBFEE412F77")]
public interface IMyClass
{
void Initialize();
void Dispose();
String VC(String path);
}
[ComVisible(true)]
[Guid("EA2F140A-108F-47ae-BBD5-83EEE646CC0e")]
[ProgId("MyLib.MyClassa")]
public class MyClass : IMyClass
{
public void Initialize()
{
//nothing todo
}
public void Dispose()
{
//nothing todo
}
public String VC(String path)
{
// x + y;
if (path.Trim().Equals(""))
{
return "no pathx";
}
fastvcAtiLib.fastvcyjmC2k c = new fastvcAtiLib.fastvcyjmC2k();
// c.novc = true; //4 test .only show pic .not show vercode text
// c.oriImg = true; //img not process and get vercode... cant echo show img pic ..
c.vg = 1;
c.sid = "c2n";
string VerifyCode;
try
{
VerifyCode = c.RecByte(path);
}
catch (Exception ex)
{
VerifyCode = ex.Message;
}
return VerifyCode;
}
}
}
注册COM组件DLL
regasm ClassLibrary1.dll /codebase
如果你的DLL不 是强签名的,则必须要使用/codebase参数
反注册使用
regasm /u ClassLibrary1.dll
使用HTML中VBS脚本测试
提示不能创建 ACTIVEX 控件……
原因:是因为注册没有注册上……
提示找不到路径
说明已经注册上了。可能DLL不是强签名的,而又没有指定/CODEBASE属性,导致注册里没有这个键值。而查找不到。
网页题目:C#.NETcom组件的编写
网页URL:http://scjbc.cn/article/joicgi.html