一、vs2005—新建项目—C#类库
类库源码如下(包含接口,类,事件接口):
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data.SqlClient;
using System.Runtime.InteropServices;
namespace ComSample
{
//Guid值的产生:Program Files/Microsoft Visual Studio 8/Common7/Tools/guidgen.exe,运行它,选中单选4,点“New Guid”,点“Copy”,进入类库,粘贴即可
//类接口
[Guid("EF19CC19-2ECE-46ae-A8C7-F3B6180117CA")]
public interface IComTest
{
[DispId(1)]
void helloWorld(string msg);
[DispId(2)]
string CnnDB(String cnnStr);
}
// 事件接口
[Guid("45875EE5-5C8D-4016-897A-FCC7DD5A6834"), //固定写法
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ini_mng_Events
{
}
//类
[Guid("8EDFA9EA-9589-4157-AEEF-AB4861EFE5D6"), //固定写法
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(hst_odr_Events))]
[ComVisible(true)]
public class ComTest : ComSample.IComTest
{
public void helloWorld(string msg)
{
MessageBox.Show(msg);
}
public string CnnDB(String cnnStr)
{
string result="";
try
{
using (SqlConnection sqlCnn = new SqlConnection(cnnStr))
{
sqlCnn.Open();
}
result = "OK";
}
catch (Exception ex)
{
result=ex.Message;
}
return result;
}
public DataSet GetData()
{
string sqlStr = "Select top 1 * from tbsf_staff order by ID DESC";
}
}
二、类库生成COM组件
完成第一步(编代码),然后
1、开始—VS2005 —VS Tools—VS命令提示符,输入“sn -k a1.snk”,回车,再输入“sn -p a1.snk a2.snk”,回车,最后输入“sn -t a2.snk”,回车,关闭完成。
或者 通過工程屬性-->簽名-->為程序集簽名(選擇“新建")
2、VS2005类库属性—生成—输出—选中“为com.....注册”选项
3、VS2005类库属性—Signing —签名文件—浏览到a1.snk文件(Program FilesMicrosoft Visual Studio 8VC)
4、VS2005—Assembly.cs—comVisible设为true
5 、生成项目—即在bin下生成
6. 用RegAsm.exe工具注册我们的类: RegAsm Project1.DLL /codebase
三、VB調用
1.新建VB工程
2.工程-->引用 ,找到剛注冊的COM組件ComSample
3.代碼創建對象測試:
Dim obj As ComSample.ComTest
Dim str As String
Set obj = New ComSample.ComTest
obj.helloWorld "你好啊"
str = obj.CnnDB("Data Source=192.168.30.204; User ID=sa; Password=123654;Initial Catalog=BSMaster ")
Print str
四、客戶端注冊Com+组件
1.
注册COM的命令 Regasm.exe ComSample.dll /codebase
卸载COM的命令 Regasm.exe ComSample.dll /unregister |