在VB中使用标准的I/O流

ZDNet软件频道 时间:2003-10-15 作者:ZDNet China |  我要评论()
本文关键词:vb
当进行基于文本的所有操作的时候,标准的输入和输出(I/O)流,也就是stdin和stdout都会被得到广泛的采用。这一操作看起来非常的古老,但它们的用处非常大。
本文译自Builder.com,未经许可请勿转载当进行基于文本的所有操作的时候,标准的输入和输出(I/O)流,也就是stdin和stdout都会被得到广泛的采用。这一操作看起来非常的古老,但它们的用处非常大。

Stdin是一个程序获得输入的地方,在缺省的情况下即为键盘。Stdout是一个程序发送输出的地方,在缺省情况下为显示器。绝大部分这些流操作的功能都可以根据程序的需要改变其输入/输出方向,例如,程序可以将输出发送到一个文件而不是显示器。

对于stdin和stdout,通常有两种很常用的用法。其中一种方法是使用能够运行批文件或者命令交互方式的非窗体vb程序。通过使用更改方向的stdout,一个程序的输出可以转移到一个文件而不是显示在命令行。另一种方法是使用带有通用网关接口(CGI)的网络程序。一个CGI程序可以使用stdin和stdout进行操作。虽然这一方法不是最新也不是最强大,但在很多站点还是得到广泛地应用。

使用这些流需要程序使用API函数GetStdHandle获得流的句柄。这一函数的声明如下:

Public Declare Function GetStdHandle Lib "kernel32" (ByValnStdHandle As Long)
As Long

传递变量-11&以获得stdout的句柄,传递变量-10&获得stdin的句柄。为了从stdin中读取数据,可以使用这一API函数:

Private Declare Function ReadFile Lib "kernel32" _
     (ByValhFile As Long, ByValIpBufferAs Any, _
     ByValnNumberOfBytesToRead As Long, _
     IpNumberOfBytesRead As Long, _
     ByValIpOverlapped As Any) As Long

其中变量参数为:

  • HFile是从GetStdHandle获得的stdin句柄。
  • IpBuffer是一个字符变量,其值从stdin读入。
  • NNumberOfBytesToRead是要读入的字节数量,其值要比少于IpBuffer的大小。
  • IpNumberOfBytesRead是长整型的变量,其功能是返回从stdin读入的字节实际数量。
  • IpOverlapped只能用于读取文件。当读取stdin,传递zero。

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134