![]() ![]() |
|
用VB建立字符界面的控制台程序 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/3/16 9:44:02 文章录入:杜斌 责任编辑:杜斌 | |
|
|
由于VB对建立控制台程序并无内在支持,全部工作都是依靠调用API函数来完成,故首先要用VB建立一个新的“标准EXE”工程,并删除其默认窗体(Form1),添加一标准模块(Module1),将其改名为VBConsole.bas,后续的所有工作都是在此模块中完成的。 下面按功能分类逐一介绍本文用到的API函数。 1.创建和销毁控制台窗口(consol window)用VB创建控制台程序的第一步就是为VB程序创建一个console window,并在程序结束时销毁它。这分别用到AllocConsole和FreeConsole函数。 Private Declare Function AllocConsole Lib "kernel32"() As Long 功能:为VB程序创建一个 console window。 Private Declare Function FreeConsole Lib "kernel32"() AS Long 功能:销毁为VB程序创建的 console window。 2.取得所建立的 console window 的句柄(Handle) DOS程序有三个标准文件:标准输入文件(stdin),标准输出文件(stdout),标准错误文件(siderr)。与此类似,控制台程序窗口有三个句柄: 输入句柄(input handle) — 指向控制台程序的输入缓冲区 输出句柄(output handle)、错误句柄(error handle)— 指向控制台程序的屏幕输出缓冲区 在能够进行输入/输出操作之前,必须用 GetstdHandle 函数取得 console window 的这三个句柄。 Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long 功能:返回 console window 的三个句柄之一。 说明:参数nStdHandle决定此函数返回的是哪一个句柄,它可以取如下值之一: Private Const STD_INPUT_HANDLE = -10& ''返回 input handle Private Const TD_OUTPUT_HANDLE = - 11& ''返回 output handle Private Const STD_ERROR_HANDLE = -12& ''返回 error handle 3.控制台输入/输出创建了 console window 并获得其 input/output handle 后,就可以利用WriteConsole和ReadConsole进行输入/输出了。 Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" _ (ByVal hConsoleoutput As Long,ByVal lPBuffer As Any, ByVal nNumberofCharsTowrite _ As Long, IpNumberofCharsWritten As Long, lpReserved As Any) As Long 功能:向控制台窗口输出字符串。 说明:hConsoleOutput—控制台的outputhandle。 lpBuffer—要输出的字符串。 nNumberOfCharsToWrite—要输出的字符串的长度。 lpNumberofCharsWritten—实际输出的字符串的长度,可置为vbNull。 lpReserved—保留,必须置为vbNul。 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 |
|
![]() ![]() |