Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 31.03.2016
Сообщений: 20

Получение текущих процессов windows

06.04.2016, 17:54. Показов 2521. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, как можно получить текущие процессы windows и занимаемые ими объемы памяти?
Погуглил, но некоторые способы кривые: не хотят запускаться даже, у некоторых проблемы с кодировкой CP866, например, у system("tasklist > file.txt");
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2016, 17:54
Ответы с готовыми решениями:

Получение списка процессов Windows
привет всем! надо написать программу которая управляет процессорами windows для каждого процесса выводит имя,директорию,занимаемая...

Получение списка путей процессов
Использую vs2010, win7 32. Вообщем,программа выводит список процессов. После получения handle процесса через OpenProcess с правами на...

Программа для определения данных текущих процессов ОС Windows
Тема звучит так "Реализация программ определения данных текущих процессов Windows" Помогите кто сможет, это срочно! нужна как вы...

11
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
06.04.2016, 19:18
Так ты предоставь результат своих поисков, а там видно будет)
0
0 / 0 / 0
Регистрация: 31.03.2016
Сообщений: 20
06.04.2016, 22:11  [ТС]
Izual, я поработал, изучил и научился выводить только название процессов, но вот память, занимаемую ими, как вывести я не знаю.
C++
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
#include <windows.h>
#include <tlhelp32.h>
#include "psapi.h"
 
 
VOID PrintModuleList(HANDLE CONST hStdOut, DWORD CONST dwProcessId) {
  MODULEENTRY32 meModuleEntry;
  TCHAR szBuff[1024];
  DWORD dwTemp;
  HANDLE CONST hSnapshot = CreateToolhelp32Snapshot(
                             TH32CS_SNAPMODULE, dwProcessId);
  if(INVALID_HANDLE_VALUE == hSnapshot) {
    return;
  }
 
  meModuleEntry.dwSize = sizeof(MODULEENTRY32);
  Module32First(hSnapshot, &meModuleEntry);
  /*do {
    wsprintf(szBuff, "  ba: %08X, bs: %08X, %s\r\n",
             meModuleEntry.modBaseAddr, meModuleEntry.modBaseSize,
             meModuleEntry.szModule);
    WriteConsole(hStdOut, szBuff, lstrlen(szBuff), &dwTemp, NULL);
  } while(Module32Next(hSnapshot, &meModuleEntry));*/
 
  CloseHandle(hSnapshot);
}
 
VOID PrintProcessList(HANDLE CONST hStdOut) {
  PROCESSENTRY32 peProcessEntry;
  TCHAR szBuff[1024];
  DWORD dwTemp;
  HANDLE CONST hSnapshot = CreateToolhelp32Snapshot(
                             TH32CS_SNAPPROCESS, 0);
  if(INVALID_HANDLE_VALUE == hSnapshot) {
    return;
  }
 
  peProcessEntry.dwSize = sizeof(PROCESSENTRY32);
  Process32First(hSnapshot, &peProcessEntry);
  
  do {
    wsprintf(szBuff, "Name: %s Size:\r\n",
            peProcessEntry.szExeFile);
    WriteConsole(hStdOut, szBuff, lstrlen(szBuff), &dwTemp, NULL);
    PrintModuleList(hStdOut, peProcessEntry.th32ProcessID);
  } while(Process32Next(hSnapshot, &peProcessEntry));
 
  CloseHandle(hSnapshot);
}
 
INT main() {
  HANDLE CONST hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  PrintProcessList(hStdOut);
  system("PAUSE");
  ExitProcess(0);
}
Код взял с одного сайта, но переделал, а то не запускался.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
06.04.2016, 22:30
Основы информатики: Идём в поисковик, пишем "C++ process memory"... 5 секунд обзора, и ссылка..
PROCESS_MEMORY_COUNTERS: какие поля отвечают за занимаемую оперативную и динамическую память

