Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в Delphi узнать размер памяти определённого процесса? / 25 сообщений из 37, страница 1 из 2
17.06.2021, 20:22
    #40078400
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
Как в Delphi узнать размер памяти определённого процесса? Например ibserver.exe

Может вопрос не новый, но не получилось отыскать ответ на форуме, прошу подсказать.
Заранее благодарен
...
Рейтинг: 0 / 0
17.06.2021, 20:37
    #40078403
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
...
Рейтинг: 0 / 0
17.06.2021, 22:15
    #40078422
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?


а на Delphi пример можно?
...
Рейтинг: 0 / 0
17.06.2021, 22:57
    #40078433
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
Я был уверен, что одним ответом не ограничится.
SergeyKNP,
тебе и пример мало чем поможет, нужно разбираться c принципами работы менеджера памяти винды
...
Рейтинг: 0 / 0
17.06.2021, 23:00
    #40078434
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
Соколинский Борис,

мне был полезен самый простой пример, по нажатию кнопки получить размер занимаемой в настоящий момент памяти ibserver.exe.
...
Рейтинг: 0 / 0
18.06.2021, 09:47
    #40078487
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
SergeyKNP> а на Delphi пример можно?

Конечно, можно. А ещё можно и нужно пользоваться
поиском - это гораздо быстрее, чем ждать ответа:

https://sql.ru/forum/actualsearch.aspx?search=GetProcessMemoryInfo&bid=20
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.06.2021, 11:50
    #40078539
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
SergeyKNP
получить размер занимаемой в настоящий момент памяти
Какой именно памяти?
...
Рейтинг: 0 / 0
18.06.2021, 11:54
    #40078541
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
_Vasilisk_> К сообщению приложен файл

Какая ужасная локализация, жесть.

Это SI.PE ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.06.2021, 12:09
    #40078544
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
Гаджимурадов Рустам
Какая ужасная локализация, жесть.
Ага. Я после XP так и не выучил где здесь кто
Гаджимурадов Рустам
Это SI.PE ?
Стандартный TaskManager Win10
Код: plaintext
1.
2.
3.
Выпуск	Windows 10 Pro
Версия	20H2
Сборка ОС	19042.1052
Взаимодействие	Windows Feature Experience Pack 120.2212.2020.0
...
Рейтинг: 0 / 0
18.06.2021, 13:38
    #40078574
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
_Vasilisk_> Стандартный TaskManager Win10

Дык замени эту каку на Process Explorer
(из Winternals чи как они там щас называются)
или любой другой сторонник таск-менеджер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.06.2021, 14:20
    #40078589
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
Гаджимурадов Рустам
Дык замени эту каку на Process Explorer
Я к нему привык :)
Мне от него нужно - это прибить процесс и смотреть на потребляемые ресурсы процесса. Если память течет, мне не важно, что это за память
...
Рейтинг: 0 / 0
18.06.2021, 14:30
    #40078594
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
_Vasilisk_> Я к нему привык :)

К хорошему привыкнешь быстрее. :)

_Vasilisk_> Мне от него нужно - это прибить процесс и
_Vasilisk_> смотреть на потребляемые ресурсы процесса.

Таки в PE это (и многое другое) делать шибко удобнее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.06.2021, 14:36
    #40078595
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
А что, в десятке уже пофиксили баг с подсветкой кнопок на такбаре, когда она не гасилась
при уходе с них мыши?

Специально для этого бага у стандартного таск менеджера есть костыль в виде пункта меню
"перезапустить" на проводнике.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.06.2021, 20:52
    #40078751
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
_Vasilisk_,

Рабочий набор (память)
...
Рейтинг: 0 / 0
18.06.2021, 20:54
    #40078754
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
Гаджимурадов Рустам,

там не того, что мне нужно (либо у меня нет достаточного опыта), поэтому и прошу конкретный пример если можно
...
Рейтинг: 0 / 0
18.06.2021, 23:08
    #40078795
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
SergeyKNP,

Скажи зачем и я тебе дам пример кода получения инфы по процессу.
...
Рейтинг: 0 / 0
18.06.2021, 23:39
    #40078803
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
им компанента нужна
...
Рейтинг: 0 / 0
18.06.2021, 23:40
    #40078804
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
Relic Hunter,

Тут - "программист нужОн" (с) Мимопроходящий
...
Рейтинг: 0 / 0
19.06.2021, 10:16
    #40078821
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
DarkMaster
SergeyKNP,

Скажи зачем и я тебе дам пример кода получения инфы по процессу.


Планирую написать небольшой мониторинг с графиком, по параметрам:
1.Текущая память InterBase 7.5 (не пинайте, понимаю, что старьё, но пока не переписаны все старые проекты не могу перейти на FireBird)
2.Текущее количество коннектов

...ну может ещё какие-то параметры

