|  | 
 
| โดยการเรียกใช้งาน 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
 | 
 |