2013-03-26 83 views
2

我在做的是通過shellexecute命令執行一個批處理文件,現在我想要的是顯示一個進度條或只是一個狀態爲「進行中」並禁用所有對話框中的其他控件。我們如何在MFC中實現這一點。當shellexecute命令在MFC中執行批處理文件時顯示進度條

目前我所做的只是使用WaitForSingleObject(ShExecInfo.hProcess,INFINITE);直到批處理文件結束時才顯示我的應用程序被掛起(而不是實際)。

回答

1

您需要創建一個工作線程來管理執行批處理文件,並在準備就緒時將消息發佈到主(GUI)線程。

0
  • 只要用戶啓動操作 - 禁用所有控件(所有需要的控件)。並啓動一個線程。
  • 該線程將調用ShellExecute [Ex]或CreateProcess。保持過程的句柄並用INFINITE時間呼叫WaitForSingleObject
  • 只要WFSO返回,通知窗口(對話框,表單 - 無論如何),該過程已完成。
  • -

爲了通知完成的窗口,您可能需要定義一個自定義消息代碼:在消息循環,或消息映射爲WM_PROCESS_FINISHED

#define WM_PROCESS_FINISHED (WM_APP + 10) 

寫條目。

從線程,只需要調用與目標窗口的句柄PostMessage(或SendMessage)和該消息的代碼:

PostMessage(hTargetWnd, WM_PROCESS_FINISHED);