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

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите, пожалуйста, написать программу. 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2017, 19:58
Ответы с готовыми решениями:

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

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

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

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

6
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
03.09.2017, 21:12 2
CreateToolhelp32Snapshot и вперед
0
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45
04.09.2017, 15:43  [ТС] 3
Так и не смог разобраться. Знаю что нужно CreateToolhelp32Snapshot использовать, но как правильно прописать не пойму.
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
04.09.2017, 19:30 4
Цитата Сообщение от 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  [ТС] 5
Alex5, спасибо за подсказки. Я видел эти примеры. Но я не знаю как это вставить в мой код, чтоб список процессов выводился в главном окне поинажатию кнопки Старт. И чтоб он обновлялся каждые 5 секунд и при перетаскивании окна. Уже второй день голову ломаю.
Я понимаю что здесь не любят халявщиков, но если не сложно, дополните мой код.
0
Эксперт С++
3701 / 2835 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 22
06.09.2017, 00:25 6
Цитата Сообщение от 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  [ТС] 7
_lunar_, Благодарю
1
06.09.2017, 12:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2017, 12:07
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru