VC++调用VB.NET缩写的COM
来源:互联网 发布:蒙泰5.1软件 编辑:程序博客网 时间:2024/05/02 13:39
现在COM组件的使用越来越广泛,在各个程序中调用COM组件我想大家都遇到过,这篇文章就是关于COM组件的编写和调用的,主要包含了使用VC6.0编写和调用COM组件,VS2005中使用VB编写和调用COM组件,以及在VC6.0和VS2005之间互相调用COM组件。操作规程与上一篇C++和C#编写的COM与DLL相互调用相似,在VB.net操作步骤:
一、NewProject
二、选择 Class Library
三、打开资源管理器,删除刚才自动创建的Class.VB
四、在资源管理器下,右键,增加新项,选择 COMLibrary
五、VS2005将自动为您增加以下代码:
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
Public Class ComClass1
#Region "COM GUID"
' 这些 GUID 提供此类的 COM 标识
' 及其 COM 接口。若更改它们,则现有的
' 客户端将不再能访问此类。
Public Const ClassId As String = "7421a122-db9d-43af-bd7a-5c9e4608a14b"
Public Const InterfaceId As String = "e533db7e-167c-4e67-953e-e19d28604b07"
Public Const EventsId As String = "48704df5-82c0-4c27-a308-13d8137c5d93"
#End Region
' 可创建的 COM 类必须具有一个不带参数的 Public Sub New()
' 否则, 将不会在
' COM 注册表中注册此类,且无法通过
' CreateObject 创建此类。
Public Sub New()
MyBase.New()
End Sub
End Class
六、此时可以直接增加你想要增加的操作功能
例如要增加数据库连接的函数:
Imports System.Data.SqlClient
Imports System.Data.Sql
Imports System.IO
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Data
<ComClass(ComClassData.ClassId, ComClassData.InterfaceId, ComClassData.EventsId)> _
Public Class ComClassData
#Region "COM GUID"
' 这些 GUID 提供此类的 COM 标识
' 及其 COM 接口。若更改它们,则现有的
' 客户端将不再能访问此类。
Public Const ClassId As String = "6295f1f3-4090-49a6-8d30-143932cca8a4"
Public Const InterfaceId As String = "dcde940e-eadc-4ee2-9874-076e45dc7d64"
Public Const EventsId As String = "e6ae62c7-777c-44e6-91c7-2ee58c6fe313"
#End Region
' 可创建的 COM 类必须具有一个不带参数的 Public Sub New()
' 否则, 将不会在
' COM 注册表中注册此类,且无法通过
' CreateObject 创建此类。
Public Sub New()
MyBase.New()
End Sub
Public objDataSet As New DataSet
''' <summary>
''' 数据库连接
''' </summary>
''' <remarks></remarks>
'''
public function ConnectionData(ByVal ipAddress As String, ByVal databaseName As String, ByVal user As String, ByVal password As String) Try
objConnectionSqlStr = "server =" & ipAddress & ";database =" & databaseName & ";UID =" & user & " ;Pwd =" & password & ";max pool size = 500"
objConSql = New SqlClient.SqlConnection(objConnectionSqlStr)
objCommand.Connection = objConSql
Call WriteConfig()
'objConSql.Open()
'objConSql.Close()
Catch ex As Exception
Console.WriteLine("访问数据库出错,错误详细信息:" & ex.Message)
End Try
End Sub
End Class
七、生成或者运行一下工程,到工程目录下(ClassLibrary1\ClassLibrary1\bin\Debug \ )可以看到有一个
.tld文件和一个.dll文件
恭喜你的操作过程完全正确,下面可以用VC6.0测试一下是否可用。
一、打开 VC6.0新建一个工程进入
二、将刚才生成的 tld 文件复制到VC6.0的新的工程目录下
二、快捷方式Ctrl+W 在弹出的对话框中在Add Class 选择 From a Type library 选择 tlb文件
三、选择OK,确定即可
四、在FileView中可以看到VC6.0自动创建的相应的.CPP与.H 的两个文件
五、打开CPP文件查看是否有一个 ConnectionData 函数
六、当你看到这个函数的时候,初始一个对象假设为Conn
七、调用:Conn.ConnectionData (".","TestDB","sa","")
八、未发现错误提示,说明访问数据库操作成功。
使用 vc.net 的朋友,步骤如下:
1、建立一个 MFC 的应用程序
2、执行菜单“添加\添加类”,选择 MFC 分类中的“类型库中的MFC类”
图四、添加类型库中的MFC类
3、选择组件文件 dll(或 tlb 文件),并选择需要包装的接口
图五、选择文件和接口
4、在适当的位置输入调用代码
#include "CDispSimple.h"// 包装类的头文件void demo(){// 已经进行过了 COM 初始化CDispSimple spDisp;// 包装类的对象spDisp.CreateDispatch( _T("Simple8.DispSimple.1") )// 启动组件spDisp.xxx(...);// 调用函数spDisp.ReleaseDispatch();// 释放接口
恭喜你的操作过程完全正确。VC6.0和vc.net调用VS2005编写的COM组件操作成功.
- VC++调用VB.NET缩写的COM
- VC调用VB写的COM
- Java如何通过VC调用VB编写的COM
- 在VC中调用VB编写的COM组件范例
- Java如何通过VC调用VB编写的COM
- Proe二次开发中,vc调用vb编写的com
- 在VC中调用VB编写的COM组件范例
- VB创建ActiveX dll 的COM服务器,VC调用VB COM方法
- .NET 创建可以供VB调用的COM
- VB.NET调用ARX程序创建的COM Server
- 像VB一样在VC中隐式调用COM(VC的后期绑定方式)
- vb.net编写并调用com元件
- vb调用vc的dll
- VC 调用 VB 的DLL
- 急问!急问!vc调用vb做的包含窗体的COM出错!
- vb窗体程序调用vc ATl写的com组建一个小发现
- 在VC.NET中调用VB.NET或C#生成的DLL类库
- [VB.NET]请教:vb.net调用vc写的dll出错:报尝试读取或写入受保护的内存
- 【转】乔布斯经典语录
- 让自己的博客访问量稳定上升的27个有效方法
- android:获取本机Mac地址及IP地址方法
- 简单的lucene框架 Compass 的使用
- C++虚函数表解析
- VC++调用VB.NET缩写的COM
- android checkbox样式
- 快速排序 归并排序 算法设计与分析
- 头文件保护符和#pragma once
- 16. 47. 1. 全屏操作 Full screen mode
- 杂记1
- AIX性能监控topas命令的详细解析
- uboot移植之uboot和kernel的参数传递
- 误区!动手能力和解题能力