★ ★ ★ 百分求解:如何获得当前硬盘的所有逻辑分区的个数?若有多硬盘,也要找出来!取得硬盘所有逻辑分区的个数,并找到最后一个逻辑

bluebill 2002-08-27 11:37:32
如何获得当前硬盘的所有逻辑分区的个数?若有多硬盘,也要找出来!取得硬盘所有逻辑分区的个数,并找到最后一个逻辑分区的盘符??
请给出完整代码?只要可以正确运行,立即给分!!!
...全文
136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluebill 2002-08-29
  • 打赏
  • 举报
回复
呵呵,终于又见到李大哥了:)
lihonggen0 2002-08-29
  • 打赏
  • 举报
回复

VB6编程中如何获取硬盘分区信息

 


   也许你并不了解硬盘分区信息应该包括些什么,但如果你曾经对硬盘分过区,你或许对此有所了解,在此为各位介绍一个用VB编写的获取硬盘分区信息的程序。在这个程序中,它将详细地告诉你:你的硬盘总容量、分过几个区、每个区的总容量、及现在剩余的可用容量、硬盘分区表为几位(即是FAT32还是FAT16),每个分区是几个字节……怎么样?够完整详细了吧!好的,就让我们一起来看一下吧:
  首先做准备工作:在FORM1上新建二个LABEL(LABEL1和LABEL2)一个COMMAND1命令按钮。然后输入以下代码:
  Private Declare Function GetDriveType Lib
  kernel32“Alias "GetDriveTypeA(ByVal nDrive As String) As Long
  Private Declare Function GetDiskFreeSpace Lib“kernel32" Alias“GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
  Private Const DRIVE_FIXED = 3
  Private Sub Form_Load() '作初始化设置
  COMMAND1.Caption = “测试硬盘"
  Form1.Caption = “测试硬盘程序"
  Label1.WordWrap = True
  Label1.Caption = “"
  Label2.WordWrap = True
  Label2.Caption = “"
  End Sub
  Private Sub COMMAND1_Click()
  Dim DriveNum As Integer
  Dim TempDrive As String
  Dim X As Long
  For DriveNum = 97 To 122 Step 1 '检测从A-Z(盘符)
  TempDrive = GetDriveType(Chr(DriveNum) & “:\")
  Select Case TempDrive '如是3则表示是硬盘,测试你有几个盘
  Case 3: X = GetDiskSpace(Chr(DriveNum)) '调用子程序
  End Select
  Next DriveNum
  End Sub
  Public Function GetDiskSpace(DrivePath As String)
  Dim Drive As String
  Dim SectorsPerCluster As Long
  Dim BytesPerSector As Long
  Dim NumberOfFreeClusters As Long
  Dim TotalClusters As Long
  Dim Check As Integer
  Dim DiskSpace
  Dim diskTotal
  Static AllDiskTotal As Long
  Static NUM As Integer
  NUM = NUM + 1 '分几个区的计算
  Drive = Left(Trim(DrivePath), 1) & “:\"
  Check = GetDiskFreeSpace(Drive, SectorsPerCluster, BytesPerSector, NumberOfFreeClusters, TotalClusters)
  If Check <> 0 Then
  DiskSpace = SectorsPerCluster * BytesPerSector * NumberOfFreeClusters
  '这是一个分区磁盘剩余空间的计算公式
  DiskSpace = Format$(DiskSpace, “###,###") '以规定格式显示,如732,324,231
  diskTotal = SectorsPerCluster * BytesPerSector * TotalClusters
  '这是一个分区磁盘总容量的计算公式
  diskTotal = Format$(diskTotal, “###,###")
  AllDiskTotal = AllDiskTotal + diskTotal '整个硬盘的总容量
  Label1.Caption =“你的硬盘总容量为:” & Format$(AllDiskTotal,“###,###") &个字节,即:” & Left(AllDiskTotal, 1) & . & Mid(AllDiskTotal, 2, 1) &“G,一共分了”& NUM &“个区,其中:"
   Label2.Caption = Label2.Caption & UCase(DrivePath) & “盘的整个容量为:" & diskTotal &“个字节" & ",其剩余磁盘空间为:“& DiskSpace & " 个字节,磁盘已FAT“& SectorsPerCluster & ",每个分区为:“& BytesPerSector & "个字节。“& vbCrLf & vbCrLf”
  End If
  End Function
  注:以上程序在中文WINDOWS98,中文VB6.0企业版中调试通过。(上海 季昭君)






 


bluebill 2002-08-29
  • 打赏
  • 举报
回复
多谢楼上的大哥,还有哪位要补充吗?
nanhui 2002-08-28
  • 打赏
  • 举报
回复
Private Sub Command2_Click()
Dim DiskDriveSet
Dim dd
Dim size As Double, Many As Integer, Total As Integer
Total = 0
Set DiskDriveSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_DiskDrive")

For Each dd In DiskDriveSet
size = FormatNumber(dd.size, 0) '//盘的容量
Many = dd.Partitions '//有多少个分区
Total = Total + Many '总分区数
Next '//如果有多个硬盘则显示下一个硬盘的信息。

End Sub

Private Sub Command3_Click()
'查看一切硬盘盘符信息
Dim LogicalDiskSet
Dim ld
Set LogicalDiskSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_LogicalDisk")

For Each ld In LogicalDiskSet
Debug.Print ld.Name
Debug.Print ld.size
Debug.Print ld.VolumeName
Debug.Print ld.VolumeSerialNumber
Next
End Sub
bluebill 2002-08-28
  • 打赏
  • 举报
回复
昨天贴的帖子,今天继续等待
bluebill 2002-08-27
  • 打赏
  • 举报
回复
大家快点来领分吧,我的分都等急了
bluebill 2002-08-27
  • 打赏
  • 举报
回复
找出硬盘所有逻辑分区的个数,并且给出最后一个分区的盘符
nik_Amis 2002-08-27
  • 打赏
  • 举报
回复
up

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