急需一个vc++程序,检测硬盘空间大小
需要一个vc++程序,检测硬盘空间大小
rt,我是通过一个录像的按钮来触发,当剩余空间足够时,再开始录像,如果不足时就提示信息
而且检索的硬盘空间不是全部硬盘,而是该程序所在盘的硬盘
------解决方案--------------------
GetDiskFreeSpaceEx
------解决方案--------------------
rt,我是通过一个录像的按钮来触发,当剩余空间足够时,再开始录像,如果不足时就提示信息
而且检索的硬盘空间不是全部硬盘,而是该程序所在盘的硬盘
------解决方案--------------------
GetDiskFreeSpaceEx
------解决方案--------------------
- C/C++ code
// 这个只是得到硬盘上一个分区的大小。如果要得到整个硬盘的大小则要复杂得多,我有一个DLL可以做到,但只支持ATA硬盘。 ULARGE_INTEGER pqwFreeCaller, pqwTot, pqwFree; const char *pDisk = "C:"; if( SHGetDiskFreeSpace(pDisk, &pqwFreeCaller, &pqwTot, &pqwFree) ) { pqwFree.QuadPart; // 这个就是可用空间大小的值。 }
------解决方案--------------------
下面的代码是得到硬盘中每个盘的空间相加求总硬盘空间,你只指定一个盘符就行了!
- C/C++ code
///////////get disk space///////////// DWORD maskdriver; ULONGLONG totalspace=0,freespace=0; ULONGLONG ulltotalspace,ullfreespace,freebyte; DWORD drivertype; char driver[10]; if(!(maskdriver=GetLogicalDrives())) return false; for(int i=0;i<26;i++) { if(!(maskdriver>>i)) break; if(maskdriver>>i&1) { driver[0]=i+'A'; driver[1]=':'; driver[2]='\\'; driver[3]=0; drivertype=GetDriveType(driver); if(drivertype!=DRIVE_FIXED) continue; if(!GetDiskFreeSpaceEx (driver, (PULARGE_INTEGER)&freebyte, (PULARGE_INTEGER)&ulltotalspace, (PULARGE_INTEGER)&ullfreespace)) return false; totalspace+=ulltotalspace; freespace+=ullfreespace; } } //signed __int64 dfreespace=0.0,dtotalspace=0.0,lv; double dfreespace=0.0,dtotalspace=0.0,lv; dfreespace=(signed __int64)freespace/(1024*1024*1024); dtotalspace=(signed __int64)totalspace/(1024*1024*1024); lv=(signed __int64)(freespace/totalspace)*100; char space[256]; sprintf(space,"总磁盘空间为:%.3fG,剩余磁盘空间为:%.3fG(占%.3f%c)",dtotalspace,dfreespace,lv,'%');