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