0

ファイルのコピーを一時停止および再開できますか?

  • 使用:

3 Button_ 1 OpenFileDialog_ 1FolderBrowserDialog

  • 輸入品 :

    Imports System.IO

  • コード :

    Private Sub BTN_filedialog_Click(sender As Object, e As EventArgs) Handles BTN_filedialog.Click
    
    OpenFileDialog1.InitialDirectory = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" 'Cette clé de registre ouvre "Ordinateur"
    OpenFileDialog1.Title =
    OpenFileDialog1.FileName = ""
    OpenFileDialog1.Filter = _
    "All files (*.*)|*.*|txt files (*.txt)|*.txt"
    
    Dim dlgResult = OpenFileDialog1.ShowDialog()
    
    If dlgResult <> System.Windows.Forms.DialogResult.OK Then
        MessageBox.Show("File Error " & dlgResult)
    End If
    End Sub
    
    Private Sub BTN_folderbrowserdialog_Click(sender As Object, e As EventArgs) Handles BTN_folderbrowserdialog.Click
    
    Dim dlgResult = FolderBrowserDialog1.ShowDialog()
    If dlgResult <> System.Windows.Forms.DialogResult.OK Then
        MessageBox.Show("Folder Error " & dlgResult)
    End If
    End Sub
    
    Private Sub BTN_copyfile_Click(sender As Object, e As EventArgs) Handles BTN_copyfile.Click
    
    My.Computer.FileSystem.CopyFile( _
    OpenFileDialog1.FileName, _
    FolderBrowserDialog1.SelectedPath & "\" & _
    OpenFileDialog1.SafeFileName, _
    FileIO.UIOption.AllDialogs)
    End Sub
    

私が使うMy.Computer.FileSystem.CopyFile

Windows 8 では、「コピー」ダイアログ ボックス内に一時停止ボタンがあります。

これを「イベント」と呼ぶには?

これが可能かどうかはわかりませんが、特定の Lib /. 一時停止ボタンを押す動作をシミュレートするDLL ?

Ps : 英語が下手で申し訳ありません。私はフランス人です。

4

1 に答える 1

0

これにアプローチする最善の方法は、FileSystem.CopyFile コマンドを完全に無視することです。代わりに、FileStream を使用して、コピーするファイルを開き、バイトを読み取り、ターゲットの宛先に新しいファイルを作成し、その場所にバイトを書き込みます。

一時停止変数が true に設定されているかどうかを確認できるように、ファイルを小さなチャンクで読み書きできます。たとえば、一時停止ボタンを作成する場合は、グローバル変数「bCopyPaused = true」を設定します。カスタム コピー機能では、単純な if ステートメントを使用して、bCopyPaused == true かどうかを確認し、操作を一時停止できます。操作を再開するには、最後にコピーまたは書き込まれたバイトを追跡する必要があります。

FileStream の使用例を次に示します: http://vb.net-informations.com/files/vb.net_FileStream.htm

于 2013-04-13T21:16:51.097 に答える