Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

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

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

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

Всем привет. Нужно написать программу на С++ которая запускает окно с кнопкой "Старт" и по нажатию на эту кнопку в 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 в 22:31.
Дикий Хомяк вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа для отображения содержимого системного трея timurkrasnoff Помощь студентам 0 23.10.2015 15:33
Программа для отображения координат курсора Syltan Операционные системы общие вопросы 8 09.09.2015 19: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


08:07.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru