收藏 分享(赏)

VC怎样隐藏控制台窗口.doc

上传人:hwpkd79526 文档编号:7123430 上传时间:2019-05-06 格式:DOC 页数:6 大小:34.50KB
下载 相关 举报
VC怎样隐藏控制台窗口.doc_第1页
第1页 / 共6页
VC怎样隐藏控制台窗口.doc_第2页
第2页 / 共6页
VC怎样隐藏控制台窗口.doc_第3页
第3页 / 共6页
VC怎样隐藏控制台窗口.doc_第4页
第4页 / 共6页
VC怎样隐藏控制台窗口.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、自己的总结:平台:Windows Sever2003环境:Visual Studio 2008在项目属性中如下两步操作:【链接器】【系统】【子系统】:/SUBSYSTEM:WINDOWS【链接器】【高级】【入口点】:mainCRTStartupVC+ 隐藏控制台程序窗口大家都知道,当编写一个 win32 console application 时 ,当运行此类程序的时候默认情况下会有一个类似 dos 窗口的 console 窗口, 但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个 console 窗口, 让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏 win32 cons

2、ole application 的 console 窗口 因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是 linker 选项).首先我们来看一下 linker 的 /subsystem 选项该选项的语法形式如下:/subsystem:console|efi_application|efi_boot_service_driver|efi_rom|efi_runtime_driver|native|posix|windows|windowsce,major.minor这个链接选项告诉操作系统如何运行可执行文件console:win32 字符模式应用程序

3、,此种类型的应用程序在运行的时候会产生一个类似 dos窗口的控制台窗口,如果在应用程序的主函数为 main()或者 wmain(),在默认情况下该应用程序就是一个控制台应用程序extensible firmware interface和 cpu 具体架构相关的一个参数选项,并不常用, 在这里暂不详细介绍.如果对此有兴趣的可以访问 intel 主页来查看相关内容native;设备驱动器选项,如果/driver:wdm 选项被设定的话,该链接选项(native)就为默认选项posix:在 windows nt 种运行在 posix 子系统上的应用程序windows:该类型的应用程序不产生 cons

4、ole 窗口,该类型的应用程序的窗口由用户自己创建,简而言之就是一个标准的 win32 application,其入口地址为 winmain()函数或者 wwinmain()函数的地址如果你在应用程序种定义的主函数为 winmain 或者 wwinmain,在默认情况下该应用程序就是一个win32 application !windowsce:运行在 windows ce 上的应用程序major and minor (optional):主版本号和次版本号,该选项为可选, 该选项为065535之间的十进制整数 从上面可以看出如果我们建立一个 win32 console application

5、的话,linker 的/subsystem 选项应该为console,可以在 vc 开发环境的 project-setting-link-project option 中看到!接下来我们再看看应用程序是如何运行的!我们知道用 vc 编写的程序,运行的时候是需要 cc 运行库支持的. 当我们运行一个 c/c 程序的时候链接器会首先寻找应用程序的启动函数,例如:如果你建立了一个 console 程序的话,编译器得链接开关会是以下这种形式/subsystem:console /entry:maincrtstartup (ansi)/subsystem:console /entry:wmaincrts

6、tartuup (unicode)如果你建立了一个 win32 application,编译器得链接开关则会是一下形式/subsystem:windows /entry:winmain (ansi)/sbusystem:windows /entry:wwinmain (uincode)上面的两种形式可以再 project-setting-link-project option 中看到上面的 subsystem 和 entry 并不需要都设置, 如果你只设置了/subsystem:console的话,那么默认的 entry 开关在默认情况下应为/entry:maincrtstartup反之,如果

7、你在应用程序中定义了 main 函数的话, 默认情况下,你的/subsystem 开关应该为/system:console在默认情况下/subsystem 和/entry 开关是匹配的,也就是console 对应 maincrtstartup 或者 wmaincrtstartupwindows 对应 winmain 或者 wwinmain但是我们也可以通过手动改动的方式使他们不匹配例如我们可以这样改动#pragma comment( linker, /subsystem:windows /entry:maincrtstartup ) / 设置入口地址 int main(int argc, ch

8、ar* argv)messagebox(null, hello, notice, mb_ok);return 0;在默认情况下链接器看到/subsystem 下是 windows 选项的时候 ,它会自动寻找winmain 或者 wwinmain但我们强制指定入口地址,这样运行程序的时候默认的 console 窗口就会隐藏!上面是在代码中使用#pragma 指令来设置, 还有一种就是直接在开发环境的project-setting-link-project option 中手工改动!写了这么多,自己都有点感觉乱, 没有办法,以前没写过什么文章 ,所以措辞可能不太好,希望大家见谅。1:如果 cons

