很多不要求UI的軟件,我們都理所當然地想到將它開發成控制檯程序。但是這樣黑底白字的程序寫多了,不但用戶看得膩味,連開發人自己都覺得單調沒趣了。嗯,你有沒有考慮過寫一個花花綠綠的控制檯程序,給人煥然一新的感覺呢?來,跟着涕淌DIY一個:
Imports System
Imports System.Runtime.InteropServices
Module ModuleConsoleColors
Sub Main()
'定義一個變量來獲得句柄
Dim hOut As IntPtr
'-11專門用於輸出設備
hOut = GetStdHandle(-11)
'現在開始展示不同的文本設置啦!
SetConsoleTextAttribute(hOut, TextAttributes.BACKGROUND_INTENSITY)
Console.WriteLine("歡迎常來訪問涕淌居:http://blog.csdn.net/gnudoyng :)")
'注意,這條語句我傳入的參數值是兩個枚舉值的和,因此它們的效果疊加了
SetConsoleTextAttribute(hOut, &H9)
Console.WriteLine("你一定能在涕淌居找到你喜歡的東西——I promise...")
SetConsoleTextAttribute(hOut, TextAttributes.BACKGROUND_GREEN)
Console.WriteLine("經常盯着電腦會損傷視力,所以請你多看看綠色的東西。")
SetConsoleTextAttribute(hOut, TextAttributes.FOREGROUND_RED)
Console.WriteLine("我再一次負責任地告訴你——There is NOTHING Visual Basic can't do!")
SetConsoleTextAttribute(hOut, TextAttributes.BACKGROUND_BLUE)
Console.WriteLine("我出生在中國東南的海邊,所以我永遠最喜歡藍色...")
'按任意鍵退出
Console.Read()
End Sub
'聲明SetConsoleTextAttribute函數
Declare Function SetConsoleTextAttribute Lib "kernel32.dll" ( _
ByVal hConsoleOutput As IntPtr, ByVal wAttributes As TextAttributes) As Boolean
'聲明GetStdHandle函數,以此來獲取在SetConsoleTextAttribute函數中使用的句柄
Declare Function GetStdHandle Lib "kernel32.dll" (ByVal nStdHandle As Integer) As IntPtr
'文本樣式的枚舉,涕淌這裏只是列出了幾個最基本的
'通過不同枚舉值的疊加,你可以得到綜合的樣式
'自己動手試試吧,哦對了,三原色的疊加原理你應該很清楚吧哈哈?
Public Enum TextAttributes
FOREGROUND_BLUE = &H1
FOREGROUND_GREEN = &H2
FOREGROUND_RED = &H4
FOREGROUND_INTENSITY = &H8
BACKGROUND_BLUE = &H10
BACKGROUND_GREEN = &H20
BACKGROUND_RED = &H40
BACKGROUND_INTENSITY = &H80
COMMON_LVB_LEADING_BYTE = &H100
COMMON_LVB_TRAILING_BYTE = &H200
COMMON_LVB_GRID_HORIZONTAL = &H400
COMMON_LVB_GRID_LVERTICAL = &H800
COMMON_LVB_GRID_RVERTICAL = &H1000
COMMON_LVB_REVERSE_VIDEO = &H4000
COMMON_LVB_UNDERSCORE = &H8000
End Enum
End Module
呵呵,就是調用了兩個API函數——原理其實很簡單是吧!