当我想从DLL调用某些信息时,我被告知要使用CallWindowProc命令。但是,当我使用该命令时,我停留在hWnd部分。
这是代码:
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Declare Function d4868activatelog Lib "GSP_stdcall.dll" (ByVal filename As String, functstatus As String) As String
Dim lb As Long, pa As Long
Dim versionString As Long
Dim retValue As Long
Dim vb4868activateLog As Long
Dim vb4868closeLog As Long
Dim vb4868defineDataList As Long
Dim vb4868initProg As Long
Dim vb4868terminate As Long
Dim vb4868getDataListD As Long
Dim vb4868getDataListF As Long
Dim vb4868getDataListI As Long
Dim vb4868getUnits As Long
Dim vb4868isValidParamName As Long
Dim vb4868getErrorMsg As Long
Dim vb4868writeToLog As Long
Dim vb4868run As Long
Dim closeModel As Boolean
Dim loadModelAnsi As Boolean
Sub Foo()
'Load Library
lb = LoadLibrary("GSP_stdcall.dll")
gspMdfFilename = "TJET.mxl"
'start log file
vb4868activateLog = GetProcAddress(lb, "d4868activateLog")
'stop log file
vb4868closeLog = GetProcAddress(lb, "d4868closeLog")
'create a data set
vb4868defineDataList = GetProcAddress(lb, "d4868defineDataList")
'initialize DLL session
vb4868initProg = GetProcAddress(lb, "d4868initProg")
vb4868terminate = GetProcAddress(lb, "d4868terminate")
vb4868getDataListD = GetProcAddress(lb, "d4868getDataListD")
vb4868getDataListF = GetProcAddress(lb, "d4868getDataListF")
vb4868getDataListI = GetProcAddress(lb, "d4868getDataListI")
vb4868getUnits = GetProcAddress(lb, "d4868getUnits")
vb4868isValidParamName = GetProcAddress(lb, "d4868isValidParamName")
vb4868getErrorMsg = GetProcAddress(lb, "d4868getErrorMsg")
vb4868writeToLog = GetProcAddress(lb, "d4868writeToLog")
vb4868run = GetProcAddress(lb, "d4868run")
vb4868programInfo = GetProcAddress(lb, "d4868programInfo")
'Call the getVersion function'
If vb4868programInfo > 0 Then
about = CallWindowProc(vb4868programInfo, Me.hWnd, ByVal 0&, ByVal 0&)
Else
MsgBox "Programinfo is not loaded", vbOKOnly
End If
End Sub
Sub closeDll()
FreeLibrary lb
End Sub
当我想调试此代码时,我收到错误“关键字Me的无效使用”。我对CallWindowProc命令没有任何经验,对hWnd部分也是如此。我必须在那部分设置什么?当我不使用Me,但保留它时,VBA停止工作,所以我认为问题出在代码的那一部分。