C\C++控制台程序隐藏方法总结

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


方法1:

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

 
 
 
 
 
#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函数隐藏自身窗口,但会有黑框快速闪过的痕迹。代码以下:shell

 
 
 
 
 
  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++写一个引导程序,让引导程序隐藏调用该程序。假设要隐藏运行记事本程序,代码以下:windows

 
 
 
 
 
  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,脚本就会等待调用的程序退出后再向后执行。
运行效果:彻底隐藏
相关文章
相关标签/搜索