在VBA中加载DLL的函数

当我想从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 

当我想debugging这个代码时,我得到了错误“无效的关键字我使用”。 我没有任何有关CallWindowProc命令的经验,我也使用hWnd部分。 我必须在那部分设定什么? 当我不使用Me的时候,但是说白了,VBA停止工作,所以我认为问题出在代码的那一部分。