กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
373 7
URL.หัวข้อ /
URL
สามารถอ่านหมายเลขฮาร์ดิสเข้าไปเก็บใน Table ได้ไหมครับ
มีวิธีอ่านหมายเลขฮาร์ดดิสเข้าไปเก็บใน table หรือเปล่าครับ
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R00998
ลองใช้โค้ดข้างล่างดูครับ ไม่รู้จะเป็น Serial Number ตัวที่ต้องการหรือเปล่านะครับ
Function GetAllDrivesID() As String
Dim objFS As Object, objFolder As Object, objFiles As Object
Dim objSubFolder As Object, strFolderPath As String, objF1 As Object
Dim objDrive As Object
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.Drives
For Each objDrive In objFolder
Debug.Print objDrive.DriveLetter & " --> " & objDrive.VolumeName & " --> " & objDrive.SerialNumber
Next
End Function
2 @R01000
ขอบคุณมากครับ คุณสุภาพ
3 @R01001
VolumeName : เป็นชื่อของ drive ที่ตั้งขึ้น ถ้าเป็นระบบ dos จะเกิดจากคำสั่ง Label ครับ..
ส่วน หมายเลขฮาร์ดดิส เกิดขึ้นตอน format harddisk ครับ..
ผมมีตัวอย่าง code ให้ศึกษาอีกตัวอย่างครับดังนี้..
1.copy code ด้านล่างนี้ไปไว้ใน module
Const FS_CASE_SENSITIVE = &H1
Const FS_UNICODE_STORED_ON_DISK = &H4
Const FS_PERSISTENT_ACLS = &H8
Const FS_FILE_COMPRESSION = &H10
Const FS_VOLUME_IS_COMPRESSED = &H8000
Const FILE_NAMED_STREAMS = &H40000
Const FILE_SUPPORTS_ENCRYPTION = &H20000
Const FILE_SUPPORTS_OBJECT_IDS = &H10000
Const FILE_SUPPORTS_REPARSE_POINTS = &H80
Const FILE_SUPPORTS_SPARSE_FILES = &H40
Const FILE_VOLUME_QUOTAS = &H20
Public Declare Function GetVolumeInformation Lib "kernel32.dll" 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
2. copy code ด้านล่างนี้ ไปไว้ใน form แล้วแต่ว่าจะใช้ในสถานการณ์ อะไร เช่น..
ถ้าใช้ command ก็ Event OnClick , ถ้าใช้ textbox ก็อาจจะใช้ Event AfterUpdate เป็นต้น
'Display the volume label, serial number, and file system name
' of the C: drive. Note how the serial number value is manipulated to
' display it properly.
Dim volname As String ' receives volume name of C:
Dim sn As Long ' receives serial number of C:
Dim snstr As String ' display form of serial number
Dim maxcomplen As Long ' receives maximum component length
Dim sysflags As Long ' receives file system flags
Dim sysname As String ' receives the file system name
Dim retval As Long ' return value
' Initialize string buffers.
volname = Space(256)
sysname = Space(256)
' Get information about the C: drive's volume.
retval = GetVolumeInformation("C:\", volname, Len(volname), sn, maxcomplen, _
sysflags, sysname, Len(sysname))
' Remove the trailing nulls from the two strings.
volname = Left(volname, InStr(volname, vbNullChar) - 1)
sysname = Left(sysname, InStr(sysname, vbNullChar) - 1)
' Format the serial number properly.
snstr = Trim(Hex(sn))
snstr = String(8 - Len(snstr), "0") & snstr
snstr = Left(snstr, 4) & "-" & Right(snstr, 4)
' Display the volume name, serial number, and file system name.
MsgBox "Volume Name: " & volname & Chr(10) & "Serial Number: " & snstr & Chr(10) & "File System: " & sysname
หมายเหตุ : ผมได้ code นี้มาจากเว็บ VB & Access หนึ่งซึ่งจำชื่อไม่ได้แล้วครับ ต้องขออภัยเจ้าของ code ด้วย ถ้าผมค้นเจอจะ post มาประกาศเกียรติคุณต่อไปครับ..!
4 @R01003
ขอบคุณ อ. BADMan สำหรับโค้ดที่แจ้งเข้ามาครับ
ลองเลือกใช้ดูนะครับ คงจะนำไปใช้ในการตรวจเช็คนั้นๆ ได้เหมือนกัน
ผมไม่รู้เหมือนกันว่ามันต่างกันอย่างไร ตัวไหนจะอยู่กับ Hard Disk ตลอด หรือจะหายไปทั้ง 2 ตัวตอนแบ่ง Partition และ Format ใหม่ หรือไม่?
5 @R01007
หรือจะหายไปทั้ง 2 ตัวตอนแบ่ง Partition และ Format ครับ
6 @R01048
ขอบคุณครับ
7 @R02843
ใช้ได้ดีทีเดียวครับ
Time: 0.1257s