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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2017, 21:27   #1
Дикий Хомяк
Новичок
Джуниор
 
Регистрация: 17.09.2017
Сообщений: 1
По умолчанию Программа для отображения системных процессов в окне

Всем привет. Нужно написать программу на С++ которая запускает окно с кнопкой "Старт" и по нажатию на эту кнопку в ListBox выводится список запущенных процессов в Windows. Сделал окно с кнопкой, но как вывести список процессов не знаю. Я только начал разбираться в WinApi, прошу помощи.
Мой код:
Код:
#include <windows.h>
#include <tchar.h>
#include <tlhelp32.h>
 
#define IDD_DIALOG1                     101
#define IDC_LIST1                       1001
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        103
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1002
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif
 
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;
    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))
    {
       return FALSE;                      
    }
 
    hInst = hInstance; 
    HWND hWnd = CreateWindow(
        szWindowClass,
        szTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        500, 300,
        NULL,
        NULL,
        hInstance,
        NULL
    );
 
    
    if (!hWnd)
    {
        return FALSE;                      
     }
 
    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;
    
    HWND ListBox = NULL;
    HANDLE Snapshot = NULL;
 
    PROCESSENTRY32 ProcEntry = { 0 };
 
    switch (message)
    {
    case WM_CREATE:
        {
        hButton = CreateWindow (L"button", L"Старт", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  145, 220, 200, 30, hWnd, (HMENU)100, hInst, 0);
        }
        break;
    case WM_INITDIALOG:
        ListBox = GetDlgItem(hWnd, IDC_LIST1);
        break;
    case WM_COMMAND:
        {
        switch (LOWORD(wParam))
        {
        case 100:
            {
                Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
                ProcEntry.dwSize = sizeof(PROCESSENTRY32);
                if (Process32First(Snapshot, &ProcEntry)) {
                    do SendMessage(ListBox, LB_ADDSTRING, NULL, (LPARAM)ProcEntry.szExeFile);
                    while (Process32Next(Snapshot, &ProcEntry));
            }
            break;
            }
        }
        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;
}

Последний раз редактировалось Дикий Хомяк; 17.09.2017 в 21:31.
Дикий Хомяк вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа для отображения содержимого системного трея timurkrasnoff Помощь студентам 0 23.10.2015 14:33
Программа для отображения координат курсора Syltan Операционные системы общие вопросы 8 09.09.2015 18:37
Программа для отображения структуры сайта. GamleTSever PHP 2 25.12.2013 09:40
Программа для отображения кол-ва заказов muxanik Qt и кроссплатформенное программирование С/С++ 3 13.11.2012 18:43
Программа для отображения состояния мыши Potapenko Dmytry Помощь студентам 0 02.11.2011 21:28