Immer wieder wird nach einer Kopierfunktion gefragt, die den Fortschritt anzeigt und einfach zu integrieren ist. Über die API - Dokumentation bin ich zufällig auf die Funktion CopyFileEx gestossen. Diese Funktion bietet genau die gesuchte Funktion: Kopieren einer Datei und Möglichkeit den Kopierfortschritt beliebig anzuzeigen. Hierzu wird ein Modul mit folgendem Code benötigt: Option Explicit ' Benötigte API-Deklarationen und Konstanten Public Const PROGRESS_CANCEL = 1 Public Const PROGRESS_CONTINUE = 0 Public Const PROGRESS_QUIET = 3 Public Const PROGRESS_STOP = 2 Public Const COPY_FILE_FAIL_IF_EXISTS = &H1 Public Const COPY_FILE_RESTARTABLE = &H2 Public Declare Function CopyFileEx Lib "kernel32.dll" _ Alias "CopyFileExA" ( _ ByVal lpExistingFileName As String, _ ByVal lpNewFileName As String, _ ByVal lpProgressRoutine As Long, _ lpData As Any, _ ByRef pbCancel As Long, _ ByVal dwCopyFlags As Long) As Long Public bCancel As Long ' Verweis auf ein ProgressBar-Control Public glbProgBar As ProgressBar Die eigentlich Funktion: ' Datei kopieren mit Fortschrittsanzeige Public Function Fortschrittsanzeige( _ ByVal TotalFileSize As Currency, _ ByVal TotalBytesTransferred As Currency, _ ByVal StreamSize As Currency, _ ByVal StreamBytesTransferred As Currency, _ ByVal dwStreamNumber As Long, _ ByVal dwCallbackReason As Long, _ ByVal hSourceFile As Long, _ ByVal hDestinationFile As Long, _ ByVal lpData As Long) As Long If Not glbProgBar Is Nothing Then With glbProgBar .Value = CStr(Int((TotalBytesTransferred * 10000) / _ (TotalFileSize * 10000) * 100)) End With DoEvents End If Fortschrittsanzeige = PROGRESS_CONTINUE End Function Ein kleines Beispiel: ' Datei kopieren Private Sub cmdCopy_Click() ' ProgressBar-Control Set glbProgBar = ProgressBar1 ProgressBar1.Value = 0 ' Datei kopieren nResult = CopyFileEx(txtSource.Text, _ txtDest.Text, _ AddressOf Fortschrittsanzeige, _ ByVal 0&, _ bCancel, _ COPY_FILE_RESTARTABLE) End Sub Der Aufruf übergibt der API-Funktion die Quell- und Zieldatei. In der Funktion Fortschrittsanzeige aktualisierenwir die Progressbar. Optional wäre es noch möglich den Vorgang abzubrechen, in dem bCancel = True gesetzt wird. Dieser Tipp wurde bereits 49.496 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |