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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2010, 03:58   #1
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
Вопрос Память, используемая процессами

написал примитивный process manager:
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <windows.h>
#include <tlhelp32.h>
#include <psapi.h>
#include <stdio.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
        StringGrid1->Cells[0][0] = "Имя";
        StringGrid1->Cells[1][0] = "Потоки";
        StringGrid1->Cells[2][0] = "Приоритет";
        StringGrid1->Cells[3][0] = "Память";

        HANDLE ProcessSnap, ProcessDescriptor;
        PROCESSENTRY32 p32;
        PROCESS_MEMORY_COUNTERS mem;
        int i;

        ProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        p32.dwSize = sizeof(PROCESSENTRY32);

        if(Process32First(ProcessSnap, &p32))
        {
                i = 0;
                do
                {
                        ProcessDescriptor = OpenProcess(PROCESS_ALL_ACCESS, FALSE, p32.th32ProcessID);
                        GetProcessMemoryInfo(ProcessDescriptor, &mem, sizeof(PROCESS_MEMORY_COUNTERS));

                        StringGrid1->Cells[0][++i] = p32.szExeFile;
                        StringGrid1->Cells[1][i] = p32.cntThreads;
                        StringGrid1->Cells[2][i] = p32.pcPriClassBase;
                        StringGrid1->Cells[3][i] = mem.WorkingSetSize / 1024;
                        StringGrid1->RowCount++;
                }
                while(Process32Next(ProcessSnap, &p32));
                StringGrid1->RowCount--;
        }
}
//---------------------------------------------------------------------------
но получаемые размеры памяти, используемые процессами, отличаются от тех, что показывает Диспетчер Виндовса, в чем дело?

Последний раз редактировалось ordoss; 09.10.2010 в 04:00.
ordoss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CLX приложение. Управление процессами Человек_Борща Общие вопросы Delphi 0 27.08.2010 22:10
[Вопросы]Работа с процессами. Процессы изнутри Человек_Борща Общие вопросы Delphi 2 03.04.2010 18:37
Управление процессами An123 Помощь студентам 2 18.12.2009 23:14
управление процессами An123 Общие вопросы C/C++ 5 29.11.2009 14:46
убить процесс по его идентификатору - Работа с процессами ACE Valery Общие вопросы C/C++ 8 04.06.2009 21:51