Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Вниз

Как програмно узнать сколько занимает памяти чужое приложение? 


kirya85   (2002-01-17 22:29) [0]

Как програмно узнать сколько занимает памяти чужое приложение? Желательно физичиской и виртуальной памяти отдельно.



kirya85   (2002-01-21 00:12) [1]

НЕУЖЕЛИ НИКТО НЕЗНАЕТ?!!!???



Rem   (2002-01-21 12:58) [2]

В модуле TlHelp32:
function Toolhelp32ReadProcessMemory(th32ProcessID: DWORD; lpBaseAddress: Pointer; var lpBuffer; cbRead: DWORD; var lpNumberOfBytesRead: DWORD): BOOL stdcall;



cdaDmitriy   (2002-01-22 14:40) [3]

>> REM

Copies memory allocated to another process into an application-supplied buffer.

BOOL WINAPI Toolhelp32ReadProcessMemory(DWORD th32ProcessID,
LPCVOID lpBaseAddress, LPVOID lpBuffer, DWORD cbRead,
LPDWORD lpNumberOfBytesRead);

-- и это ответ ???



cdaDmitriy   (2002-01-22 19:18) [4]

НЕУЖЕЛИ НИКТО НЕЗНАЕТ?!!!???



cdaDmitriy   (2002-01-24 12:56) [5]

?????????????????



Rem   (2002-01-24 14:08) [6]

Рядом ведь лежит:

Heap32First(..THEAPENTRY32..);
Heap32Next(..THEAPENTRY32..);

THEAPENTRY32 = record
dwSize: DWORD;
hHandle: THandle; // Handle of this heap block
dwAddress: DWORD; // Linear address of start of block
dwBlockSize: DWORD; // Size of block in bytes
dwFlags: DWORD;
dwLockCount: DWORD;
dwResvd: DWORD;
th32ProcessID: DWORD; // owning process
th32HeapID: DWORD; // heap block is in
end;



Philip   (2002-01-25 00:17) [7]

Я в одной из своих программ пользовался следующим приемом для определения общего объема задействованной памяти:

var
Offset : Cardinal;
Buf : _MEMORY_BASIC_INFORMATION;
OccupiedSpace : LongInt;
begin
OccupiedSpace := 7FFFFFFF
Offset := 0;
while Offset < $7FFFFFFF do
begin
VirtualQueryEx(ProcessHandle, Ptr(Offset), Buf, SizeOf Buf));

if Buf.State = MEM_FREE then
OccupiedSpace := OccupiedSpace - Buf.RegionSize;
end;
end;



Philip   (2002-01-25 18:06) [8]

Сорри, забыл про строчку :)
Offset := Offset + Buf.RegionSize
воткни ее после VirtualQueryEx



cdaDmitriy   (2002-01-27 10:00) [9]

>> Philip
извини не понял ( проверил твой код ) и не понял
какую величину возвращает OccupiedSpace
в тесте OccupiedSpace= 24,145к
в таскменедере ()= 1,782к
если можеш обьясни .



VuDZ   (2002-01-27 10:07) [10]

люди, вы знаете о такой весчи як МСДН?
GetProcessMemoryInfo
The GetProcessMemoryInfo function retrieves information about the memory usage of the specified process in the PROCESS_MEMORY_COUNTERS structure.

BOOL GetProcessMemoryInfo(
HANDLE Process, // handle to process
PPROCESS_MEMORY_COUNTERS ppsmemCounters, // buffer
DWORD cb // size of buffer
);
Parameters
Process
[in] Handle to the process.
ppsmemCounters
[out] Pointer to the PROCESS_MEMORY_COUNTERS structure that receives information about the memory usage of the process.
cb
[in] Specifies the size, in bytes, of the PROCESS_MEMORY_COUNTERS structure.

The PROCESS_MEMORY_COUNTERS structure contains the memory statistics for a process.

typedef struct _PROCESS_MEMORY_COUNTERS {
DWORD cb;
DWORD PageFaultCount;
SIZE_T PeakWorkingSetSize;
SIZE_T WorkingSetSize;
SIZE_T QuotaPeakPagedPoolUsage;
SIZE_T QuotaPagedPoolUsage;
SIZE_T QuotaPeakNonPagedPoolUsage;
SIZE_T QuotaNonPagedPoolUsage;
SIZE_T PagefileUsage;
SIZE_T PeakPagefileUsage;
} PROCESS_MEMORY_COUNTERS;
typedef PROCESS_MEMORY_COUNTERS *PPROCESS_MEMORY_COUNTERS;
Members
cb
The size of the structure, in bytes.
PageFaultCount
The number of page faults.
PeakWorkingSetSize
The peak working set size.
WorkingSetSize
The current working set size.
QuotaPeakPagedPoolUsage
The peak paged pool usage.
QuotaPagedPoolUsage
The current paged pool usage.
QuotaPeakNonPagedPoolUsage
The peak nonpaged pool usage.
QuotaNonPagedPoolUsage
The current nonpaged pool usage.
PagefileUsage
The current pagefile usage.
PeakPagefileUsage
The peak pagefile usage.

toolhelp, toolhelp... проще надо быть...



cdaDmitriy   (2002-01-27 10:23) [11]

>> VuDZ
сделай тест чтобы твоя прога и таскменедер давали одинаковое значение



VuDZ   (2002-01-27 19:19) [12]

тебе прислать исходник или exe?
исходник - полностью на С++ +MFC
возьми любой depence viewer и посмотри, что использует task manager - там сылки на toolhelp нет в принципе.
А то что у кого то не получается - проблема его рук и нежелание читать MSDN и искать в инете



VuDZ   (2002-01-28 08:39) [13]

для нежелающих искать - http://delphi.xonix.ru/faq/system/memory01.shtml - пример на делфи




Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.033 c
1-69891           kserg@ukr.net         2002-04-09 13:12  2002.04.22  
Как преобразовать множество к целому типу и обратно?


1-69912           CrazyXP               2002-04-08 20:19  2002.04.22  
Несколько вопросов


1-69799           Dimedrol              2002-04-09 10:32  2002.04.22  
Своя внутренняя переключалка клавиатуры...


14-70025          drpass                2002-03-18 13:48  2002.04.22  
Windows 3.11 + TCP/IP


1-69874           Windeus               2002-04-09 04:29  2002.04.22  
Импортирование ресурсов: шрифты, курсоры, иконки.