всё это будет инсертиться в БД для хронологии и построения представления в виде графика например
...
Рейтинг: 0 / 0
19.06.2021, 17:08
    #40078852
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
SergeyKNP,


Ну примерно так попробуй. Выкусывал из рабочего кода - так что кое-что может быть лишним и begin.. end пропущен где-то.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
Procedure GetProcessInformation (hProcessID:cardinal; L:TStrings);

var hProcess: cardinal; 
       MaxWorkSet,MinWorkSet:cardinal;
       ALib,Kernel:THandle;
       GPIF:TGetProcessImageFile;
       GPMI:TGetProcessMemoryInfo;
       IsWow64Process:TIsWow64Process;
       ImageName:array[0..4096] of char;
       PMInfo:TProcessMemoryCounters;
       SBuf:string;
 
begin       

  hProcess:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,hProcessID);

  if (hProcess>0) then
     begin

      GetProcessWorkingSetSize(hProcess,MaxWorkSet,MinWorkSet);
      // занятые ресурсы 
      L.Add(Format('Process: %s',[SBuf]));
      L.Add(Format('Process ID: %d',[hProcessID]));
      L.Add(Format('Working set size: Max=%d Min=%d',[MaxWorkSet,MinWorkSet]));
      L.Add(Format('GUI resources: GDI=%d User=%d',[GetGuiResources(hProcess,0),GetGuiResources(hProcess,1)]));

      // приоритет

      SBuf:='Priority=%s';

      MinWorkSet:=GetPriorityClass(hProcess);
      if (MinWorkSet and $00008000)>0 then //  ABOVE_NORMAL_PRIORITY_CLASS
         SBuf:=Format(SBuf,['ABOVE NORMAL']);
      if (MinWorkSet and $00004000)>0 then // BELOW_NORMAL_PRIORITY_CLASS
         SBuf:=Format(SBuf,['BELOW NORMAL']);
      if (MinWorkSet and HIGH_PRIORITY_CLASS)>0 then  // 0x00000080
         SBuf:=Format(SBuf,['HIGH']);
      if (MinWorkSet and IDLE_PRIORITY_CLASS)>0 then  // 0x00000040
         SBuf:=Format(SBuf,['IDLE']);
      if (MinWorkSet and NORMAL_PRIORITY_CLASS)>0 then  // 0x00000020
         SBuf:=Format(SBuf,['NORMAL']);
      if (MinWorkSet and REALTIME_PRIORITY_CLASS)>0 then  // 0x00000100
         SBuf:=Format(SBuf,['REALTIME']);
      L.Add(SBuf);

      // process memory info

      if SysUtils.Win32MajorVersion>=5 then // XP or higher
         begin
           ALib:=LoadLibrary('psapi.dll');
           if (ALib>0) then
              begin
                 @GPMI:=GetProcAddress(ALib,'GetProcessMemoryInfo');
                 if @GPMI<>nil then
                    begin
                      if GPMI(hProcess,PMInfo,SizeOf(PMInfo)) then
                         begin
                           L.Add('Memory info:');
                           L.Add('Pages fault      ='+FormatInteger(PMInfo.PageFaultCount)+' '+
                                    'Working set size ='+FormatInteger(PMInfo.WorkingSetSize)+' '+
                                    'Page file usage  ='+FormatInteger(PMInfo.PagefileUsage));
                         end;
                    end;
                 FreeLibrary(ALib);
              end;
         end;

        CloseHandle(hProcess);

       end;
  end;
...
Рейтинг: 0 / 0
19.06.2021, 18:27
    #40078862
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
DarkMaster
Ну примерно так попробуй.
Сейчас будет вопрос - как получить ProcessId и что такое TGetProcessMemoryInfo
...
Рейтинг: 0 / 0
20.06.2021, 00:31
    #40078899
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
Модератор: Предупреждение за хамство.
...
Рейтинг: 0 / 0
20.06.2021, 00:32
    #40078900
SergeyKNP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
DarkMaster,

ругается на
GetProcessWorkingSetSize(hProcess, MaxWorkSet, MinWorkSet);

[dcc32 Error] Unit1.pas(62): E2033 Types of actual and formal var parameters must be identical
...
Рейтинг: 0 / 0
20.06.2021, 00:51
    #40078902
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
_Vasilisk_
DarkMaster
Ну примерно так попробуй.
Сейчас будет вопрос - как получить ProcessId и что такое TGetProcessMemoryInfo
Нее. Там ещё всё запущеннее...))
SergeyKNP
GetProcessWorkingSetSize(hProcess, MaxWorkSet, MinWorkSet);

[dcc32 Error] Unit1.pas(62): E2033 Types of actual and formal var parameters must be identical
...
Рейтинг: 0 / 0
20.06.2021, 01:01
    #40078903
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Delphi узнать размер памяти определённого процесса?
SergeyKNP,

Используй DWORD вместо Cardinal...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в Delphi узнать размер памяти определённого процесса? / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]