Mislim da ne moze u basicu a i ako moze to je visa matematika. Mozes u vb ako si to mislio i veoma je lako treba ti jedna linija koda. Pise u vecini knjiga o vb
Potpis
mephisto je napisao:
Kako u basicu da prepoznam sarijki broj hard diska , posto je kod svakog drugaciji?
Pa, probaj ovo (nabrzinu iskopano iz Windows APIja:)
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Private Declare Function GetVolumeInformation& Lib "kernel32" Alias _
"GetVolumeInformationA" (ByVal lpRootPathName As String, _
ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) Const MAX_PATH = 260 Const FILE_CASE_SENSITIVE_SEARCH = &H1
Const FILE_CASE_PRESERVED_NAMES = &H2
Const FILE_UNICODE_ON_DISK = &H4
Const FILE_PERSISTENT_ACLS = &H8
Const FILE_FILE_COMPRESSION = &H10
Const FILE_VOLUME_IS_COMPRESSED = &H8000
GetDriveInfo(ByVal DriveName As String, Optional VolumeName As String, _
Optional SerialNumber As Long, Optional FileSystem As String, _
Optional FileSystemFlags As Long) As Boolean
Dim ignore As Long
If InStr(DriveName, "\\") = 0 Then
DriveName = Left$(DriveName, 1) & ":\"
End If
Mnogo je lakši način od API f'je pokrenuti VOL komandu pomoću naredbe SHELL a zatim izlaznu vrednost prebaciti u bafer i preko string funkcija razlučiti serijski broj.Dobar stari DOS!Naravno,sve DOS naredbe idu preko COMMAND.com.
Postavi Command1 (dugme) na formu i u njega prekopiaj sve ovo sto sam ti ispod napisao :
Code: 'Project: Get the HD serial number.
'Date: 10 March 2002
'Programmer: Wayne Alec de Bruin
'Contact: [email protected]
'
Option Explicit
'
'HD Serial Number.
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
Private Sub Command1_Click()
'
'
'HD serial number. * See: Function GetSerialNumber & Declarations.
MsgBox "" & GetSerialNumber("C:\"), vbOKOnly, "HD Serial Number"
'
'
End Sub
Function GetSerialNumber(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))
'
GetSerialNumber = SerialNum
'
End Function