- 浏览: 508846 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (299)
- Oracle(pl/sql_Erp_Pro*C) (69)
- 设计模式 (4)
- spring (23)
- ext (17)
- apache开源项目应用 (4)
- jquery (16)
- 生活琐事 (8)
- 下载资源 (23)
- mysql (2)
- Eclipse使用积累 (5)
- 报表类(报表/图表) (13)
- php (4)
- Web多彩文本框 (3)
- json (4)
- jqgrid (2)
- ant (2)
- java算法积累 (8)
- EL表达式/JSTL (4)
- poi (3)
- gwt (2)
- 爬网第一步 (2)
- javascript (17)
- Javaweb (8)
- tomcat (1)
- flex (1)
- Java&DB (3)
- J2SE (7)
- linux (3)
- 数据结构 (1)
- dot net (5)
- struts (1)
- ibatis (1)
- log4j (1)
- 项目管理 (1)
- Java native interface(jni,jacob......) (5)
- applet (1)
- VB.net/C#.net/JNI (20)
- css (1)
- Sqlite (1)
- servlet (1)
- REST (1)
最新评论
-
wenhurena:
能不能给一下解压密码roki.work.2017@gmail. ...
Ebs解体新書と学習資料1 -
liutao1600:
楼主写的太好了,每天学习~~
Spring_MVC(6)测试 -
liutao1600:
太好了,每天学习你的文章~~~
Spring_MVC(3)表单页面处理 -
liutao1600:
学习了,太好了
Spring_MVC(2)控制层处理 -
liutao1600:
学习了~~~
Spring_MVC(1)构建简单web应用
前几天一直在研究如何将.net的组件封装成com供非托管代码调用。上网查资料,查书,试验,最后测试了vb.net,c#,vc++.net 等多种语言,都没有搞定。在论坛上发了帖子。虽然有回复,但是只是给了些资料。资料看了又看,反复的研读。照着例子一步一步地做。但总是有些地方没有成功。正在绝望中。一个朋友给了我简单的答案。我在高兴的同时也感慨自己的愚钝和呆笨。
原来在vs.net 2005中用vb来实现这个功能是如此的简单。
方法如下:
新建一个 项目 ,选择 Visual Basic \ Window \ 类库 ,假设项目名为ClassLibrary1
然后 在 solution manager(解决方案资源管理器)中, 将 新创建的 Class1.vb 文件删除。
然后 在 solution manager(解决方案资源管理器)中 的项目上点击右键 ,在弹出的菜单上 点击 添加 \ 类 ,在弹出的对话框中选择 com类 ,修改类的名称(本例中修改为ComC.vb),后点击 添加 按钮。
则会看到ComC.vb的代码如下:
<ComClass(ComC.ClassId, ComC.InterfaceId, ComC.EventsId)> _
Public Class ComCClass ComC
COM GUID#Region "COM GUID"
' 这些 GUID 提供此类的 COM 标识
' 及其 COM 接口。若更改它们,则现有的
' 客户端将不再能访问此类。
Public Const ClassId As String = "97451265-d75d-4d5a-a39d-6c4b68f8dd99"
Public Const InterfaceId As String = "5015b9e7-64e6-4750-8c28-5c51d968f1d6"
Public Const EventsId As String = "1afd03f4-5974-445e-8ca2-a8e9be3432d7"
#End Region
' 可创建的 COM 类必须具有一个不带参数的 Public Sub New()
' 否则, 将不会在
' COM 注册表中注册此类,且无法通过
' CreateObject 创建此类。
Public Sub New()Sub New()
MyBase.New()
End Sub
End Class
现在只要在这个类中添加 public 的成员即可 ,假如我们添加一个 方法 Northsnow
<ComClass(ComC.ClassId, ComC.InterfaceId, ComC.EventsId)> _
Public Class ComCClass ComC
COM GUID#Region "COM GUID"
' 这些 GUID 提供此类的 COM 标识
' 及其 COM 接口。若更改它们,则现有的
' 客户端将不再能访问此类。
Public Const ClassId As String = "97451265-d75d-4d5a-a39d-6c4b68f8dd99"
Public Const InterfaceId As String = "5015b9e7-64e6-4750-8c28-5c51d968f1d6"
Public Const EventsId As String = "1afd03f4-5974-445e-8ca2-a8e9be3432d7"
#End Region
' 可创建的 COM 类必须具有一个不带参数的 Public Sub New()
' 否则, 将不会在
' COM 注册表中注册此类,且无法通过
' CreateObject 创建此类。
Public Sub New()Sub New()
MyBase.New()
End Sub
Public Sub Northsnow()Sub Northsnow(ByVal ss As String)
MsgBox(ss)
End Sub
End Class
然后就可以编译,编译后,在pb中添加如下的代码来调用这个com
int intValue
oleobject objOle
objOle=create OLEObject
intValue=objOle.connecttonewobject("ClassLibrary1.ComC")
objOLe.Northsnow("I am Northsnow")
运行这个程序就会看到效果。
我在C#中没有看到类似的com类.
现在这个棘手的难题解决了之后,工作可以继续了。心理挺高兴的。但是在高兴之余又有一种奇怪的感觉。
VS.net的确的很强。把很多复杂的东西都包装起来帮我们实现。我们在享受轻松的解决难题的时候,距离底层技术却越来越远。不知道是喜是悲。
- vb_dot_net__make_com_component.rar (4.1 KB)
- 下载次数: 7
发表评论
-
程序集与托管模块
2010-10-26 16:22 1211本文是为了学习程序集而整理的网上资料,主要包括两个部分,概念和 ... -
.NET程序集
2010-10-26 15:03 2202【主要内容】@将源代码 ... -
strong-named
2010-10-26 14:48 852前段时间自己整理的一个有关strong-named assem ... -
CLR笔记(二)
2010-10-26 13:53 9476.类型和成员基础 1.Class的可见性有publi ... -
CLR笔记(一)
2010-10-26 13:22 17481.CLR的执行模型 ... -
Java调用C#
2010-10-25 22:49 1819Java调用C# 下载: http://www.co ... -
Managed Extensions for C++ Reference
2010-10-25 18:10 1356Managed Extensions for C++ Refe ... -
注入托管代码
2010-10-25 17:18 1700前言:本文的重点不在 ... -
jni调用dll及dll已用其它dll的资料
2010-10-25 16:00 870http://blog.csdn.net/KONGKONGWJ ... -
C# method calls within a Java program
2010-10-23 16:11 1037.net产生的比java晚,其类库的封装在某些方面也比ja ... -
走近COM Interop
2010-10-23 15:40 1594走近COM Interop—— RCW ... -
get chartobjects from VB.net
2010-10-18 10:34 1310Excel.Sheets sheets = oWB.Works ... -
VB.NET调用DLL实现方法解析
2010-10-13 10:43 3427VB.NET开发平台 ... -
VB.net 的Me My MyBase MyClass
2010-10-11 23:46 1988第一次接触 Visual Basic 中的 Me、My、M ... -
使用.Net访问Office编程接口(PIA和IA的区别)
2010-10-11 10:25 3460在这篇文章里面,我将向大家介绍如何在.Net中访问Offi ... -
Exposing .net Components to Com
2010-10-11 09:47 791http://www.codeproject.com/KB/C ... -
.net Com组件注册
2010-10-11 09:30 1932本文将详细为大家介绍一个java调用.net DLL的方法,以 ... -
Writing an Activex control in VB.net
2010-10-09 22:33 1381The problem with that example i ... -
VB set Excel color
2010-10-08 17:30 907Sub Macro3()'' Macro3 Macro' ' ...
相关推荐
VB.NET实现SqlHelper数据库操作组件,组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数...
MFC ACCESS数据库操作库函数封装类 MFC ACCESS数据库操作库函数封装类 MFC ACCESS数据库操作库函数封装类
文章介绍了利用VB.NET强大的类开发功能,及利用ADO对象动态访问Access数据库,把ADO访问数据的方法编成组件,封装起来,方便软件开发者访问数据,提高开发效率.
我也转向了.net/j2ee的方向,使用vb.net ado.net重新定义ECC模式和编写ECC代码生成器的想法,一直在我心头。终于在2003年第一次写下了第一行代码,到目前为止,该方法已经经过我长时间的使用,基本稳定。 不敢说...
实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP...
.NET框架组件太大了,比任何以前所写的封装功能的库都要大。这样有好处,因为它大幅削减了建立应用程序所需编写的代码,但是也使我们不可能完全了解该框架组件。但是我们很容易从中找到一些技巧。 窗体嵌套 经验...
并通过这个例子说明:组件技术把数据和代码进行封装,通过事件来响应外部变化; RS232接口标准化程度高,对双机通信及互联网访问提供了高效和标准化服务。本文是我 在作为主研人员开发了“河北省国家公务员及专业技术...
我也转向了.net/j2ee的方向,使用vb.net ado.net重新定义ECC模式和编写ECC代码生成器的想法,一直在我心头。终于在2003年第一次写下了第一行代码,到目前为止,该方法已经经过我长时间的使用,基本稳定。 不敢说...
EZTwain 可以从几乎任何编程语言调用 - 该工具包包括绑定:访问 (VBA)、C#、Clarion、dBASE、Delphi、LotusScript、Perl、PowerBasic、PowerScript、VB、VB.NET、MSVC/C++ 和 VFP。写入 BMP、PNG、GIF 和 JPG。 ...
在新的编程框架.NET Framework中, 微软也提供了一个面向Internet的版本的ADO,称为ADO.NET。其对象模型和传统ADO差别很大。 ADO是一种面向对象的编程接口,微软介绍说,与其同IBM和Oracle提倡的那样,创建一个统一...
Microsoft Visual C++ Redistributable(简称...此版Visual C++运行库组件合集(微软常用运行库合集)由国内封装爱好者打包而成,整合Visual C ++组件安装包运行库所有版本,提供图形安装界面,可自选更新VC++版本。
在ASP.NET中,能够使用面向对象的思想和软件开发中的一些思想,例如封装、派生、继承以及高级的设计模式等。本章首先介绍ASP.NET中最重要的概念---网页代码模型。 4.1 ASP.NET的网页代码模型 在ASP.NET应用程序开发...
VB源码,控件组件,函数库 感谢作者提供这么好的一个公共功能库,它封装了几十项功能、涉及文件、系统、系统服务、注册表、进程、界面、网络、图像、游戏等十大类的常用类库,有一些复杂的功能,若使用本控件您只需一...
如:PHP、JSP、ASP、 ASP.net、C/C++ 、VC6.0 、VC.net、BC、C#、VB6.0 、VB.net、Delphi、Java等。 3. 响应速度快 由于本组件采用高效特殊的算法引擎结构,每秒钟拆分可达数万字汉语文本,在对搜索关键词进行拆分...
利用ADO.NET 2.0提供的公共接口,编写一组适用于多种数据库配置的通用代码,达到灵活...另外,将数据库配置功能封装成组件,有利于组件的扩充和无缝升级。 源码来自《Visual Basic .NET 2005数据库编程技术与实例》一书
用类模块来封装Excel数据透视表生成的具体实现细节,提供一个用户界面收集报表的命名、存放位置等参数,设计一个自定义结构类型的变量来实现参数的传递,并将其封装成组件.因为项目引用了Office Excel COM组件,...
开发平台: VB.NET 2005 实现的功能: 1.显示选中区域代码:使用WebBrowser,为用户分析所选中的WEB对象相对应代码。协助定位代码分析。 2.显示当前对象信息:使用WebBrowser,分析当前的用户操作焦点所在的WEB...