我有一個MFC應用程序,它生成一些報告並在GUI中顯示相同的內容。 我有一個需要運行它作爲控制檯應用程序,當通過某些命令行參數傳遞。 在控制檯模式下,它會在標準輸出/錯誤中生成報告/錯誤,我應該能夠將其重定向到任何文件。在運行時決定應用程序是控制檯/ windows子系統
For Ex。 C:/temp MyApp.exe --console > report.txt
應該在控制檯模式下運行我的exe文件並將所有輸出重定向到一個文本文件。 但是,如果我運行它沒有任何控制檯參數,它應該像一個默認的MFC應用程序。
爲了達到我的要求,到目前爲止,我所做的是,從Windows
改變了Linker > System > Subsytem
到Console
和 Linker > Advanced > Entry Point
所以現在添加WinMainCRTStartup
我的應用程序工作正常,當我從控制檯/批--console
參數運行文件。 但是,當我直接運行它,它仍然打開一個cmd窗口(當然,因爲它現在是一個控制檯應用程序)。但是,我使用FreeConsole()
方法來擺脫它,但它仍然閃爍一會兒。
所以我只是好奇,如果有一種方法來完全擺脫它,要麼通過在運行時決定應用程序的subsytem或任何其他技巧? 任何建議將不勝感激。
[我如何編寫可作爲控制檯或GUI應用程序運行的程序?](http://blogs.msdn.com/b/oldnewthing/archive/2009/01/01/9259142.aspx ) –
您可能想要考慮一個不會創建窗口的GUI程序。你可以將它作爲'C:\ temp \ MyApp.exe --outputfile report.txt'運行,因爲'>'shell重定向將不被支持。 – MSalters
@MSalters:通過命令處理器啓動應用程序時,無論應用程序的子系統如何,I/O流重定向都能正常工作。 – IInspectable