gpt4 book ai didi

c++ - MessageBox 超时或从另一个线程关闭 MessageBox

转载 作者:可可西里 更新时间:2023-11-01 13:27:59 26 4
gpt4 key购买 nike

如果我的应用程序崩溃,我会使用 ExceptionFilter 来捕获崩溃,执行一些最终操作,然后向用户显示应用程序已崩溃的消息框。

因为应用程序已经崩溃,我能(或不敢)做的事情不多,因为如果我做的太多,执行的代码可能会访问损坏的内存并再次崩溃。我目前不能做(或不敢做)的一些事情是关闭网络连接、Oracle 数据库 session 、...

问题是,如果应用程序崩溃,并且 MessageBox 打开时用户外出吃午饭,其他用户可能会因为打开的数据库 session 而被阻止。因此我想要:

  • 要么是一个带有超时的 MessageBox。问题是你不能用标准的 MessageBox Win32 API 函数来做这个,我不想为它做一个特定的对话框(因为我想在崩溃后最小化执行的逻辑)
  • 或者从另一个线程关闭 MessageBox 的可能性(另一个线程可以提供超时逻辑)。

我是否忽略了 Win32 API 中的某些内容,是否有可能使用超时的 MessageBox?

或者从另一个线程关闭打开的 MessageBox 的正确方法是什么(如何获取 MessageBox 句柄,如何关闭它,...)?

最佳答案

虽然我同意产生一个新进程来显示一个即发即弃对话框可能是最好的,FWIW 实际上有一个超时消息框函数从 XP 及更高版本的 user32 导出; MessageBoxTimeout (由 WShell.Popup() 之类的东西使用)

关于c++ - MessageBox 超时或从另一个线程关闭 MessageBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3091300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com