Не обновляется диспетчер задач

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

Попробовал перерисовывать окно, очищать Handle's, обнулять Proccesentry. Программа должна через промежуток времени перезаписать список с процессами, но в нем уже должны быть новые включенные процессы или отсутствовать удаленные старые. Пока-что программа просто перерисовывает окно и список после срабатывания таймера никак не изменяется. P.S Пишу, используя PROCCESENTRY32.

//Обновление диспетчера задач по таймеру
 case WM_TIMER:
        FillListBox(_listBox, _snapshot, _pe32, hWnd, WindowRect);
        InvalidateRect(hWnd, &WindowRect,FALSE);
        UpdateWindow(hWnd);
        RedrawWindow(hWnd, NULL, NULL, RDW_UPDATENOW);
        break;

//Функция для заполнения списка процессами и вывод его на окно
VOID FillListBox(HWND listView, HANDLE snapshot, PROCESSENTRY32 processInfo, HWND hWnd, RECT WindowRect)
{
    listView = CreateWindowEx(0L, WC_LISTVIEW, L"", WS_VISIBLE | WS_CHILD | WS_BORDER | LVS_REPORT | LVS_EDITLABELS, WindowRect.left + 300, 20, 600, 560,
        hWnd, (HMENU)4, hInst, NULL);

    LV_COLUMN column;
    column.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
    column.cx = 200;
    column.fmt = LVCFMT_LEFT;
    column.iSubItem = 0;
    column.pszText = (LPWSTR)L"“Имя процессора";
    ListView_InsertColumn(listView, 0, &column);

    column.pszText = (LPWSTR)L"Id процессора";
    column.iSubItem = 0;
    column.cx = 200;
    ListView_InsertColumn(listView, 1, &column);

    column.pszText = (LPWSTR)L"Приоретет";
    column.iSubItem = 0;
    column.cx = 100;
    ListView_InsertColumn(listView, 2, &column);

    processInfo.dwSize = sizeof(PROCESSENTRY32);
    snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    Process32First(snapshot, &processInfo);

    int i = 0;
    do
    {
        LV_ITEM item;
        item.mask = LVIF_TEXT;
        item.iItem = i;
        item.iSubItem = 0;
        item.pszText = processInfo.szExeFile;
        ListView_InsertItem(listView, &item);
        wchar_t strBuffer[60];
        wsprintfW(strBuffer, L"%d", processInfo.th32ProcessID);
        item.pszText = strBuffer;
        item.iItem = i;
        item.iSubItem = 1;
        ListView_SetItem(listView, &item);
        wsprintfW(strBuffer, L"%d", processInfo.pcPriClassBase);
        item.pszText = strBuffer;
        item.iItem = i;
        item.iSubItem = 2;
        ListView_SetItem(listView, &item);
        i++;
    } while (Process32Next(snapshot, &processInfo));

    ListView_SortItems(listView, 0, 0);

    
}

Ответы (0 шт):