VB6 中如何访问C# Dll 中的方法、属性以及事件
一个简单的例子实现VB6中访问C# dll中的方法、属性以及事件。
C# DLL
1) 要使得C# dll中的方法、属性以及事件在VB6中暴露出来,以便写代码方便,需要加入相应的接口
- 方法和属性的接口,本例中为IComInterOpClass
[Guid("12A7D9AE-B42F-4a91-9EEE-5E0951A552E2")] [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] publicinterface IComInterOpClass { //Methodstring SayHello(); //Propertystring Name { get; set; } }
- 事件的接口,本例中为IComInterOpEvent
[Guid("868FD423-2504-4f5c-AB47-9F2B7DB8ED2C")] [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)] publicinterface IComInterOpEvent { void EventTest(string msg); }
2) 实现部分,注意事件的接口不需要继承,它是以Attribute的方式加入的。本例中的事件是用timer实现5秒钟触发一次。
namespace ComInterOpLibrary { publicdelegatevoid EventTestHandler(string message); [Guid("BA6DF62E-D59E-4e46-B2E6-F1CD990A1E18")] [ClassInterface(ClassInterfaceType.None)] [ComSourceInterfacesAttribute("ComInterOpLibrary.IComInterOpEvent")] [ProgId("ComInterOpClass")] publicclass ComInterOpClass : IComInterOpClass { private Timer myTimer =null; //Eventpublicevent EventTestHandler EventTest; //Propertypublicstring Name { get; set; } public ComInterOpClass() { myTimer =new Timer(5000); myTimer.AutoReset =true; myTimer.Enabled =true; myTimer.Elapsed +=new ElapsedEventHandler(myTimer_Elapsed); } void myTimer_Elapsed(object sender, ElapsedEventArgs e) { if (EventTest !=null) { EventTest("Good day!"); } } #region IComInterOpClass Members//Methodpublicstring SayHello() { return"Hello "+ Name; } #endregion } }
3) 至此,C# dll部分就完成了,最后记得将项目的Register for COM InterOp选上。
VB部分
1) 首先声明两个变量,一个是类的,一个是事件的。
Public obj As ComInterOpLibrary.ComInterOpClass PublicWithEvents objEvent As ComInterOpLibrary.ComInterOpClass '定义事件
2) 然后进行初始化,本例是放在Form Load的时候进行的。
PrivateSub Form_Load() Set obj =New ComInterOpLibrary.ComInterOpClass Set objEvent = obj End Sub
3) 调用属性和方法
Dim ret AsString"Call propertyobj.Name = txtName.Text "Call Methodret = obj.SayHello() lblShow.Caption = ret
4) 访问事件
PrivateSub objEvent_EventTest(ByVal msg AsString) "Call eventList1.AddItem msg End Sub
注意:方法的名称 _前面的objEvent就是程序开始部分定义的 public WithEvents 的变量名称,_后面EnevtTest就是事件的名称。
所有COM的事件都可以这样调用。
其实如果是控件的话,在VB代码编辑上方的左下拉列表里,选择该COM控件,右边的下拉框里会显示出该控件所有的事件。
相关推荐
VB6.0调用C# Dll解决方法 用C#实现dll 用cmd命令生成tlb文件 VB引用tlb文件 进行引用。
vb6调用C#Dll函数
在工作中遇到了在VB6.0的程序里要调用C#的Dll的问题,显然这两个开发环境属于不同的平台。在网上拜读了几位大师的文章后,在实际试验中还是会发生这样那样的问题,最后还是实现了预期效果,在此我把我的实验步骤和...
VB调用C#编写的DLL 使用VS C#编写DLL函数。封装好,实现DLL注册功能。达到VB调用。
本例子中实现在c#中调用由vb生成的dll文件(com调用)例子由两个主要步骤组成:一 ...二 是在c#中引入步骤一中生成的dll,然后生成实例调用步骤一:首先在vb中新建一个ActiveX DLL 工程,然后在类模块文件中填入以下代
轻松实现vb调用c#的dll。本人试验,可以轻松调用。
C# 如何调用VB6.0编写的dll.doc
1.VB调用C#编写的dll 2.C#调用VB写的Dll
c#调用refprop.dll文件来查物性参数, 只是封装的代码,refprop.dll需要自己下载。下载1分,没分的消息给我。
vb调用c#编写的串口DLL文件(vb源码 C#源码)
C# 如何调用VB6.0编写的dll (1).doc
JS调用c#编写的DLL 源代码 包含c#新建类库,生成DLL,以及DLL的注册 ,JS调用DLL的两种方法的整个过程。
C++、VB、DELPHI调用DLL的小例子。DLL是用VC++写的。同学在做毕业设计时要求调用DLL,我就顺便把VB和DELPHI的也做上了。 继加了JAVA调用DLL后,空闲的时候又加了个C#调用的例子。根据以前下载过的朋友的要求,...
实现C#对Excel的宏操作,在项目中添加dll引用,调用格式 try { // 返回对象 object objRtn = new object(); // 获得一个ExcelMacroHelper对象 ExcelMacroHelper excelMacroHelper = new ExcelMacroHelper(); ...
VB6.0调用C#Dll解决方法[归纳].pdf
C#+.NET中调用VB编写的DLL代码事例.doc
vb.net创建GIF动画的DLL,C#创建GIF动画,Gif.Components.dll
可以在C#中为Visual foxpro 编写可以调用的DLL 文件。本例提供了一个范例,代码可以扩展。
C# VB.NET 读写 西门子PLC用DLL
包括vb、vc、c# 三种语言都可以运行! Canon相机SDK!!不坑人!包含所有需要的dll库,下载直接vs2017运行即可! 这个资源的整合是我花了好一会时间找到的!希望对大家有所帮助! 支持以下相机: EOS-1D Mark III EOS ...