2010-03-11 124 views
4

我想在運行我的應用程序時隱藏C的控制檯。我如何讓我的應用程序在後臺運行?在Windows操作系統中隱藏C程序的控制檯

+0

我的應用程序包含許多不同的過程,這些過程是爲了充分滿足用戶的功能。但用戶只與主GUI交互,所以我想隱藏所有其他進程。 – Siddiqui 2010-03-11 04:02:45

回答

5

main()默認程序被編譯爲子系統:控制檯應用程序,並得到一個控制檯窗口。如果您擁有自己的應用程序啓動等過程,你可以對其進行修改通過下面的方法之一是窗口應用程序:

  • 修改他們使用WinMain(),而不是main()。這是典型的方法,但需要修改代碼。 (如果使用main()的原因是容易獲得argc/argv,MSVC提供全球__argc/__argv當量爲窗口應用程序。)
  • 明確經由/SUBSYSTEM:WINDOWS /ENTRY:main參數指定子系統和入口點link.exe
  • 使用editbin.exe改變事後子系統類型。如果您沒有源代碼訪問產生的進程,這個可能很有用。
+0

謝謝你的幫助。 – Siddiqui 2010-03-12 10:55:53

+0

對於GCC,-mwindows類似於/ SUBSYSTEM:WINDOWS – a3f 2015-01-06 23:16:23

2

要做到這一點最簡單的方法是使用Windows窗體的項目,而不是控制檯,然後隱藏啓動窗體。當然,另一種選擇是一個Windows服務,但如果我沒有記錯,有沒有辦法做到這一點編程,這可能是矯枉過正...

+0

你的答案就像我的。 +1。 – 2010-03-11 04:05:19

0

。有選項可以做到這一點。我想我已經通過創建一個Windows項目來完成它,但沒有Windows Forms代碼(我只包括來自我的控制檯應用程序的文件)。沒有控制檯窗口彈出。我相信我曾在Code::Blocks中通過更改GUI中的選項來完成它。我很抱歉,我不能具體說明,但我正在使用Visual Studio 2010 RC,我在那裏做的方式可能與您的不一樣。

你的評論讓我覺得,你在產卵過程。你通過你所調用的功能來做到這一點。我不知道你在用什麼語言(我會假設C,因爲你說你啓動了一個你創建的C應用程序?),但是有一個標誌可以隱藏窗口或者不要設置爲不顯示它)或使用可替代的功能來執行相同的操作,但會以不同的方式啓動該過程。嘗試shellexecute和system()。

0

使用CreateProcessDETACH_PROCESS標誌。

相關問題