我在做的是通過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);