Не обновляется диспетчер задач
По заданию пишу диспетчер задач и у меня возникла необходимость в его обновлении через некоторый промежуток времени. Проблема в том, что как только таймер срабатывает, окно перерисовывается, но сам 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);
}