zoukankan      html  css  js  c++  java
  • VB6 创建控制台应用程序

    ' 功能:为VB程序创建一个consolewindow。
    Private Declare Function AllocConsole Lib "kernel32" () As Long

    '功能:销毁为VB程序创建的consolewindow。
    Private Declare Function FreeConsole Lib "kernel32" () As Long


    ' DOS程序有三个标准文件:标准输入文件(stdin),标准输出文件(stdout),标准错误文件(siderr)。与此类
    '似,控制台程序窗口有三个句柄:
    '  输入句柄(inputhandle)—指向控制台程序的输入缓冲区
    '  输出句柄(outputhandle)、错误句柄(errorhandle)—指向控制台程序的屏幕输出缓冲区
    '  在能够进行输入/输出操作之前,必须用GetstdHandle函数取得consolewindow的这三个句柄。
    '功能:返回consolewindow的三个句柄之一。
    Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long

    'nStdHandle参数说明:
    Private Const INPUT_HANDLE = -10&  '返回inputhandle

    Private Const OUTPUT_HANDLE = -11& '返回outputhandle

    Private Const ERROR_HANDLE = -12&  '返回errorhandle

    ' consolewindow并获得其input/outputhandle后,就可以利用WriteConsole和ReadConsole进行输入/输出了。

    '功能:   向控制台窗口输出字符串?
    '说明:     hConsoleOutput—控制台的outputhandle?
    '          lpBuffer—要输出的字符串?
    '          nNumberOfCharsToWrite—要输出的字符串的长度?
    '     lpNumberofCharsWritten—实际输出的字符串的长度,可置为vbNull。
    '     lpReserved—保留,必须置为vbNul。
    Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _
                                                    (ByVal hConsoleOutput As Long, _
                                                     lpBuffer As Any, _
                                                     ByVal nNumberOfCharsToWrite As Long, _
                                                     lpNumberOfCharsWritten As Long, _
                                                     lpReserved As Any) As Long


    '功能: 从输入缓冲区输入字符串?
    '    说明:此函数是以块方式输入信息。在本文的示例中,只有用户按了Enter(回车)键后,此函数才返回。
    '      hConsoleInput—consolewindow的inputhandle?
    '      lpBuffer—输入缓冲区地址?
    '      nNumberOfCharsToRead—输入缓冲区的长度?
    '    lpNumberOfCharsRead—实际读入的字符数,可置为vbNull。
    '    lpReserved—保留,必须置为vbNull。
    Private Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" _
                                                    (ByVal hConsoleInput As Long, _
                                                    lpBuffer As Any, _
                                                    ByVal nNumberOfCharsToRead As Long, _
                                                    lpNumberOfCharsRead As Long, _
                                                    lpReserved As Any) As Long


    '功能:   设置控制台输入缓冲区的输人模式或屏幕输出缓冲区的输出模式?
    '      说明:在用ReadConsole和WriteConsole函数行输入/输出前,要用此函数设置好输入/输出模式。
    '        hConsoleHandle—consolewindow的Inputhandle或outputhandle
    Private Declare Function SetConsoleMode Lib "kernel32" (ByVal hConsoleHandle As Long, ByVal dwMode As Long) As Long

    'dwMode是要设置的输入或输出模式值。hConsoleHandle是Inputhandle时,dwMode可取如下值的组合:

    Private Const LINE_INPUT = &H2
    Private Const ECHO_INPUT = &H4
    Private Const MOUSE_INPUT = &H10
    Private Const PROCESSED = &H1

    Sub Main()
        Call AllocConsole
        Dim inputHandle As Long
        Dim str As String
        Dim outputHandle As Long
        str = "hello world" & vbCrLf
        outputHandle = GetStdHandle(OUTPUT_HANDLE)
        Call WriteConsole(outputHandle, ByVal str, Len(str), vbNull, vbNull)
        inputHandle = GetStdHandle(INPUT_HANDLE)
        Call ReadConsole(inputHandle, vbNull, 255, vbNull, vbNull)
        Call FreeConsole
    End Sub

  • 相关阅读:
    字符的编码
    数据的基本类型和内置方法(二)
    基本的数据类型和内置方法介绍 (一)
    流程运算 if while for
    用户交换 基本数据类型 基本运算符 格式化输出
    机器语言发展简介和变量的介绍
    计算机基础
    Python学习建议和要求总结
    CH135 最大子序和 题解报告
    HRBUST1356 Leyni,罗莉和队列 题解报告
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/4784916.html
Copyright © 2011-2022 走看看