程式消耗的記憶體 |
答題得分者是:taishyang
|
rogerchao
一般會員 發表:28 回覆:12 積分:8 註冊:2005-07-27 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
是指[工作管理員]中的[記憶體使用量]嗎?
如果是的話,小弟參考下面連結後,新增一小段程式可以得知記憶體使用量 http://www.cobbler.tw/message.aspx?topic_id=39622 <textarea class="cpp" rows="10" cols="60" name="code">void ListProcessNameAndID(DWORD processID); void ListProcessNameAndID(DWORD processID) { char szProcessName[MAX_PATH] = "unknown"; PROCESS_MEMORY_COUNTERS pmc; // Get a handle to the process. HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID); // Get the process name. if (NULL != hProcess) { HMODULE hMod; DWORD cbNeeded; if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded)) { GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName)); GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc)); } else { return; } } else { return; } //--------------------------------------------------------------------------- // Print the process name and identifier. Form1->Memo1->Lines->Add((AnsiString)szProcessName " Memory:" IntToStr(pmc.WorkingSetSize/1024) "K"); CloseHandle(hProcess); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { DWORD aProcesses[1024], cbNeeded; if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)) { return; } // Calculate how many process identifiers were returned. for (int i=0; i < (int)(cbNeeded/sizeof(DWORD)) ;i ) { ListProcessNameAndID(aProcesses[i]); } } //--------------------------------------------------------------------------- </textarea> 關鍵是利用GetProcessMemoryInfo來得知但小弟不會轉成Delphi ><
編輯記錄
taishyang 重新編輯於 2007-05-24 16:44:24, 註解 無‧
|
fatmoon1
初階會員 發表:3 回覆:29 積分:36 註冊:2004-05-24 發送簡訊給我 |
在Google搜尋GetProcessMemoryInfo找到
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1360311 參照網址 節錄如下 <textarea class="delphi" rows="10" cols="60" name="code">GetPMem(PID:DWORD); var pmc: PPROCESS_MEMORY_COUNTERS; cb: Integer; phandle:Thandle; begin phandle:=OpenProcess(PROCESS_ALL_ACCESS,false,PID); cb := sizeof(_PROCESS_MEMORY_COUNTERS); GetMem(pmc, cb); pmc^.cb := cb; if GetProcessMemoryInfo(phandle, pmc, cb) then ShowMessage(IntToStr(pmc^.WorkingSetSize)) else ShowMessage('錯誤'); end; </textarea>
------
才疏學淺 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |