方法是这样的:
首先 vb里一般的是用传地址的方式,来进行参数的传递的。
如果你要传值的话,要加上byval ,
其次和你在vb里面的定义也有很大的关系,
举个列子:
Public Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
比如setfiletime 在vb里的标准的定义是如上的,但是有时我们只想改lpLastWriteTime
,而这样也是允许的,那么就应该把lpLastAccessTime,lpCreationTime 的值传如0,
而用上面的定义是不可以的,所以就要改为:
Public Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, ByVal lpCreationTime As Long, ByVal lpLastAccessTime As Long, lpLastWriteTime As FILETIME) As Long
然后'''以下为VB代码
dim LastWT as FILETIME
dim HFile as long
HFile=......
LstWT.dwLowDateTime =97392
LstWT. dwHighDateTime=32545
Call SetFileTime(HFile,0,0,LstWT)
就可以了。
最后:
就是你在vc的dll里定义了一个什么样的结构,那么你在vb里面也定义一个相同的结构,
然后在vb里写函数定义的时候,用 MyMsg as MSG 而不要加byval.