Thanks Trick for the hooking function of these API. I added a few more by guessing.
Is there any way to list the parameters for these procedures, from the vba6 dll module?
For example I guessed that SetModuleName had a param for the name, and it works, but otherwise it crashes with any other params. Thanks again!
Is there any way to list the parameters for these procedures, from the vba6 dll module?
For example I guessed that SetModuleName had a param for the name, and it works, but otherwise it crashes with any other params. Thanks again!
Code:
pfnTipSetModuleName = GetProcAddress(hVba, "TipSetModuleName")
If pfnTipSetModuleName = 0 Then Exit Function
If Not HookFunction(pfnTipSetModuleName, AddressOf TipSetModuleName_user) Then
Exit Function
End If
pfnTipDeleteModule = GetProcAddress(hVba, "TipDeleteModule")
If pfnTipDeleteModule = 0 Then Exit Function
If Not HookFunction(pfnTipDeleteModule, AddressOf TipDeleteModule_user) Then
Exit Function
End If
pfnTipCompileModule = GetProcAddress(hVba, "TipCompileModule")
If pfnTipCompileModule = 0 Then Exit Function
If Not HookFunction(pfnTipCompileModule, AddressOf TipCompileModule_user) Then
Exit Function
End If
Code:
Public pfnTipCompileModule As Long
Public pfnTipSetModuleName As Long
Public pfnTipDeleteModule As Long
Public Function TipSetModuleName_user(ByVal pVBProjectNative As Long, ByVal lpName As Long) As Long '
On Error GoTo error_handler
PauseHook pfnTipSetModuleName
TipSetModuleName_user = CallByPointer(pfnTipSetModuleName, vbLong, pVBProjectNative, lpName)
ResumeHook pfnTipSetModuleName
Exit Function
error_handler:
ErrorLog "modCallBack::TipSetModuleName_user"
End Function
Public Function TipDeleteModule_user(ByVal pVBProjectNative As Long) As Long '
On Error GoTo error_handler
PauseHook pfnTipDeleteModule
MsgBox " deleting module: " & " " & pfnTipDeleteModule
TipDeleteModule_user = CallByPointer(pfnTipDeleteModule, vbLong, pVBProjectNative)
ResumeHook pfnTipDeleteModule
Exit Function
error_handler:
ErrorLog "modCallBack::TipDeleteModule_user"
End Function
Public Function TipCompileModule_user(ByVal pVBProjectNative As Long) As Long
On Error GoTo error_handler
PauseHook pfnTipCompileModule
' MakeEvent pVBProjectNative, "CompBefore"
TipCompileModule_user = CallByPointer(pfnTipCompileModule, vbLong, pVBProjectNative)
MsgBox " compile Module: " & TipCompileModule_user
'MakeEvent pVBProjectNative, "CompAfter"
ResumeHook pfnTipCompileModule
Exit Function
error_handler:
ErrorLog "modCallBack::TipCompileModule_user"
End Function