學習計算機,往往先從Windows環境下學習編程,學習編程,往往從C學起,學習C,往往又從控制臺程序學習,何為控制臺,就是那個黑框白字的界面。對于這樣一個最初認為奇陋無比而現在認為無所不能的編程平臺,有時候需要將界面隱藏起來。那么如何做呢?
方法1:
在頭文件下加上一句預處理命令:
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 設置入口地址
完整程序為:
#include<windows.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 設置入口地址
int main()
{MessageBox(NULL,"Hello","Notice",NULL);return 0;
}
在編譯器下運行時仍會出現黑框,但直接運行編譯好的exe程序就不會顯示黑框了
方法2:
使用API函數隱藏自身窗口,但會有黑框快速閃過的痕跡。代碼如下:
#include<windows.h>
int main()
{HWND hwnd;hwnd=FindWindow("ConsoleWindowClass",NULL); //處理頂級窗口的類名和窗口名稱匹配指定的字符串,不搜索子窗口。if(hwnd){ShowWindow(hwnd,SW_HIDE); //設置指定窗口的顯示狀態}MessageBox(NULL,"Hello","Notice",MB_OK);system("pause");return 0;
}
運行效果:在編譯器下運行和直接運行exe文件,都會有黑屏閃爍一下。
方法3:
一個人自身的力量畢竟有限,所有有時候需要借助外力,自己辦不到的可以讓好朋友幫忙,程序也同樣如此,內部實現不了的功能可以讓外部程序幫自己實現。
再用C\C++寫一個引導程序,讓引導程序隱藏調用該程序。假設要隱藏運行記事本程序,代碼如下:
#include<windows.h>
int main()
{WinExec("notepad.exe",SW_HIDE); //隱藏執行其他程序return 0;
}
運行效果:完全隱藏
方法4:
既然思路以及不再局限到程序自身,那么其實就有了很多很多中外部隱藏調用的方法,只要你的知識面足夠寬那么解決方法就會足夠多。比如,C#、Java、Python、Ruby、VB、Delphi等等都可以。最后再用VBScript寫一個吧。代碼如下:
set objShell=wscript.createObject("wscript.shell")
iReturn=objShell.Run("你的程序.exe", 0, FALSE) 'Run()
'第一個參數是你要執行的程序的路徑,亦可傳參
'第二個參數是窗口的形式,0后臺運行;1正常運行;2最小化;3最大化;缺省的話表示正常運行
'第三個參數是表示這個腳本是等待還是繼續執行,如果設為了True,腳本就會等待調用的程序退出后再向后執行。
運行效果:完全隱藏