| |
VB.NET - FortgeschritteneRe: Progressbar | | | Autor: DaveS (Moderator) | Datum: 16.03.04 09:40 |
| Das Beispiel von vorher klappt auch wenn man die API richtig deklariert:
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 Fortschritt, _
ByVal lpData As Integer, _
ByRef pbCancel As Integer, _
ByVal dwCopyFlags As Integer) As Integer
Public bCancel As Integer
Public Delegate Function Fortschritt( _
ByVal TotalFileSize As Long, _
ByVal TotalBytesTransferred As Long, _
ByVal StreamSize As Long, _
ByVal StreamBytesTransferred As Long, _
ByVal dwStreamNumber As Integer, _
ByVal dwCallbackReason As Integer, _
ByVal hSourceFile As Integer, _
ByVal hDestinationFile As Integer, _
ByVal lpData As Integer) As Integer
' Datei kopieren mit Fortschrittsanzeige
Public Function Fortschrittsanzeige( _
ByVal TotalFileSize As Long, _
ByVal TotalBytesTransferred As Long, _
ByVal StreamSize As Long, _
ByVal StreamBytesTransferred As Long, _
ByVal dwStreamNumber As Integer, _
ByVal dwCallbackReason As Integer, _
ByVal hSourceFile As Integer, _
ByVal hDestinationFile As Integer, _
ByVal lpData As Integer) As Integer
pb1.Value = 100 * TotalBytesTransferred / TotalFileSize
Return 0
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
' Datei kopieren
Dim nResult As Integer = CopyFileEx("C:\Work Dev\VSNet" & _
"Dev\Test\nwind.mdb", "C:\Work Dev\VSNet Dev\Temp\nwind.mdb", _
AddressOf Fortschrittsanzeige, _
0, _
bCancel, _
COPY_FILE_RESTARTABLE)
If nResult = 0 Then
nResult = Marshal.GetLastWin32Error()
End If
End Sub (Muss aber eine ziemlich grosse Datei sein, um dass man "Fortschritt" sieht...) | |
Re: Progressbar | | | Autor: DaveS (Moderator) | Datum: 16.03.04 10:00 |
| Hast du denn kein Vertrauen, dass mein (fast identischer) Code auch läuft?
| |
Re: Progressbar | | | Autor: FZelle (Moderator) | Datum: 16.03.04 11:20 |
| Schon, aber Dafür hätte ich ihn sehen müssen
Ich hatte mir die Frage angeschaut, nach der ( schon mal gefundenen ) Lösung
gesucht und dann gepostet.
In der Zwischenzeit hattest Du dann auch was gepostet.
Bin eben nicht so schnell | |
System.Runtime.InteropServices.Marshal.GetLastWin32Error() (oT) | | | Autor: WaldiMaywood | Datum: 16.03.04 13:04 |
| . | |
Re: Progressbar | | | Autor: DaveS (Moderator) | Datum: 16.03.04 13:45 |
| Diese Funktion liefert den letzen Windows Fehlercode, und das zeigt was schiefgegangen ist wenn CopyFileEx() fehschlägt, z.B. die Datei existiert nicht, du hast keinen Zugriff usw. | |
Codes ??? | | | Autor: Fighter | Datum: 16.03.04 14:06 |
| Gibt es irgendwo die Codes dazu ?
#112 => Festplatte voll
aber ich bekomme danach auch nResult = 3
Gruß Jan
Ich nutze Visual Basic 2005 Express Edition auf W2KP und XP | |
Re: Codes ??? | | | Autor: DaveS (Moderator) | Datum: 16.03.04 14:20 |
| Findest du in MSDN unter "System Error Codes"
System Error Codes
The following table provides a list of system error codes. The values are defined in the WinError.h header file. They are returned by the GetLastError function when many functions fail. To retrieve the description text for the error in your application, use the FormatMessage function with the FORMAT_MESSAGE_FROM_SYSTEM flag.
Code Description Name
3 The system cannot find the path specified. ERROR_PATH_NOT_FOUND | |
Re: Progressbar | | | Autor: Muggledream | Datum: 16.03.04 14:49 |
| Hallo,
der Code von DaveS läuft sehr gut. Danke dafür!
Jetzt möchte ich den aber noch ein wenig erweitern.
Ich möchte, das alle Dateien und Unterordner (und auch die Dateien in den Unterordnern) in ein anderes Verzeichnis kopiert werden (die Verzeichnisstrukturen müssen beibehalten werden!) . Dabei soll in Echtzeit die Progressbar ablaufen.
Hat da jemand ein Beispiel für mich?
Vielen Dank und Gruß
Muggledream | |
Re: Progressbar | | | Autor: DaveS (Moderator) | Datum: 16.03.04 15:01 |
| Du kannst z.B. SHFileOperation() API benutzen, dann bekommst den üblichen Explorer Copy Dialog mit Fortschrittsanzeiger. Oder du musst eine Liste der Dateien generieren, die gesamtlänge berechnen, und deine Progressroutine entsprechend ausrichten nach übertragener Menge.
Ich gluabe Waldi hat schon Beiträge gepostet wie man eine rekursive Fileliste generiert, muss noch im Forum sein... | |
Re: Progressbar | | | Autor: Muggledream | Datum: 16.03.04 15:57 |
| Danke für den Tip. Funktioniert wunderbar.
Viele Grüße
Kai | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevDTA 3.0 Pro
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere Infos
|