caicaicaicaijj 发表于 2009-6-9 22:39:00

如何获取一块或多块硬盘的大小容量

刚学au3,很弱,望大家帮助指教,谢谢
如题
用DriveSpaceTotal没法获取未分配的空间
注册表里有这个键值吗?

aksuxj 发表于 2009-6-9 23:43:50

$var = DriveSpaceFree( "c:\" )
MsgBox(4096, "C:的可用空间是:", $var & " MB")

kn007 发表于 2009-6-10 02:07:00

如果用楼上的理解,直接用这个$cppf = DriveGetDrive("FIXED")
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC & "|"
If Not @error Then
      For $i = 1 To $cppf
                Local $pf,$dif
                $begin = TimerInit()
                $pf = $cppf[$i]
                $kj = DriveSpaceTotal($pf & "\")            
                $kykj = DriveSpaceFree($pf & "\")
                $dif = TimerDiff($begin)
                IniWrite(@ScriptDir & "\空间.txt", "磁盘空间" , "检测时间 "&$sxdx&"反应时间 "&$dif, $pf & "盘 全部空间为: " & $kj & " 可用空间为: " & $kykj)
      Next
      EndIf

aksuxj 发表于 2009-6-10 02:22:09

很好,很强大:face (37):

caicaicaicaijj 发表于 2009-6-10 20:49:24

谢谢大家啊
可是我问的是硬盘的总容量,可能还会有未分配的空间

lynfr8 发表于 2009-6-10 23:33:52

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\STORAGE\Volume下有所有volume的信息
这个信息包含分区起始位置和大小
比如
1&30a96598&0&SignatureB6E1B6E1Offset1389AF3200Length9C4595A00
其中:
Signature B6E1B6E1 这个是硬盘标记,也就是引导区0x1B4开始的4字节,靠这个能定位属于哪个盘。
Offset 1389AF3200 这个是起始字节数,除掉0x200就是扇区号
Length 9C4595A00 这个是分区长度,也是除掉0x200转为扇区数

至于扇区数怎么转成硬盘大小,应该有个公式计算的
时间有限,仅提供思路
希望楼主研究完了回来分享下成果

kn007 发表于 2009-6-11 00:55:52

学习下楼上的代码,不过,有点看不懂
页: [1]
查看完整版本: 如何获取一块或多块硬盘的大小容量