1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| Private Shared Function MoveFileWithProgress( _
ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal lpProgressRoutine As CopyProgressRoutine, _
ByVal lpData As IntPtr, _
ByVal dwFlags As MoveFileFlags) As Boolean
End Function
Private Delegate Function CopyProgressRoutine( _
ByVal TotalFileSize As Int64, _
ByVal TotalBytesTransferred As Int64, _
ByVal StreamSize As Int64, _
ByVal StreamBytesTransferred As Int64, _
ByVal dwStreamNumber As UInt32, _
ByVal dwCallbackReason As CopyProgressCallbackReason, _
ByVal hSourceFile As IntPtr, _
ByVal hDestinationFile As IntPtr, _
ByVal lpData As IntPtr) As CopyProgressResult
Private Enum CopyProgressResult As UInt32
PROGRESS_CONTINUE = 0
PROGRESS_CANCEL = 1
PROGRESS_STOP = 2
PROGRESS_QUIET = 3
End Enum
Private Enum CopyProgressCallbackReason As UInt32
CALLBACK_CHUNK_FINISHED = 0
CALLBACK_STREAM_SWITCH = 1
End Enum
<Flags()>
Private Enum MoveFileFlags As UInt32
MOVE_FILE_REPLACE_EXISTSING = &H1
MOVE_FILE_COPY_ALLOWED = &H2
MOVE_FILE_DELAY_UNTIL_REBOOT = &H4
MOVE_FILE_WRITE_THROUGH = &H8
MOVE_FILE_CREATE_HARDLINK = &H10
MOVE_FILE_FAIL_IF_NOT_TRACKABLE = &H20
End Enum
Private Function OnCopyProgress( _
ByVal TotalFileSize As Int64, _
ByVal TotalBytesTransferred As Int64, _
ByVal StreamSize As Int64, _
ByVal StreamBytesTransferred As Int64, _
ByVal dwStreamNumber As UInt32, _
ByVal dwCallbackReason As CopyProgressCallbackReason, _
ByVal hSourceFile As IntPtr, _
ByVal hDestinationFile As IntPtr, _
ByVal lpData As IntPtr) As CopyProgressResult
Dim percent As Double = TotalBytesTransferred / TotalFileSize
Return CopyProgressResult.PROGRESS_CONTINUE
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim result As Boolean = MoveFileWithProgress("D:\VIDEOS\MEGAVIDEO - Je le regarde.flv", "D:\MEGAVIDEO - Je le regarde.flv", AddressOf OnCopyProgress, IntPtr.Zero, MoveFileFlags.MOVE_FILE_WRITE_THROUGH Or MoveFileFlags.MOVE_FILE_COPY_ALLOWED)
MsgBox(CopyProgressResult.PROGRESS_CONTINUE)
End Sub
Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click
ProgressBar1.Value = CopyProgressResult.PROGRESS_CONTINUE
End Sub |
Partager