入门问题:VB中如何使用DLL?
解决方案 »
- 急求,急求Mideva 4.5软件下载,求各位帮助,万分感谢
- 请教如何得到登陆时得到几个参数
- 申请版主有没有什么苛刻的要求啊,我可不可以申请啊,如果可以的话把VB多媒体的哪个小版主的帽子给我好吗?
- 如何将文本和图片做成一个可播放的类型
- 请问如何动态加载控件
- 很菜的问题。怎么样在edit框里里加一幅图片??
- 检测用户名及密码(区分大小写),如何实现?THANKS
- 请问如何使得mschart控件在出现较多数据时产生横向滚动条
- 两个日期如何进行计算??
- 打好包的VB程序,安装时报错!!!
- ACCESS数据库:关于表纪录的删除问题:(见内容)(waiting...解决马上给分)
- 请问那里有DIRECTSHOW开发的VB例程!或技术文档
如果弹出"dll调用约定错误"说明该dll不是__stdcall调用约定,vb中不可使用
上面的函数在vb中可声明为
public declare function Send Lib "xxx.dll" (byval nReply as long ,byval nMsg as long,byval sID as string)as long
注意:vc中的int和long类型都相当于vb中的long,vc中的short相当于vb中的integer
char*相当于vb中的string,不过string必须以byval的形式传递
如果是标准的dll如果系统dll文件(如shell32.dll一般都是)
你需要以
<Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long>
这种方式调用
如果是activexdll,vb只能编写这样的dll
你可以这样调用
<
按菜单里的 工程-引用,再点击浏览把.DLL引用进来,就可以使用DLL文件的方法和属性了
>
然后 dim一个对象
在set obj=new 对象
然后就可以使用他的成员
C语言与VB的数据类型对照
c vb
LPSTR String
NULL String
Char Byte
Int Long(32位环境下)
句柄 Long
值传递:
当通过值传递一个参数时,将参数的值的拷贝传递给过程。如果在过程中改变了参数的值,它不会影响原始变量。
引用传递(VB缺省):
当通过引用传递一个参数时,将参数的地址传递给过程。如果在过程中改变了参数的值,原始变量的值也被修改。
在C语言中字符串变量实际上是一个地址。所以在VB中即使声明一个字符串变量值传递,也会把地址传给DLL过程,即:源变量的值会随着DLL过程中的对应参数改变而改变。
在C语言中空字符串用NULL,即0来表示。在VB中则不能把0作为传给一个String类型的参数,需要使用vbNullString常量来表示空字符串。
例:
hWnd=FindWindow(vbNullString,"Microsoft Word")
FindWindow是系统DLL的一个过程。
DLL的接口声明是这样的:UINT Dll_Send(char *strsca,char *strnum, char *strtxt);
我在VB中如下声明:
Public Declare Function Dll_SMS_Send Lib "Mddll.dll" (ByVal strsca As String, ByVal strnum As String, ByVal strtxt As String) As Long 运行时出现“DLL调用约定错误”的提示。