在WIN95下删除文件时,被删文件将自动放入回收站以备恢复时使用。在VB中有一个KILL函数可用来删除文件,但用此函数删除的文件将不会被放入回收站,想恢复时可能就比较困难。笔者经查阅API函数,发现可用SHFileOperation函数来实现这一功能,下面是一个例子,供在程序设计中有需要此功能的读者参考。   1 此函数需要用到SHFILEOPSTRUCT结构,故首先将此结构和函数在总体声明处声明如下:    Option Explicit 
  Private Type SHFILEOPSTRUCT     //这句主要定义的类型是什么意思啊 
    hwnd As Long 
    wFunc As Long 
   pFrom As String 
   pTo As String 
   fFlags As Integer 
   fAnyOperationsAborted As Boolean 
   hNameMappings As Long 
   lpszProgressTitle As String 
   End Type   Private Declare Function SHFileOperation Lib "shell32.dll" Alias _ 
"SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long 
  '两个重要的参数值设定 
   Private Const FO_DELETE = &H3 '删除文件       //&H3指什么意思啊 
   Private Const FOF_ALLOWUNDO = &H40 '允许恢复  //&H40指什么   2 在窗体中加一命令按钮Command1,双击之,写如下代码: 
  '此处用来删除C:\TMP.TXT文件。 
 Private Sub Command1_Click() 
  Dim FileOperation As SHFILEOPSTRUCT 
  Dim lReturn As Long 
  Dim sTempFileName As String 
  sTempFileName="c:\tmp.txt" 
    With FileOperation           //with语句一般用在哪里啊 
   .wFunc = FO_DELETE 
   .pFrom = sTempFileName 
   .fFlags = FOF_ALLOWUNDO 
    End With 
    lReturn = SHFileOperation(FileOperation) 
 End Sub

解决方案 »

  1.   

    Private Type SHFILEOPSTRUCT     //这句主要定义的类型是什么意思啊 
        hwnd As Long                 'API函数往往需要很多参数,当参数太多时会使函数结
        wFunc As Long               '构变得很复杂,用type可以将一组相关的参数转换成结
       pFrom As String            '构,使参数列表更加简单
       pTo As String 
       fFlags As Integer 
       fAnyOperationsAborted As Boolean 
       hNameMappings As Long 
       lpszProgressTitle As String 
       End Type   Private Const FO_DELETE = &H3 '删除文件       //&H3指什么意思啊 
     Private Const FOF_ALLOWUNDO = &H40 '允许恢复  //&H40指什么 
      '在API中,参数有各种选择,每一种选择对应一个值,如&H3,&H40等,如果程序员直接调用这些参数,会对参数的作用莫名其妙,所以API中定义了一些符号常量对应这些参数,通过符号常量可以比较清楚地了解参数的作用。&h3指十六制的3,&H40指十六进制的40,也就是十进制的64。
     With 结构一般用于对同一个对象的多个属性赋值或结构的多个域赋值,如你所写的   With FileOperation           //with语句一般用在哪里啊 
       .wFunc = FO_DELETE 
       .pFrom = sTempFileName 
       .fFlags = FOF_ALLOWUNDO 
        End With 
    不用WITH结构则需写成:
       FileOperation.wFunc = FO_DELETE 
       FileOperation.pFrom = sTempFileName 
       FileOperation.fFlags = FOF_ALLOWUNDO 
    这样写既麻烦也不便于阅读。——————————————————————————
    希望对你有所帮助,我也需要大家帮助。    
      

  2.   

    Private Type SHFILEOPSTRUCT  这是一个windows定义好的类型
    Private Const FO_DELETE = &H3  windows定义好的常量
    Private Const FOF_ALLOWUNDO = &H40 windows定义好的常量
    以上这3条在win32api.txt里面都可以找到,都是windows规定好的。
    With FileOperation           随便你用在什么地方,可以省去你多次重复对象名称的麻烦,    With FileOperation           //with语句一般用在哪里啊 
       .wFunc = FO_DELETE 
       .pFrom = sTempFileName 
       .fFlags = FOF_ALLOWUNDO 
        End With
    完全等于:
       FileOperation.wFunc = FO_DELETE 
       FileOperation.pFrom = sTempFileName 
       FileOperation.fFlags = FOF_ALLOWUNDO 
      

  3.   

    Type用于自定义数据类型,一种类型被定义以后,就可以象整型、长整型等数据类型一样使用,也就可以将一个变量定义成这种类型,如:
        dim i as single 表示将变量I定义成单精度型。
    同样:
        Dim FileOperation As SHFILEOPSTRUCT 表示将变量FileOperation定义成用户自定义数据类型SHFILEOPSTRUCT。FileOperation是一个变量名而已。使用自定义类型变量时,type中定义的各个部分称为域,自定义类型在VB中常用于随机文件的读写。例如:定义一个学生基本信息结构
        type student
            学号 as string*9   '自定义类型中的字符型只能是定长的
            姓名 as string*20  
            性别 as boolean
            出生日期 as date
            ……
        end type
    要使用这种结构,需要定义一个变量属于这种结构:
        dim s as student
    这样,变量s就具有学号、姓名、性别等域,一个变量就可以包括多个值。调用这些值时格式为(以下为各域赋值):
        s.学号="123456789"
        s.姓名="张三"
        ……
    随便找一本VB方面的书,在随机文件读写那部分应该有这方面的知识。