mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 22:52:54 +00:00
modified base/applications/taskmgr/affinity.c
modified base/applications/taskmgr/debug.c modified base/applications/taskmgr/endproc.c modified base/applications/taskmgr/priority.c Arch Blackmann has never heard of exotic features of the C language such as "subroutines" modified base/applications/taskmgr/dbgchnl.c modified base/applications/taskmgr/procpage.c modified base/applications/taskmgr/procpage.h Did you know that Task Manager killed the wrong process when using the context menu? Fixed by using a sophisticated "subroutine" that reads the process entry index from the currently selected list item's client data, replacing the copy-pasted code that used the index of the list entry as the process entry index (which only worked before due to no sorting) Save the sort column and order modified base/applications/taskmgr/taskmgr.c Sort by image name by default svn path=/trunk/; revision=41664
This commit is contained in:
parent
a40dc20557
commit
b9613ba11f
8 changed files with 69 additions and 172 deletions
|
@ -40,24 +40,15 @@ static INT_PTR CALLBACK AffinityDialogWndProc(HWND hDlg, UINT message, WPARAM wP
|
||||||
|
|
||||||
void ProcessPage_OnSetAffinity(void)
|
void ProcessPage_OnSetAffinity(void)
|
||||||
{
|
{
|
||||||
LV_ITEM lvitem;
|
|
||||||
ULONG Index;
|
|
||||||
DWORD dwProcessId;
|
DWORD dwProcessId;
|
||||||
WCHAR strErrorText[260];
|
WCHAR strErrorText[260];
|
||||||
WCHAR szTitle[256];
|
WCHAR szTitle[256];
|
||||||
|
|
||||||
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++) {
|
dwProcessId = GetSelectedProcessId();
|
||||||
memset(&lvitem, 0, sizeof(LV_ITEM));
|
|
||||||
lvitem.mask = LVIF_STATE;
|
if (dwProcessId == 0)
|
||||||
lvitem.stateMask = LVIS_SELECTED;
|
|
||||||
lvitem.iItem = Index;
|
|
||||||
(void)ListView_GetItem(hProcessPageListCtrl, &lvitem);
|
|
||||||
if (lvitem.state & LVIS_SELECTED)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
dwProcessId = PerfDataGetProcessId(Index);
|
|
||||||
if ((ListView_GetSelectedCount(hProcessPageListCtrl) != 1) || (dwProcessId == 0))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
hProcessAffinityHandle = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_SET_INFORMATION, FALSE, dwProcessId);
|
hProcessAffinityHandle = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_SET_INFORMATION, FALSE, dwProcessId);
|
||||||
if (!hProcessAffinityHandle) {
|
if (!hProcessAffinityHandle) {
|
||||||
GetLastErrorText(strErrorText, sizeof(strErrorText) / sizeof(WCHAR));
|
GetLastErrorText(strErrorText, sizeof(strErrorText) / sizeof(WCHAR));
|
||||||
|
|
|
@ -42,33 +42,6 @@ BOOL DebugChannelsAreSupported(void)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static DWORD get_selected_pid(void)
|
|
||||||
{
|
|
||||||
LVITEM lvitem;
|
|
||||||
ULONG Index;
|
|
||||||
DWORD dwProcessId;
|
|
||||||
|
|
||||||
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++)
|
|
||||||
{
|
|
||||||
memset(&lvitem, 0, sizeof(LVITEM));
|
|
||||||
|
|
||||||
lvitem.mask = LVIF_STATE;
|
|
||||||
lvitem.stateMask = LVIS_SELECTED;
|
|
||||||
lvitem.iItem = Index;
|
|
||||||
|
|
||||||
(void)ListView_GetItem(hProcessPageListCtrl, &lvitem);
|
|
||||||
|
|
||||||
if (lvitem.state & LVIS_SELECTED)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
dwProcessId = PerfDataGetProcessId(Index);
|
|
||||||
|
|
||||||
if ((ListView_GetSelectedCount(hProcessPageListCtrl) != 1) || (dwProcessId == 0))
|
|
||||||
return 0;
|
|
||||||
return dwProcessId;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int list_channel_CB(HANDLE hProcess, void* addr, WCHAR* buffer, void* user)
|
static int list_channel_CB(HANDLE hProcess, void* addr, WCHAR* buffer, void* user)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
|
@ -290,7 +263,7 @@ static void DebugChannels_FillList(HWND hChannelLV)
|
||||||
|
|
||||||
(void)ListView_DeleteAllItems(hChannelLV);
|
(void)ListView_DeleteAllItems(hChannelLV);
|
||||||
|
|
||||||
hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ, FALSE, get_selected_pid());
|
hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ, FALSE, GetSelectedProcessId());
|
||||||
if (!hProcess) return; /* FIXME messagebox */
|
if (!hProcess) return; /* FIXME messagebox */
|
||||||
SendMessageW(hChannelLV, WM_SETREDRAW, FALSE, 0);
|
SendMessageW(hChannelLV, WM_SETREDRAW, FALSE, 0);
|
||||||
enum_channel(hProcess, list_channel_CB, (void*)hChannelLV, TRUE);
|
enum_channel(hProcess, list_channel_CB, (void*)hChannelLV, TRUE);
|
||||||
|
@ -350,7 +323,7 @@ static void DebugChannels_OnNotify(HWND hDlg, LPARAM lParam)
|
||||||
HANDLE hProcess;
|
HANDLE hProcess;
|
||||||
NMITEMACTIVATE* nmia = (NMITEMACTIVATE*)lParam;
|
NMITEMACTIVATE* nmia = (NMITEMACTIVATE*)lParam;
|
||||||
|
|
||||||
hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, get_selected_pid());
|
hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, GetSelectedProcessId());
|
||||||
if (!hProcess) return; /* FIXME message box */
|
if (!hProcess) return; /* FIXME message box */
|
||||||
lhti.pt = nmia->ptAction;
|
lhti.pt = nmia->ptAction;
|
||||||
hChannelLV = GetDlgItem(hDlg, IDC_DEBUG_CHANNELS_LIST);
|
hChannelLV = GetDlgItem(hDlg, IDC_DEBUG_CHANNELS_LIST);
|
||||||
|
|
|
@ -25,8 +25,6 @@
|
||||||
|
|
||||||
void ProcessPage_OnDebug(void)
|
void ProcessPage_OnDebug(void)
|
||||||
{
|
{
|
||||||
LVITEM lvitem;
|
|
||||||
ULONG Index;
|
|
||||||
DWORD dwProcessId;
|
DWORD dwProcessId;
|
||||||
WCHAR strErrorText[260];
|
WCHAR strErrorText[260];
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
|
@ -39,24 +37,9 @@ void ProcessPage_OnDebug(void)
|
||||||
WCHAR szTemp[256];
|
WCHAR szTemp[256];
|
||||||
WCHAR szTempA[256];
|
WCHAR szTempA[256];
|
||||||
|
|
||||||
|
dwProcessId = GetSelectedProcessId();
|
||||||
|
|
||||||
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++)
|
if (dwProcessId == 0)
|
||||||
{
|
|
||||||
memset(&lvitem, 0, sizeof(LVITEM));
|
|
||||||
|
|
||||||
lvitem.mask = LVIF_STATE;
|
|
||||||
lvitem.stateMask = LVIS_SELECTED;
|
|
||||||
lvitem.iItem = Index;
|
|
||||||
|
|
||||||
(void)ListView_GetItem(hProcessPageListCtrl, &lvitem);
|
|
||||||
|
|
||||||
if (lvitem.state & LVIS_SELECTED)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
dwProcessId = PerfDataGetProcessId(Index);
|
|
||||||
|
|
||||||
if ((ListView_GetSelectedCount(hProcessPageListCtrl) != 1) || (dwProcessId == 0))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
LoadStringW(hInst, IDS_MSG_WARNINGDEBUG, szTemp, 256);
|
LoadStringW(hInst, IDS_MSG_WARNINGDEBUG, szTemp, 256);
|
||||||
|
|
|
@ -25,30 +25,14 @@
|
||||||
|
|
||||||
void ProcessPage_OnEndProcess(void)
|
void ProcessPage_OnEndProcess(void)
|
||||||
{
|
{
|
||||||
LVITEM lvitem;
|
|
||||||
ULONG Index;
|
|
||||||
DWORD dwProcessId;
|
DWORD dwProcessId;
|
||||||
HANDLE hProcess;
|
HANDLE hProcess;
|
||||||
WCHAR szTitle[256];
|
WCHAR szTitle[256];
|
||||||
WCHAR strErrorText[260];
|
WCHAR strErrorText[260];
|
||||||
|
|
||||||
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++)
|
dwProcessId = GetSelectedProcessId();
|
||||||
{
|
|
||||||
memset(&lvitem, 0, sizeof(LVITEM));
|
|
||||||
|
|
||||||
lvitem.mask = LVIF_STATE;
|
if (dwProcessId == 0)
|
||||||
lvitem.stateMask = LVIS_SELECTED;
|
|
||||||
lvitem.iItem = Index;
|
|
||||||
|
|
||||||
(void)ListView_GetItem(hProcessPageListCtrl, &lvitem);
|
|
||||||
|
|
||||||
if (lvitem.state & LVIS_SELECTED)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
dwProcessId = PerfDataGetProcessId(Index);
|
|
||||||
|
|
||||||
if ((ListView_GetSelectedCount(hProcessPageListCtrl) != 1) || (dwProcessId == 0))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256);
|
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256);
|
||||||
|
@ -78,30 +62,14 @@ void ProcessPage_OnEndProcess(void)
|
||||||
|
|
||||||
void ProcessPage_OnEndProcessTree(void)
|
void ProcessPage_OnEndProcessTree(void)
|
||||||
{
|
{
|
||||||
LVITEM lvitem;
|
|
||||||
ULONG Index;
|
|
||||||
DWORD dwProcessId;
|
DWORD dwProcessId;
|
||||||
HANDLE hProcess;
|
HANDLE hProcess;
|
||||||
WCHAR szTitle[256];
|
WCHAR szTitle[256];
|
||||||
WCHAR strErrorText[260];
|
WCHAR strErrorText[260];
|
||||||
|
|
||||||
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++)
|
dwProcessId = GetSelectedProcessId();
|
||||||
{
|
|
||||||
memset(&lvitem, 0, sizeof(LVITEM));
|
|
||||||
|
|
||||||
lvitem.mask = LVIF_STATE;
|
if (dwProcessId == 0)
|
||||||
lvitem.stateMask = LVIS_SELECTED;
|
|
||||||
lvitem.iItem = Index;
|
|
||||||
|
|
||||||
(void)ListView_GetItem(hProcessPageListCtrl, &lvitem);
|
|
||||||
|
|
||||||
if (lvitem.state & LVIS_SELECTED)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
dwProcessId = PerfDataGetProcessId(Index);
|
|
||||||
|
|
||||||
if ((ListView_GetSelectedCount(hProcessPageListCtrl) != 1) || (dwProcessId == 0))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256);
|
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256);
|
||||||
|
|
|
@ -25,30 +25,14 @@
|
||||||
|
|
||||||
void DoSetPriority(DWORD priority)
|
void DoSetPriority(DWORD priority)
|
||||||
{
|
{
|
||||||
LVITEM lvitem;
|
|
||||||
ULONG Index;
|
|
||||||
DWORD dwProcessId;
|
DWORD dwProcessId;
|
||||||
HANDLE hProcess;
|
HANDLE hProcess;
|
||||||
WCHAR szText[260];
|
WCHAR szText[260];
|
||||||
WCHAR szTitle[256];
|
WCHAR szTitle[256];
|
||||||
|
|
||||||
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++)
|
dwProcessId = GetSelectedProcessId();
|
||||||
{
|
|
||||||
ZeroMemory(&lvitem, sizeof(LVITEM));
|
|
||||||
|
|
||||||
lvitem.mask = LVIF_STATE;
|
if (dwProcessId == 0)
|
||||||
lvitem.stateMask = LVIS_SELECTED;
|
|
||||||
lvitem.iItem = Index;
|
|
||||||
|
|
||||||
(void)ListView_GetItem(hProcessPageListCtrl, &lvitem);
|
|
||||||
|
|
||||||
if (lvitem.state & LVIS_SELECTED)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
dwProcessId = PerfDataGetProcessId(Index);
|
|
||||||
|
|
||||||
if ((ListView_GetSelectedCount(hProcessPageListCtrl) != 1) || (dwProcessId == 0))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256);
|
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256);
|
||||||
|
|
|
@ -40,10 +40,7 @@ HWND hProcessPageShowAllProcessesButton;/* Process Show All Processes checkbox *
|
||||||
|
|
||||||
static int nProcessPageWidth;
|
static int nProcessPageWidth;
|
||||||
static int nProcessPageHeight;
|
static int nProcessPageHeight;
|
||||||
static BOOL bProcessSort = FALSE;
|
|
||||||
static BOOL bProcessSortAscending = FALSE;
|
|
||||||
static HANDLE hProcessPageEvent = NULL; /* When this event becomes signaled then we refresh the process list */
|
static HANDLE hProcessPageEvent = NULL; /* When this event becomes signaled then we refresh the process list */
|
||||||
static ULONG ProcessSortColumnIndex = 0;
|
|
||||||
|
|
||||||
int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
|
int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
|
||||||
void AddProcess(ULONG Index);
|
void AddProcess(ULONG Index);
|
||||||
|
@ -55,6 +52,29 @@ void ProcessPageShowContextMenu(DWORD dwProcessId);
|
||||||
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount);
|
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount);
|
||||||
DWORD WINAPI ProcessPageRefreshThread(void *lpParameter);
|
DWORD WINAPI ProcessPageRefreshThread(void *lpParameter);
|
||||||
|
|
||||||
|
DWORD GetSelectedProcessId(void)
|
||||||
|
{
|
||||||
|
int Index;
|
||||||
|
LVITEM lvitem;
|
||||||
|
|
||||||
|
if(ListView_GetSelectedCount(hProcessPageListCtrl) == 1)
|
||||||
|
{
|
||||||
|
Index = ListView_GetSelectionMark(hProcessPageListCtrl);
|
||||||
|
|
||||||
|
memset(&lvitem, 0, sizeof(LVITEM));
|
||||||
|
|
||||||
|
lvitem.mask = LVIF_PARAM;
|
||||||
|
lvitem.iItem = Index;
|
||||||
|
|
||||||
|
(void)ListView_GetItem(hProcessPageListCtrl, &lvitem);
|
||||||
|
|
||||||
|
if (lvitem.lParam)
|
||||||
|
return PerfDataGetProcessId(((LPPROCESS_PAGE_LIST_ITEM)lvitem.lParam)->Index);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
INT_PTR CALLBACK
|
INT_PTR CALLBACK
|
||||||
ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
@ -171,7 +191,6 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
|
||||||
LPNMLISTVIEW pnmv;
|
LPNMLISTVIEW pnmv;
|
||||||
NMLVDISPINFO* pnmdi;
|
NMLVDISPINFO* pnmdi;
|
||||||
LPNMHEADER pnmhdr;
|
LPNMHEADER pnmhdr;
|
||||||
LVITEM lvitem;
|
|
||||||
ULONG Index;
|
ULONG Index;
|
||||||
ULONG ColumnIndex;
|
ULONG ColumnIndex;
|
||||||
LPPROCESS_PAGE_LIST_ITEM pData;
|
LPPROCESS_PAGE_LIST_ITEM pData;
|
||||||
|
@ -207,26 +226,7 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
case NM_RCLICK:
|
case NM_RCLICK:
|
||||||
|
|
||||||
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++)
|
ProcessPageShowContextMenu(GetSelectedProcessId());
|
||||||
{
|
|
||||||
memset(&lvitem, 0, sizeof(LVITEM));
|
|
||||||
|
|
||||||
lvitem.mask = LVIF_STATE;
|
|
||||||
lvitem.stateMask = LVIS_SELECTED;
|
|
||||||
lvitem.iItem = Index;
|
|
||||||
|
|
||||||
(void)ListView_GetItem(hProcessPageListCtrl, &lvitem);
|
|
||||||
|
|
||||||
if (lvitem.state & LVIS_SELECTED)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ListView_GetSelectedCount(hProcessPageListCtrl) == 1) &&
|
|
||||||
(PerfDataGetProcessId(Index) != 0))
|
|
||||||
{
|
|
||||||
ProcessPageShowContextMenu(PerfDataGetProcessId(Index));
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -237,10 +237,9 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
case HDN_ITEMCLICK:
|
case HDN_ITEMCLICK:
|
||||||
|
|
||||||
ProcessSortColumnIndex = pnmhdr->iItem;
|
TaskManagerSettings.SortColumn = ColumnDataHints[pnmhdr->iItem];
|
||||||
bProcessSortAscending = !bProcessSortAscending;
|
TaskManagerSettings.SortAscending = !TaskManagerSettings.SortAscending;
|
||||||
(void)ListView_SortItems(hProcessPageListCtrl, ProcessPageCompareFunc, NULL);
|
(void)ListView_SortItems(hProcessPageListCtrl, ProcessPageCompareFunc, NULL);
|
||||||
bProcessSort = TRUE;
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -447,7 +446,7 @@ void UpdateProcesses()
|
||||||
{
|
{
|
||||||
AddProcess(l);
|
AddProcess(l);
|
||||||
}
|
}
|
||||||
if (bProcessSort)
|
if (TaskManagerSettings.SortColumn != -1)
|
||||||
{
|
{
|
||||||
(void)ListView_SortItems(hProcessPageListCtrl, ProcessPageCompareFunc, NULL);
|
(void)ListView_SortItems(hProcessPageListCtrl, ProcessPageCompareFunc, NULL);
|
||||||
}
|
}
|
||||||
|
@ -674,7 +673,6 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
LPPROCESS_PAGE_LIST_ITEM Param1;
|
LPPROCESS_PAGE_LIST_ITEM Param1;
|
||||||
LPPROCESS_PAGE_LIST_ITEM Param2;
|
LPPROCESS_PAGE_LIST_ITEM Param2;
|
||||||
ULONG ColumnIndex;
|
|
||||||
WCHAR text1[260];
|
WCHAR text1[260];
|
||||||
WCHAR text2[260];
|
WCHAR text2[260];
|
||||||
ULONG l1;
|
ULONG l1;
|
||||||
|
@ -686,130 +684,129 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
|
||||||
ULONGLONG ull1;
|
ULONGLONG ull1;
|
||||||
ULONGLONG ull2;
|
ULONGLONG ull2;
|
||||||
|
|
||||||
if (bProcessSortAscending) {
|
if (TaskManagerSettings.SortAscending) {
|
||||||
Param1 = (LPPROCESS_PAGE_LIST_ITEM)lParam1;
|
Param1 = (LPPROCESS_PAGE_LIST_ITEM)lParam1;
|
||||||
Param2 = (LPPROCESS_PAGE_LIST_ITEM)lParam2;
|
Param2 = (LPPROCESS_PAGE_LIST_ITEM)lParam2;
|
||||||
} else {
|
} else {
|
||||||
Param1 = (LPPROCESS_PAGE_LIST_ITEM)lParam2;
|
Param1 = (LPPROCESS_PAGE_LIST_ITEM)lParam2;
|
||||||
Param2 = (LPPROCESS_PAGE_LIST_ITEM)lParam1;
|
Param2 = (LPPROCESS_PAGE_LIST_ITEM)lParam1;
|
||||||
}
|
}
|
||||||
ColumnIndex = ProcessSortColumnIndex;
|
|
||||||
|
|
||||||
if (ColumnDataHints[ColumnIndex] == COLUMN_IMAGENAME)
|
if (TaskManagerSettings.SortColumn == COLUMN_IMAGENAME)
|
||||||
{
|
{
|
||||||
PerfDataGetImageName(Param1->Index, text1, sizeof (text1) / sizeof (*text1));
|
PerfDataGetImageName(Param1->Index, text1, sizeof (text1) / sizeof (*text1));
|
||||||
PerfDataGetImageName(Param2->Index, text2, sizeof (text2) / sizeof (*text2));
|
PerfDataGetImageName(Param2->Index, text2, sizeof (text2) / sizeof (*text2));
|
||||||
ret = _wcsicmp(text1, text2);
|
ret = _wcsicmp(text1, text2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_PID)
|
else if (TaskManagerSettings.SortColumn == COLUMN_PID)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetProcessId(Param1->Index);
|
l1 = PerfDataGetProcessId(Param1->Index);
|
||||||
l2 = PerfDataGetProcessId(Param2->Index);
|
l2 = PerfDataGetProcessId(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_USERNAME)
|
else if (TaskManagerSettings.SortColumn == COLUMN_USERNAME)
|
||||||
{
|
{
|
||||||
PerfDataGetUserName(Param1->Index, text1, sizeof (text1) / sizeof (*text1));
|
PerfDataGetUserName(Param1->Index, text1, sizeof (text1) / sizeof (*text1));
|
||||||
PerfDataGetUserName(Param2->Index, text2, sizeof (text2) / sizeof (*text2));
|
PerfDataGetUserName(Param2->Index, text2, sizeof (text2) / sizeof (*text2));
|
||||||
ret = _wcsicmp(text1, text2);
|
ret = _wcsicmp(text1, text2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_SESSIONID)
|
else if (TaskManagerSettings.SortColumn == COLUMN_SESSIONID)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetSessionId(Param1->Index);
|
l1 = PerfDataGetSessionId(Param1->Index);
|
||||||
l2 = PerfDataGetSessionId(Param2->Index);
|
l2 = PerfDataGetSessionId(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_CPUUSAGE)
|
else if (TaskManagerSettings.SortColumn == COLUMN_CPUUSAGE)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetCPUUsage(Param1->Index);
|
l1 = PerfDataGetCPUUsage(Param1->Index);
|
||||||
l2 = PerfDataGetCPUUsage(Param2->Index);
|
l2 = PerfDataGetCPUUsage(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_CPUTIME)
|
else if (TaskManagerSettings.SortColumn == COLUMN_CPUTIME)
|
||||||
{
|
{
|
||||||
time1 = PerfDataGetCPUTime(Param1->Index);
|
time1 = PerfDataGetCPUTime(Param1->Index);
|
||||||
time2 = PerfDataGetCPUTime(Param2->Index);
|
time2 = PerfDataGetCPUTime(Param2->Index);
|
||||||
ret = largeintcmp(time1, time2);
|
ret = largeintcmp(time1, time2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGE)
|
else if (TaskManagerSettings.SortColumn == COLUMN_MEMORYUSAGE)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetWorkingSetSizeBytes(Param1->Index);
|
l1 = PerfDataGetWorkingSetSizeBytes(Param1->Index);
|
||||||
l2 = PerfDataGetWorkingSetSizeBytes(Param2->Index);
|
l2 = PerfDataGetWorkingSetSizeBytes(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_PEAKMEMORYUSAGE)
|
else if (TaskManagerSettings.SortColumn == COLUMN_PEAKMEMORYUSAGE)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetPeakWorkingSetSizeBytes(Param1->Index);
|
l1 = PerfDataGetPeakWorkingSetSizeBytes(Param1->Index);
|
||||||
l2 = PerfDataGetPeakWorkingSetSizeBytes(Param2->Index);
|
l2 = PerfDataGetPeakWorkingSetSizeBytes(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGEDELTA)
|
else if (TaskManagerSettings.SortColumn == COLUMN_MEMORYUSAGEDELTA)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetWorkingSetSizeDelta(Param1->Index);
|
l1 = PerfDataGetWorkingSetSizeDelta(Param1->Index);
|
||||||
l2 = PerfDataGetWorkingSetSizeDelta(Param2->Index);
|
l2 = PerfDataGetWorkingSetSizeDelta(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTS)
|
else if (TaskManagerSettings.SortColumn == COLUMN_PAGEFAULTS)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetPageFaultCount(Param1->Index);
|
l1 = PerfDataGetPageFaultCount(Param1->Index);
|
||||||
l2 = PerfDataGetPageFaultCount(Param2->Index);
|
l2 = PerfDataGetPageFaultCount(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTSDELTA)
|
else if (TaskManagerSettings.SortColumn == COLUMN_PAGEFAULTSDELTA)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetPageFaultCountDelta(Param1->Index);
|
l1 = PerfDataGetPageFaultCountDelta(Param1->Index);
|
||||||
l2 = PerfDataGetPageFaultCountDelta(Param2->Index);
|
l2 = PerfDataGetPageFaultCountDelta(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_VIRTUALMEMORYSIZE)
|
else if (TaskManagerSettings.SortColumn == COLUMN_VIRTUALMEMORYSIZE)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetVirtualMemorySizeBytes(Param1->Index);
|
l1 = PerfDataGetVirtualMemorySizeBytes(Param1->Index);
|
||||||
l2 = PerfDataGetVirtualMemorySizeBytes(Param2->Index);
|
l2 = PerfDataGetVirtualMemorySizeBytes(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEDPOOL)
|
else if (TaskManagerSettings.SortColumn == COLUMN_PAGEDPOOL)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetPagedPoolUsagePages(Param1->Index);
|
l1 = PerfDataGetPagedPoolUsagePages(Param1->Index);
|
||||||
l2 = PerfDataGetPagedPoolUsagePages(Param2->Index);
|
l2 = PerfDataGetPagedPoolUsagePages(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_NONPAGEDPOOL)
|
else if (TaskManagerSettings.SortColumn == COLUMN_NONPAGEDPOOL)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetNonPagedPoolUsagePages(Param1->Index);
|
l1 = PerfDataGetNonPagedPoolUsagePages(Param1->Index);
|
||||||
l2 = PerfDataGetNonPagedPoolUsagePages(Param2->Index);
|
l2 = PerfDataGetNonPagedPoolUsagePages(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_BASEPRIORITY)
|
else if (TaskManagerSettings.SortColumn == COLUMN_BASEPRIORITY)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetBasePriority(Param1->Index);
|
l1 = PerfDataGetBasePriority(Param1->Index);
|
||||||
l2 = PerfDataGetBasePriority(Param2->Index);
|
l2 = PerfDataGetBasePriority(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_HANDLECOUNT)
|
else if (TaskManagerSettings.SortColumn == COLUMN_HANDLECOUNT)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetHandleCount(Param1->Index);
|
l1 = PerfDataGetHandleCount(Param1->Index);
|
||||||
l2 = PerfDataGetHandleCount(Param2->Index);
|
l2 = PerfDataGetHandleCount(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_THREADCOUNT)
|
else if (TaskManagerSettings.SortColumn == COLUMN_THREADCOUNT)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetThreadCount(Param1->Index);
|
l1 = PerfDataGetThreadCount(Param1->Index);
|
||||||
l2 = PerfDataGetThreadCount(Param2->Index);
|
l2 = PerfDataGetThreadCount(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_USEROBJECTS)
|
else if (TaskManagerSettings.SortColumn == COLUMN_USEROBJECTS)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetUSERObjectCount(Param1->Index);
|
l1 = PerfDataGetUSERObjectCount(Param1->Index);
|
||||||
l2 = PerfDataGetUSERObjectCount(Param2->Index);
|
l2 = PerfDataGetUSERObjectCount(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_GDIOBJECTS)
|
else if (TaskManagerSettings.SortColumn == COLUMN_GDIOBJECTS)
|
||||||
{
|
{
|
||||||
l1 = PerfDataGetGDIObjectCount(Param1->Index);
|
l1 = PerfDataGetGDIObjectCount(Param1->Index);
|
||||||
l2 = PerfDataGetGDIObjectCount(Param2->Index);
|
l2 = PerfDataGetGDIObjectCount(Param2->Index);
|
||||||
ret = CMP(l1, l2);
|
ret = CMP(l1, l2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADS)
|
else if (TaskManagerSettings.SortColumn == COLUMN_IOREADS)
|
||||||
{
|
{
|
||||||
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
||||||
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
||||||
|
@ -817,7 +814,7 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
|
||||||
ull2 = iocounters2.ReadOperationCount;
|
ull2 = iocounters2.ReadOperationCount;
|
||||||
ret = CMP(ull1, ull2);
|
ret = CMP(ull1, ull2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITES)
|
else if (TaskManagerSettings.SortColumn == COLUMN_IOWRITES)
|
||||||
{
|
{
|
||||||
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
||||||
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
||||||
|
@ -825,7 +822,7 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
|
||||||
ull2 = iocounters2.WriteOperationCount;
|
ull2 = iocounters2.WriteOperationCount;
|
||||||
ret = CMP(ull1, ull2);
|
ret = CMP(ull1, ull2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHER)
|
else if (TaskManagerSettings.SortColumn == COLUMN_IOOTHER)
|
||||||
{
|
{
|
||||||
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
||||||
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
||||||
|
@ -833,7 +830,7 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
|
||||||
ull2 = iocounters2.OtherOperationCount;
|
ull2 = iocounters2.OtherOperationCount;
|
||||||
ret = CMP(ull1, ull2);
|
ret = CMP(ull1, ull2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADBYTES)
|
else if (TaskManagerSettings.SortColumn == COLUMN_IOREADBYTES)
|
||||||
{
|
{
|
||||||
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
||||||
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
||||||
|
@ -841,7 +838,7 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
|
||||||
ull2 = iocounters2.ReadTransferCount;
|
ull2 = iocounters2.ReadTransferCount;
|
||||||
ret = CMP(ull1, ull2);
|
ret = CMP(ull1, ull2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITEBYTES)
|
else if (TaskManagerSettings.SortColumn == COLUMN_IOWRITEBYTES)
|
||||||
{
|
{
|
||||||
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
||||||
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
||||||
|
@ -849,7 +846,7 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
|
||||||
ull2 = iocounters2.WriteTransferCount;
|
ull2 = iocounters2.WriteTransferCount;
|
||||||
ret = CMP(ull1, ull2);
|
ret = CMP(ull1, ull2);
|
||||||
}
|
}
|
||||||
else if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHERBYTES)
|
else if (TaskManagerSettings.SortColumn == COLUMN_IOOTHERBYTES)
|
||||||
{
|
{
|
||||||
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
PerfDataGetIOCounters(Param1->Index, &iocounters1);
|
||||||
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
PerfDataGetIOCounters(Param2->Index, &iocounters2);
|
||||||
|
|
|
@ -31,5 +31,6 @@ extern HWND hProcessPageShowAllProcessesButton; /* Process Show All Processes c
|
||||||
|
|
||||||
INT_PTR CALLBACK ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
INT_PTR CALLBACK ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||||||
void RefreshProcessPage(void);
|
void RefreshProcessPage(void);
|
||||||
|
DWORD GetSelectedProcessId(void);
|
||||||
|
|
||||||
#endif /* __PROCESSPAGE_H */
|
#endif /* __PROCESSPAGE_H */
|
||||||
|
|
|
@ -706,7 +706,7 @@ void LoadSettings(void)
|
||||||
TaskManagerSettings.ColumnSizeArray[i] = ColumnPresets[i].size;
|
TaskManagerSettings.ColumnSizeArray[i] = ColumnPresets[i].size;
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskManagerSettings.SortColumn = 1;
|
TaskManagerSettings.SortColumn = COLUMN_IMAGENAME;
|
||||||
TaskManagerSettings.SortAscending = TRUE;
|
TaskManagerSettings.SortAscending = TRUE;
|
||||||
|
|
||||||
/* Performance page settings */
|
/* Performance page settings */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue