
正文
vb.net编写dll vbs调用dll
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
怎样用VB.NET写和调用DLl窗体
一、带窗体vb.net编写dll的dll创建
1、先新建 类库(testdll)vb.net编写dll,在项目中添加两个窗体form1(主窗体)、form2,为了与后面vb.net编写dll的调用区分分别命名为fm1,fm2vb.net编写dll;并在fm1窗体中添加一个按钮用来调用fm2如下图
2、在fm1窗体代码中先引用fm2, 按钮代码调用fm2.如图
3、生成dll,(class1.vb中不需要写任何代码)
二、调用dll
1、新建 一个windows应用程序并添加一个按钮用来调用dll中的窗体,选 择 “项目”-“添加引用”,选择刚才创建的testdll
2、窗体代码中先引用testdll,再定义一个testdll中的fm1对象,最后执行对象的show方法
3、运行结果如下:
相关问答
Q1: VB.net编写的dll,供vb6调用时dll中的函数不可见?
在您vb.net编写dll的代码中vb.net编写dll,您已经成功使用了RegAsm命令将DLL注册为COM组件vb.net编写dll,并在VB6中成功引用了该组件的类型库文件(TLB文件)。此外vb.net编写dll,您还在VB6代码中声明了一个YCImageDo类型的对象vb.net编写dll,并成功创建了该对象。
但是,当您尝试使用YCImageDo对象的属性和方法时,却发现这些成员不可见。这可能是因为在编写DLL代码时您没有正确地声明这些成员的可见性。
在VB.NET中,您可以使用"Public"关键字来声明一个类型的成员(属性、方法、过程等)对外可见,而使用"Private"关键字则声明该成员仅在类型内可见。如果您希望YCImageDo类型的成员在VB6代码中可见,则应将这些成员声明为Public类型。
例如,如果您希望YCImageDo类型拥有一个名为"GetImage"的方法,则可以在DLL代码中按如下方式声明该方法:
Public Function GetImage() As String
' 在这里编写方法的代码
End Function
同样,如果您希望YCImageDo类型拥有一个名为"ImagePath"的属性,则可以在DLL代码中按如下方式声明该属性:
Public Property ImagePath As String
Q2: VB.NET怎么将窗口编写到DLL中?然后再使用代码将DLL中窗体继承到程序中?(答案可用再加50分))
vb.net不熟悉,不过我原来写过一个C#的。
首先你可以使用System.IO.File.Exists来检测文件是否存在
另外加载DLL中的类的话可以使用:
// 加载类所在的程序集
Assembly assembly = Assembly.LoadFrom("C:\\samuel\\Test.dll");
Type type = assembly.GetType("Test.OutString");
// 得到指定的方法
MethodInfo met = type.GetMethod("OutSuccess");
// 创建实例
Object obj=System.Activator.CreateInstance(type);
// 调用方法
string strResult = (string)met.Invoke(obj, null);
// 如果这个方法有参数的话,可以用以下的方法实现
/*
Object[] objArray=new object[7];
objArray[0]="参数1";
objArray[1]="参数2";
objArray[2]="参数3";
*/
方法返回类型 Result = (方法返回类型)met.Invoke(obj, objArray);
希望对你有帮助
Q3: vb 如何调用 NET写的DLL?
VB.net语言
1、创建组件定义
新建一个Probject,在代码中写入:
Public Interface IDemo
Function Test() As String
End Interface
2、实现组件定义
新建一个Probject,添加对上述Probject的引用后,在代码中写入
Public Class Demo
Implements IDemo.IDemo
Public Function Test() As String Implements IDemo.IDemo.Test
Test = "Hello World!"
End Function
End Class
3、编译出Demo.dll组件
4、使用.net的工具 Visual Studio .Net 2003 Command Prompt,输入以下命令
Regasm Demo.dll /tlb:Demo.tlb
把Demo.dll注册为一个com对象(这个com对象不等同于普通的用VB编写的Com对象),并导出类型库Demo.tlb
5、新建一个VB工程,添加对Demo.tlb和IDemo.tlb的引用
6、定义两个全局变量
Dim vbDemo As Demo.Demo
Dim vbIDemo as IDemo.IDemo
7、在Form_Load事件中初始化
'初始化实体类
Set vbDemo = New Demo.Demo
'将实体类引用到抽象类
Set vbIDemo = vbDemo
8、然后,我们就可以用 vbIDemo.Test 这样的方法了
Q4: vb.net无法引用C++编写的dll怎么办?
如果DLL不是你写的,且你要调用的函数不是__stdcall声明,VB直接调用是会报错的
如果DLL是你写的,注意调用约定问题,并看以下代码
***************************************************
以下是DLL代码
.cpp里这么写
1extern "C"__declspec(dllexport) void __stdcall HelloWorld()
2{3 MessageBox(NULL,"HelloWorld","HelloWorld",NULL);4}
.def里这么写
LIBRARY "XXXX"
EXPORTS
; 此处以下添加
HelloWorld@1
*************************************************
vb里这么写
1 Public Declare Sub HelloWorld Lib "XXXX.dll" ()
然后调用就可以了,上面是VB的代码,或许VB.net的也差不多
Q5: vb.net 编写的 类库 dll 怎么无法使用 求大神指点
在解决方案中添加一个类库项目vb.net编写dll,切换到主程序项目,添加引用,在对话框中选择项目页面,里面就有该类库项目。点击,确定就引用进来了。
使用时就是定义该库中的类了
如这样:
Dim c As New ClassLibrary1.Class1
msgbox c.cc()
第二图中像是声明一个API函数了,既然是类库当然是类了。
至于生存的Dll文件的注册可能要手工进行的吧,用RegSvr32.exe。注册后在引用对话框的Com页面也应该会出现吧,vb.net编写dll我用vb6编的一些垃圾东西这里也能找到。
关于vb.net编写dll和vbs调用dll的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







