|
Jako skopiować dyskietkę na dyskietkę? |
|
|
|
Napisał Administrator
|
|
poniedziałek, 03 październik 2005 |
W module kodu deklarujemy funkcje API, ktora sprawdza rodzaj napedu:
Declare Function GetDriveType Lib "Kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
W?a?ciwa funkcja, ktorej parametrami sa litery
dysku ?ród?owego i docelowego ma posta?:
Function CopyDisk(literaZrodla As String, literaCelu As String)
Dim DriveLetter As String, DriveNumberA As Long, DriveNumberB As Long, DriveTypeA As Long, DriveTypeB As Long
Dim RetVal As Long, RetFromMsg As Long
'Przekszta?cenie litey ?ród?a (np. A) do formatu np. A:\
DriveLetter = Left(UCase(literaZrodla), 1) & ":\"
'Przypisanie zmiennej DriveNumberA liczby (0 lub 1 w zale?no?ci od stacji A lub B),
'która b?dzie potrzebna jako parametr przy kopiowaniu z wykorzystaniem biblioteki diskcopy.dll
'(patrz ni?ej)
DriveNumberA = (Asc(DriveLetter) - 65)
'Identyfikacja rodzaju nap?du przy u?yciu zadeklarowanej funkcji API
DriveTypeA = GetDriveType(DriveLetter)
'Te same operacje na parametrze literaCelu
DriveLetter = Left(UCase(literaDyskuDocelowego), 1) & ":\"
DriveNumberB = (Asc(DriveLetter) - 65)
DriveTypeB = GetDriveType(DriveLetter)
'Je?eli funkcja API zwróci w obu przypadkach warto?? 2, oznacza to, ?e oba nap?dy
'to stacje dyskietek
If (DriveTypeA = 2) And (DriveTypeB = 2) Then
'Wtedy nast?pi kopiowanie z u?yciem biblioteki diskcopy.dll, która potrzebuje tak?e dwóch
'parametrów które otrzymali?my wy?ej z literyZrodla
i literaCelu
RetVal = Shell("rundll32.exe diskcopy.dll,DiskCopyRunDll " & DriveNumberA & "," & DriveNumberB, 1)
Else
'Gdy funkcja API nie potwierdzi?a jednak, ?e oba nap?dy to stacje dyskietek pojawi si?
'komunikat o niemo?liwo?ci kopiowania
RetFromMsg = MsgBox("Tylko dyskietki" & vbCrLf & "mog? by? kopiowane !", 64, "QuickCopy?")
End If
End Function
Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. Tylko zarejestrowani użytkownicy mogą pisać komentarze. Powered by AkoComment 2.0! |