最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在VC中隱藏控制臺程序窗口的實現(xiàn)代碼

 更新時間:2013年04月11日 09:59:06   作者:  
大家都知道,當(dāng)編寫一個win32 console application時,當(dāng)運行此類程序的時候默認(rèn)情況下會有一個類似dos窗口的console窗口,但是有的時候我們只想在程序中運行一段功能代碼,不希望顯示這個console窗口,讓代碼執(zhí)行完畢之后程序自動退出

下面就介紹一下,如何隱藏win32 console application的console窗口
因為此種方法是通過設(shè)置編譯器的鏈接開關(guān)來實現(xiàn),所以讓我們來看一下編譯
器的鏈接開關(guān)選項(也就是linker選項).
首先我們來看一下linker的 /subsystem 選項
該選項的語法形式如下:

/subsystem:{console|efi_application|efi_boot_service_driver|
efi_rom|efi_runtime_driver|native|posix|windows|windowsce}
[,major[.minor]]

這個鏈接選項告訴操作系統(tǒng)如何運行可執(zhí)行文件
console:
win32 字符模式應(yīng)用程序,此種類型的應(yīng)用程序在運行的時候會產(chǎn)生一個類似dos
窗口的控制臺窗口,如果在應(yīng)用程序的主函數(shù)為main()或者wmain(),在默認(rèn)情況下
該應(yīng)用程序就是一個控制臺應(yīng)用程序

extensible firmware interface

和cpu具體架構(gòu)相關(guān)的一個參數(shù)選項,并不常用,在這里暫不詳細(xì)介紹.

如果對此有興趣的可以訪問intel主頁來查看相關(guān)內(nèi)容
native;
設(shè)備驅(qū)動器選項,如果/driver:wdm選項被設(shè)定的話,該鏈接選項(native)就為默認(rèn)選項
posix:
在windows nt 種運行在posix子系統(tǒng)上的應(yīng)用程序
windows:
該類型的應(yīng)用程序不產(chǎn)生console窗口,該類型的應(yīng)用程序的窗口由用戶自己創(chuàng)建,簡而言之
就是一個標(biāo)準(zhǔn)的win32 application,其入口地址為winmain()函數(shù)或者wwinmain()函數(shù)的地址
如果你在應(yīng)用程序種定義的主函數(shù)為winmain或者wwinmain,在默認(rèn)情況下該應(yīng)用程序就是一個

win32 application !
windowsce:

運行在windows ce上的應(yīng)用程序

major and minor (optional):

主版本號和次版本號,該選項為可選,該選項為0~65535之間的十進(jìn)制整數(shù)
從上面可以看出如果我們建立一個win32 console application的話,linker的/subsystem選項應(yīng)該為
console,可以在vc開發(fā)環(huán)境的project->setting->link->project option中看到!
接下來我們再看看應(yīng)用程序是如何運行的!
我們知道用vc編寫的程序,運行的時候是需要 cc 運行庫支持的.當(dāng)我們運行一個c/c 程序的時候
鏈接器會首先尋找應(yīng)用程序的啟動函數(shù),例如:
如果你建立了一個console程序的話,編譯器得鏈接開關(guān)會是以下這種形式
/subsystem:console /entry:maincrtstartup (ansi)
/subsystem:console /entry:wmaincrtstartuup (unicode)
如果你建立了一個win32 application,編譯器得鏈接開關(guān)則會是一下形式
/subsystem:windows /entry:winmain (ansi)
/sbusystem:windows /entry:wwinmain (uincode)
上面的兩種形式可以再project->setting->link->project option中看到
上面的subsystem和entry并不需要都設(shè)置,如果你只設(shè)置了/subsystem:console
的話,那么默認(rèn)的entry開關(guān)在默認(rèn)情況下應(yīng)為/entry:maincrtstartup
反之,如果你在應(yīng)用程序中定義了main函數(shù)的話,默認(rèn)情況下,你的/subsystem開關(guān)
應(yīng)該為/system:console
在默認(rèn)情況下/subsystem 和/entry開關(guān)是匹配的,也就是
console對應(yīng)maincrtstartup或者wmaincrtstartup
windows對應(yīng)winmain或者wwinmain
但是我們也可以通過手動改動的方式使他們不匹配
例如我們可以這樣改動

復(fù)制代碼 代碼如下:

#pragma comment( linker, /subsystem:windows /entry:maincrtstartup ) // 設(shè)置入口地址
int main(int argc, char* argv[])
{
messagebox(null, hello, notice, mb_ok);
return 0;
}

在默認(rèn)情況下鏈接器看到/subsystem下是windows選項的時候,它會自動尋找winmain或者wwinmain
但我們強制指定入口地址,這樣運行程序的時候默認(rèn)的console窗口就會隱藏!
上面是在代碼中使用#pragma指令來設(shè)置,還有一種就是直接在開發(fā)環(huán)境的

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

寫了這么多,自己都有點感覺亂,沒有辦法,以前沒寫過什么文章,所以措辭可能不太好,希望大家見諒。

