在Visual Studio中按下"停止调试"按钮时拦截信号/事件
Intercept signal / event when 'Stop Debugging' button is pressed in Visual Studio
背景:我正在为API编写一个QA自动化平台,该平台将格式化的结果输出到指定的目录。此外,我还开发了一个GUI应用程序来分析这些结果。当我们的自动构建系统正在运行修改/生成新的测试数据的第一应用程序时,用户可以运行第二应用程序来尝试分析测试结果。为了避免混乱,我让每个应用程序在进行修改时获取文件锁,并在修改完成后释放它们。在正常程序终止时,如果正在运行的应用程序获取了数据目录上的锁定,则释放该锁定。
问题:当任何一个工具过早存在时(用户按下CTRL-C,用户在调试器中停止应用程序,或由于测试API/应用程序逻辑有缺陷),我需要能够释放上述文件锁。为了处理这个问题,我使用sigaction实现了一个信号处理程序,它处理拦截致命信号(经过测试和工作),并通过Win32函数SetConsoleCtrlHandler实现了ctrl-c处理程序。但是,我似乎找不到一种方法来拦截用户在Visual Studio中按下停止调试按钮的事件。我认为这个事件会生成类似SIGKILL/SIGSTOP的东西(不能通过sigaction处理),但我也希望有一些std库或Win32功能来拦截这个事件并执行一些清理。你们知道处理这个事件的方法吗?甚至知道这个按钮到底是用来杀死正在运行的应用程序的吗?
如果使用boost,则可以使用boost::interprocess::windows_shared_memory。
它保证在流程结束时发布。
在这种情况下,Boost只是windows API的一个巧妙包装。它包装Windows命名共享内存API。
相关文章:
- 如何通过拖动鼠标QT检查按钮?鼠标移动事件
- 在 Qt 中将 x 可执行文件作为按钮事件运行时出错
- 什么可能导致低级鼠标挂钩错过按钮启动事件?
- 将事件处理程序添加到C 中的按钮
- 按下按钮时没有事件捕获[QT]
- Qt C++单击按钮的事件
- 事件仅在单击按钮时检查
- SDL 按钮/事件停止工作
- 如何在从主窗口事件处理程序调用后在子窗口中创建按钮
- 如何将事件放在c++中的QButtonGroup按钮上
- 对按钮事件执行功能
- 是否可以在 MFC 按钮控件上检测到鼠标右键单击事件
- 如何检测全局鼠标按钮事件
- 如何处理塞班C++中的绿键(呼叫按钮)事件
- 事件类型设置为SDL_MOUSEBUTTONDOWN,即使在未按下任何按钮时也是如此
- 在Visual Studio中按下"停止调试"按钮时拦截信号/事件
- 如何处理非客户端区域的按钮事件
- 按钮事件处理程序
- MFC 中动态创建的按钮事件在单击按钮后不会触发
- 使用Qt设计器的Qt按钮事件不起作用:"No such slot QApplication"