gpt4 book ai didi

c# - 如何知道何时为表单显示消息框?

转载 作者:行者123 更新时间:2023-11-30 20:14:06 26 4
gpt4 key购买 nike

在我的应用程序中,我有一个在后台线程上运行的任务。当 UI 线程中显示 MessageBox 或任何模态对话框时,我需要在后台线程中发出通知。

虽然我可以通过在显示 MessageBox 之前调用一些函数来手动执行此操作,但如果我不必这样做,那就太好了。

例如:

backgroundThread.MessageShown(); // I do not want to call this explicitly every time!
MessageBox.Show("Task halted!");

我猜我可能有一些可以 Hook 的消息。即使在主 GUI 线程中,是否有任何消息/事件在显示模式对话框之前被触发?

好的,这是要求。我有一些任务是在 UI 线程上完成的,我必须在一个单独的对话框上显示进度,该对话框在工作线程上显示。我理解应该是必须在工作线程上完成的任务,但是目前的场景暂时不能改变。

一切正常,除了一个小故障 - 如果在 UI 线程中显示一个消息框,它会隐藏在进度对话框下方。所以用户永远不会知道 UI 正在等待输入。我需要一种方法来通知模式对话框已显示,我应该隐藏进度对话框。

现在,我必须在每次调用 MessageBox 之前显式隐藏它。

我希望能解释清楚。

最佳答案

设置 CBT Hook .然后您将收到所有已创建、激活、停用和销毁窗口的通知。然后使用 GetWindowClass 检查创建/激活的 hWnd 是否实际上是一个 MessageBox。

关于c# - 如何知道何时为表单显示消息框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/920164/

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