Наверно это... Я лично никогда этим вопросом не занимался =)
1
0 / 0 / 0
Регистрация: 31.03.2016
Сообщений: 20
06.04.2016, 22:38  [ТС]
Izual, на форуме не искал, в гугле все не то, но спасибо.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
06.04.2016, 22:50
Цитата Сообщение от Mixalich Посмотреть сообщение
на форуме не искал
Это было не на форуме, а в яндексе, в третьей строке поиска на первой странице.
0
0 / 0 / 0
Регистрация: 31.03.2016
Сообщений: 20
07.04.2016, 00:05  [ТС]
Izual, может, знаете в чем может быть проблема, если такая ошибка: undefined reference to 'GetProcessMemoryInfo@12' ?

Добавлено через 20 секунд
C++
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
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <psapi.h>
 
#pragma comment(lib, "psapi.lib");
 
VOID PrintModuleList(HANDLE CONST hStdOut, DWORD CONST dwProcessId) {
  MODULEENTRY32 meModuleEntry;
  TCHAR szBuff[1024];
  DWORD dwTemp;
  HANDLE CONST hSnapshot = CreateToolhelp32Snapshot(
                             TH32CS_SNAPMODULE, dwProcessId);
  if(INVALID_HANDLE_VALUE == hSnapshot) {
    return;
  }
 
  meModuleEntry.dwSize = sizeof(MODULEENTRY32);
  Module32First(hSnapshot, &meModuleEntry);
  /*do {
    wsprintf(szBuff, "  ba: %08X, bs: %08X, %s\r\n",
             meModuleEntry.modBaseAddr, meModuleEntry.modBaseSize,
             meModuleEntry.szModule);
    WriteConsole(hStdOut, szBuff, lstrlen(szBuff), &dwTemp, NULL);
  } while(Module32Next(hSnapshot, &meModuleEntry));*/
 
  CloseHandle(hSnapshot);
}
 
VOID PrintProcessList(HANDLE CONST hStdOut) {
  PROCESSENTRY32 peProcessEntry;
  PROCESS_MEMORY_COUNTERS pmc; // Память
  HANDLE hProcess; //Память
  TCHAR szBuff[1024];
  DWORD dwTemp;
  HANDLE CONST hSnapshot = CreateToolhelp32Snapshot(
                             TH32CS_SNAPPROCESS, 0);
  if(INVALID_HANDLE_VALUE == hSnapshot) {
    return;
  }
 
  peProcessEntry.dwSize = sizeof(PROCESSENTRY32);
  Process32First(hSnapshot, &peProcessEntry);
  
  do {
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, peProcessEntry.th32ProcessID );
    if(GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc))) {
        printf("Size: %zu", pmc.WorkingSetSize);
    }
    wsprintf(szBuff, "Name: %s Size: \r\n",
            peProcessEntry.szExeFile);
    WriteConsole(hStdOut, szBuff, lstrlen(szBuff), &dwTemp, NULL);
    PrintModuleList(hStdOut, peProcessEntry.th32ProcessID);
  } while(Process32Next(hSnapshot, &peProcessEntry));
 
  CloseHandle(hSnapshot);
}
 
INT main() {
  HANDLE CONST hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  PrintProcessList(hStdOut);
  system("PAUSE");
  ExitProcess(0);
}
Добавлено через 45 секунд
Вроде все правильно, а уже час скопмилировать не могу.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
07.04.2016, 00:12
Цитата Сообщение от Mixalich Посмотреть сообщение
уже час скопмилировать не могу
Мде..
Идём в яндекс, пишем: "C++ MSDN GetProcessMemoryInfo"
В ответ на третьей строке (даже на сайт заходить не надо) видим синтаксис:
C++
1
GetProcessMemoryInfo(GetCurrentProcess(),&info,info.cb);
Думаю суть должна быть ясна, но если углубиться - научитесь юзать поисковик, информатика является основой для успешной деятельности программиста.
1
0 / 0 / 0
Регистрация: 31.03.2016
Сообщений: 20
07.04.2016, 00:19  [ТС]
Цитата Сообщение от Izual Посмотреть сообщение
Думаю суть должна быть ясна, но если углубиться - научитесь юзать поисковик, информатика является основой для успешной деятельности программиста.
Вы, наверное, смеетесь. Все это просмотренно по 1000 раз и ошибки нет. Еще пришлите "погугли за меня". И оставьте иронию себе. Я понимаю, что вы считаете себя гуру, которому нет места в низах, там, где winapi.

