读书人

VB传递参数给dll,该怎么处理

发布时间: 2012-02-06 15:52:44 作者: rapoo

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。

读书人网 >VB

热点推荐