我使用setWindowHookEx并且工作正常:
Private HookHandle As LongPtr
Sub RemoveHook()
UnhookWindowsHookEx HookHandle
End Sub
Sub SetHook()
Dim lThreadID As LongPtr
lThreadID = GetCurrentThreadId
HookHandle = SetWindowsHookEx(WH_MOUSE, AddressOf foo, 0, lThreadID)
End Sub
Public Function foo(ByVal nCode As LongPtr, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
foo = CallNextHookEx(0, nCode , wParam, lParam)
End Function
我的问题是:当任何未处理的错误(来自任何其他宏)发生,并且我必须结束宏时,Excel崩溃并死亡。 (我猜,那个钩子还活着,但是foo函数不再存在于内存中)
有没有办法阻止Excel崩溃?
我在很多模块中使用它,而且我不想在任何地方进行错误处理。