当Windows挂钩处于活动状态时,如何防止Excel因错误而崩溃?

时间:2018-03-19 12:11:09

标签: vba excel-vba winapi excel

我使用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崩溃?

我在很多模块中使用它,而且我不想在任何地方进行错误处理。

0 个答案:

没有答案