PDA

View Full Version : سوال: بدست آوردن حجم اشغال شده یک درایو



shahabbasic
جمعه 28 مرداد 1390, 19:37 عصر
حجم اشغال شده یک درایو رو چطور میشود بدست آورد؟

IamOverlord
جمعه 28 مرداد 1390, 19:52 عصر
سلام!

1. یه TextBox روی Form بذار.
2. یه CommandButton هم بذار.
3. بدون تغییر نام اون دو تا Control ای که گذاشتی این کد رو بنویس :

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 Command1_Click()
Dim FreeCaller As Currency, Tot As Currency, Free As Currency
SHGetDiskFreeSpace Text1.Text, FreeCaller, Tot, Free
MsgBox "Free space to caller: " + Format$(FreeCaller * 10000, "###,###,###,##0") + vbCrLf + _
"Total space: " + Format$(Tot * 10000, "###,###,###,##0") + vbCrLf + _
"Free space: " + Format$(Free * 10000, "###,###,###,##0")
End Sub

Private Sub Form_Load()
Text1.Text = "C:\"
End Sub

setroyd
شنبه 29 مرداد 1390, 13:21 عصر
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency, lpTotalNumberOfFreeBytes As Currency) As Long

Private Sub Form_Load()
Dim BytesFreeToCalller As Currency, TotalBytes As Currency
Dim TotalFreeBytes As Currency
Dim RootPathName As String

Me.AutoRedraw = True

RootPathName = "c:\"
GetDiskFreeSpaceEx RootPathName, BytesFreeToCalller, TotalBytes, TotalFreeBytes

Me.Print " Total Number Of Bytes:", Format$(TotalBytes * 10000, "###,###,###,##0") & " bytes"
Me.Print " Total Free Bytes:", Format$(TotalFreeBytes * 10000, "###,###,###,##0") & " bytes"
Me.Print " Free Bytes Available:", Format$(BytesFreeToCalller * 10000, "###,###,###,##0") & " bytes"
Me.Print " Total Space Used :", Format$((TotalBytes - TotalFreeBytes) * 10000, "###,###,###,##0") & " bytes"
End Sub

محسن واژدی
شنبه 29 مرداد 1390, 18:21 عصر
سلام علیکم
یا اجازه جنابر IamOverlord کد فضای اشغال شده را نیز به کدهای پست شماره 2 اضافه کردم:

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 Command1_Click()

Dim FreeCaller As Currency, Tot As Currency, Free As Currency, used@

SHGetDiskFreeSpace Text1.Text, FreeCaller, Tot, Free
Tot = Tot * 10000
Free = Free * 10000
used@ = Tot - Free
MsgBox "Free space to caller: " & Format$(FreeCaller * 10000, "###,###,###,##0") & vbCrLf & _
"Total space: " & Format$(Tot, "###,###,###,##0") & vbCrLf & _
"Free space: " & Format$(Free, "###,###,###,##0") & vbCrLf & _
"Used space: " & Format$(used@, "###,###,###,##0")

End Sub



Private Sub Form_Load()

Text1.Text = "C:\"

End Sub




موفق باشید

setroyd
شنبه 29 مرداد 1390, 22:15 عصر
جناب ramzdar یا IamOverlord (http://barnamenevis.org/member.php?72921-IamOverlord)

setroyd
شنبه 29 مرداد 1390, 22:16 عصر
جناب ramzdar یا IamOverlord (http://barnamenevis.org/member.php?72921-IamOverlord) !!! :متفکر:

IamOverlord
شنبه 29 مرداد 1390, 22:33 عصر
جناب ramzdar یا IamOverlord (http://barnamenevis.org/member.php?72921-IamOverlord) !!! :متفکر:


منظورتون چیه؟!

محسن واژدی
شنبه 29 مرداد 1390, 22:43 عصر
جناب ramzdar یا IamOverlord (http://barnamenevis.org/member.php?72921-IamOverlord) !!! :متفکر:


اشتباهی شد، حالا چرا دوتا پست دادین، آنقدر هم اشتباه بزرگی نبودا ;)

setroyd
شنبه 29 مرداد 1390, 22:45 عصر
سلام علیکم
یا اجازه جنابر IamOverlord کد فضای اشغال شده را نیز به کدهای پست شماره 2 اضافه کردم:

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 Command1_Click()

Dim FreeCaller As Currency, Tot As Currency, Free As Currency, used@

SHGetDiskFreeSpace Text1.Text, FreeCaller, Tot, Free
Tot = Tot * 10000
Free = Free * 10000
used@ = Tot - Free
MsgBox "Free space to caller: " & Format$(FreeCaller * 10000, "###,###,###,##0") & vbCrLf & _
"Total space: " & Format$(Tot, "###,###,###,##0") & vbCrLf & _
"Free space: " & Format$(Free, "###,###,###,##0") & vbCrLf & _
"Used space: " & Format$(used@, "###,###,###,##0")

End Sub



Private Sub Form_Load()

Text1.Text = "C:\"

End Sub




موفق باشید


پرسیدم چرا اقای ramzdar !

setroyd
شنبه 29 مرداد 1390, 22:53 عصر
اقا یه bug بود شرمنده تو صفحه ی من نوشته ramzdar نگاه کنید ضمیمه کردم اینجا که پاسخ به نقل قول که زدم نوشته : یا اجازه جنابر iam overlord جالب نیست عکس رو ضمیمه کردم زیرش خط قرمز کشیدم چرا !!!

IamOverlord
شنبه 29 مرداد 1390, 23:02 عصر
خیلی عجیبه!

محسن واژدی
شنبه 29 مرداد 1390, 23:09 عصر
اقا یه bug بود شرمنده تو صفحه ی من نوشته ramzdar نگاه کنید ضمیمه کردم اینجا که پاسخ به نقل قول که زدم نوشته : یا اجازه جنابر iam overlord جالب نیست عکس رو ضمیمه کردم زیرش خط قرمز کشیدم چرا !!!

حاجیییییی، اشتباه لپی بود دیگه گیرندیییییییییین :لبخندساده::لبخندساده:

setroyd
شنبه 29 مرداد 1390, 23:17 عصر
ایول من فک کردم رفتم تو bug :چشمک:

محسن واژدی
شنبه 29 مرداد 1390, 23:17 عصر
خیلی عجیبه!

عجب خطایی مرتکب شدم، :) ، پست ویرایش شد، البته ببخشید یه یکی دوساعتی با نام جناب ramzdar نمایش داده شد انشاء الله بتوانم جبران کنم این خطا را، از جناب ramzdar هم معذرت میخواهم

الهم صل علی محمّد و آل محمّد