|
โดยการเรียกใช้งาน Win32 API คือ SHGetDiskFreeSpace ซึ่งเราสามารถหาเนื้อที่ทั้งหมด และที่ยังคงเหลืออยู่ในแต่ละ Drive ได้ด้วย ... แอดมินภูมิใจที่จะนำเสนอเทคนิค การส่งค่าคืนกลับมาจากฟังค์ชั่นได้มากกว่า 1 ค่าครับ พี่น้อง 5555+ ... ทำได้ไงล่ะเนี่ย
Run Time จะได้ทั้งพื้นที่ทั้งหมดและที่เหลืออยู่
จากฟังค์ชั่นที่จะได้เห็นต่อไปนี้ แอดมินให้มันคืนค่ากลับมา 2 ค่า ... หลักการคิดง่ายๆ ก็แค่อาศัยเครื่องหมายพิเศษสักตัวมาคั่นเอาไว้แค่นั้นเองครับ (ตัวอย่างนี้ใช้เครื่องหมาย Colon หรือ : เข้ามาช่วย) จากส่วนหลักที่เรียกใช้งานฟังค์ชั่น พอมันรับค่ากลับมา ก็ใช้คำสั่ง (หรือฟังค์ชั่น) Split เพื่อแยกข้อมูลออกจากกันแค่นี้เอง ...
- Option Explicit
- Private Declare Function SHGetDiskFreeSpace Lib "shell32" Alias "SHGetDiskFreeSpaceA" ( _
- ByVal pszVolume As String, _
- pqwFreeCaller As Currency, _
- pqwTot As Currency, _
- pqwFree As Currency _
- ) As Long
- Private Sub Form_Load()
- '// กำหนดตัวแปรแบบ Array เพื่อจะแยกชุดข้อมูลออกจากกัน
- Dim DSpace() As String
- '// ระบุ Drive ที่ต้องการไปยังฟังค์ชั่น
- '// เกิดการรับค่าเข้ามา 2 ชุด ซึ่งจะคั่นด้วยเครื่องหมาย Comma หรือ :
- '// จากนั้นใช้คำสั่ง Split เพื่อทำการแยกชุดข้อมูลทั้ง 2 ออกจากกันในลักษณะของ Array
- DSpace = Split(CalDiskSpace("E:"), ":")
- MsgBox _
- "Total Space: " & Format$(DSpace(0), "###,###,###,##0") & " Bytes" & vbCrLf & _
- "Free Space: " & Format$(DSpace(1), "###,###,###,##0") & " Bytes"
- End
- End Sub
- Public Function CalDiskSpace(strDrv As String) As String
- Dim FreeCaller As Currency, TotalSpace As Currency, FreeSpace As Currency
- SHGetDiskFreeSpace strDrv, FreeCaller, TotalSpace, FreeSpace
- '// ส่งค่าคืนกลับไป 2 ชุด ซึ่งจะคั่นกันด้วยเครื่องหมาย Colon หรือ :
- CalDiskSpace = TotalSpace * 10000 & _
- ":" & _
- FreeSpace * 10000
- End Function
คัดลอกไปที่คลิปบอร์ด |
|