Utvrdjivanje koji su sve diskovi prikljuceni i serijski brojevi tih diskova.
Code:
'Utvrdjivanje koji su sve diskovi prikljuceni i serijski brojevi tih diskova
Private Declare Function GetLogicalDriveStrings Lib "kernel32" _
Alias "GetLogicalDriveStringsA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) _
As Long
Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias _
"GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer _
As String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long, _
lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal _
lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Function VbGetDrivesByString(colDrives As Collection) _
As Integer
Dim strBuffer As String
Dim lngBytes As Long
Dim intPos As Integer
Dim intPos2 As Integer
Dim strDrive As String
Set colDrives = New Collection
strBuffer = Space(255)
lngBytes = GetLogicalDriveStrings(Len(strBuffer), strBuffer)
intPos2 = 1
intPos = InStr(intPos2, strBuffer, vbNullChar)
Do Until intPos = 0 Or intPos > lngBytes
strDrive = Mid(strBuffer, intPos2, intPos - intPos2)
colDrives.Add strDrive, strDrive
intPos2 = intPos + 1
intPos = InStr(intPos2, strBuffer, Chr(0))
Loop
VbGetDrivesByString = colDrives.Count
End Function
Function BrojDiska(strDrive As String) As Long
Dim SerialNum As Long
Dim Res As Long
Dim Temp1 As String
Dim Temp2 As String
Temp1 = String$(255, Chr$(0))
Temp2 = String$(255, Chr$(0))
Res = GetVolumeInformation(strDrive, Temp1, Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2))
BrojDiska = SerialNum
End Function
Private Sub Form_Load()
Label1.Caption = "Prikljuceni diskovi"
Label2.Caption = "Serijski broj diska"
List1.Clear
Dim colDrives As New Collection
Dim varDrive As Variant
If VbGetDrivesByString(colDrives) > 0 Then
For Each varDrive In colDrives
imediskaiserbrdiska = varDrive
List1.AddItem imediskaiserbrdiska
Next
End If
For n = 0 To List1.ListCount - 1
List2.AddItem BrojDiska(List1.List(n))
Next n
End Sub
rgdrajko