我正在用C++和原生Win32 API編寫程序。我正在靜音模式下從SFX歸檔EXE創建一個進程,不會向用戶顯示任何GUI。但我想在我的應用程序中顯示一個進度條,而SFX存檔提取。顯示進度條,同時提取SFX歸檔文件
我該怎麼做?
謝謝。
我正在用C++和原生Win32 API編寫程序。我正在靜音模式下從SFX歸檔EXE創建一個進程,不會向用戶顯示任何GUI。但我想在我的應用程序中顯示一個進度條,而SFX存檔提取。顯示進度條,同時提取SFX歸檔文件
我該怎麼做?
謝謝。
如果您創建的進程生成一些文本輸出到標準輸出,那麼您可能會以某種方式解析該輸出並顯示進度。要知道它是否,請在命令行窗口中激活它並觀察從中獲得的內容。
win32的CreateProcess()
允許您將進程的標準輸出重定向到管道。這樣,您可以在生產後立即收到輸出。
如果您創建的流程沒有以某種方式報告其進展,那麼您確實沒有太多的工作要做。您可以嘗試在文件大小和平均提取時間之間找到函數,然後僞造進度條。這將有助於輕鬆設置用戶的想法,但僅此而已。
- 編輯
只要在創建過程中CreateProcess()
的調用返回。 CreateProcess()
用它創建的進程的句柄填充struct PROCESS_INFORMATION
。它包含進程主線程的句柄。如果你想等待進程完成,你可以在該線程句柄上使用WaitForSingleEvent()
,該線程句柄在線程終止時發出信號。當你完成這些手柄時,請不要忘記CloseHandle()
。
好的,謝謝。還有一個問題,你知道如何在執行CreateProcess()函數後阻止進度條停止嗎?它鎖定了我的進程(這是我想要的,因爲我想在它終止後刪除執行的EXE)。 – frbry 2010-05-18 10:14:31
請參閱編輯。在這個網站上表達感謝的一種常見方式是提出答案,甚至接受它。 – shoosh 2010-05-18 10:56:37