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
'将实体类引用到抽象类
【vb调用.net VB调用net 控件】SetvbIDemo=vbDemo
8、然后,我们就可以用vbIDemo.Test这样的方法了
如何使用VB.NET中可选参数调用方法VB.NET可选参数的默认值必须是一个常数表达式 。
过程定义中跟在可选参数后的每个参数也都必须是可选的 。
下面的语法显示带VB.NET可选参数的过程声明:
Sub sub name(ByVal parameter 1 As data type 1,
Optional ByVal parameter 2 As data type 2 = default value)
调用带VB.NET可选参数的过程
过程在运行时无法检测到给定的参数是否已被省略,或者调用代码是否已显式提供默认值 。如果需要弄清楚这一点,可以设置一个不可能的值作为默认值 。下面的过程定义了可选参数 office,并测试其默认值 QJZ 以查看它在调用中是否已被省略:
Visual Basic
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters" End If
' Insert code to notify headquarters or specified office.
End Sub
如果可选参数是像 String 这样的引用类型 , 只要它不是该变量所预期的值,就可以使用 Nothing 作为默认值 。
VB.NET可选参数和重载
定义带可选参数的过程的另一种方法是使用重载 。如果有一个可选参数 , 可以定义过程的两个重载版本,一个接受此参数,另一个则不带参数 。此方法随可选参数数目的增加而变得更复杂 。然而,这样做的优点是可以完全确定调用程序是否提供了每个VB.NET可选参数 。
如何正确理解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语言中的一个族vb调用.net,System.Runtime.InteropServices是system中的一个类 。System.Runtime.InteropServices.DLLimpor是其中的一个方法 。调用DLL的API
接口,这个的意思就是vb6的lib"user32", share是共享的意思 , 例如vb调用.net:
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他吧 。
其实上面这个VB.NET函数调用方法并不正确,我们仍旧要使用API声明,只是换了一各形式
如果你认为这就是VB.NET就错了 , 看看这个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成一个对象(把vb调用.net他当一个变量吧)再说,是等于class,还是New class.是dim xxx as class=new class 还是dim xxx as new class
就是这样VB.NET函数调用将更简单 , 不须要研究一些很难的东西 。
VB6.0调用.net COM组件问题调用.Net的
程序集
还是
COM组件
,
这是不同的,
如果你用Visual
Studio,那在项目的引用那里直接引用就可以了,.Net程序集和COM组件在不同的Tab页里 。
COM组件要先注册才能看到
regsvr32
com.dll
vb调用.net的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于VB调用net 控件、vb调用.net的信息别忘了在本站进行查找喔 。
推荐阅读
- 钉钉这么直播,钉钉这么直播,这么共享屏幕
- erp系统如何自动采集,erp系统自动报警
- 射击游戏报告,射击游戏说明
- 快快游戏模拟人生4,模拟人生4
- go语言中的错误处理 go语言gc
- 什么工作需要拍摄,什么工作需要拍摄宿舍照片
- 日本pc战略游戏,日本策略类游戏
- python开窗函数原理 python打开窗口
- 电商童装生意如何,做电商童装生意的诀窍