ลงชื่อเข้าใช้
กระดานข่าว VB
>
ทิปเทคนิคการเขียนโปรแกรม
ส่ง
|
[VB6] การหาเนื้อที่ทั้งหมด และยังคงเหลืออยู่ในแต่ละ Drive
ดู3335
|
โพสต์1
|
บุ๊คมาร์ก
thongkorn
ดูทั้งหมด
2017-10-26 22:02:03
โดยการเรียกใช้งาน 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
G2GNet.com
Powered by
Discuz!
X3.4
โฮมเพจ
|
รูปแบบทั่วไป
|
รูปแบบโมเดิร์น
|
รูปแบบคอมพิวเตอร์