Ой, неужели гугл сломался ? Как же жить в этом бренном мире! О, яндекс! Да вот... Пользоваться не умеем, информатика, 1 класс... Ай, ай, ай... Какая трагедия...
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
07.04.2016, 08:51
Цитата Сообщение от Mixalich Посмотреть сообщение
Вы, наверное, смеетесь. Все это просмотренно по 1000 раз и ошибки нет. Еще пришлите "погугли за меня". И оставьте иронию себе. Я понимаю, что вы считаете себя гуру, которому нет места в низах, там, где winapi.
Зря иронизируешь, тебе ведь помочь хотят.
Только помощь здесь означает не "сделай за меня", а "покажи путь, а я сам пойду".
См. в MSDN описание функции GetProcessMemoryInfo, там внизу написано,
что нужно подключить psapi.lib к проекту.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
07.04.2016, 10:37
Цитата Сообщение от Mixalich Посмотреть сообщение
Вы, наверное, смеетесь.
Нет, я же сказал, что:
Цитата Сообщение от Izual Посмотреть сообщение
Я лично никогда этим вопросом не занимался
Поэтому точно сказать не могу, исходя из того что увидел, предположил что аргумент sizeof(pmc) должен был быть заменён на pmc.cb (как в примере info.cb).

Цитата Сообщение от Mixalich Посмотреть сообщение
считаете себя гуру
Цитата Сообщение от Mixalich Посмотреть сообщение
undefined reference to 'GetProcessMemoryInfo@12'
Не считаю (в плане программирования), хотя бы потому что не заметил, что выведенная ошибка даже не в аргументе, а в том что у вас просто студия не восприняла имя функции. (в VS обычно если функция не найдена, то она даже не подсвечивает её структуру)
Я бы даже компилировать не стал, если бы подсветки не было, и вопрос бы сам по себе отпал. Видите как отличается подход к делу, место до которого вы дошли, для меня уже пропуск целого шага.
1
0 / 0 / 0
Регистрация: 31.03.2016
Сообщений: 20
07.04.2016, 15:49  [ТС]
Цитата Сообщение от Izual Посмотреть сообщение
Я бы даже компилировать не стал, если бы подсветки не было, и вопрос бы сам по себе отпал.
Я в Notepad++ пишу и компилирую через командную строку.

Добавлено через 9 минут
Цитата Сообщение от Убежденный Посмотреть сообщение
Только помощь здесь означает не "сделай за меня", а "покажи путь, а я сам пойду".
Я никогда не просил сделать за меня. Это точно, я просто не понимал, что означает ошибка эта, в гугле нашел инфу, но там ничего не было понятно или просто не работали решения, поэтому задал вопрос.
А проблема решилась только после того, как я скопировал из папки system в проект psapi.dll и начал компилировать эту dll вместе с файлом .cpp .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2016, 15:49
Помогаю со студенческими работами здесь

Как узнать список текущих процессов запущеных на компе
Как узнать список текущих процессов запущеных на компе?

Получение текущих координатов курсора
На странице есть графический элемент. Как мне при кликаньи на нем выводить координаты курсора относительно этого графического...

Получение процессов
Пытаюсь сделать чтоб приложение C++ Forms получало список всех процессов. Искал в интернете решение - не нашел, поможете?

Получение списка процессов
Народ помогите Нужно написать скрипт для получения и записи в файл списка запущенных процессов(linux) Кто может поделитесь кодом

Получение списка процессов
Попытался скинуть в файл список всех процессов: Вариант 1: PROCESSENTRY32 PE32; HANDLE hSnapshot =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru