CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

小妹求救!

楼主sunnydavid(sunny)2002-08-02 10:07:44 在 VB / 基础类 提问

如何计算磁盘的剩余空间,最好有源码。  
  谢谢!! 问题点数:100、回复次数:8Top

1 楼daviddivad(你真行,居然比我还快! Scorpio)回复于 2002-08-02 10:15:35 得分 70

'计算磁盘剩余空间,返回单位为MB,存在变量lng_FreeSpace中,错误返回False,成功返回True  
  Public   Function   fun_GetDiskFreeSpace(ByVal   str_DiskName   As   String,   ByRef   lng_FreeSpace   As   Long)   As   Boolean  
          Dim   lng_Ret   As   Long  
          Dim   lng_Free   As   LARGE_INTEGER,   lng_Total   As   LARGE_INTEGER,   lng_VaFree   As   LARGE_INTEGER  
          On   Error   GoTo   doError  
          lng_Ret   =   GetDiskFreeSpaceEx(str_DiskName,   lng_VaFree,   lng_Total,   lng_Free)  
          If   lng_Ret   <>   ERROR_SUCCESS   Then  
                  '空间为:高字节*2^32   加上   低字节,转换成MB,需要除以1024*1024,即2^20  
                  lng_FreeSpace   =   lng_VaFree.highpart   *   2   ^   12   +   lng_VaFree.lowpart   /   2   ^   20  
                  fun_GetDiskFreeSpace   =   True  
          Else  
                  fun_GetDiskFreeSpace   =   False  
                  lng_FreeSpace   =   0  
          End   If  
          Exit   Function  
  doError:  
          fun_GetDiskFreeSpace   =   False  
          lng_FreeSpace   =   0  
  End   Function  
   
  例如:  
          Dim   c   As   New   clsgps  
          Dim   l   As   Long  
          c.fun_GetDiskFreeSpace   "C:",   l       ':是必须的。  
          Debug.Print   l  
  Top

2 楼daviddivad(你真行,居然比我还快! Scorpio)回复于 2002-08-02 10:18:45 得分 0

'一些声明  
   
  Private   Type   LARGE_INTEGER   '   8   Bytes  
          lowpart   As   Long  
          highpart   As   Long  
  End   Type  
  Private   Declare   Function   GetDiskFreeSpaceEx   Lib   "kernel32"   Alias   "GetDiskFreeSpaceExA"   (ByVal   lpRootPathName   As   String,   lpFreeBytesAvailableToCaller   As   LARGE_INTEGER,   lpTotalNumberOfBytes   As   LARGE_INTEGER,   lpTotalNumberOfFreeBytes   As   LARGE_INTEGER)   As   Long  
  Top

3 楼griefforyou(为你伤心)回复于 2002-08-02 10:20:32 得分 0

居然比我还快!Top

4 楼zhuangbx220(星)回复于 2002-08-02 10:21:56 得分 30

用FSO文件系统对象  
  dim   fso   as   new   filesystemobject  
  dim   drv   as   drive  
  set   drv=fso.getdrive(fso.getdrivename("c:"))  
  print   "驱动器C的卷标:"   &   drv.VolumeName  
  print   "总空间:"   &   FormatNumber(drv.TotalSize/1024,0)   &   "字节print   "可用空间:"   &   FormatNumber(drv.FreeSpace/1024,0)   &   "字节print   "文件系统类型:"   &   drv.FileSystem  
  Top

5 楼szj820(都市精灵,机会没有,鸡会有的,努力努力)回复于 2002-08-02 10:22:21 得分 0

關注Top

6 楼sunnydavid(sunny)回复于 2002-08-02 10:26:03 得分 0

to     daviddivad(你真行,居然比我还快!)   :  
          谢谢你,不过我觉得  
     
          把lng_FreeSpace改为Double型是否会更好呢。Top

7 楼Richard2001(Richard)回复于 2002-08-02 10:29:16 得分 0

首先加入一个引用:  
  工程->引用->Microsoft   Scripting   Runtime  
   
  然后:          
   
        Dim   o   As   New   Scripting.FileSystemObject  
         
          'Me.Caption   =   o.GetDrive("C").FreeSpace  
          Me.Caption   =   o.GetDrive("C").AvailableSpace  
   
  o.GetDrive("C").FreeSpace   或o.GetDrive("C").AvailableSpace 就是C盘的剩余空间。  
   
  Top

8 楼Richard2001(Richard)回复于 2002-08-02 10:31:25 得分 0

我的方法最简单!Top

相关问题

  • 小妹求救
  • 帮帮小妹!
  • 帮帮小妹:(
  • 帮帮小妹!
  • 小妹求救!!
  • 帮帮小妹!!
  • 帮帮小妹~~~
  • 小妹谢谢先!
  • 帮帮小妹吧
  • 小妹又有难!

关键词

  • freespace
  • lng
  • vafree
  • getdiskfreespace
  • getdrive
  • drv
  • large
  • 剩余
  • 空间
  • fun

得分解答快速导航

  • 帖主:sunnydavid
  • daviddivad
  • zhuangbx220

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo