GUI 在运行静默应用程序 VC++ 时被阻止
Posted
技术标签:
【中文标题】GUI 在运行静默应用程序 VC++ 时被阻止【英文标题】:GUI blocked while running silent app VC++ 【发布时间】:2010-02-18 10:22:09 【问题描述】:我已经用 C++(Windows XP、visual c++ 2008)构建了一个 GUI 界面。在那里您可以配置一些参数,当我单击“确定”按钮时,将启动一个静默应用程序(并使用设置的值)。当我这样做时,如果您切换到其他窗口,GUI 会冻结甚至消失(它仍然存在,但您只能看到一个空白区域),当其他应用程序完成时,GUI 再次工作。
这是正确的行为,我不希望用户能够编辑字段......但是当你看不到 GUI 时它有点难看。有人知道切换到其他窗口并在切换回来时能够看到 GUI 的简单方法吗?
提前致谢
已编辑:
嗨,我试过这样做,但问题是要在后台运行应用程序,我有一个使用 CreateProcess 的函数。所以 GUI 冻结的两种方式:如果我创建一个创建进程的线程,以及如果我直接创建进程。
然后我等待过程完成:
if (!CreateProcess(NULL, Args, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &StartupInfo, &ProcessInfo)) 返回 GetLastError(); WaitForSingleObject(ProcessInfo.hProcess, INFINITE); if(!GetExitCodeProcess(ProcessInfo.hProcess, &rc)) rc = 0;
有什么想法吗?
【问题讨论】:
【参考方案1】:在第二个线程中启动外部应用程序,并通过模式弹出窗口阻止您的主线程。在模态弹出窗口中,使用计时器定期检查第二个线程是否已经完成,如果完成则关闭它。
作为奖励,您可以在模式弹出窗口中显示花费的时间。
【讨论】:
以上是关于GUI 在运行静默应用程序 VC++ 时被阻止的主要内容,如果未能解决你的问题,请参考以下文章
iphone - 如何防止应用程序在下载数据时被阻止[关闭]
如果第三方 cookie 被阻止,则使用 oidc-client 跨域进行静默续订