Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45

Программа для отображения системных процессов

03.09.2017, 19:58. Показов 1428. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите, пожалуйста, написать программу. Cделал основное окно с кнопкой, а вот как сделать так, чтоб в окно выводился список запущенных процессов не могу понять.
Задание:
Написать программу, которая выполняет следующие действия:
а) при запуске приложения, запускается главное окно приложения с кнопкой «Старт»;
б) при нажатии на кнопку «Старт» выводится в окно информация о запущенных процессах, и эта информация обновляется каждые 5 секунд;
в) при передвижении окна, перекрытии окна или разворачивании окна обновляется информация о запущенных процессах.

Есть теоретический материал: Теория.zip

Код программы:
Кликните здесь для просмотра всего текста
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 #include <windows.h>
#include <tchar.h>
 
static TCHAR szWindowClass[] = TEXT("Win32app");
static TCHAR szTitle[] = TEXT("Программа");
 
HINSTANCE hInst;
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
    static HWND hButton, hListBox, hComboBox;
    PAINTSTRUCT ps;
    HDC hdc;
    
    WNDCLASSEX wc;
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style          = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc    = WndProc;
    wc.cbClsExtra     = 0;
    wc.cbWndExtra     = 0;
    wc.hInstance      = hInstance;
    wc.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
    wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground  = (HBRUSH)(WHITE_BRUSH);
    wc.lpszMenuName   = NULL;
    wc.lpszClassName  = szWindowClass;
    wc.hIconSm        = LoadIcon(wc.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
 
    if (!RegisterClassEx(&wc))
    {
        MessageBox(NULL,
            TEXT("Call to RegisterClassEx failed!"),
            TEXT("Ошибка"),
            NULL);
        return 1;
    }
 
    hInst = hInstance; 
    HWND hWnd = CreateWindow(
        szWindowClass,
        szTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        500, 300,
        NULL,
        NULL,
        hInstance,
        NULL
    );
 
    
    if (!hWnd)
    {
        MessageBox(NULL,
            TEXT("Call to CreateWindow failed!"),
            TEXT("Ошибка"),
            NULL);
 
        return 1;
    }
 
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
 
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int) msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND hButton;
    PAINTSTRUCT ps;
    HDC hdc;
 
    switch (message)
    {
    case WM_CREATE:
        {
        hButton = CreateWindow (L"button", L"Старт", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  145, 200, 200, 30, hWnd, (HMENU)100, hInst, 0);
        }
        break;
    case WM_COMMAND:
        {
        switch (LOWORD(wParam))
        {
        case 100:
            {
                
            }
        }
        break;
    }
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
        break;
    }
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.09.2017, 19:58
Ответы с готовыми решениями:

Программа для отображения системных процессов
Программа написана вроде бы правильно, запускается без ошибок, но никакого окна не видно. Исправьте, пожалуйста, если что не так. ...

Модули(.длл) системных процессов
Всем доброго времени суток. Столкнулся с проблемой в выводе списка модулей системных процессов(conhost.exe, smss.exe, wininit.exe,...

Программа для предотвращения запуска определенных процессов во время работы приложения
Доброго времени суток. Я мало знаком с программированием в целом, и мне нужна помощь, может какие конкретные инструкции. Если точнее, то...

6
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
03.09.2017, 21:12
CreateToolhelp32Snapshot и вперед
0
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45
04.09.2017, 15:43  [ТС]
Так и не смог разобраться. Знаю что нужно CreateToolhelp32Snapshot использовать, но как правильно прописать не пойму.
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
04.09.2017, 19:30
Цитата Сообщение от Max_Timokhin Посмотреть сообщение
Знаю что нужно CreateToolhelp32Snapshot использовать
Пример использования CreateToolhelp32Snapshot (в консольном приложении) есть в msdn
Examples
For an example, see Taking a Snapshot and Viewing Processes.
Вот еще пример.
0
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45
04.09.2017, 19:55  [ТС]
Alex5, спасибо за подсказки. Я видел эти примеры. Но я не знаю как это вставить в мой код, чтоб список процессов выводился в главном окне поинажатию кнопки Старт. И чтоб он обновлялся каждые 5 секунд и при перетаскивании окна. Уже второй день голову ломаю.
Я понимаю что здесь не любят халявщиков, но если не сложно, дополните мой код.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
06.09.2017, 00:25
Цитата Сообщение от Max_Timokhin Посмотреть сообщение
я не знаю как это вставить в мой код, чтоб список процессов выводился в главном окне поинажатию кнопки Старт
надо в контрол выводить, а не в окно
сделал через DialogBox и ListBox (в прикрепленных проект, разберетесь)
Кликните здесь для просмотра всего текста
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
#include "resource.h"
#include <Windows.h>
#include <TlHelp32.h>
 
HWND hListBox1 = NULL;
HANDLE Snapshot = NULL;
 
PROCESSENTRY32 ProcEntry = { 0 };
 
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
    case WM_CLOSE:
        EndDialog(hwndDlg, NULL);
        break;
    case WM_INITDIALOG:
        hListBox1 = GetDlgItem(hwndDlg, IDC_LIST1);
        break;
    case WM_COMMAND:
        switch (wParam) {
        case IDOK:
            Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
            ProcEntry.dwSize = sizeof(PROCESSENTRY32);
            if (Process32First(Snapshot, &ProcEntry)) {
                do SendMessage(hListBox1, LB_ADDSTRING, NULL, (LPARAM)ProcEntry.szExeFile);
                while (Process32Next(Snapshot, &ProcEntry));
            }
            break;
        case IDCANCEL:
            EndDialog(hwndDlg, NULL);
            break;
        }
        break;
    }
    return FALSE;
}
 
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc, NULL);
    return FALSE;
}



Проект на VS2017 test.zip
3
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45
06.09.2017, 12:07  [ТС]
_lunar_, Благодарю
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.09.2017, 12:07
Помогаю со студенческими работами здесь

АПИ "OPENPROCESS" не работает для системных процессов.
Прблемма такая: Я знаю пиды (PID) всех процессов на компьюторе. Мне нужно найти их hProcess. hProcess возврощает АПИ функция...

Solaris Мониторинг системных процессов
Добрый вечер! Есть аппликейшн сервер. На сервере крутится Apach. На сервере установлена Solaris. Сервер жутко виснет. Команда: prstat...

Программа для отслеживания системных изменений в Android
Привет! Есть у Windows Mobile такая программка, как SKTracker - делает &quot;снимки&quot; (snapshot) всех системных настроек и сравнивает их между...

Программа для ПК - Просмотр скрытых системных файлов
Доброго времени суток. У меня такой вопрос: есть ли возможность через комп, посмотреть на телефоне скрытые системные файлы ? Например...

Программа для мониторинга состояния системных дисков
Доброго времени суток. Тема программы: &quot;Разработать программное обеспечение для мониторинга состояния свободного пространства на системных...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru