如何做驱动器信息状态显示! |
尚未結案
|
xxlzl
一般會員 發表:11 回覆:10 積分:4 註冊:2003-11-26 發送簡訊給我 |
|
jason_cyl329
高階會員 發表:123 回覆:155 積分:105 註冊:2003-05-26 發送簡訊給我 |
|
CuteBabyBoy
初階會員 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
|
xxlzl
一般會員 發表:11 回覆:10 積分:4 註冊:2003-11-26 發送簡訊給我 |
我也是这样做的,加了 label1 progressbar1 label2 三个组件; DWORD sector,byte,cluster,free;
long int freespace,totalspace;
GetDiskFreeSpace("C:",§or,&byte,&free,&cluster); totalspace=int(cluster)*int(byte)*int(sector)/1024/1024; //计算总容量
freespace=int(free)*int(byte)*int(sector)/1024/1024; //计算可用空间 Label1->caption="c: "; ProgressBar1->Min=0;
ProgressBar1->Max=totalspace;
ProgressBar1->Smooth=true;
ProgressBar1->Position=(totalspace-freespace); Label2->caption=String(freespace/totalspace) "%" "free"; 可不对。
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
xxlzl您好: 試試這個方法是不是您要的方法:
//--------------------------------------------------------------------------- #include如果您要的是使用百分比....自己寫看看 用TCGuage這個元件試試... < class="code">/*生活是一種藝術,用心生活才能享受生活*/ 發表人 - axsoft 於 2004/01/06 18:05:12 |
xxlzl
一般會員 發表:11 回覆:10 積分:4 註冊:2003-11-26 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
|
irvinehing
初階會員 發表:77 回覆:79 積分:31 註冊:2003-11-12 發送簡訊給我 |
引言: 谢谢 axsoft答复; 可你的这个程序运行后,没有状态条的显示。不知道怎么回事?ProgressBar的Min, Max值太大了無法顯示。 AnsiString sdFree; __int64 BytesFree = DiskFree(0); __int64 BytesTotal = DiskSize(0); Label1->Caption="c: "; ProgressBar1->Min=0; ProgressBar1->Max=BytesTotal / 1024 / 1000; ProgressBar1->Smooth=true; ProgressBar1->Position=(BytesTotal-BytesFree) / 1024 / 1000; sdFree="可使用空間 " IntToStr( BytesFree / 1024 / 1000) " MB"; Label2->Caption="已使用空間" IntToStr((BytesTotal-BytesFree) / 1024 / 1000) "MB"; ShowMessage( sdFree); |
xxlzl
一般會員 發表:11 回覆:10 積分:4 註冊:2003-11-26 發送簡訊給我 |
|
jason_cyl329
高階會員 發表:123 回覆:155 積分:105 註冊:2003-05-26 發送簡訊給我 |
|
CuteBabyBoy
初階會員 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
|
xxlzl
一般會員 發表:11 回覆:10 積分:4 註冊:2003-11-26 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
這是DDK中取得磁碟容量的寫法相當於DiskFree(),DiskSize()的用法...
只是C++ Builder以經將下面的Code包成DiskFree(),DiskSize()兩個函式了
__int64 i64DiskBytes=0,i64FreeBytes=0; bool bGetDiskFreeSpaceEx = false; HINSTANCE hInstance = ::LoadLibrary("KERNEL32.DLL"); if(hInstance!=NULL) // If we got the library { typedef bool (CALLBACK* MYFUNCPTR)(LPCTSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER); MYFUNCPTR lpfnDLLProc; lpfnDLLProc = (MYFUNCPTR)GetProcAddress(hInstance, "GetDiskFreeSpaceExA"); if(lpfnDLLProc) // If we got an address to the function { ULARGE_INTEGER nTotalBytes, nTotali64FreeBytes, nTotalAvailable; if((*lpfnDLLProc)(szDriver.c_str(), &nTotalAvailable, &nTotalBytes, &nTotali64FreeBytes)) { i64DiskBytes = nTotalBytes.QuadPart; i64FreeBytes = nTotali64FreeBytes.QuadPart; bGetDiskFreeSpaceEx = true; } } ::FreeLibrary(hInstance); } if(!bGetDiskFreeSpaceEx) // We have to try and use GetDiskFreeSpace() { ULONG secpercluster, bytespersec, nooffreeclusters, totalnoofclusters; if( GetDiskFreeSpace(szDriver.c_str(), &secpercluster, &bytespersec, &nooffreeclusters, &totalnoofclusters)) { i64DiskBytes = (totalnoofclusters * secpercluster * bytespersec); i64FreeBytes = (nooffreeclusters * secpercluster * bytespersec); } } /*生活是一種藝術,用心生活才能享受生活*/發表人 - axsoft 於 2004/01/08 17:42:55 |
CuteBabyBoy
初階會員 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |