我正在做的是通过shellexecute命令执行批处理文件,现在我想要的是显示进度条或仅显示“正在进行”状态并禁用对话框上的所有其他控件。我们如何在MFC中实现这一目标。
目前我所做的只是使用 WaitForSingleObject(ShExecInfo.hProcess,INFINITE); ,它将我的应用程序显示为挂起(实际上),直到批处理文件完成。
答案 0 :(得分:1)
您需要创建一个管理执行批处理文件的工作线程,并在准备好时将消息发布到主(GUI)线程。
答案 1 :(得分:0)
ShellExecute
[Ex
]或CreateProcess
。按住流程句柄并在WaitForSingleObject
时间内致电INFINITE
。为了通知完成的窗口,您可能需要定义自定义消息代码:
#define WM_PROCESS_FINISHED (WM_APP + 10)
在消息循环或消息映射中写入WM_PROCESS_FINISHED
的条目。
在线程中,只需使用目标窗口的句柄和此消息代码调用PostMessage
(或SendMessage
):
PostMessage(hTargetWnd, WM_PROCESS_FINISHED);