thongkorn โพสต์ 2017-10-26 22:02:03

[VB6] การหาเนื้อที่ทั้งหมด และยังคงเหลืออยู่ในแต่ละ Drive

โดยการเรียกใช้งาน Win32 API คือ SHGetDiskFreeSpace ซึ่งเราสามารถหาเนื้อที่ทั้งหมด และที่ยังคงเหลืออยู่ในแต่ละ Drive ได้ด้วย ...แอดมินภูมิใจที่จะนำเสนอเทคนิค การส่งค่าคืนกลับมาจากฟังค์ชั่นได้มากกว่า 1 ค่าครับ พี่น้อง 5555+ ... ทำได้ไงล่ะเนี่ย
http://www.g2gnet.com/webboard/images/vb6/GetDiskSpace.gif
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
หน้า: [1]
ดูในรูปแบบกติ: [VB6] การหาเนื้อที่ทั้งหมด และยังคงเหลืออยู่ในแต่ละ Drive