XP 系統下即時偵測硬碟容量 |
缺席
|
renth555
一般會員 發表:32 回覆:65 積分:19 註冊:2003-02-17 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 當我將一個 600MB 檔案烤到 C: 我要用那個函數即時的 知道硬碟容量呢 XP 系統好像無法即時顯示硬碟容量 98 系統可以馬上知道現在檔案拷貝多少Byte 硬碟就即時反應剩多少Byte 請問前輩們為什麼架構有何不同呢renth555 你好: 試試看用 Win32 API GetDiskFreeSpaceEx 達到目的 < class="code"> #include "stdio.h" ULARGE_INTEGER liAvailable; ULARGE_INTEGER liTotal; ULARGE_INTEGER liFree; ::GetDiskFreeSpaceEx("C:\\", &liAvailable, &liTotal, &liFree); char szBuf[256]={0}; sprintf(szBuf, "C:\\\nAvailable: %lX%lX\nTotal: %lX%lX\nFree: %lX%lX", liAvailable.HighPart, liAvailable.LowPart, liTotal.HighPart, liTotal.LowPart, liFree.HighPart, liFree.LowPart); ShowMessage(szBuf); 備註: 建議你參考 M$DN 中的說明 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/getdiskfreespaceex.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/getdiskfreespace.asp -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/08/05 20:33:39
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
renth555
一般會員 發表:32 回覆:65 積分:19 註冊:2003-02-17 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao 前輩 還是無法動態知道目前接收檔案磁碟機的剩餘容量 謝謝你的 post 教學 renth555 你好: (1)「無法動態知道目前接收檔案磁碟機的剩餘容量」?? 小弟我被你搞得一頭霧 水了,上面的 Win32 API 不是可以傳回該磁碟機的剩餘容量嗎 (liFree)?? (2)你可以在 CopyFile 之前,先取得檔案的大小,再利用上述的 Win32 API 取 得接收磁碟機的剩餘容量,比對檔案大小跟磁碟機的剩餘容量之後,再決定 要不要 CopyFile-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
renth555
一般會員 發表:32 回覆:65 積分:19 註冊:2003-02-17 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 還是感謝 RaynorPao 前輩教導 我在 xp 下拷貝一個檔案 600mb 到 c: 當正在複製中 xp 以知道我複製的檔案有多大了所以他 會直接顯示 HD-File=剩下多少容量 而不會說檔案正拷貝100mb了 hd-100=目前剩下多少容量 hd-200=目前剩下多少容量 hd-300=目前剩下多少容量 我的意思是這樣 對不起 表達不清楚renth555 你好: 小弟我還是不太了解你的意思,請問?? 你是利用什麼「工具」做複製檔案的工 作呢?? 是利用「檔案總管」還是「自己寫的應用程式」?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
renth555
一般會員 發表:32 回覆:65 積分:19 註冊:2003-02-17 發送簡訊給我 |
|
shchen
一般會員 發表:12 回覆:27 積分:7 註冊:2003-08-13 發送簡訊給我 |
不要灰心,我想你所要"動態",指的是即時的意思,所謂動態也就跟Timer有關.
請使用TTimer元件,這元件可依設定在一定的時間內不停的重覆自動執行
OnTimer事件內的程式碼,屬性interval,是設定執行OnTimer事件的時間間隔,
你可搭配GetDiskFreeSpaceEx(),把它放在OnTimer事件內,就可即時不斷的取得資料了.
以下是TTimer範例,結果是在100毫秒內,不斷的移動Form的位置. void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Interval = 100;
if (ActiveControl)
ActiveControl->Left = ActiveControl->Left 1;
}
善用TTimer元件,希望對你有幫助,如果還有需要的地方,請再提出,我再寫一個即時取得
目前記憶體使用量的範例給你.
|
renth555
一般會員 發表:32 回覆:65 積分:19 註冊:2003-02-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |