[ mephisto @ 31.03.2001. 21:44 ] @
Kako u basicu da prepoznam sarijki broj hard diska , posto je kod svakog drugaciji?

[Ovu poruku je menjao jc denton dana 20.07.2002 u 12:23 AM GMT]
[ BaCkSpAcE @ 31.03.2001. 23:27 ] @
joj, imao sam negde zapisano koji API se koristi, ali zaboravio... ako nadjem javicu ti...

p0zdrav
[ Ivan Tanasic @ 10.04.2001. 19:53 ] @
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
[ DQL8 @ 11.05.2001. 01:46 ] @
Citat:
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

[ BaCkSpAcE @ 11.05.2001. 17:12 ] @
Moze i u basicu :) ja sam radio sa:

shell "vol > brojh"
open "brojh" for input as #1
....
i dalje sam obradjujesh, bar je meni tako radilo...

p0zdrav
[ Gojko Vujovic @ 11.05.2001. 18:40 ] @
Pa to ti daje broj particije a ne hard diska.
[ DQL8 @ 11.05.2001. 22:55 ] @
pa, to se i podrazumeva pod time:)
[ Gojko Vujovic @ 12.05.2001. 01:43 ] @
Znam ali pitanje je bilo 'Kako u basicu da prepoznam sarijki broj hard diska , posto je kod svakog drugaciji?'..
[ DQL8 @ 22.05.2001. 00:05 ] @
Mislio je na Volume sn# :)
[ ICEMAN @ 06.06.2001. 00:01 ] @
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

SerialNumber = 0
FileSystemFlags = 0
VolumeName = String$(MAX_PATH, 0)
FileSystem = String$(MAX_PATH, 0)


GetDriveInfo = GetVolumeInformation(DriveName, VolumeName, Len(VolumeName), _
SerialNumber, ignore, FileSystemFlags, FileSystem, Len(FileSystem))
VolumeName = Left$(VolumeName, InStr(VolumeName, vbNullChar) - 1)
FileSystem = Left$(FileSystem, InStr(FileSystem, vbNullChar) - 1)

End Function
[ braneMadScientist @ 10.01.2002. 21:53 ] @
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.
[ zeljo @ 21.06.2002. 02:35 ] @
Mislim da ovo trazis :

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



radi 100% provjereno

Pozdrav

Marko_L : Dodati code tagovi