计算机用户经常把控制台应用程序作为一种“遗物”来看待,但是它们仍然还作为系统管理员的非常喜欢的一部分,而且还是高手用户的“工具箱”之一。另外,当你需要大量重复的脚本操作,当然还有可能的更复杂的操作时都会用到这种控制台应用程序。
在visual basic的早期版本中基本没有为创建控制台应用程序提供多大支持。而且,尽管vb 6及其早期版本能够创建控制台应用程序;但是,这不是一种简单的或直接的过程。在vb 6中创建一个控制台应用程序必须进行win32 api调用;即使如此,你也不能控制光标位置或文本的颜色,而且在很大程度上仅能被限制进行从左到右和从上到下的编码。
如今,vb.net引入了新的控制台应用程序特征。它不仅在“new project...”对话框中提供一种控制台应用程序工程,而且最重要的是,它还提供了一个控制台(console)对象。因此,你不必再“困扰”于 win32 api了。然而,你还是被限于“从左到右和从上到下”的编码。但是,vb.net仍然缺乏用于改变光标或文本的位置或颜色的方法或属性,还有其它许多更高级的特征。
一、 在vb 2005中的新型控制台应用程序特征
基于早期vb.net版本中所提供的console对象,如今的vb 2005又为控制台应用程序增加了许多优秀的特征。下面列出的仅是vb 2005中更为激动人心的功能中的一部分:
· 清除控制台窗口
· 得到并设定光标位置和大小
· 得到并设定窗口高度和宽度
· 得到并设定前景和背景颜色
· 选择并在控制台窗口内移动部分文本
本文中的其它部分将详细地分析一个控制台应用程序的创建过程,以便展示上面这些特征的使用。
二、 实例应用程序—dircopy
我经常从控制台窗口中实现把文件从一个目录复制到另一个目录。当我复制一个含有大量文件的目录时,我经常希望得到一些提示—复制进程完成的怎么样了?复制快结束了还是再等待一会?为了实现这一问题,我构建了一个控制台应用程序,它能够在控制台窗口内显示一个进度条来以图形化显示复制进度。
三、 定义功能
为了简化本文中的演示目的,dircopy将使用两个命令行参数:一个源目录和一个目的目录。然后,它把所有文件从源目录复制到目的目录。注意,这个简单的程序无法复制源目录下的子目录。
首先,我编写一个displayusage子程序。如果使用太多或太少的命令行参数调用dircopy,那么它将调用displayusage,然后结束。图1显示了在没有任何命令行参数时运行dircopy的结果。
图1:displayusage子程序运行结果
下列是displayusage子程序的代码:
private sub displayusage()
dim originalforegroundcolor as consolecolor = console.foregroundcolor
console.clear()
console.foregroundcolor = consolecolor.green
console.writeline("dircopy 1.0")
console.writeline("written by josh fitzgerald")
console.writeline(new string("-", console.windowwidth))
console.writeline("dircopy will copy all of the files from the
source folder to the")
console.writeline("destination folder. while the files are
copying, a progress bar")
console.writeline("will display the percent complete.")
console.writeline()
console.writeline("if a directory name contains spaces, enclose
it in double quotes.")
console.writeline()
console.write("example : ")
console.foregroundcolor = consolecolor.magenta
console.writeline("dircopy c:\myfolder c:\mynewfolder")
console.foregroundcolor = consolecolor.green
console.writeline()
console.write("example : ")
console.foregroundcolor = consolecolor.magenta
console.writeline("dircopy ""c:\my folder"" ""c:\my new folder""")
console.foregroundcolor = originalforegroundcolor
end sub
该子程序做的第一事情是创建一个变量originalforegroundcolor,然后它存储console.foregroundcolor的值。在子程序的最后,代码把console.foregroundcolor属性设置回originalforegroundcolor。当你分析这部分代码时,你会注意到,在每个修改前景或背景颜色的子程序中都是这样操作的。在实际运行dircopy之前,我想确保dircopy总是让控制台显示相同的颜色。
displayusage做的下一件事情是,使用console.clear方法清除控制台屏幕。这是在vb2005中的新方法之一;这样以来,程序员可以很容易地拥有一个干净的控制台窗口。
我想让帮助文本显眼一点,为此,我把foregroundcolor属性设置为绿色。然后,我使用writeline和write方法把几行文本输出到屏幕上。在描述的最后,我包括了一些怎样运行dircopy的示例。我想使得这些示例突出一些;因此,我把foregroundcolor设置为品红色。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器