vb 如何调用 NET写的DLL?VB.net语言
1、创建组件定义
新建一个Probject,在代码中写入:
PublicInterfaceIDemo
FunctionTest()AsString
EndInterface
2、实现组件定义
新建一个Probject , 添加对上述Probject的引用后,在代码中写入
PublicClassDemo
ImplementsIDemo.IDemo
PublicFunctionTest()AsStringImplementsIDemo.IDemo.Test
Test="HelloWorld!"
EndFunction
EndClass
3、编译出Demo.dll组件
4、使用.net的工具VisualStudio.Net2003CommandPrompt,输入以下命令
RegasmDemo.dll/tlb:Demo.tlb
把Demo.dll注册为一个com对象(这个com对象不等同于普通的用VB编写的Com对象),并导出类型库Demo.tlb
5、新建一个VB工程 , 添加对Demo.tlb和IDemo.tlb的引用
6、定义两个全局变量
DimvbDemoAsDemo.Demo
DimvbIDemoasIDemo.IDemo
7、在Form_Load事件中初始化
'初始化实体类
SetvbDemo=NewDemo.Demo
'将实体类引用到抽象类
SetvbIDemo=vbDemo
8、然后,我们就可以用vbIDemo.Test这样的方法了
VB.net关于类之间函数的调用问题 。如上面所说,你可能还不太了解类、函数等的作用 。
类可以用来封装一系列操作,或者是一类对象的特性 。像上面的描述 , 有可能是滥用类了 。
建议你这样,弄一个专门的运算类,里面有四个运算的函数 , 比如:
Class 运算
Shared Function 加(ByVal 加数1 As Decimal, ByVal 加数2 As Decimal) As Decimal
'举个例子
Return 加数1 + 加数2 '百度打不出英文加号,你自己改一下
Exit Function
End Function
Shared Function 减(ByVal 被减数 As Decimal, ByVal 减数 As Decimal) As Decimal
'举个例子
Return 被减数 - 减数
Exit Function
End Function
End Class
上面我写了两个例子 , 你可以照抄然后自己写乘除的,总之不要滥用类就行 。
PS:Shared函数的使用不需要类被实例化 , 可以直接这样使用:
Msgbox(运算.加(1,2).ToString)
你会发现“运算”是蓝色的
vb如何实现调用c#.net写的一个dll,这个dll里面都是些类,不是函数,想用vb把里面的类调用出来,求帮忙!按照vb调用.net类我vb调用.net类的理解vb调用.net类,你vb调用.net类的这个需求是没有办法做到的,除非C#的dll被封装为了一个COM组件并且注册了 , 但是你的这个dll已经写成了 , 所以理论上来说应该不是com,而C#的程序集是不提供向前兼容的,所以用一个老的语言调用新的技术的组件是做不到的,不过也有一种可能性,不过很难实现,大体逻辑这样 , 首先通过vb调用一个native的组件,用C或者c完成,在这个组件里面加载clr,在clr里面加载c#的程序集,实例化对象,执行调用
在vb.net中怎么调用自定义类?代码已测试 。
一、测试需要vb调用.net类的INI文件 。名称为“setinfo.ini”,存放路径为vb调用.net类你解决方案里“Bin“文件夹的”Debug“文件夹里 。
内容:
[Location]
pnlTime.Location.X=787
pnlTime.Location.Y=0
[TopMost]
Top=True
二、操作INI文件的类 。新建一个类,类中内容为:
Public Class Class1
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Int32, _
ByVal lpFileName As String _
) As Int32
End Class
三、界面代码:
Imports System.IO 'for path
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
getINI()
End Sub
Private Sub getINI()
Dim iniclass As New Class1 '
Dim myBf As String 'get set_info 开辟存储的内存
myBf = New String(CChar(""), 256)
Dim myFN As String '配置文件的文件路径
myFN = Path.Combine(My.Application.Info.DirectoryPath, "setinfo.ini")
Dim myAN As String 'Application_NAME,也是Section名称
myAN = Me.TextBox1.Text
Dim myKN As String 'KEY_NAME,关键字名称
myKN = Me.TextBox2.Text
Class1.GetPrivateProfileString(myAN, myKN, "", myBf, myBf.Length, myFN) '调用读取INI文件的操作
TextBox3.Text = Microsoft.VisualBasic.Left(myBf, InStr(myBf, Chr(0)) - 1) '截取有用部分,有必要
End Sub
End Class
四、测试截图如下
如何正确理解VB.NET函数调用1. Shared FunctionSystem.Runtime.
InteropServices.DLLimport("user32.dll")
2. MessageBoxA(ByVal hwnd As Integer,
ByVal text As String, ByVal
lpcaption As String, ByVal
wtype As Integer) As Integer
3. End Function
首先integer被作为32位数据替代了long(long是64位)
System是Net语言中的一个族 , System.Runtime.InteropServices是system中的一个类 。System.Runtime.InteropServices.DLLimpor是其中的一个方法 。调用DLL的API
接口,这个的意思就是vb6的lib"user32", share是共享的意思,例如:
1. Public Class classA
2. Shared FunctionSystem.Runtime.
InteropServices.DLLimport("user32.dll")
MessageBoxA(ByVal h As Integer,
ByVal m As String, ByVal c As
String, ByVal type As Integer) As Integer
3. End Function
4. End Class
你可以这样调用 classA.MessageboxA 但是如果没有这个share 在class后打点就没有MessageboxA的成员出现了 , 现在你就象以前一样的使用他吧 。
其实上面这个VB.NET函数调用方法并不正确,我们仍旧要使用API声明,只是换了一各形式
如果你认为这就是VB.NET就错了,看看这个:
system.WinForms.MessageBox.Show("对话内容写在这里", "标题写在这里", messagebox.OK BitOr messagebox.IconAsterisk)
这就是面向对象,你已经完成了所有的任务 。不需要任何的API声明 。不需要写多余的代码 。
1. messagebox.IconAsterisk=惊叹号图标
2. messagebox.IconError=错误图标
3. messagebox.IconExclamation=警告图标
4. messagebox.IconHand=错误图标
5. messagebox.IconInformation=提示图标
所经点NET就是打点到达,在族后面打点,在类后面打点,在对象后面打点 。第二个问题就是类与类之间相互的关系 , Net在网上处理人与人的关系,在程序语言中处理类与类的关系 。倒底是加不加share,倒底是类后面打点,还是Dim成一个对象(把他当一个变量吧)再说,是等于class,还是New class.是dim xxx as class=new class 还是dim xxx as new class
就是这样VB.NET函数调用将更简单,不须要研究一些很难的东西 。
【vb调用.net类 vbnet using】关于vb调用.net类和vbnet using的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- 三国志即时战略游戏下载,三国志即时战斗
- 100行c语言代码及意思,c语言100行代码大全
- 安卓微信7.0谷歌版,安卓微信70谷歌版怎么下载
- word字体颜色如何修改,word字体颜色如何修改为白色
- php数据库的记录 php数据库查询结果处理
- flutter删除第三方库,flutter销毁页面
- sap长文本FS,sap文本快速输入
- 苹果游戏比安卓画质高,ios玩游戏比安卓流畅
- linux的复制命令 linux的复制命令怎么用