使 MFC 模态(同步)

Posted

技术标签:

【中文标题】使 MFC 模态(同步)【英文标题】:Make MFC Modal (synchronous) 【发布时间】:2015-04-16 15:53:55 【问题描述】:

我创建了一个 MFC GUI 应用程序 (blah.exe),它运行良好。我需要在 powershell 脚本中使用它,并且我需要脚本等待 .exe 应用程序完成。但是 .exe 本身是异步运行的,即调用进程不会等待它完成。我该如何更改?

应用程序是在 Visual Studio 2010 中使用标准 MFC 应用程序向导创建的。

【问题讨论】:

当您从 PowerShell 启动应用程序时是否会退出,但如果您手动启动它可以正常工作?你是这么说的吗? 不管如何启动都会立即退出。我相信这是由 MFC gui 应用程序设计的。我想为我的应用程序更改它。我怀疑答案将是创建一个创建所有对话框的控制台应用程序,但想知道是否有更简单的方法。 问题是不是 exe 退出,它会继续运行直到对话框消失。问题是让powershell等待它。您可以使用任务管理器自己查看。 正确,我在使用术语时很草率。 exe进程当然会继续运行。但它是异步运行的——它与 powershell 无关。无论如何调用,行为都是一样的。 【参考方案1】:

您应该在 PowerShell 中使用以下命令启动您的应用程序:

Start-Process <path to exe> -NoNewWindow -Wait

【讨论】:

完美。谢谢。比更改 .exe 容易得多 @DavidI.McIntosh 您无法对 .exe 进行任何更改,从而导致您需要的行为。这就是答案。 @MarkRansom 您能否扩展您的评论或提供链接?我想明白。谢谢。

以上是关于使 MFC 模态(同步)的主要内容,如果未能解决你的问题,请参考以下文章

使用 MFC 同步对象的陷阱

自定义模态转换关闭动画运行不同步

如何在 MFC 中垂直同步两个列表控件

为啥 sequelize.sync() 不同步表,除非我将模态导入文件?

MFC——9.多线程与线程同步

MFC ResumeThread 和 std::condition_variable 等待后偶尔线程同步失败