From 42801ca828eca47113dffdafeeccb40b3dc560de Mon Sep 17 00:00:00 2001 From: wj32 Date: Sun, 14 Feb 2010 07:08:12 +0000 Subject: [PATCH] description text works now git-svn-id: svn://svn.code.sf.net/p/processhacker/code@2833 21ef857c-d57f-4fe0-8362-d861dc6d29cd --- 2.x/trunk/ProcessHacker/hidnproc.c | 35 +++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/2.x/trunk/ProcessHacker/hidnproc.c b/2.x/trunk/ProcessHacker/hidnproc.c index 2689f378e..5f7a6084c 100644 --- a/2.x/trunk/ProcessHacker/hidnproc.c +++ b/2.x/trunk/ProcessHacker/hidnproc.c @@ -48,6 +48,8 @@ static PH_LAYOUT_MANAGER WindowLayoutManager; static PH_HIDDEN_PROCESS_METHOD ProcessesMethod; static PPH_LIST ProcessesList = NULL; +static ULONG NumberOfHiddenProcesses; +static ULONG NumberOfTerminatedProcesses; VOID PhShowHiddenProcessesDialog() { @@ -168,6 +170,8 @@ static INT_PTR CALLBACK PhpHiddenProcessesDlgProc( PhStringEquals2(method, L"Brute Force", TRUE) ? BruteForceScanMethod : CsrHandlesScanMethod; + NumberOfHiddenProcesses = 0; + NumberOfTerminatedProcesses = 0; ExtendedListView_SetRedraw(PhHiddenProcessesListViewHandle, FALSE); status = PhEnumHiddenProcesses( @@ -178,8 +182,17 @@ static INT_PTR CALLBACK PhpHiddenProcessesDlgProc( ExtendedListView_SortItems(PhHiddenProcessesListViewHandle); ExtendedListView_SetRedraw(PhHiddenProcessesListViewHandle, TRUE); - if (!NT_SUCCESS(status)) + if (NT_SUCCESS(status)) + { + SetDlgItemText(hwndDlg, IDC_DESCRIPTION, + PhaFormatString(L"%u hidden processes, %u terminated processes.", + NumberOfHiddenProcesses, NumberOfTerminatedProcesses)->Buffer + ); + } + else + { PhShowStatus(hwndDlg, L"Unable to perform the scan", status, 0); + } } break; case IDC_TERMINATE: @@ -256,6 +269,21 @@ static INT_PTR CALLBACK PhpHiddenProcessesDlgProc( PhResizingMinimumSize((PRECT)lParam, wParam, 476, 380); } break; + case WM_CTLCOLORSTATIC: + { + if (lParam == GetDlgItem(hwndDlg, IDC_DESCRIPTION)) + { + if (NumberOfHiddenProcesses != 0) + { + SetTextColor((HDC)wParam, RGB(0xff, 0x00, 0x00)); + } + + SetBkMode((HDC)wParam, TRANSPARENT); + + return GetStockObject(NULL_BRUSH); + } + } + break; } REFLECT_MESSAGE_DLG(hwndDlg, PhHiddenProcessesListViewHandle, uMsg, wParam, lParam); @@ -304,6 +332,11 @@ static BOOLEAN NTAPI PhpHiddenProcessesCallback( PhPrintUInt32(pidString, (ULONG)entry->ProcessId); PhSetListViewSubItem(PhHiddenProcessesListViewHandle, lvItemIndex, 1, pidString); + if (entry->Type == HiddenProcess) + NumberOfHiddenProcesses++; + else if (entry->Type == TerminatedProcess) + NumberOfTerminatedProcesses++; + return TRUE; }