Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 21:10   #1
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию память, которую занимает программа

Как в программе получить значение, сколько памяти занимает эта программа?
Я имею в виду не место на диске, а ту память, которая отображается в диспетчере задач.

PS перечитал еще раз вопрос , надеюсь, вы поймете
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 28.10.2010, 03:10   #2
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  MainHandle: THandle;
  pmc: PPROCESS_MEMORY_COUNTERS;
  cb: Integer;
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
  MainHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, GetCurrentProcessID);
  cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
   GetMem(pmc, cb);
   pmc^.cb := cb;
   GetProcessMemoryInfo(MainHandle, pmc, cb);

   CloseHandle(MainHandle);
  end;
end;
В pmc^.WorkingSetSize должен оказаться нужный размер)

P.s. нужно добавить uses Psapi;
TwiX вне форума Ответить с цитированием
Старый 28.10.2010, 08:01   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ай-яй-яй... Память оккупировал GetMem(pmc, cb);, а освобождать?
Не люблю с указателями работать потому поправлю твой код понадежнее
Код:
var
  MainHandle: THandle;
  pmc: PROCESS_MEMORY_COUNTERS;
  cb: Integer;
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
  MainHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, GetCurrentProcessID);
  cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
   GetProcessMemoryInfo(MainHandle, @pmc, cb);
   Caption:=IntToStr(pmc.WorkingSetSize);
   CloseHandle(MainHandle);
  end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как нарисовать в OpenGL сферу которую которую можно рассматривать с разных ракурсов Sh0cK Мультимедиа в Delphi 2 07.11.2017 14:51
cmd.exe и занимает почти все ресурсы процессора Gorychev Windows 11 06.12.2013 07:31
ПрограмМа чтОБы тренИровать память Anarx Паскаль, Turbo Pascal, PascalABC.NET 2 21.03.2009 14:45
Количество оперативной памяти которое занимает программа werser Помощь студентам 1 03.02.2008 02:22
если БД занимает ОЗУ? фЁдОр БД в Delphi 9 10.01.2008 21:57