在一次使用FileCopy时提示错误!百思不得其解,后来发现对一个已打开的文件使用 FileCopy 语句,则会产生错误!    于是我想到,如果一个程序想把自身复制到指定目录,要如何实现?    请高手能贴出代码,指点我等小辈!!!!先谢了!!!

解决方案 »

  1.   

    我虽然没有试过楼上的方法,但是绝对是没有必要搞那么复杂的。。
    以下代码是刚刚测试过的~~~~~可以复制程序自身~~~~
    Option ExplicitPrivate Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
    Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
    Private Sub Form_Load()
        Dim moduleName As String * 256
        GetModuleFileName 0&, moduleName, 256&
        CopyFile moduleName, App.Path & "\1.exe", 1
    End Sub
      

  2.   

    用API函数CopyFile可以复制正在运行的exe到指定目录,当然也可以复制自身,代码如下:声明API
    Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long’ToPath为目的文件路径,FromPath为源文件路径
    If Dir(ToPath) = "" Then
       Call CopyFile(FromPath, ToPath, False)
    End If
      

  3.   

    正在运行的exe是可以进行读访问的,但是一定要用默认的共享模式,打开文件的时候不要用 Lock Read 或 Lock Write。
      

  4.   

    用michael_zy(枫林)、maohaibin(永不言弃) 的方法实现了!批处理文件的方法,正在试……
      

  5.   

    filecopy就可以了,即使你自身在运行,也是可以复制的我试过了,没问题
      

  6.   

    Private Sub Command1_Click()
    FileCopy App.Path & "\" & App.EXEName & ".exe", App.Path & "\" & Replace(Now, ":", ":") & App.EXEName & ".exe"
    End Sub
    App.Path & "\" & Replace(Now, ":", ":") 可改为你的路径
    http://www.jiyi.org