1:如果console程序已經(jīng)寫好了,不能改了,也可以。寫一個API程序,不要畫窗口,然后用CreateProcess調(diào)用寫好的console程序,把屬性設(shè)成SW_HIDE即可。
2:不能用控制臺來寫(CONSLOE),要用WINMAIN做入口就可以了,不畫窗口,別人就都看不見了. 你只用想想辦法把你的進(jìn)程在任務(wù)欄里面隱藏住就可以.
3:如果是console程序,用API函數(shù)GetStdHandle()獲得控制臺程序的窗口句柄,然后在隱藏窗口
4://這一句隱藏控制臺
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
你要寫控制臺程序就用這個
在控制臺程序中隱藏控制臺窗口!

相關(guān)文章

  • Qt中QGroupBox控件的實現(xiàn)

    Qt中QGroupBox控件的實現(xiàn)

    QGroupBox 是 Qt 框架中一個非常有用的控件,它主要用于組織和管理一組相關(guān)的控件,本文主要介紹了Qt中QGroupBox控件的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • 最新C/C++中的new和delete的實現(xiàn)過程小結(jié)

    最新C/C++中的new和delete的實現(xiàn)過程小結(jié)

    這篇文章主要介紹了C/C++中的new和delete的實現(xiàn)過程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 詳解C語言中accept()函數(shù)和shutdown()函數(shù)的使用

    詳解C語言中accept()函數(shù)和shutdown()函數(shù)的使用

    這篇文章主要介紹了詳解C語言中accept()函數(shù)和shutdown()函數(shù)的使用,用來操作socket相關(guān)的網(wǎng)絡(luò)通信,需要的朋友可以參考下
    2015-09-09
  • C++實現(xiàn)對象化的矩陣相乘小程序

    C++實現(xiàn)對象化的矩陣相乘小程序

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)對象化的矩陣相乘小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解C語言處理算經(jīng)中著名問題百錢百雞

    詳解C語言處理算經(jīng)中著名問題百錢百雞

    古代的很多數(shù)學(xué)問題都可以用現(xiàn)代的編程語言去嘗試解決,就如本篇,將會帶你通過C語言來解決算經(jīng)中百錢百雞問題,感興趣的朋友來看看吧
    2022-02-02
  • C語言詳細(xì)講解const的用法

    C語言詳細(xì)講解const的用法

    今天探討const,首先來說是將變量常量化。為什么要將變量常量化,原因有諸多好處有諸多。比如可以使數(shù)據(jù)更加安全不會被修改
    2022-05-05
  • C++空類默認(rèn)函數(shù)詳細(xì)解析

    C++空類默認(rèn)函數(shù)詳細(xì)解析

    如果你只是聲明一個空類,不做任何事情的話,編譯器會自動為你生成一個默認(rèn)構(gòu)造函數(shù)、一個拷貝默認(rèn)構(gòu)造函數(shù)、一個默認(rèn)拷貝賦值操作符和一個默認(rèn)析構(gòu)函數(shù)
    2013-10-10
  • opencv配置的完整步驟(win10+VS2015+OpenCV3.1.0)

    opencv配置的完整步驟(win10+VS2015+OpenCV3.1.0)

    OpenCV是計算機視覺中經(jīng)典的專用庫,其支持多語言、跨平臺,功能強大,這篇文章主要給大家介紹了關(guān)于opencv配置(win10+VS2015+OpenCV3.1.0)的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • C++?命名空間與輸入輸出操作代碼

    C++?命名空間與輸入輸出操作代碼

    C++是一種面向?qū)ο蟮挠嬎銠C程序設(shè)計語言,?它擴展了C語言的功能,?并引入了面向?qū)ο缶幊痰母拍??如類、?繼承和多態(tài)等,C++是以C語言為基礎(chǔ)進(jìn)行了拓展與創(chuàng)新,C++兼容C語言絕大多數(shù)的語法,這篇文章主要介紹了C++?命名空間與輸入輸出,需要的朋友可以參考下
    2024-08-08
  • C語言實現(xiàn)去除字符串中空格的簡單實例

    C語言實現(xiàn)去除字符串中空格的簡單實例

    下面小編就為大家?guī)硪黄狢語言實現(xiàn)去除字符串中空格的簡單實例。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05

最新評論

南康市| 永清县| 贵港市| 灌南县| 夏邑县| 东海县| 垣曲县| 体育| 额尔古纳市| 汉沽区| 湟中县| 太仓市| 满洲里市| 宁城县| 庄浪县| 台南县| 农安县| 文山县| 临颍县| 朝阳县| 宜良县| 桐庐县| 澜沧| 广南县| 定远县| 尉犁县| 博爱县| 永泰县| 炉霍县| 普兰店市| 鲁甸县| 乌兰察布市| 中卫市| 金堂县| 松江区| 青神县| 博野县| 沂源县| 松潘县| 日土县| 临颍县|