2015-08-29 16 views
0

我在寫一個小應用程序(.exe),它執行一些任務,然後返回退出狀態。它意味着從另一個應用程序(我無法控制)定期運行,它使用狀態代碼來確定進一步的操作。如何編寫一個Windows應用程序不會立即釋放控制到調用應用程序

它工作得很好,如果我編譯和鏈接它作爲控制檯應用程序。但是,這使得控制檯窗口在每次運行時都會在屏幕上短暫閃爍,這有點煩人。我試圖讓它成爲一個Windows應用程序,但問題是Windows在啓動後立即釋放對調用應用程序(或操作系統)的控制權。因此,我的應用程序生成的任何退出狀態都會返回,並且調用應用程序從不會看到它。

有沒有辦法強制我的應用程序停留在前臺,可以這麼說,並且在它實際退出之前不釋放控制權?我試圖強制入口點成爲「主」功能而不是「WinMain」,但這並沒有幫助。

+2

我很確定有必要在調用應用程序中設置選項以防止子進程無控制檯啓動。你不能從被調用的進程端做到這一點。如果我錯了,我很樂意知道它。 – Gene

回答

1

這不是兒童是否「釋放控制」的問題 - Windows是一個搶先式多任務操作系統,因此所有進程立即運行。如果父進程等待孩子退出,那是因爲程序員告訴它等待孩子退出。

讓程序等待控制檯程序並不容易,但不是非控制檯程序。命令行(cmd.exe)以交互方式運行時以此方式工作,但據我所知,沒有任何API能夠執行此操作。假設它不是故意的 - 在這種情況下這很奇怪 - 我能想到的唯一解釋是程序正在運行交互式命令shell並通過標準輸入提供命令。這是錯誤的做法,但我看到人們試圖這樣做之前。

大概你可以選擇父母執行的命令行。試試這個:

start /wait myapp.exe 

(那你會怎麼做,在一個交互式命令shell)

如果不工作,你可能要請教請教父進程的作者。

相關問題