#import "scrrun.dll" raw_interfaces_only
// 參數(shù)格式:"c:\" 或 "c:\test"
ULONGLONG GetPathUseSpace(const char *szPath)
{
ASSERT(szPath != NULL);
int nLen = strlen(szPath);
if (nLen == 0)
return 0;
ULONGLONG result = 0;
if (nLen == 3) // c:\
{
ULARGE_INTEGER nFreeBytesAvailable;
ULARGE_INTEGER nTotalNumberOfBytes;
ULARGE_INTEGER nTotalNumberOfFreeBytes;
//
if (GetDiskFreeSpaceEx(szPath,
&nFreeBytesAvailable,
&nTotalNumberOfBytes,
&nTotalNumberOfFreeBytes))
{
result = nTotalNumberOfBytes.QuadPart - nFreeBytesAvailable.QuadPart;
}
}
else
{
CoInitialize(NULL);
{
try
{
Scripting::IFileSystem3Ptr fs;
fs.CreateInstance(__uuidof(Scripting::FileSystemObject));
Scripting::IFolderPtr folder;
fs->GetFolder(_bstr_t(szPath),&folder);
_variant_t vsize;
folder->get_Size(&vsize);
result = (double)vsize;
}
catch(_com_error &e)
{
result = -1;
}
}
CoUninitialize();
}
return result;
}
VC取得目錄的大小可以用COM方式,但是在某些操作系統(tǒng)上使用COM方式取根目錄大?。茨骋粋€(gè)盤已用空間)會(huì)出現(xiàn)問題,可以用GetDiskFreeSpaceEx,上面是我寫了一個(gè)小函數(shù)。
posted on 2008-07-02 16:33
胡滿超 閱讀(2921)
評(píng)論(13) 編輯 收藏 引用