سه شنبه ۲۸ اسفند ۱۳۸۶, ۲۲:۵۴
کد زیر مربوط به برنامه ای است که فضای آزاد درایوهای سیستم را نشان می دهد. این کد با ویژوال بیسیک نوشته شده است.
پروژه جدیدی را آغاز کنید. روی فرم یک PictureBox با نام Pad قرار دهید. خصوصیت ScaleMode را برای فرم و Pad به Pixle تغییر دهید.
از منوی Project گزینه References را انتخاب کنید. حال از لیست نمایش داده شده گزینه Microsoft Scripting Runtime را پیدا کرده و علا مت بزنید. این کار برای این است که اطلاعات درایوها در دسترس برنامه قرار گیرد.
حال دستورات زیر را در قسمت کد پروژه تایپ کنید:
Private Sub GetDriveSize()
Dim fso As New FileSystemObject
Dim Dr As Drive
Dim UsedPer100 As Byte, FreePer100 As Byte, k As Byte
Dim TotalUsedPer100 As Integer
Dim Total As Long, TotalUsed As Long
Const Height As Byte = 15 ' Height
Const Width As Integer = 200 ' Width
Const D As Byte = 20 ' Distance
Const SP As Integer = 10 ' StartPoint
TotalUsedPer100 = 0
Total = 0
TotalUsed = 0
k = 0
Pad.FontBold = True
Pad.CurrentX = Width + 50
Pad.CurrentY = D * k
Pad.ForeColor = vbBlue
Pad.Print "Used"
Pad.CurrentX = Width + 110
Pad.CurrentY = D * k
Pad.ForeColor = &H8000&
Pad.Print "free"
Pad.CurrentX = Width + 170
Pad.CurrentY = D * k
Pad.ForeColor = vbBlack
Pad.Print "Total"
Pad.FontBold = False
For i = 0 To Drive1.ListCount - 1
Set Dr = fso.GetDrive(Left(Drive1.List(i), 1))
If Dr.DriveType = Fixed Then
k = k + 1
UsedPer100 = Int((Dr.TotalSize - Dr.FreeSpace) / Dr.TotalSize * 100)
FreePer100 = Int(Dr.FreeSpace / Dr.TotalSize * 100)
Pad.Line (SP, D * k)-(Width + SP, D * k + Height), vbWhite, BF
Pad.Line (SP, D * k)-(Width + SP, D * k + Height), vbBlue, B
Pad.Line (SP + 2, D * k + 2)-(UsedPer100 * (Width / 100) + SP - 2, D * k + Height - 2), vbBlue, BF
TotalUsedPer100 = UsedPer100 + TotalUsedPer100
Total = Total + Int(Dr.TotalSize / 1024 ^ 2)
TotalUsed = TotalUsed + Int((Dr.TotalSize - Dr.FreeSpace) / 1024 ^ 2)
Pad.CurrentX = Width + 20
Pad.CurrentY = D * k
Pad.ForeColor = vbRed
Pad.Print "<"; UCase(Left(Drive1.List(i), 1)) & ">";
Pad.CurrentX = Width + 50
Pad.CurrentY = D * k
Pad.ForeColor = vbBlue
Pad.Print Int((Dr.TotalSize - Dr.FreeSpace) / (1024 ^ 2))
Pad.CurrentX = Width + 110
Pad.CurrentY = D * k
Pad.ForeColor = &H8000&
Pad.Print Int((Dr.FreeSpace) / (1024 ^ 2))
Pad.CurrentX = Width + 170
Pad.CurrentY = D * k
Pad.ForeColor = vbBlack
Pad.Print Int((Dr.TotalSize) / (1024 ^ 2))
End If
Next i
TotalUsedPer100 = Int(TotalUsedPer100 / k)
k = k + 1
Pad.FontBold = True
Pad.Line (SP, D * k)-(Width + SP, D * k + Height), vbWhite, BF
Pad.Line (SP, D * k)-(Width + SP, D * k + Height), vbBlack, B
Pad.Line (SP + 2, D * k + 2)-(TotalUsedPer100 * (Width / 100) + SP - 2, D * k + Height - 2), vbBlack, BF
Pad.CurrentX = Width + 20
Pad.CurrentY = D * k
Pad.ForeColor = vbRed
Pad.Print "All"
Pad.CurrentX = Width + 50
Pad.CurrentY = D * k
Pad.ForeColor = vbBlue
Pad.Print TotalUsed
Pad.CurrentX = Width + 110
Pad.CurrentY = D * k
Pad.ForeColor = &H8000&
Pad.Print Total - TotalUsed
Pad.CurrentX = Width + 170
Pad.CurrentY = D * k
Pad.ForeColor = vbBlack
Pad.Print Total
Pad.Height = (k + 2) * D
End Sub
حال با فراخوانی رویه GetDriveSize فضای خالی درایوها روی Pad چاپ خواهد شد.
پروژه جدیدی را آغاز کنید. روی فرم یک PictureBox با نام Pad قرار دهید. خصوصیت ScaleMode را برای فرم و Pad به Pixle تغییر دهید.
از منوی Project گزینه References را انتخاب کنید. حال از لیست نمایش داده شده گزینه Microsoft Scripting Runtime را پیدا کرده و علا مت بزنید. این کار برای این است که اطلاعات درایوها در دسترس برنامه قرار گیرد.
حال دستورات زیر را در قسمت کد پروژه تایپ کنید:
Private Sub GetDriveSize()
Dim fso As New FileSystemObject
Dim Dr As Drive
Dim UsedPer100 As Byte, FreePer100 As Byte, k As Byte
Dim TotalUsedPer100 As Integer
Dim Total As Long, TotalUsed As Long
Const Height As Byte = 15 ' Height
Const Width As Integer = 200 ' Width
Const D As Byte = 20 ' Distance
Const SP As Integer = 10 ' StartPoint
TotalUsedPer100 = 0
Total = 0
TotalUsed = 0
k = 0
Pad.FontBold = True
Pad.CurrentX = Width + 50
Pad.CurrentY = D * k
Pad.ForeColor = vbBlue
Pad.Print "Used"
Pad.CurrentX = Width + 110
Pad.CurrentY = D * k
Pad.ForeColor = &H8000&
Pad.Print "free"
Pad.CurrentX = Width + 170
Pad.CurrentY = D * k
Pad.ForeColor = vbBlack
Pad.Print "Total"
Pad.FontBold = False
For i = 0 To Drive1.ListCount - 1
Set Dr = fso.GetDrive(Left(Drive1.List(i), 1))
If Dr.DriveType = Fixed Then
k = k + 1
UsedPer100 = Int((Dr.TotalSize - Dr.FreeSpace) / Dr.TotalSize * 100)
FreePer100 = Int(Dr.FreeSpace / Dr.TotalSize * 100)
Pad.Line (SP, D * k)-(Width + SP, D * k + Height), vbWhite, BF
Pad.Line (SP, D * k)-(Width + SP, D * k + Height), vbBlue, B
Pad.Line (SP + 2, D * k + 2)-(UsedPer100 * (Width / 100) + SP - 2, D * k + Height - 2), vbBlue, BF
TotalUsedPer100 = UsedPer100 + TotalUsedPer100
Total = Total + Int(Dr.TotalSize / 1024 ^ 2)
TotalUsed = TotalUsed + Int((Dr.TotalSize - Dr.FreeSpace) / 1024 ^ 2)
Pad.CurrentX = Width + 20
Pad.CurrentY = D * k
Pad.ForeColor = vbRed
Pad.Print "<"; UCase(Left(Drive1.List(i), 1)) & ">";
Pad.CurrentX = Width + 50
Pad.CurrentY = D * k
Pad.ForeColor = vbBlue
Pad.Print Int((Dr.TotalSize - Dr.FreeSpace) / (1024 ^ 2))
Pad.CurrentX = Width + 110
Pad.CurrentY = D * k
Pad.ForeColor = &H8000&
Pad.Print Int((Dr.FreeSpace) / (1024 ^ 2))
Pad.CurrentX = Width + 170
Pad.CurrentY = D * k
Pad.ForeColor = vbBlack
Pad.Print Int((Dr.TotalSize) / (1024 ^ 2))
End If
Next i
TotalUsedPer100 = Int(TotalUsedPer100 / k)
k = k + 1
Pad.FontBold = True
Pad.Line (SP, D * k)-(Width + SP, D * k + Height), vbWhite, BF
Pad.Line (SP, D * k)-(Width + SP, D * k + Height), vbBlack, B
Pad.Line (SP + 2, D * k + 2)-(TotalUsedPer100 * (Width / 100) + SP - 2, D * k + Height - 2), vbBlack, BF
Pad.CurrentX = Width + 20
Pad.CurrentY = D * k
Pad.ForeColor = vbRed
Pad.Print "All"
Pad.CurrentX = Width + 50
Pad.CurrentY = D * k
Pad.ForeColor = vbBlue
Pad.Print TotalUsed
Pad.CurrentX = Width + 110
Pad.CurrentY = D * k
Pad.ForeColor = &H8000&
Pad.Print Total - TotalUsed
Pad.CurrentX = Width + 170
Pad.CurrentY = D * k
Pad.ForeColor = vbBlack
Pad.Print Total
Pad.Height = (k + 2) * D
End Sub
حال با فراخوانی رویه GetDriveSize فضای خالی درایوها روی Pad چاپ خواهد شد.