在控制台程式中隱藏控制台視窗

2021-09-05 14:49:32 字數 1827 閱讀 6182

因為此種方法是通過設定編譯器的鏈結開關來實現,所以讓我們來看一下編譯

器的鏈結開關選項(也就是linker選項).

首先我們來看一下linker的 /subsystem 選項

這個鏈結選項告訴作業系統如何執行可執行檔案

console:

win32 字元模式應用程式,此種型別的應用程式在執行的時候會產生乙個類似dos

視窗的控制台視窗,如果在應用程式的主函式為main()或者wmain(),在預設情況下

該應用程式就是乙個控制台應用程式

native;

裝置驅動器選項,如果/driver:wdm選項被設定的話,該鏈結選項(native)就為預設選項

posix:

在windows nt 種執行在posix子系統上的應用程式

windowsce:

執行在windows ce上的應用程式

major and minor (optional):

主版本號和次版本號,該選項為可選,該選項為0~65535之間的十進位制整數

接下來我們再看看應用程式是如何執行的!

我們知道用vc編寫的程式,執行的時候是需要 c\c++執行庫支援的.當我們執行乙個c/c++程式的時候

鏈結器會首先尋找應用程式的啟動函式,例如:

如果你建立了乙個console程式的話,編譯器得鏈結開關會是以下這種形式

/subsystem:"console" /entry:"maincrtstartup"   (ansi)

/subsystem:"console" /entry:"wmaincrtstartuup" (unicode)

上面的兩種形式可以再project->setting->link->project option中看到

上面的subsystem和entry並不需要都設定,如果你只設定了/subsystem:"console"

的話,那麼預設的entry開關在預設情況下應為/entry:"maincrtstartup"

反之,如果你在應用程式中定義了main函式的話,預設情況下,你的/subsystem開關

應該為/system:"console"

在預設情況下/subsystem 和/entry開關是匹配的,也就是

console對應maincrtstartup或者wmaincrtstartup

windows對應winmain或者wwinmain

但是我們也可以通過手動改動的方式使他們不匹配

例如我們可以這樣改動

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"maincrtstartup\"" ) // 設定入口位址

int main(int argc, char* argv)

在預設情況下鏈結器看到/subsystem下是windows選項的時候,它會自動尋找winmain或者wwinmain

但我們強制指定入口位址,這樣執行程式的時候預設的console視窗就會隱藏!

上面是在**中使用#pragma指令來設定,還有一種就是直接在開發環境的

project->setting->link->project option中手工改動!

作者blog:

csdn 網友

( 2005-01-30)

如果不想顯示控制台視窗,那麼直接用winmain就可以了嘛

silentne

( 2004-12-16)

還可以這樣

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"main\"" )

在控制台程式中隱藏控制台視窗

因為此種方法是通過設定編譯器的鏈結開關來實現,所以讓我們來看一下編譯 器的鏈結開關選項 也就是linker選項 首先我們來看一下linker的 subsystem 選項 這個鏈結選項告訴作業系統如何執行可執行檔案 console win32 字元模式應用程式,此種型別的應用程式在執行的時候會產生乙個...

在控制台程式中隱藏控制台視窗

因為此種方法是通過設定編譯器的鏈結開關來實現,所以讓我們來看一下編譯 器的鏈結開關選項 也就是linker選項 首先我們來看一下linker的 subsystem 選項 這個鏈結選項告訴作業系統如何執行可執行檔案 console win32 字元模式應用程式,此種型別的應用程式在執行的時候會產生乙個...

C 中呼叫控制台程式時隱藏控制台視窗

有時我們在呼叫控制台程式時,不希望看到控制台視窗,在c 中可以通過以下方法實現 processstartinfo startinfo new processstartinfo e helloworld.exe startinfo.createnowindow true 不建立視窗 startinfo...