elexy 发表于 2011-9-30 17:48:07

[已解决]改进一下代码以准确算出硬盘总容量

本帖最后由 elexy 于 2011-10-1 13:48 编辑

不考虑多块硬盘的情况,就是当前使用的硬盘总容量。

这段代码可行,但是不能插入U盘,一插入U盘/移动硬盘,计算的就是U盘/移动硬盘的容量了。
而且如果存在读卡器,也就是只要打开我的电脑里面有 可移动磁盘 就读不出来硬盘的数值。

AU3内置的一些如 DirGetSize之类函数,在WIN系统下是读不出隐藏分区的,容量不准的, 不知道怎么解决???

初步想法是 利用$HDID = $mo.DeviceID判断,默认磁盘这个值都是\\.\PHYSICALDRIVE0 ,只计算这个值的磁盘容量不知道代码怎么实现?或是有更好的办法?$strComputer = "."
$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$moc = $objWMIService.ExecQuery("Select * from Win32_DiskDrive")
For $mo In $moc
      $HDsize0 = Round($mo.Size / 1024 / 1024 / 1024)
                $HDID = $mo.DeviceID
Next
msgbox(0, $HDID ,$HDsize0)

wei999 发表于 2011-9-30 18:33:27

期待高手出现。。。。

autt 发表于 2011-9-30 20:12:18

不有函数drivespacetotal()吗

elexy 发表于 2011-10-1 08:37:10

不有函数drivespacetotal()吗
autt 发表于 2011-9-30 20:12 http://www.autoitx.com/images/common/back.gif

那是路径所在分区的大小哦,不是硬盘总容量呀

elexy 发表于 2011-10-1 10:34:32

本帖最后由 elexy 于 2011-10-1 10:43 编辑

利用$HDID = $mo.DeviceID判断,本机硬盘这个值一般都是\\.\PHYSICALDRIVE0,后面插上的都是 \\.\PHYSICALDRIVE1 2 3 4 5....

autt 发表于 2011-10-2 20:18:57

回复 4# elexy
就不能用下加减法啊,遍历硬盘,然后加起来不就可以了,
页: [1]
查看完整版本: [已解决]改进一下代码以准确算出硬盘总容量