我用FileSystemObject拷贝一个几百M的文件, 中间的延时, 很有可能让用户觉得是死了, 怎么样才能加一个进度条?或用其他方式表现出来.由于只有一个文件, Doevents好像不起做用吧~~~  :(

解决方案 »

  1.   

    1、简单的方法:可以用MsgBox显示:数据正在复制中,请稍后...
    2、也可以用进度条:
       http://search.csdn.net/Expert/topic/1716/1716677.xml?temp=.4785578
      

  2.   

    TO:yuyes(无业游民)    是copyfiles那个函数吗?
      

  3.   

    使用 SHFileOperation
    Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long或者使用多线程来拷贝
      

  4.   

    copyfiles不可以的,应该用SHFileOperation,它复制的时候就有一个进度条,但是我某些方面现在在2003上无法调用这个函数,找不到DLL入口,你查一下相关资料吧
      

  5.   

    '*******模塊****************
    Attribute VB_Name = "modCopy"Public Const FO_MOVE As Long = &H1
    Public Const FO_COPY As Long = &H2
    Public Const FO_DELETE As Long = &H3
    Public Const FO_RENAME As Long = &H4
    Public Const FOF_MULTIDESTFILES As Long = &H1
    Public Const FOF_CONFIRMMOUSE As Long = &H2
    Public Const FOF_SILENT As Long = &H4
    Public Const FOF_RENAMEONCOLLISION As Long = &H8
    Public Const FOF_NOCONFIRMATION As Long = &H10
    Public Const FOF_WANTMAPPINGHANDLE As Long = &H20
    Public Const FOF_CREATEPROGRESSDLG As Long = &H0
    Public Const FOF_ALLOWUNDO As Long = &H40
    Public Const FOF_FILESONLY As Long = &H80
    Public Const FOF_SIMPLEPROGRESS As Long = &H100
    Public Const FOF_NOCONFIRMMKDIR As Long = &H200Type SHFILEOPSTRUCT
         hwnd As Long
         wFunc As Long
         pFrom As String
         pTo As String
         fFlags As Long
         fAnyOperationsAborted As Long
         hNameMappings As Long
         lpszProgressTitle As String
    End TypeDeclare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
      

  6.   

    '********窗體***************
    VERSION 5.00
    Begin VB.Form frmCopy 
       Caption         =   "Copy Files"
       ClientHeight    =   2430
       ClientLeft      =   1545
       ClientTop       =   1545
       ClientWidth     =   6585
       LinkTopic       =   "Form1"
       ScaleHeight     =   2430
       ScaleWidth      =   6585
       Begin VB.CommandButton Command1 
          Caption         =   "Copy Files"
          Height          =   735
          Left            =   2160
          TabIndex        =   0
          Top             =   1320
          Width           =   1575
       End
       Begin VB.Label Label1 
          Caption         =   $"frmCopy.frx":0000
          Height          =   615
          Left            =   360
          TabIndex        =   1
          Top             =   480
          Width           =   5415
       End
    End
    Attribute VB_Name = "frmCopy"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    Private Sub Command1_Click()
    Dim result As Long, fileop As SHFILEOPSTRUCT
    With fileop
            .hwnd = Me.hwnd
            .wFunc = FO_COPY
            .pFrom = "C:\PROGRAM FILES\MICROSOFT VISUAL BASIC\VB.HLP" & vbNullChar & "C:\PROGRAM FILES\MICROSOFT VISUAL BASIC\README.HLP" & vbNullChar & vbNullChar
           .pFrom = "C:\*.*" & vbNullChar & vbNullChar
            .pTo = "C:\testfolder" & vbNullChar & vbNullChar
            .fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
    End With
    result = SHFileOperation(fileop)
    If result <> 0 Then
            ' Operation failed
            MsgBox Err.LastDllError
    Else
            If fileop.fAnyOperationsAborted <> 0 Then
                          MsgBox "Operation Failed"
             End If
    End If
    End Sub
      

  7.   

    '*********工程***********
    Type=Exe
    Form=frmCopy.frm
    Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\SYSTEM\STDOLE2.TLB#OLE Automation
    Module=modCopy; modCopy.bas
    Startup="frmCopy"
    HelpFile=""
    ExeName32="FileCopy.exe"
    Command32=""
    Name="FileCopy"
    HelpContextID="0"
    CompatibleMode="0"
    MajorVer=1
    MinorVer=0
    RevisionVer=0
    AutoIncrementVer=0
    ServerSupportFiles=0
    VersionCompanyName="Sunrite"
    CompilationType=0
    OptimizationType=0
    FavorPentiumPro(tm)=0
    CodeViewDebugInfo=0
    NoAliasing=0
    BoundsCheck=0
    OverflowCheck=0
    FlPointCheck=0
    FDIVCheck=0
    UnroundedFP=0
    StartMode=0
    Unattended=0
    ThreadPerObject=0
    MaxNumberOfThreads=1'********** 調用系統的進度條進行顯示**************
    '**********END************************************
      

  8.   

    用open函数按照binary方式批量读取源文件(一般为1KB/次),然后再用open函数打开目标文件,用write方法写入,这样就可以实现文件拷贝了。在这个读取--〉写入的循环中,增加doevents和进度条。具体源程序我找一找,找到的话,贴出来。