Private Sub Command3_Click()
Unload Me
End Sub
运行这个窗体,效果如图8-11所示。

图8-11 加解密窗体的运行界面
在文本框中输入要加密文件的文件名。注意,文件名要包含路径。单击【加密】按钮,程序开始加密,加密完毕,程序会提示加密后的文件所保存的位置。用户可以找到该文件,并打开该文件,查看是否已经处于加密状态。
如果要解密该文件,可以在文本框中输入要解密文件的文件名,在输入文件名时,仍然要包含路径。输入完毕,单击【解密】按钮,程序开始解密,解密完毕,程序会提示解密后的文件所保存的位置。用户可以找到该文件,并打开该文件,查看是否已经处于解密状态。
如果输入的文件名或路径有错误,程序将弹出“文件未找到”对话框,正在运行的程序将被强行终止。为了能让程序流畅地运行下去,感兴趣的同学可以给该程序添加一些检测用户输入的文件路径是否正确的代码,当路径不正确时,给用户一些提示,并允许用户重新输入。
另外,也可以采用VB提供的通用对话框(Common Dialog)控件,或下一节要讲的文件系统控件来获得要加、解密文件的路径。
本实例采用的加、解密算法极其简单,仅起抛砖引玉作用,对此感兴趣的同学可以查阅有关密码学方面的专著。
VB提供了三个与文件系统有关的列表框控件:驱动器列表框控件(DriveListBox)、目录列表框控件(DirListBox)和文件列表框控件(FileListBox)。通过这几个列表框的组合使用,可以实现对驱动器、文件和文件路径的控制。
驱动器列表框是一个下拉列表框,用来显示用户系统中所有有效磁盘驱动器的列表。当该控件获得焦点时,用户可输入任何有效的驱动器名,或单击右侧的下拉箭头来选择列表框中的驱动器名,选中的驱动器名将出现在列表框的顶端。
可以使用赋值语句指定当前的驱动器。例如,赋值语句Drive1.Drive = "D:"的作用是设置D盘为当前盘。
可以使用ChDrive语句将驱动器列表框Drive1的Drive属性设置的当前驱动器作为可操作驱动器使用,代码为:
ChDrive Drive1.Drive
在驱动器列表框中选择新的驱动器后,将触发Change事件。
目录列表框是一个带滚动条的下拉列表框,一般从根目录开始显示用户系统当前驱动器中的目录结构。当前目录名会被突出显示,而且显示的目录是按目录层次依次缩进。在目录列表框中,当前目录下的子目录也缩进显示。
在目录列表框的下拉列表框中,对于每个目录项均存在一个相应的整数进行识别,称为整型标识符ListIndex。Path属性(Dir1.Path)指定目录(当前目录)的ListIndex值为-1;紧邻其上的目录的ListIndex值为-2;再上一级目录的ListIndex值为-3;以此类推。Dir1.Path指定目录(当前目录)的下一级目录的ListIndex值为0;再下一级目录的ListIndex值为1,以此类推可得其他下级子目录的ListIndex数值。
上述的Path属性可以用来指定列表框中ListIndex值为-1的目录项,其实即为指定当前目录。可以有两种设置当前目录的方法:
1.直接为目录列表框的Path属性设置相应的路径,此时目录列表框中显示的将是当前工作目录。例如,下面的代码是将赋值号右边的路径设置为当前目录:
Dir1.Path = "C:\Program Files\Microsoft Visual Studio\Common\Graphics\Videos"
2.将驱动器的Drive属性的值赋给目录列表框的Path属性,可将驱动器列表框中指定驱动器的当前目录显示出来,代码为:
Dir1.Path = Drive1.Drive
上述两种设置方法并不能指定可以实际操作的当前工作目录,只能突出显示当前工作目录,并将其ListIndex值设置为-1。为了设置可操作的当前工作目录,可以使用ChDir语句。例如,将目录列表框Dir1的Path属性设置的当前目录作为可操作的当前工作目录,可以使用以下代码:
ChDir Dir1.Path
在使用文件控件的应用程序中,可用Application对象将当前目录设置为应用程序的可执行文件所在目录,代码如下:
ChDrive App.Path
ChDir App.Path
单击目录列表框中某个目录项,可突出显示该项,双击某个目录项,则系统会自动将其赋值给目录列表框的Path属性,并将其ListIndex值设置为-1,然后刷新目录列表框以显示其下级子目录。
文件列表框是一个带滚动条的下拉列表框,用于显示当前目录内的所有满足条件的文件列表。
通过给文件列表框的Path属性赋值,可以让文件列表框显示出指定目录下的符合条件的文件。例如,显示出C盘Windows目录下的所有文件的代码为:
File1.Path = "C:\Windows"
显示出目录列表框中指定的当前目录下的所有文件的代码为:
File1.Path = Dir1.Path
如果要将满足某类条件的文件显示出来,需要设置文件列表框的Patern属性。例如,以下程序代码将显示出C盘Windows目录下所有扩展名为TXT、INI和LOG的文件:
File1.Path = "C:\Windows"
File1.Pattern = "*.TXT;*.INI;*.LOG"
以下代码将显示当前目录下所有以字符N打头且扩展名为EXE的一类文件:
File1.Pattern = "N*.EXE"
以下代码将显示当前目录下文件主名包含五个字符,第二个字符是a且扩展名为BMP的一类文件:
File1.Pattern = "?a???.BMP"
文件列表框还包含几个与文件属性(Archive、Normal、System、Hidden和ReadOnly)有关的属性。其中,System和Hidden属性的默认值为False,Normal、Archive和ReadOnly属性的默认值为True。通过设置这些属性可以让文件列表框只显示符合指定文件属性的一类文件。例如,下面的代码将只显示只读文件:
File1.ReadOnly = True
File1.Archive = False:File1.Normal = False:File1.System = False:File1.Hidden = False
以下代码只显示以前备份后修改过的文件:
File1.Archive = True
当Normal = True时,将显示无System或Hidden属性的文件。当Normal = False时,仍然可显示具有ReadOnly或Archive属性的文件,方法是将这两个属性设置为True。
若要同时选择多个文件,可以设置文件列表框的MultiSelect属性,该属性在运行时是只读的。
1.GetAttr函数
格式:
GetAttr(文件名)
说明:
文件名可以是字符串常量或变量。
GetAttr函数可以返回指定文件或目录的属性。返回值是表8-1中属性值的总和。
常 数 值 描 述 VbNormal 0 常规 VbReadOnly 1 只读 VbHidden 2 隐藏 VbSystem 4 系统文件 VbDirectory 16 目录或文件夹 VbArchive 32 上次备份以后,文件已经改变 Vbalias 64 指定的文件名是别名。