Newsgroup: it.comp.lang.visual-basic
Titolo: aiuto USB







Ragazzi niente da fare non ci 
riesco


se cerco il file nella pen 
drive usb tutto ok


 


ma quando devo cercare la pen 
drive in che porta usb si trova


non ci riesco


sareste così gentili da darmi una 
mano


ve ne sarei veramente 
grato


 


ciao 
Clod



El_modifica ha scritto:

Beh, per trovare a quale unità disco corrisponde l'usb potresti seguire
questi passi:
1) Con l'api GetLogicalDriveStrings ricavi l'elenco delle lettere in uso
nel sistema (Per esempio di lettera: C per l'hard disk, C:\)
2) Fai passare ogni lettera e per ognuna chiedi al sistema operativo a
che tipo di unità corrisponde con l'api GetDriveType. Se è di tipo
DRIVE_REMOVABLE potrebbe essere o un lettore floppy (per esempio A:\ o
B:\) o la chiavetta USB. Poichè però di solito la chiavetta è dopo la
lettera C non credo ci siano grandi problemi.
All'indirizzo internet
http://vbnet.mvps.org/index.html?code/disk/getmediatype.htm
trovi un esempio che pare ben fatto...

 lettera C non credo ci siano grandi problemi.
ok, proviamo a riassumere.
per far prima ho evitato la getlogical che tanto c'e' la drivetype.
sul form ci sono due command e due list.
commenti dopo il codice
'---------------- CODICE ---------------
Option Explicit
'Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias
"GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As
String) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA"
(ByVal nDrive As String) As Long
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias
"GetDiskFreeSpaceExA" (ByVal lpRootPathName As String,
lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency,
lpTotalNumberOfFreeBytes As Currency) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Private Function DriveType(s)
    Select Case GetDriveType(s)
'        Case 0: DriveType = "Sconosciuto"
        Case 1: DriveType = "Non esistente"
        Case 2: DriveType = "Disco rimovibile"
        Case 3: DriveType = "Disco fisso"
        Case 4: DriveType = "Disco remoto"
        Case 5: DriveType = "CD-ROM"
        Case 6: DriveType = "Disco RAM"
        Case Else: DriveType = "Sconosciuto"
    End Select
End Function
Private Sub cmdExport_Click()
    Dim fName As String, fNum As Long, j As Long
    fName = App.Path & "\DriveInfo.txt"
    fNum = FreeFile
    Open fName For Output As #fNum
    Print #fNum, Now
    For j = 0 To lstDrives.ListCount - 1
        lstDrives.ListIndex = j
        Print #fNum, lstDrives.Text
    Next
    Close #fNum
    ShellExecute Me.hwnd, vbNullString, fName, vbNullString, "C:\",
SW_SHOWNORMAL
End Sub
Private Sub cmdGetDrives_Click()
    On Error GoTo errman
    Dim j As Long
    Dim r As Long, BytesFreeToCaller As Currency, TotalBytes As Currency
    Dim TotalFreeBytes As Currency, TotalBytesUsed As Currency
    Dim s As String
    For j = 65 To 90
        If (DriveType(Chr$(j) & ":") = "Sconosciuto") Or _
                (DriveType(Chr$(j) & ":") = "Non esistente") Then
            lstDrives.AddItem Chr$(j) & " - " & DriveType(Chr$(j) & ":")
        Else
            GetDiskFreeSpaceEx Chr$(j) & ":\", BytesFreeToCaller,
TotalBytes, TotalFreeBytes
            s = "TOT: " & Format$(TotalBytes * 10000, "###,###,###,##0") & _
                " - FREE: " & Format$(TotalFreeBytes * 10000,
"###,###,###,##0") & _
                " - USED:" & Format$((TotalBytes - TotalFreeBytes) * 10000,
"###,###,###,##0")
'                " - DISP: " & Format$(BytesFreeToCaller * 10000,
"###,###,###,##0") &
            lstDrives.AddItem Chr$(j) & " - " & DriveType(Chr$(j) & ":") &
" - " & s
        End If
    Next
    Exit Sub
errman:     lstErrors.AddItem Chr$(j) & " - " & Error: Resume Next
End Sub
'---------------- FINE CODICE ---------------
'---------------- RISULTATO ---------------
27/06/2005 10.31.15
A - Non esistente
B - Non esistente
C - Disco fisso - TOT: 39.999.500.288 - FREE: 6.701.977.600 -
USED:33.297.522.688
D - CD-ROM - TOT: 4.316.069.888 - FREE: 0 - USED:4.316.069.888
E - Disco rimovibile - TOT: 129.464.320 - FREE: 104.269.824 -
USED:25.194.496
F - Non esistente
G - Non esistente
H - Non esistente
I - Disco rimovibile - TOT: 507.117.568 - FREE: 308.297.728 -
USED:198.819.840
J - Non esistente
K - CD-ROM - TOT: 623.863.808 - FREE: 0 - USED:623.863.808
L - Non esistente
M - Non esistente
N - Disco remoto - TOT: 123.518.996.480 - FREE: 31.479.334.912 -
USED:92.039.661.568
O - Disco remoto - TOT: 123.518.996.480 - FREE: 44.165.455.872 -
USED:79.353.540.608
P - Disco remoto - TOT: 123.518.996.480 - FREE: 12.548.304.896 -
USED:110.970.691.584
Q - Non esistente
R - Non esistente
S - Non esistente
T - Non esistente
U - Non esistente
V - Non esistente
W - Non esistente
X - Non esistente
Y - Non esistente
Z - Non esistente
'---------------- FINE RISULTATO ---------------
commenti:
- le dichiarazioni le ho prese dall'api-guide allapi, salvo fx drivetype,
leggermente diversa.
- almeno qui, free e disponibili da' sempre lo stesso, quindi ho commentato
i disp. non so con i cluster di w95.
unita':
questo è il portatile, il floppy non c'e', e ho disattivato il suo drive sd
perche' fa sempre casini; in compenso c'e' di tutto:
d - dvd-rw inserito
e - penna usb 128
i - sd 512 della nikon 4100
k - diz latino su virtualcd (comprati, sia "IL" sia vcd :)
n, p - dischi fissi di rete mappati
o - disco usb di rete mappato
nota di colore 1: explorer il disco e: non lo vede quasi mai. gli altri si',
ma quello lo vedono tutti i programmi salvo explorer. qui comunque appare.
nota di colore 2: dopo aver lanciato dall'ide 3-4 volte, il lap si 3'
inchiodato di brutto, mi ha fatto giusto spegnere via taskman. al momento
sembra esserci tutto :)
el_modifica: in sostanza, se e' rimovibile e tiene piu' di 2.88 mb,
_dovrebbe_ essere una penna usb o simili.
hth, ciao, a.

lanciato sull'altra macchina, i dischi usb locali li vede come normali
dischi fissi.
il dvd di questo lap, mappato, come disco remoto, come l'hd.
a.





Grazie 1000 ragazzi


non so come 
ringraziarvi


ora mi metto subito 
all'opera


 


grazie di nuovo


 


el_modifica


 



 il dvd di questo lap, mappato, come disco remoto, come l'hd.
lanciato su un altro pc, con c,d = 2 fissi, e,f = 2 dvdrw, per gli ultimi
due dà le stesse statistiche di d. prob il codice va controllato un po'.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it