C++ 如何捕获C+中的每个异常+/窗户?

C++ 如何捕获C+中的每个异常+/窗户?,c++,winapi,exception-handling,dll-injection,C++,Winapi,Exception Handling,Dll Injection,我有一个DLL,它被注入到非常旧的、有缺陷的、现在不受开发人员应用程序支持的程序中。有时,应用程序会崩溃,我需要一些方法来捕获所有未处理的异常(来自DLL),这些异常可能发生在保存数据时,然后才允许应用程序崩溃。我怎样才能做到这一点 目前,有一个用于此目的的外部调试器,但它太慢,而且有缺陷,无法保持这种状态。您必须启动一个承载DLL的新进程。如果DLL要崩溃,不管你喜欢与否,它都会使进程停止。当然,您可以尝试捕获异常或类似的情况,但如果抛出异常,则意味着内存已损坏 windows外壳程序实际上就

我有一个DLL,它被注入到非常旧的、有缺陷的、现在不受开发人员应用程序支持的程序中。有时,应用程序会崩溃,我需要一些方法来捕获所有未处理的异常(来自DLL),这些异常可能发生在保存数据时,然后才允许应用程序崩溃。我怎样才能做到这一点


目前,有一个用于此目的的外部调试器,但它太慢,而且有缺陷,无法保持这种状态。

您必须启动一个承载DLL的新进程。如果DLL要崩溃,不管你喜欢与否,它都会使进程停止。当然,您可以尝试捕获异常或类似的情况,但如果抛出异常,则意味着内存已损坏


windows外壳程序实际上就是这样做的——它在代理过程中启动一些插件,因此如果插件崩溃,它不会导致整个外壳崩溃。您需要使用进程间通信来与启动的代理进行通信。

您必须启动承载DLL的新进程。如果DLL要崩溃,不管你喜欢与否,它都会使进程停止。当然,您可以尝试捕获异常或类似的情况,但如果抛出异常,则意味着内存已损坏


windows外壳程序实际上就是这样做的——它在代理过程中启动一些插件,因此如果插件崩溃,它不会导致整个外壳崩溃。您需要使用进程间通信来与启动的代理进行通信。

对不起,我想让主应用程序在崩溃前保存数据,而不是防止它崩溃。@uber:“保存数据”是“继续运行”——您如何知道崩溃的组件没有破坏您要保存的数据?(一个野生指针终究会覆盖你自己的数据)当你的用户发现你的程序崩溃的东西现在已经破坏了他们在磁盘上的工作时,他们肯定不会高兴。被破坏的工作从来都不是一件好事,不管是在磁盘上还是在内存中。你想存尽可能多的钱。这里有两种简单的方法:早期保存、经常保存,以及不要将工作副本保存在原始文档上。对不起,我想让主应用程序在崩溃之前保存数据,而不是防止它崩溃。@uber:“保存数据”是“继续运行”--您如何知道崩溃的组件没有销毁您要保存的数据?(一个野生指针终究会覆盖你自己的数据)当你的用户发现你的程序崩溃的东西现在已经破坏了他们在磁盘上的工作时,他们肯定不会高兴。被破坏的工作从来都不是一件好事,不管是在磁盘上还是在内存中。你想存尽可能多的钱。这里有两个简单的技巧:尽早保存,经常保存,不要将工作副本保存在原始文档上。很抱歉,刚刚找到了解决方法。这是我需要的。对不起,我刚刚找到了解决办法。这就是我需要的。