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

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

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

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

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

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

extensible firmware interface

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

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

win32 application !
windowsce:

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

major and minor (optional):

主版本號和次版本號,該選項(xiàng)為可選,該選項(xiàng)為0~65535之間的十進(jìn)制整數(shù)
從上面可以看出如果我們建立一個(gè)win32 console application的話,linker的/subsystem選項(xiàng)應(yīng)該為
console,可以在vc開發(fā)環(huán)境的project->setting->link->project option中看到!
接下來我們再看看應(yīng)用程序是如何運(yùn)行的!
我們知道用vc編寫的程序,運(yùn)行的時(shí)候是需要 cc 運(yùn)行庫支持的.當(dāng)我們運(yùn)行一個(gè)c/c 程序的時(shí)候
鏈接器會首先尋找應(yīng)用程序的啟動函數(shù),例如:
如果你建立了一個(gè)console程序的話,編譯器得鏈接開關(guān)會是以下這種形式
/subsystem:console /entry:maincrtstartup (ansi)
/subsystem:console /entry:wmaincrtstartuup (unicode)
如果你建立了一個(gè)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選項(xiàng)的時(shí)候,它會自動尋找winmain或者wwinmain
但我們強(qiáng)制指定入口地址,這樣運(yùn)行程序的時(shí)候默認(rèn)的console窗口就會隱藏!
上面是在代碼中使用#pragma指令來設(shè)置,還有一種就是直接在開發(fā)環(huán)境的

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

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

1:如果console程序已經(jīng)寫好了,不能改了,也可以。寫一個(gè)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\"" )
你要寫控制臺程序就用這個(gè)
在控制臺程序中隱藏控制臺窗口!

相關(guān)文章

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

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

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

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

    這篇文章主要介紹了C/C++中的new和delete的實(shí)現(xiàn)過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    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++實(shí)現(xiàn)對象化的矩陣相乘小程序

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

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)對象化的矩陣相乘小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    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ì)解析

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

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

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

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

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

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

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

最新評論

林甸县| 祁东县| 灌阳县| 西林县| 洛浦县| 神池县| 和硕县| 错那县| 九龙县| 沈阳市| 和林格尔县| 华阴市| 仁怀市| 西青区| 常宁市| 库伦旗| 桑植县| 博湖县| 梨树县| 清丰县| 阿图什市| 金门县| 樟树市| 安陆市| 苍南县| 达孜县| 松阳县| 乐平市| 余干县| 潼关县| 新津县| 昌乐县| 白玉县| 七台河市| 浦北县| 渝中区| 金秀| 鸡东县| 阿坝| 财经| 九台市|