创建新的应用程序或组件时, 最好创建 .NET Framework 程序集。 不过, Visual Basic 还可以轻松地向 COM 公开 .NET Framework 组件。 这使你可以为需要 COM 组件的早期应用程序套件提供新组件。 本演练演示了如何使用 Visual Basic 将 .NET Framework 对象公开为 COM 对象, 无论使用 COM 类模板还是不使用 COM 类模板。
公开 COM 对象的最简单方法是使用 COM 类模板。 COM 类模板会创建一个新类, 然后将项目配置为生成类和互操作性层作为 COM 对象并将其注册到操作系统。
使用 COM 类模板创建 COM 对象
在类中设置代码以创建 COM 对象
-
单击 "新建项目", 从 "文件" 菜单打开新的 Windows 应用程序项目。
-
在 "新建项目" 对话框中的 "项目类型" 字段下, 选中 "Windows" 处于选中状态。 从 "模板" 列表中选择 "类库", 然后单击 "确定" 。 将显示新项目。
-
从 "项目" 菜单中选择 "添加新项"。 随即出现“添加新项”对话框。
-
从 "模板" 列表中选择COM 类, 然后单击 "添加"。 Visual Basic 添加一个新类, 并为 COM 互操作配置新的项目。
-
向 COM 类中添加代码, 如属性、方法和事件。
-
从 "生成" 菜单中选择 "生成 classlibrary1.chainone "。 Visual Basic 生成程序集并向操作系统注册 COM 对象。
标题 不带 COM 类模板创建 COM 对象
你还可以手动创建 COM 类, 而不是使用 COM 类模板。 当你在命令行中工作或需要更好地控制如何定义 COM 对象时, 此过程非常有用。
设置项目以生成 COM 对象
-
单击 " NewProject", 从 "文件" 菜单打开新的 Windows 应用程序项目。
-
在 "新建项目" 对话框中的 "项目类型" 字段下, 选中 "Windows" 处于选中状态。 从 "模板" 列表中选择 "类库", 然后单击 "确定" 。 将显示新项目。
-
在解决方案资源管理器中, 双击 " Class1 " 以显示其代码。
-
将该类重命名为
ComClass1
。 -
将以下常量添加到
ComClass1
。 它们将存储 COM 对象所需的全局唯一标识符 (GUID) 常量。VB复制
Public Const ClassId As String = "" Public Const InterfaceId As String = "" Public Const EventsId As String = ""
-
在“工具”菜单上,单击“创建 Guid”。 在“创建 GUID”对话框中,单击“注册表格式”,然后单击“复制”。 单击“退出”。
-
-
用 GUID 替换的
ClassId
空字符串, 同时删除前导大括号和尾随大括号。 例如, 如果 guidgen.exe 提供的 GUID 为"{2C8B0AEE-02C9-486e-B809-C780A11530FE}"
, 则代码应如下所示。VB复制
Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
-
对
InterfaceId
和EventsId
常量重复前面的步骤, 如以下示例中所示。VB复制
Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91" Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
-
备注
请确保 Guid 是新的且唯一的;否则, COM 组件可能会与其他 COM 组件发生冲突。
-
将属性添加到
ComClass1
, 并为类 id、接口 ID 和事件 ID 指定 guid, 如以下示例中所示:ComClass
VB复制
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> Public Class ComClass1
-
COM 类必须具有无参数
Public Sub New()
的构造函数, 否则类将不会正确注册。 向类添加无参数构造函数:VB复制
Public Sub New() MyBase.New() End Sub
-
向类添加属性、方法和事件, 并将其
End Class
以语句结束。 从 "生成" 菜单中选择 "生成解决方案"。 Visual Basic 生成程序集并向操作系统注册 COM 对象。-
在“解决方案资源管理器”中,右键单击项目,然后单击“属性”。 随即显示 "项目设计器"。
-
单击“编译”选项卡。
-
选中 "为 COM 互操作注册" 复选框。
-
添加上一个公共函数,生成dll,在别的地方就可以用以下方式调用了
- Shell("regsvr32 **.dll /s") '注册插件到系统
Dim sm As Object = CreateObject("*.*")‘创建对象,第一个*是插件文件名,第二个*是类名
-