学习计算机,往往先从Windows环境下学习编程,学习编程,往往从C学起,学习C,往往又从控制台程序学习,何为控制台,就是那个黑框白字的界面。对于这样一个最初认为奇陋无比而现在认为无所不能的编程平台,有时候需要将界面隐藏起来。那么如何做呢?

方法1:

在头文件下加上一句预处理命令:

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置入口地址

完整程序为:


  1. #include<windows.h>
  2. #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置入口地址
  3. int main()
  4. {
  5. MessageBox(NULL,"Hello","Notice",NULL);
  6. return 0;
  7. }

在编译器下运行时仍会出现黑框,但直接运行编译好的exe程序就不会显示黑框了,截图分别如下:

方法2:

使用API函数隐藏自身窗口,但会有黑框快速闪过的痕迹。代码如下:


  1. #include<windows.h>
  2. int main()
  3. {
  4. HWND hwnd;
  5. hwnd=FindWindow("ConsoleWindowClass",NULL); //处理顶级窗口的类名和窗口名称匹配指定的字符串,不搜索子窗口。
  6. if(hwnd)
  7. {
  8. ShowWindow(hwnd,SW_HIDE); //设置指定窗口的显示状态
  9. }
  10. MessageBox(NULL,"Hello","Notice",MB_OK);
  11. system("pause");
  12. return 0;
  13. }

运行效果:在编译器下运行和直接运行exe文件,都会有黑屏闪烁一下。

方法3:

一个人自身的力量毕竟有限,所有有时候需要借助外力,自己办不到的可以让好朋友帮忙,程序也同样如此,内部实现不了的功能可以让外部程序帮自己实现。

再用C\C++写一个引导程序,让引导程序隐藏调用该程序。假设要隐藏运行记事本程序,代码如下:


  1. #include<windows.h>
  2. int main()
  3. {
  4. WinExec("notepad.exe",SW_HIDE); //隐藏执行其他程序
  5. return 0;
  6. }

运行效果:完全隐藏

方法4:

既然思路以及不再局限到程序自身,那么其实就有了很多很多中外部隐藏调用的方法,只要你的知识面足够宽那么解决方法就会足够多。比如,C#、Java、Python、Ruby、VB、Delphi等等都可以。最后再用VBScript写一个吧。代码如下:


  1. set objShell=wscript.createObject("wscript.shell")
  2. iReturn=objShell.Run("你的程序.exe", 0, FALSE)
  3. 'Run()
  4. '第一个参数是你要执行的程序的路径,
  5. '第二个参数是窗口的形式,0后台运行;1正常运行;2最小化;3最大化;缺省的话表示正常运行
  6. '第三个参数是表示这个脚本是等待还是继续执行,如果设为了True,脚本就会等待调用的程序退出后再向后执行。

运行效果:完全隐藏

C\C++控制台程序隐藏方法总结的更多相关文章

  1. c# 控制台程序 隐藏控制台窗口

    在某些项目中,需要采用控制台程序,但是又不需要通过dos窗口进行交互,同时打算隐藏掉难看的控制台窗口.实现的方法很多,有的是修改链接命令.我采用的方法略有些麻烦,首先是给窗口命名,之后找到该窗口指针, ...

  2. CreateProcess执行一个控制台程序,隐藏窗口

    STARTUPINFO   StartupInfo;//创建进程所需的信息结构变量 PROCESS_INFORMATION   ProcessInfo; GetStartupInfo(&Sta ...

  3. 6个可以隐藏运行bat,浏览器等程序的方法

    在电脑启动时或者设置时间时运行指定的程序很容易实现.但是有时候还需要运行时不显示主界面,隐藏到后台运行.比如:开机时一段Bat批处理执行删除默认共享; 开机自动运行浏览器隐藏到后代打开指定网页等,希望 ...

  4. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

    Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...

  5. 给Win32 GUI程序增加控制台窗口的方法

    给Win32 GUI程序增加控制台窗口的方法 2008年10月11日 星期六 下午 04:43 在Win32的GUI程序中,没有控制台窗口,我们输出调试信息时有些不方便,以往我的做法是使用Messag ...

  6. VS2010运行正常的控制台程序在VS2015中出现乱码的解决方法

    以前在Visual Stuido 2010中运行正常的控制台程序,在Visual Studio 2015中出现乱码,找到<Visual Studio 2015的坑:中文字符串编译后成乱码> ...

  7. 控制台程序使用MFC类的方法

    (unresolved external symbol __endthreadex解决办法) 1.新建控制台程序: 2.添加源代码如下: #include <afx.h> #include ...

  8. C#让控制台程序不显示闪退窗口的方法

    新建一个控制台程序,然后编译为 窗体程序.即可........

  9. C# 控制台程序(Console Application )启动后隐藏

    背景 前段时间给项目编写了数据适配器,读取其他系统的数据后推送到MQ上,我们的系统通过订阅MQ的方式来获取.由于其他系统支持C#编程,且为了一时方便,选择了C#的控制台程序. 最近用户在使用中,总是不 ...

随机推荐

  1. 解决angular ui-grid 中添加input date修改日期

    需求:在angular ui-grid列表中添加一个日期组件来修改时间. 在angular ui-grid添加了一个html5 date input,后端返回的数据是YYYY-MM-DD,比如:201 ...

  2. 【数论】卢卡斯定理模板 洛谷P3807

    [数论]卢卡斯定理模板 洛谷P3807 >>>>题目 [题目] https://www.luogu.org/problemnew/show/P3807 [输入格式] 第一行一个 ...

  3. font——文字属性大全

    一.字体风格(font-style) <style type="text/css"> /*默认值.浏览器显示一个标准的字体样式.*/ p.normal {font-st ...

  4. 给MS的意见

    2017-02-27 WPF的中文注释文档翻译得很烂.太多了,列举不过来. 这个是 System.Threading.Tasks.Task.Exception: 获取导致 System.Aggrega ...

  5. Angular7.1.4+Typescript3.1框架学习(二)

    接着第一部分,这篇文章就 Angular cli进行介绍总结: 1. ng g:列出当前命令 ng g 需在angular工程文件夹下执行: C:\Users\zb\angulardemo\heroe ...

  6. Introduction of Servlet Filter(介绍javaweb组件之一过滤器filter)

    javaweb的三大组件都需要交给web服务器运行,都需要在web.xml文件中配置. ①Servlet:javax.servlet.Servlet通过http协议接受客户端的请求,并作出响应的Jav ...

  7. 【调试基础】Part 5 PE格式

    PE概念.区块分类

  8. 微信中扫描二维码自动打开手机系统默认浏览器下载APP(APK)

    很多朋友问我怎么解决微信内点击链接或扫描二维码可以直接跳出微信在外部浏览器打开网页链接,其实这并不难,只要我们实现微信跳转功能即可.下面给大家介绍这个功能 功能目的 生成微信跳转链接,实现微信内置浏览 ...

  9. java按照指定格式输出系统时间使用SimpleDateFormat方法

    public class TimeThree { public static void main(String[] args) { SimpleDateFormat d = new SimpleDat ...

  10. css 三角

    http://peunzhang.github.io/demo/css_angle/index.html