找回密码
 加入
搜索
查看: 2084|回复: 6

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

[复制链接]
发表于 2009-6-9 22:39:00 | 显示全部楼层 |阅读模式
刚学au3,很弱,望大家帮助指教,谢谢
如题
用DriveSpaceTotal没法获取未分配的空间
注册表里有这个键值吗?
发表于 2009-6-9 23:43:50 | 显示全部楼层
$var = DriveSpaceFree( "c:\" )
MsgBox(4096, "C:的可用空间是:", $var & " MB")
发表于 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[0]
                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
发表于 2009-6-10 02:22:09 | 显示全部楼层
很好,很强大
 楼主| 发表于 2009-6-10 20:49:24 | 显示全部楼层
谢谢大家啊
可是我问的是硬盘的总容量,可能还会有未分配的空间
发表于 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转为扇区数

至于扇区数怎么转成硬盘大小,应该有个公式计算的
时间有限,仅提供思路
希望楼主研究完了回来分享下成果
发表于 2009-6-11 00:55:52 | 显示全部楼层
学习下楼上的代码,不过,有点看不懂
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-23 02:17 , Processed in 0.085579 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表