VB传递参数给dll
Dll是用VC写的, 其函数原型为:
extern "C" BOOL PASCAL EXPORT StarConventionCheck(LPVOID strarTime,LPVOID overtime,BOOL isTimeFlag )
我用VB传参数是这们传的:
Public Declare Function StarConventionCheck Lib "NetInf.dll" (StartTime As String, EndTime As String, ByVal isTimeFlag As Integer) As Long
[b][/b]Private Sub cmdCheckComHis_Click()
Dim Return_RevComm As Long
Dim hwnd_lng As Long
Dim StartTime As SYSTEMTIME
Dim EndTime As SYSTEMTIME
Dim Byte_BeginTime(64) As Byte
Dim Byte_EndTime(64) As Byte
Dim FileTime_BeginTime As FILETIME
Dim FileTime_EndTime As FILETIME
With StartTime
.wYear = CheckBeginData.Year
.wMonth = CheckBeginData.Month
.wDay = CheckBeginData.Day
.wHour = 0
.wMinute = 0
.wSecond = 0
.wMilliseconds = 0
End With
With EndTime
.wYear = CheckEndData.Year
.wMonth = CheckEndData.Month
.wDay = CheckEndData.Day
.wHour = 24
.wMinute = 0
.wSecond = 0
.wMilliseconds = 0
End With
SystemTimeToFileTime StartTime, FileTime_BeginTime
SystemTimeToFileTime EndTime, FileTime_EndTime
Call CopyMemory(Byte_BeginTime(0), FileTime_BeginTime, 64)
Call CopyMemory(Byte_EndTime(0), FileTime_EndTime, 64)
Return_RevComm = StarConventionCheck(Byte_BeginTime(0), Byte_EndTime(0), 1)
End Sub
VB一调用时就会异常,请求高手出现...
[解决办法]
第三个参数改成Long是可以的,传0和1。
前两个参数传首地址的话,也可以改成Long,前面加上Byval。