想用api函数删除文件,因为kill 不能放在回收站中
 用SHFileOPeration 函数,提示 找不到dll入口点,SHFileOPerationA in shell32.dll
 我的各种声明应该是没问题的(复制vbapi工具的)哪位老大用过这个函数,请指点迷津

解决方案 »

  1.   

    我用的是win2003,应该跟操作系统没关系吧
      

  2.   

    我用这个dshell32的shellexecute都可以调用
      

  3.   

    Option Explicit
    Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As ToBin) As LongPrivate Type ToBin
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As Long
    End TypeConst FO_DELETE = &H3
    Const FOF_ALLOWUNDO = &H40
    Const SHERB_NORMAL = &H0'删除文件到回收站
    Private Sub Command1_Click()
    Dim Go As ToBin
    Dim strFile As String
    With CommonDialog1
    .Filter = "('.bak)|'.bak"
    .DialogTitle = "ɾ³ýÎļþ"
    .ShowOpen
    strFile = .FileName
    End WithWith Go
    .wFunc = FO_DELETE
    .pFrom = strFile
    .fFlags = FOF_ALLOWUNDO
    End WithSHFileOperation Go
    End Sub
      

  4.   

    少了下面这个类型 Private Type SHFILEOPSTRUCT
            hwnd As Long
            wFunc As Long
            pFrom As String
            pTo As String
            fFlags As Integer
            fAnyOperationsAborted As Long
            hNameMappings As Long
            lpszProgressTitle As String
    End Type
      

  5.   

    .Filter = "('.bak)|'.bak"改成.Filter = "(*.bak)|*.bak"
    别的部分没问题,检查shell32.dll,有可能是版本不对
      

  6.   

    Private Const FO_DELETE = &H3   ' 删除
    Private Const FOF_ALLOWUNDO = &H40 ' 移入回收站
    Private Type SHFILEOPSTRUCT
        hwnd As Long
        wFunc As Long
        pFrom As String
        pTo As String
        fFlags As Integer
        fAborted As Boolean
        hNameMaps As Long
        sProgress As String
    End TypePrivate Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
    Sub command1_click()
        Dim SHFileOp As SHFILEOPSTRUCT
        
        With SHFileOp
            .wFunc = FO_DELETE
            .pFrom = "f:\abc\ddd.txt"
            .fFlags = FOF_ALLOWUNDO
        End With
        SHFileOperation SHFileOp
    End Sub
      

  7.   

    诸位老大,是提示:找不到dll入口点,SHFileOPerationA in shell32.dll
    意思好象是,在我 shell21.dll 里,没有shfileoperationA 这个函数,难道真的是win2003 有不同吗
      

  8.   

    哈哈,在问专家里找到答案这是VB的BUG,VB5和VB6都有这个问题。 
        将声明中SHFileOperationA前面的空格删除就可以了。