我在做的是通过shellexecute命令执行一个批处理文件,现在我想要的是显示一个进度条或只是一个状态为“进行中”并禁用所有对话框中的其他控件。我们如何在MFC中实现这一点。当shellexecute命令在MFC中执行批处理文件时显示进度条
目前我所做的只是使用WaitForSingleObject(ShExecInfo.hProcess,INFINITE);直到批处理文件结束时才显示我的应用程序被挂起(而不是实际)。
我在做的是通过shellexecute命令执行一个批处理文件,现在我想要的是显示一个进度条或只是一个状态为“进行中”并禁用所有对话框中的其他控件。我们如何在MFC中实现这一点。当shellexecute命令在MFC中执行批处理文件时显示进度条
目前我所做的只是使用WaitForSingleObject(ShExecInfo.hProcess,INFINITE);直到批处理文件结束时才显示我的应用程序被挂起(而不是实际)。
您需要创建一个工作线程来管理执行批处理文件,并在准备就绪时将消息发布到主(GUI)线程。
ShellExecute
[Ex
]或CreateProcess
。保持过程的句柄并用INFINITE
时间呼叫WaitForSingleObject
。为了通知完成的窗口,您可能需要定义一个自定义消息代码:在消息循环,或消息映射为WM_PROCESS_FINISHED
#define WM_PROCESS_FINISHED (WM_APP + 10)
写条目。
从线程,只需要调用与目标窗口的句柄PostMessage
(或SendMessage
)和该消息的代码:
PostMessage(hTargetWnd, WM_PROCESS_FINISHED);