去掉控制台程序的黑框框
有時候寫的console的程序有時候只想讓它運行,
彈個黑框框 , 挺尷尬的.況且有些代碼想在偷偷的執行
這時候就需要一些小技巧了
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")//不顯示窗口本來想著記錄這個操作大,發現了更好的博文
以下全文引用 原博文鏈接
眾所周知,控制臺應用程序一般都會顯示一個控制臺窗口(虛擬DOS窗口),但很多時候控制臺程序的執行邏輯根本不需要與用戶進行交互,所以顯示這個難看的窗口純屬多余,那么如何將它屏蔽掉呢?下面我向大家介紹一種方法。
操作系統裝載應用程序后,做完初始化工作就轉到程序的入口點執行。程序的默認入口點實際上是由連接程序設置的,不同的連接器選擇的入口函數也不盡相同。在VC下,連接器對控制臺程序設置的入口函數是 mainCRTStartup,mainCRTStartup 再調用你自己編寫的 main 函數;*對圖形用戶界面(GUI)程序設置的入口函數是 WinMainCRTStartup*,WinMainCRTStartup 調用你自己寫的 WinMain 函數。
具體設置哪個入口點是由連接器的“/subsystem:”選項參數確定的,它告訴操作系統如何運行編譯生成的.EXE文件。可以指定四種方式:“CONSOLE|WINDOWS|NATIVE|POSIX”如果這個選項參數的值為“WINDOWS”,則表示該應用程序運行時不需要控制臺,有關連接器參數選項的詳細說明請參考 MSDN 庫。
下面我們將通過預編譯指令來對編譯器和連接器進行設置,從而達到我們的目的:例子代碼運行后播放Windows系統啟動聲音三次,然后退出,運行后不會顯示控制臺窗口。
在 IDE 環境中新建一個空的控制臺程序,將上述代碼添加到工程中,編譯運行。
【注意】/*** *mainCRTStartup(void) *wmainCRTStartup(void) *WinMainCRTStartup(void) *wWinMainCRTStartup(void) * *Purpose: *These routines do the C runtime initialization, call the appropriate *user entry function, and handle termination cleanup.For a managed*app, they then return the exit code back to the calling routine, which *is the managed startup code. For an unmanaged app,they call exit and *never return. * * Function: User entry called: * mainCRTStartup main * wmainCRTStartup wmain * WinMainCRTStartup WinMain * wWinMainCRTStartup wWinMain * * *******************************************************************************/總結
以上是生活随笔為你收集整理的去掉控制台程序的黑框框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漏洞战争软件漏洞分析精要 学习笔记
- 下一篇: STM32F1x 逆向工程初步