为什么
Private Const FO_COPY = &H2
Private Const FOF_NOCONFIRMATION = &H10 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
    
     
    SHFileOp.wFunc = FO_COPY
    SHFileOp.pFrom = App.Path
    SHFileOp.pTo = "c:\aaa"
    SHFileOp.fFlags = &H10   
    
    SHFileOperation SHFileOp
End Sub
可以将自己复制到别的目录下,而使用
Private Const FO_COPY = &H2
Private Const FOF_NOCONFIRMATION = &H10 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
    
     
    SHFileOp.wFunc = FO_COPY
    SHFileOp.pFrom = App.Path & "\" & App.EXEName & ".exe"
    SHFileOp.pTo = "c:\aaa"
    SHFileOp.fFlags = &H10   
    
    SHFileOperation SHFileOp
End Sub
却提示说无法读源文件

解决方案 »

  1.   

    pFrom与pTo是String类型,又不是定长的,那传递给API,按惯例至少应是以Chr(0)结束,你试试
    SHFileOp.pFrom = App.Path & "\" & App.EXEName & ".exe" & chr(0)
    SHFileOp.pTo = "c:\aaa" & chr(0)还有,源文件是否存在?
      

  2.   

    楼上的,App.Path & "\" & App.EXEName & ".exe"就是将自己做为源文件先按你的方法不行,问题也不是你说的那样
      

  3.   

    是呀!我当然知道,你是将自己做源文件,但App.EXEName & ".exe"只有在工程编译后才会生成呀!我怕你忘了编译!另外,刚查了一下资料,你这里的String尾不是一个Chr(0),而是2个,也就是应加上vbNullChar & vbNullChar,当然不加,估计也没问题,因为你只有一个文件,但建议加上安全一些。