在某些情况下,你一定需要在没有用户界面的环境中运行并完成任务的程序。这种程序的类型可以被其他程序或者批文件调用以执行如文件操作的任务。或者,这种程序可能是一个没有窗体的命令行。这一篇文章将讲述如何在VB中建立这样的程序。
你可能认为VB程序总是与窗体有关的,其实决非全然。是的,一个VB程序在缺省的情况下是一个窗体,但在需要的时候你也可以去掉它。而且,建立一个非窗体的VB程序只需要一个步骤,以下是整个过程的全部。
1. 建立一个新的标准EXE VB程序。
2. 在工程中添加一个代码模块。
3. 选择工程的缺省窗体,并使用Project|Remove Form1命令来删除窗体。
4. 在程序的代码模块中添加一个名为Main的程序。(这也就是当程序运行的起点)
一个非窗体的模块在需要的时候可以包含其他Sub和Function程序。模块也可以使用类模块,使用API调用,以及可以使用任何一个普通VB程序的所有功能。
一个非窗体VB程序还可以使用可视化的屏幕成分,比如MsgBox和InputBox,但是最好的方法是避免这些调用,因为这很有可能造成建立一个非窗体程序的失败。
进入一个非窗体的程序
将信息传递到一个非窗体程序的最常用的方法是使用命令行变量。在程序中,Command$函数返回一个字符串,这一字符串包含当程序启动时可以被传递的任何命令行变量。这些变量位于程序名称之后,如下显示:
C:\>ProgramName argument1 argument2
变量是用户在一个命令提示符下键入,包括一个批文件命令,或者是一个快捷键的属性。
一个范例
在这一个非窗体程序的范例中,被传递的是作为一个命令行参数的一个文本文件的名称。程序读入文件,并使用两个空白字符取代每一个Tab字符,然后将文件传到磁盘。
程序代码中缺乏一个普通程序需要的错误检测和其他安全特性。为了编译程序,你必须在References对话框中(选择 Project | References)选择微软脚本运行时间。
将程序编译成为EXE程序之后,你就可以从命令行中运行,如下所示:
C:\TabsToSpaces myfile.txt
使用VB来建立一个非窗体命令行程序的特性很吸收人,你一定会发觉这一特性非常有用。当你的程序需要访问stdin和stdout流的时候,使用这一功能程序就会变得更加灵活,这也就是我们下一章节要讲述到的主题。
Sub Main()
Dim fs As New Scripting.FileSystemObject
Dim f As TextStream
Dim filename As String
Dim strin As String
Dim strout As String
Dim ch As String
Dim idx As Long
filename = Command$
Set f = fs.OpenTextFile(filename)
strin = f.ReadAll
f.Close
For idx = 1 To Len(strin)
ch = Mid(strin, idx, 1)
If ch = Chr(9) Then
strout = strout & " "
Else
strout = strout & ch
End If
Next idx
Set f = fs.CreateTextFile(filename, True)
f.Write (strout)
f.Close
End Sub