打印本文 打印本文 关闭窗口 关闭窗口
如何建立控制台窗口以及同窗口交互
作者:武汉SEO闵涛  文章来源:敏韬网  点击数863  更新时间:2009/4/23 18:58:58  文章录入:mintao  责任编辑:mintao

如何建立控制台窗口
以及让用户在其中输入字符同计算机进行交互对话。
    首先在选VB菜单中的 Project | Module 项向工程文件中加入一个模块,然后在
这个Module中加入以下代码:

Option Explicit

Private Declare Function AllocConsole Lib "kernel32" () As Long

Private Declare Function FreeConsole Lib "kernel32" () As Long

Private Declare Function GetStdHandle Lib "kernel32" _
(ByVal nStdHandle As Long) As Long

Private Declare Function ReadConsole Lib "kernel32" Alias _
"ReadConsoleA" (ByVal hConsoleInput As Long, _
ByVal lpBuffer As String, ByVal nNumberOfCharsToRead As Long, _
lpNumberOfCharsRead As Long, lpReserved As Any) As Long

Private Declare Function SetConsoleMode Lib "kernel32" (ByVal _
hConsoleOutput As Long, dwMode As Long) As Long

Private Declare Function SetConsoleTextAttribute Lib _
"kernel32" (ByVal hConsoleOutput As Long, ByVal _
wAttributes As Long) As Long

Private Declare Function SetConsoleTitle Lib "kernel32" Alias _
"SetConsoleTitleA" (ByVal lpConsoleTitle As String) As Long

Private Declare Function WriteConsole Lib "kernel32" Alias _
"WriteConsoleA" (ByVal hConsoleOutput As Long, _
ByVal lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, _
lpNumberOfCharsWritten As Long, lpReserved As Any) As Long

Private Const STD_INPUT_HANDLE = -10&
Private Const STD_OUTPUT_HANDLE = -11&
Private Const STD_ERROR_HANDLE = -12&

Private Const FOREGROUND_BLUE = &H1
Private Const FOREGROUND_GREEN = &H2
Private Const FOREGROUND_RED = &H4
Private Const FOREGROUND_INTENSITY = &H8
Private Const BACKGROUND_BLUE = &H10
Private Const BACKGROUND_GREEN = &H20
Private Const BACKGROUND_RED = &H40
Private Const BACKGROUND_INTENSITY = &H80

''''For SetConsoleMode (input)
Private Const ENABLE_LINE_INPUT = &H2
Private Const ENABLE_ECHO_INPUT = &H4
Private Const ENABLE_MOUSE_INPUT = &H10
Private Const ENABLE_PROCESSED_INPUT = &H1
Private Const ENABLE_WINDOW_INPUT = &H8
''''For SetConsoleMode (output)
Private Const ENABLE_PROCESSED_OUTPUT = &H1
Private Const ENABLE_WRAP_AT_EOL_OUTPUT = &H2

''''''''''''''''''''G L O B A L S''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private hConsoleIn As Long '''' The console''''s input handle
Private hConsoleOut As Long '''' The console''''s output handle
Private hConsoleErr As Long '''' The console''''s error handle

''''''''''''''''''''M A I N''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Main()
    Dim szUserInput As String

    AllocConsole    ''''建立一个控制台窗口
    SetConsoleTitle "VB Console Example" ''''设置窗口标题

    ''''获得控制窗口的句柄
    hConsoleIn = GetStdHandle(STD_INPUT_HANDLE)
    hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)
    hConsoleErr = GetStdHandle(STD_ERROR_HANDLE)

    SetConsoleTextAttribute hConsoleOut, _
    FOREGROUND_RED Or FOREGROUND_GREEN _
    Or FOREGROUND_BLUE Or FOREGROUND_INTENSITY _
    Or BACKGROUND_BLUE

    ConsolePrint "VB Console Example" & vbCrLf
   
    SetConsoleTextAttribute hConsoleOut, _
    FOREGROUND_RED Or FOREGROUND_GREEN _
    Or FOREGROUND_BLUE
   
    ConsolePrint "Please Enter Your Name Here--> "

    ''''获得用户名
    szUserInput = ConsoleRead()
    If Not szUserInput = vbNullString Then
        ConsolePrint "Hello, " & szUserInput & "!" & vbCrLf
    Else
        ConsolePrint "Hello,But who are you?" & vbCrLf
    End If

    ConsolePrint "Press Enter To Close The Console"
    Call ConsoleRead

    FreeConsole '''' Destroy the console
End Sub


Private Sub ConsolePrint(szOut As String)
    WriteConsole hConsoleOut, szOut, Len(szOut), vbNull, vbNull
End Sub

Private Function ConsoleRead() As String
    Dim sUserInput As String * 256
   
    Call ReadConsole(hConsoleIn, sUserInput, Len(sUserInput), vbNull, vbNull)
    ''''Trim off the NULL charactors and the CRLF.
    ConsoleRead = Left$(sUserInput, InStr(sUserInput, Chr$(0)) - 3)
End Function
    选VB菜单中的 Project | Project1 Properties项,将Startup Object改变为Sub Main,然后
运行程序,程序就会弹出一个控制台窗口,用户可以根据控制台窗口中的提示信息与程序进行交互
对话。
   

www.applevb.com

打印本文 打印本文 关闭窗口 关闭窗口