void ProcessPage_OnSetAffinity(void) { DWORD dwProcessId; WCHAR strErrorText[260]; WCHAR szTitle[256]; dwProcessId = GetSelectedProcessId(); if (dwProcessId == 0) return; hProcessAffinityHandle = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_SET_INFORMATION, FALSE, dwProcessId); if (!hProcessAffinityHandle) { GetLastErrorText(strErrorText, sizeof(strErrorText) / sizeof(WCHAR)); LoadStringW(hInst, IDS_MSG_ACCESSPROCESSAFF, szTitle, sizeof(szTitle) / sizeof(WCHAR)); MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP); return; } DialogBoxW(hInst, MAKEINTRESOURCEW(IDD_AFFINITY_DIALOG), hMainWnd, AffinityDialogWndProc); if (hProcessAffinityHandle) { CloseHandle(hProcessAffinityHandle); hProcessAffinityHandle = NULL; } }
void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam) { LPNMHDR pnmh; NMLVDISPINFO* pnmdi; LPNMHEADER pnmhdr; ULONG Index; ULONG ColumnIndex; LPPROCESS_PAGE_LIST_ITEM pData; pnmh = (LPNMHDR) lParam; pnmdi = (NMLVDISPINFO*) lParam; pnmhdr = (LPNMHEADER) lParam; if (pnmh->hwndFrom == hProcessPageListCtrl) { switch (pnmh->code) { #if 0 case LVN_ITEMCHANGED: ProcessPageUpdate(); break; #endif case LVN_GETDISPINFO: if (!(pnmdi->item.mask & LVIF_TEXT)) break; pData = (LPPROCESS_PAGE_LIST_ITEM)pnmdi->item.lParam; Index = PerfDataGetProcessIndex(pData->ProcessId); ColumnIndex = pnmdi->item.iSubItem; PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, pnmdi->item.cchTextMax); break; case NM_RCLICK: ProcessPageShowContextMenu(GetSelectedProcessId()); break; case LVN_KEYDOWN: if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE) ProcessPage_OnEndProcess(); break; } } else if (pnmh->hwndFrom == hProcessPageHeaderCtrl) { switch (pnmh->code) { case HDN_ITEMCLICK: TaskManagerSettings.SortColumn = ColumnDataHints[pnmhdr->iItem]; TaskManagerSettings.SortAscending = !TaskManagerSettings.SortAscending; (void)ListView_SortItems(hProcessPageListCtrl, ProcessPageCompareFunc, NULL); break; case HDN_ITEMCHANGED: UpdateColumnDataHints(); break; case HDN_ENDDRAG: UpdateColumnDataHints(); break; } } }