以下链接中提到的全局VB6错误处理程序声称“在VBE6调试器中安装了一个小回调钩子”:
http://www.everythingaccess.com/simplyvba/globalerrorhandler/howitworks.htm
我想自己实现这个产品,因为我想更好地控制它的功能。以上产品可能是如何实现其功能的?http://www.everythingaccess.com/simplyvba/globalerrorhandler/howitworks.htm
我想自己实现这个产品,因为我想更好地控制它的功能。以上产品可能是如何实现其功能的?procmon
,在DLL上運行regsvr32
,並通過創建的註冊表項目找出實現的組件類。一旦您知道了這一點,MSDN可能能夠告訴您哪些接口對應於這些組件類。IApplicationDebugger
的COM组件IApplicationDebugger::onHandleBreakPoint
以便能够响应VB代码中的错误onHandleBreakPoint
回调到VB看起来该产品使用IActiveScript::AddNamedItem
注入了ErrEx
类。为了提供相同的行为,在同一COM组件上实现IActiveScriptSite::GetItemInfo
,返回指向实现与ErrEx
相同接口的COM组件实例(及其关联的TypeInfo
)的指针。在您的ErrEx.EnableGlobalErrorHandler
实现中,您需要执行以下操作:
CoCreateInstance
inproc进程调试管理器IRemoteDebugApplication
IRemoteDebugApplication::ConnectDebugger
注册您的IApplicationDebugger
组件的实例我略过了调用IActiveScript::AddNamedItem
,因为我不知道如何从运行中的进程获取指向IActiveScript
的指针。此外,我不知道创建进程调试管理器的新实例是否有效,或者您是否必须钩入现有实例。
对于混乱的解释、缺失的信息和忽略了大部分过程,我深感抱歉,但这是很久以前的事情了...
您需要阅读MSDN上的Active Scripting APIs文章。