2009-07-03 19 views
1

如何獲得過程的返回值?基本上,我是** ShellExecute()**從DLL(使用C++)進行.NET進程。該過程完成其任務,但現在我想知道它是成功還是失敗。如何在WinAPI或MFC中做到這一點?過程的返回值

回答

2

改爲使用ShellExecuteEx,以便您可以獲得已啓動過程的句柄。然後,您應該可以使用GetExitCodeProcess獲取退出代碼。

在(我在這裏儘管MSalters類似一個離開了這個答案,因爲我懷疑你使用ShellExecute故意讓殼的行爲,而不是明確的創建過程。)

5

使用CreateProcess()。保持進程句柄並在進程句柄變成信號時調用GetExitCodeProcess()。

0

的ShellExecute()其本地是16位調用,所以它不打算給反饋/回調,雖然你可以saerch線程/進程/內存地址(如果你找到可用的內存空間)及其標誌(如果沒有這樣的事情,血腥旗幟,WinAPI(32位)將比現在簡單得多)。 要提供完整的反饋,您可以嘗試使用純粹的32位函數的擴展版本或CreateProcess()函數。 Unfourtinately我不能給你任何有關標誌/ Lparameters和其他API參數的詳細信息。

此外,主要是所有執行函數/程序/方法返回布爾值,因此您始終可以以[if..then]語句作爲返回提供者開始。

奧普斯,當我寫這篇文章的時候,已經有三個答案了。