9、ole 程序已经写好了,不能改了,也可以。写一个 API 程序,不要画窗口,然后用 CreateProcess 调用写好的 console 程序,把属性设成 SW_HIDE 即可。2:不能用控制台来写(CONSLOE),要用 WINMAIN 做入口就可以了,不画窗口,别人就都看不见了. 你只用想想办法把你的进程在任务栏里面隐藏住就可以.3:如果是 console 程序,用 API 函数 GetStdHandle()获得控制台程序的窗口句柄,然后在隐藏窗口4:/这一句隐藏控制台 #pragma comment(linker, “/subsystem:“windows“ /entry:“mainC

10、RTStartup“ ) 你要写控制台程序就用这个在控制台程序中隐藏控制台窗口!转自:http:/ comment( linker, “/subsystem:/ “windows/ “ /entry:/ “mainCRTStartup/ “ “ ) / 设置入口地址 这样就 ok 了大家都知道,当编写一个 win32 console application 时,当运行此类程序的时候默认情况下会有一个类似 DOS 窗口的 console 窗口, 但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个 console 窗口, 让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏 win3

11、2 console application 的 console 窗口因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是 linker 选项).首先我们来看一下 linker 的 /subsystem 选项该选项的语法形式如下:/SUBSYSTEM:CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|WINDOWSCE,major.minor这个链接选项告诉操作系统如何运行可执行文件CONSOLE:win32 字符模

12、式应用程序,此种类型的应用程序在运行的时候会产生一个类似 DOS窗口的控制台窗口,如果在应用程序的主函数为 main()或者 wmain(),在默认情况下该应用程序就是一个控制台应用程序Extensible Firmware Interface和 CPU 具体架构相关的一个参数选项, 并不常用,在这里暂不详细介绍.如果对此有兴趣的可以访问 intel 主页来查看相关内容NATIVE;设备驱动器选项,如果/DRIVER:WDM 选项被设定的话, 该链接选项(NATIVE)就为默认选项POSIX:在 windows NT 种运行在 POSIX 子系统上的应用程序WINDOWS:该类型的应用程序不产

13、生 console 窗口,该类型的应用程序的窗口由用户自己创建,简而言之就是一个标准的 Win32 application,其入口地址为 WinMain()函数或者 wWinMain()函数的地址如果你在应用程序种定义的主函数为 WinMain 或者 wWinMain,在默认情况下该应用程序就是一个Win32 Application !WINDOWSCE:运行在 windows CE 上的应用程序major and minor (optional):主版本号和次版本号,该选项为可选 ,该选项为065535 之间的十进制整数 从上面可以看出如果我们建立一个 win32 console appli

14、cation 的话,linker 的/subsystem 选项应该为CONSOLE,可以在 VC 开发环境的 project- setting- link- project option 中看到!接下来我们再看看应用程序是如何运行的!我们知道用 VC 编写的程序,运行的时候是需要 C/C+运行库支持的.当我们运行一个C/C+程序的时候链接器会首先寻找应用程序的启动函数,例如:如果你建立了一个 console 程序的话 ,编译器得链接开关会是以下这种形式/subsystem: “console “ /entry: “mainCRTStartup “ (ANSI)/subsystem: “cons

15、ole “ /entry: “wmainCRTStartuup “ (UNICODE)如果你建立了一个 win32 application,编译器得链接开关则会是一下形式/subsystem: “windows “ /entry: “WinMain “ (ANSI)/sbusystem: “windows “ /entry: “wWinMain “ (UINCODE)上面的两种形式可以再 project- setting- link- project option 中看到上面的 subsystem 和 entry 并不需要都设置, 如果你只设置了/subsystem: “console “的话

16、,那么默认的 entry 开关在默认情况下应为 /entry: “mainCRTStartup “反之,如果你在应用程序中定义了 main 函数的话,默认情况下 ,你的/subsystem 开关应该为/system: “console “在默认情况下/subsystem 和/entry 开关是匹配的, 也就是console 对应 mainCRTStartup 或者 wmainCRTStartupwindows 对应 WinMain 或者 wWinMain但是我们也可以通过手动改动的方式使他们不匹配例如我们可以这样改动#pragma comment( linker, “/subsystem:/

17、“windows/ “ /entry:/ “mainCRTStartup/ “ “ ) / 设置入口地址 int main(int argc, char* argv)MessageBox(NULL, “hello “, “Notice “, MB_OK);return 0;在默认情况下链接器看到/subsystem 下是 windows 选项的时候,它会自动寻找 WinMain 或者 wWinMain但我们强制指定入口地址,这样运行程序的时候默认的 console 窗口就会隐藏!上面是在代码中使用#pragma 指令来设置,还有一种就是直接在开发环境的project- setting- link- project option 中手工改动!转自:http:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报