1:1 Übernommen
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Dim lpCallback As CPCallback
Dim bUseCallback As Boolean
Dim fcSuccess As Integer
Dim sSourcefile, sTargetFile As String
Dim bcancelbackup As Boolean
bcancelbackup = False
bUseCallback = True
sSourcefile = "C:\Alt.txt"
sTargetFile = "C:\Neu.txt"
If bUseCallback Then
fcSuccess = CopyFileEx(sSourcefile, sTargetFile, AddressOf _
CopyProgressCallback, 0, bcancelbackup, COPY_FILE_RESTARTABLE)
End If
End Sub
Public Const MAXDWORD As Integer = &HFFFFFFFF
Public Const MAX_PATH As Integer = 260
Public Const INVALID_HANDLE_VALUE As Integer = -1
Public Const FILE_ATTRIBUTE_DIRECTORY As Integer = &H10S
'Define possible return codes from the CopyFileEx callback routine
Public Const PROGRESS_CONTINUE As Integer = 0
Public Const PROGRESS_CANCEL As Integer = 1
Public Const PROGRESS_STOP As Integer = 2
Public Const PROGRESS_QUIET As Integer = 3
'CopyFileEx callback routine state change values
Public Const CALLBACK_CHUNK_FINISHED As Integer = &H0S
Public Const CALLBACK_STREAM_SWITCH As Integer = &H1S
'CopyFileEx option flags
Public Const COPY_FILE_FAIL_IF_EXISTS As Integer = &H1S
Public Const COPY_FILE_RESTARTABLE As Integer = &H2S
Public Const COPY_FILE_OPEN_SOURCE_FOR_WRITE As Integer = &H4S
Public Declare Function CopyFileEx Lib "kernel32" Alias "CopyFileExA" _
(ByVal lpExistingFileName As String, ByVal lpNewFileName As String, _
ByVal lpProgressRoutine As CPCallback, ByVal lpData As Long, ByVal pbCancel _
As Integer, _
ByVal dwCopyFlags As Integer) As Integer
Public Delegate Function CPCallback(ByVal TotalFileSize As Decimal, _
ByVal TotalBytesTransferred As Decimal, ByVal StreamSize As Decimal, _
ByVal StreamBytesTransferred As Decimal, ByVal dwStreamNumber As Integer, _
ByVal dwCallbackReason As Integer, ByVal hSourceFile As Integer, _
ByVal hDestinationFile As Integer, ByRef lpData As Integer) As Integer
Public Function CopyProgressCallback(ByVal TotalFileSize As Decimal, _
ByVal TotalBytesTransferred As Decimal, ByVal StreamSize As Decimal, _
ByVal StreamBytesTransferred As Decimal, ByVal dwStreamNumber As Integer, _
ByVal dwCallbackReason As Integer, ByVal hSourceFile As Integer, _
ByVal hDestinationFile As Integer, ByRef lpData As Integer) As Integer
Select Case dwCallbackReason
Case CALLBACK_STREAM_SWITCH
'this value is passed whenever the
'callback is initialized for each file.
'F_Migration.DefInstance.ProgressBar1.Value = 0
'F_Migration.DefInstance.ProgressBar1.Min = 0
'F_Migration.DefInstance.ProgressBar1.Max = (TotalFileSize *
' 10000)
'F_Migration.DefInstance.ProgressBar1.CtlRefresh()
CopyProgressCallback = PROGRESS_CONTINUE
Case CALLBACK_CHUNK_FINISHED
'called when a block has been copied
'F_Migration.DefInstance.ProgressBar1.Value = (
' TotalBytesTransferred * 10000)
'optional. While the app is copying it
'will not respond to input for canceling.
CopyProgressCallback = PROGRESS_CONTINUE
End Select
TextBox1.Text = TotalFileSize
System.Windows.Forms.Application.DoEvents()
CopyProgressCallback = PROGRESS_CONTINUE
End Function
End Class |