C#编写COM组件示例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C#编写COM组件
1、新建一个类库项目
2、将Class1.cs改为我们想要的名字
问是否同时给类改名,确定
Microsoft Visual Studio
您正在重命名一个文f
牛-您也想在这个对代玛元亲“口丄£严的所有引用的顶且中执行重命名吗?
3、修改 Properties 目录下面的 Assemblylnfo.cs
ComVisible 属性设置为True
//将C^V^xble 设莹为 珀託使此程序集中的类型
//对匚Ofll 组件不可见-如果需要从COM 访间此程库集中的类型’ //刚将蹶型上的CwVi sills 属性设置为饪叫
[assembl^Z C omVi ^ible (true) J
4、项目菜单->MyLib 属性
找到“生成”选项卡
往下看,找到“为 COM In terop 注册”勾上
输出
输出跻径©:
biiAEebu^'
生成序列化程序集迢〕:
□ XML 文档文件忆:
'fc.T 11 ln 11 1 11 !| 'CU ■■■■ — ■■■■■■■■■■■ umrM I
回注LEQ 也丄述愈狸丄
5、继续往下,找到“签名”选项卡
勾上“为程序集签名”
在下面的下拉框里面选择“ <新建…〉”
彳闿敎眼务爲VBX
6、在弹出的对话框里面,输入MyLib。
或者随便取个名字
去掉使用密码保护文件的选项
7、开始编码,任何一个公开的类,必须有一个I开通的接口定义
C# code
0为程序集签名⑹ 选舷
名称应明文件Of)
£
1
System;
System.Collectio ns.Ge neric;
System.Text;
System.R un time.I nteropServices;
[ComVisible( true )]
[Guid( "2CBD3D76-35F1-4f9d-9C1B-9DBFEE412F76" public in terface IMyClass
{
void In itialize();
void Dispose();
int Add( int x, int y);
}
[ComVisible( true )]
[Guid( "EA2F140A-108F-47ae-BBD5-83EEE646CC0D "
[Progld( "MyLib.MyClass")]
public class MyClass : IMyClass
{
/
/
n
o
t
h
i
n
g
t
o
d
o
}
p
u
public {
void Initialize() void Dispose()
b
li
c
{
/
/
n
o
t
h
i
n
g
t
o
d
o
}
int Add( int x, int y) p
u
b
li
c
{
r
e
t
u
r
n
x
+
y
;
8、GUID属性里面的那个字符串,在“工具”菜单下面, GUID 选择Registry Format ,然后复制
注意在[Guid(".…… 这个里面要去掉GUID前后的花括号
9、编译它
在命令提示符下面,进入Dll所在的目录
用gacutil /i MyLib.dll 将这个DLL加入的全局缓存里
然后用regasm MyLib.dll 注册这个dll
10、在VBScript里面试试。
HTML code
<script Ian guage ="VBScript">
Dim o : Set o= CreateObject ("MyLib.MyClass") o.ln itialize
MsgBox"1 + 2 = " & o.Add( 1,2)
o.Dispose
Set o= Nothi ng
</ script >。