- taskmgr improvements by Carlo Bramix

See issue #3075 for more details.

svn path=/trunk/; revision=32380
This commit is contained in:
Johannes Anderwald 2008-02-15 19:22:55 +00:00
parent 34e64ee87b
commit 1950c903e3
9 changed files with 90 additions and 240 deletions

View file

@ -1,7 +1,7 @@
/*
* ReactOS Task Manager
*
* about.cpp
* about.c
*
* Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
*

View file

@ -1,7 +1,7 @@
/*
* ReactOS Task Manager
*
* affinity.cpp
* affinity.c
*
* Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
* 2005 Klemens Friedl <frik85@reactos.at>
@ -24,8 +24,6 @@
#include <precomp.h>
HANDLE hProcessAffinityHandle;
WCHAR szTemp[256];
WCHAR szTempA[256];
static const DWORD dwCpuTable[] = {
IDC_CPU0, IDC_CPU1, IDC_CPU2, IDC_CPU3,
@ -46,6 +44,7 @@ void ProcessPage_OnSetAffinity(void)
ULONG Index;
DWORD dwProcessId;
WCHAR strErrorText[260];
WCHAR szTitle[256];
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++) {
memset(&lvitem, 0, sizeof(LV_ITEM));
@ -62,8 +61,8 @@ void ProcessPage_OnSetAffinity(void)
hProcessAffinityHandle = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_SET_INFORMATION, FALSE, dwProcessId);
if (!hProcessAffinityHandle) {
GetLastErrorText(strErrorText, sizeof(strErrorText) / sizeof(WCHAR));
LoadStringW(hInst, IDS_MSG_ACCESSPROCESSAFF, szTemp, sizeof(szTemp) / sizeof(WCHAR));
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK|MB_ICONSTOP);
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);
@ -79,6 +78,7 @@ AffinityDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
DWORD dwProcessAffinityMask = 0;
DWORD dwSystemAffinityMask = 0;
WCHAR strErrorText[260];
WCHAR szTitle[256];
BYTE nCpu;
switch (message) {
@ -91,8 +91,8 @@ AffinityDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
if (!GetProcessAffinityMask(hProcessAffinityHandle, &dwProcessAffinityMask, &dwSystemAffinityMask)) {
GetLastErrorText(strErrorText, sizeof(strErrorText) / sizeof(WCHAR));
EndDialog(hDlg, 0);
LoadStringW(hInst, IDS_MSG_ACCESSPROCESSAFF, szTemp, sizeof(szTemp) / sizeof(WCHAR));
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK|MB_ICONSTOP);
LoadStringW(hInst, IDS_MSG_ACCESSPROCESSAFF, szTitle, sizeof(szTitle) / sizeof(WCHAR));
MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP);
}
for (nCpu=0; nCpu<sizeof(dwCpuTable) / sizeof(dwCpuTable[0]); nCpu++) {
@ -143,9 +143,9 @@ AffinityDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
* of it's cpu time.
*/
if (!dwProcessAffinityMask) {
LoadStringW(hInst, IDS_MSG_PROCESSONEPRO, szTemp, sizeof(szTemp) / sizeof(WCHAR));
LoadStringW(hInst, IDS_MSG_INVALIDOPTION, szTempA, sizeof(szTempA) / sizeof(WCHAR));
MessageBoxW(hDlg, szTemp, szTempA, MB_OK|MB_ICONSTOP);
LoadStringW(hInst, IDS_MSG_PROCESSONEPRO, strErrorText, sizeof(strErrorText) / sizeof(WCHAR));
LoadStringW(hInst, IDS_MSG_INVALIDOPTION, szTitle, sizeof(szTitle) / sizeof(WCHAR));
MessageBoxW(hDlg, strErrorText, szTitle, MB_OK|MB_ICONSTOP);
return TRUE;
}
@ -155,8 +155,8 @@ AffinityDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
if (!SetProcessAffinityMask(hProcessAffinityHandle, dwProcessAffinityMask)) {
GetLastErrorText(strErrorText, sizeof(strErrorText) / sizeof(WCHAR));
EndDialog(hDlg, LOWORD(wParam));
LoadStringW(hInst, IDS_MSG_ACCESSPROCESSAFF, szTemp, sizeof(szTemp) / sizeof(WCHAR));
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK|MB_ICONSTOP);
LoadStringW(hInst, IDS_MSG_ACCESSPROCESSAFF, szTitle, sizeof(szTitle) / sizeof(WCHAR));
MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP);
}
EndDialog(hDlg, LOWORD(wParam));

View file

@ -1,7 +1,7 @@
/*
* ReactOS Task Manager
*
* applicationpage.cpp
* applpage.c
*
* Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
* 2005 Klemens Friedl <frik85@reactos.at>
@ -196,18 +196,13 @@ void UpdateApplicationListControlViewSetting(void)
{
DWORD dwStyle = GetWindowLongW(hApplicationPageListCtrl, GWL_STYLE);
dwStyle &= ~LVS_REPORT;
dwStyle &= ~LVS_ICON;
dwStyle &= ~LVS_LIST;
dwStyle &= ~LVS_SMALLICON;
if (TaskManagerSettings.View_LargeIcons)
dwStyle |= LVS_ICON;
else if (TaskManagerSettings.View_SmallIcons)
dwStyle |= LVS_SMALLICON;
else
dwStyle |= LVS_REPORT;
dwStyle &= ~(LVS_REPORT | LVS_ICON | LVS_LIST | LVS_SMALLICON);
switch (TaskManagerSettings.ViewMode) {
case ID_VIEW_LARGE: dwStyle |= LVS_ICON; break;
case ID_VIEW_SMALL: dwStyle |= LVS_SMALLICON; break;
case ID_VIEW_DETAILS: dwStyle |= LVS_REPORT; break;
}
SetWindowLongW(hApplicationPageListCtrl, GWL_STYLE, dwStyle);
RefreshApplicationPage();
@ -265,7 +260,7 @@ BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
if (hWnd == hMainWnd)
return TRUE;
bLargeIcon = TaskManagerSettings.View_LargeIcons ? TRUE : FALSE;
bLargeIcon = (TaskManagerSettings.ViewMode == ID_VIEW_LARGE);
GetWindowTextW(hWnd, szText, 260); /* Get the window text */
@ -521,13 +516,12 @@ void ApplicationPageOnNotify(WPARAM wParam, LPARAM lParam)
if (pAPLI->bHung)
{
LoadStringW( GetModuleHandleW(NULL), IDS_Not_Responding , szMsg, sizeof(szMsg) / sizeof(szMsg[0]));
wcsncpy(pnmdi->item.pszText, szMsg, pnmdi->item.cchTextMax);
}
else
{
LoadStringW( GetModuleHandleW(NULL), IDS_Running, (LPWSTR) szMsg, sizeof(szMsg) / sizeof(szMsg[0]));
wcsncpy(pnmdi->item.pszText, szMsg, pnmdi->item.cchTextMax);
}
wcsncpy(pnmdi->item.pszText, szMsg, pnmdi->item.cchTextMax);
}
break;
@ -591,12 +585,7 @@ void ApplicationPageShowContextMenu1(void)
hMenu = LoadMenuW(hInst, MAKEINTRESOURCEW(IDR_APPLICATION_PAGE_CONTEXT1));
hSubMenu = GetSubMenu(hMenu, 0);
if (TaskManagerSettings.View_LargeIcons)
CheckMenuRadioItem(hSubMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_LARGE, MF_BYCOMMAND);
else if (TaskManagerSettings.View_SmallIcons)
CheckMenuRadioItem(hSubMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_SMALL, MF_BYCOMMAND);
else
CheckMenuRadioItem(hSubMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_DETAILS, MF_BYCOMMAND);
CheckMenuRadioItem(hSubMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, TaskManagerSettings.ViewMode, MF_BYCOMMAND);
TrackPopupMenu(hSubMenu, TPM_LEFTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON, pt.x, pt.y, 0, hMainWnd, NULL);
@ -649,7 +638,7 @@ void ApplicationPageShowContextMenu2(void)
DestroyMenu(hMenu);
}
void ApplicationPage_OnViewLargeIcons(void)
void ApplicationPage_OnView(DWORD dwMode)
{
HMENU hMenu;
HMENU hViewMenu;
@ -657,78 +646,13 @@ void ApplicationPage_OnViewLargeIcons(void)
hMenu = GetMenu(hMainWnd);
hViewMenu = GetSubMenu(hMenu, 2);
TaskManagerSettings.View_LargeIcons = TRUE;
TaskManagerSettings.View_SmallIcons = FALSE;
TaskManagerSettings.View_Details = FALSE;
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_LARGE, MF_BYCOMMAND);
TaskManagerSettings.ViewMode = dwMode;
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, dwMode, MF_BYCOMMAND);
UpdateApplicationListControlViewSetting();
}
void ApplicationPage_OnViewSmallIcons(void)
{
HMENU hMenu;
HMENU hViewMenu;
hMenu = GetMenu(hMainWnd);
hViewMenu = GetSubMenu(hMenu, 2);
TaskManagerSettings.View_LargeIcons = FALSE;
TaskManagerSettings.View_SmallIcons = TRUE;
TaskManagerSettings.View_Details = FALSE;
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_SMALL, MF_BYCOMMAND);
UpdateApplicationListControlViewSetting();
}
void ApplicationPage_OnViewDetails(void)
{
HMENU hMenu;
HMENU hViewMenu;
hMenu = GetMenu(hMainWnd);
hViewMenu = GetSubMenu(hMenu, 2);
TaskManagerSettings.View_LargeIcons = FALSE;
TaskManagerSettings.View_SmallIcons = FALSE;
TaskManagerSettings.View_Details = TRUE;
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_DETAILS, MF_BYCOMMAND);
UpdateApplicationListControlViewSetting();
}
void ApplicationPage_OnWindowsTileHorizontally(void)
{
LPAPPLICATION_PAGE_LIST_ITEM pAPLI = NULL;
LV_ITEM item;
int i;
HWND* hWndArray;
int nWndCount;
hWndArray = (HWND*)HeapAlloc(GetProcessHeap(), 0, sizeof(HWND) * ListView_GetItemCount(hApplicationPageListCtrl));
nWndCount = 0;
for (i=0; i<ListView_GetItemCount(hApplicationPageListCtrl); i++) {
memset(&item, 0, sizeof(LV_ITEM));
item.mask = LVIF_STATE|LVIF_PARAM;
item.iItem = i;
item.stateMask = (UINT)-1;
(void)ListView_GetItem(hApplicationPageListCtrl, &item);
if (item.state & LVIS_SELECTED) {
pAPLI = (LPAPPLICATION_PAGE_LIST_ITEM)item.lParam;
if (pAPLI) {
hWndArray[nWndCount] = pAPLI->hWnd;
nWndCount++;
}
}
}
TileWindows(NULL, MDITILE_HORIZONTAL, NULL, nWndCount, hWndArray);
HeapFree(GetProcessHeap(), 0, hWndArray);
}
void ApplicationPage_OnWindowsTileVertically(void)
void ApplicationPage_OnWindowsTile(DWORD dwMode)
{
LPAPPLICATION_PAGE_LIST_ITEM pAPLI = NULL;
LV_ITEM item;
@ -755,7 +679,7 @@ void ApplicationPage_OnWindowsTileVertically(void)
}
}
TileWindows(NULL, MDITILE_VERTICAL, NULL, nWndCount, hWndArray);
TileWindows(NULL, dwMode, NULL, nWndCount, hWndArray);
HeapFree(GetProcessHeap(), 0, hWndArray);
}

View file

@ -34,11 +34,8 @@ INT_PTR CALLBACK ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wPara
void RefreshApplicationPage(void);
void UpdateApplicationListControlViewSetting(void);
void ApplicationPage_OnViewLargeIcons(void);
void ApplicationPage_OnViewSmallIcons(void);
void ApplicationPage_OnViewDetails(void);
void ApplicationPage_OnWindowsTileHorizontally(void);
void ApplicationPage_OnWindowsTileVertically(void);
void ApplicationPage_OnView(DWORD);
void ApplicationPage_OnWindowsTile(DWORD);
void ApplicationPage_OnWindowsMinimize(void);
void ApplicationPage_OnWindowsMaximize(void);
void ApplicationPage_OnWindowsCascade(void);

View file

@ -1,7 +1,7 @@
/*
* ReactOS Task Manager
*
* column.cpp
* column.c
*
* Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
* 2005 Klemens Friedl <frik85@reactos.at>
@ -24,7 +24,6 @@
#include <precomp.h>
UINT ColumnDataHints[COLUMN_NMAX];
WCHAR szTemp[256];
#define DECLARE_COLUMN_PRESET(_name, _size, _state) \
{ IDS_TAB_##_name, IDC_##_name, _size, _state },
@ -57,7 +56,7 @@ const PresetColumnEntry ColumnPresets[COLUMN_NMAX] = {
DECLARE_COLUMN_PRESET(IOOTHERBYTES, 70, FALSE)
};
int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem);
static int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem);
INT_PTR CALLBACK ColumnsDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
void AddColumns(void)
@ -79,7 +78,7 @@ void AddColumns(void)
UpdateColumnDataHints();
}
int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem)
static int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem)
{
LVCOLUMN column;
@ -107,6 +106,7 @@ void SaveColumnSettings(void)
HDITEM hditem;
int i, n;
WCHAR text[260];
WCHAR szTemp[256];
LRESULT size;
/* Reset column data */

View file

@ -23,15 +23,13 @@
#include <precomp.h>
WCHAR szTemp[256];
WCHAR szTempA[256];
void ProcessPage_OnEndProcess(void)
{
LVITEM lvitem;
ULONG Index;
DWORD dwProcessId;
HANDLE hProcess;
WCHAR szTitle[256];
WCHAR strErrorText[260];
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++)
@ -53,9 +51,9 @@ void ProcessPage_OnEndProcess(void)
if ((ListView_GetSelectedCount(hProcessPageListCtrl) != 1) || (dwProcessId == 0))
return;
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, szTemp, 256);
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTempA, 256);
if (MessageBoxW(hMainWnd, szTemp, szTempA, MB_YESNO|MB_ICONWARNING) != IDYES)
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256);
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256);
if (MessageBoxW(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING) != IDYES)
return;
hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId);
@ -63,16 +61,16 @@ void ProcessPage_OnEndProcess(void)
if (!hProcess)
{
GetLastErrorText(strErrorText, 260);
LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTemp, 256);
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK|MB_ICONSTOP);
LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTitle, 256);
MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP);
return;
}
if (!TerminateProcess(hProcess, 0))
{
GetLastErrorText(strErrorText, 260);
LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTemp, 256);
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK|MB_ICONSTOP);
LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTitle, 256);
MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP);
}
CloseHandle(hProcess);
@ -84,6 +82,7 @@ void ProcessPage_OnEndProcessTree(void)
ULONG Index;
DWORD dwProcessId;
HANDLE hProcess;
WCHAR szTitle[256];
WCHAR strErrorText[260];
for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++)
@ -105,9 +104,9 @@ void ProcessPage_OnEndProcessTree(void)
if ((ListView_GetSelectedCount(hProcessPageListCtrl) != 1) || (dwProcessId == 0))
return;
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, szTemp, 256);
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTempA, 256);
if (MessageBoxW(hMainWnd, szTemp, szTempA, MB_YESNO|MB_ICONWARNING) != IDYES)
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256);
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256);
if (MessageBoxW(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING) != IDYES)
return;
hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId);
@ -115,16 +114,16 @@ void ProcessPage_OnEndProcessTree(void)
if (!hProcess)
{
GetLastErrorText(strErrorText, 260);
LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTemp, 256);
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK|MB_ICONSTOP);
LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTitle, 256);
MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP);
return;
}
if (!TerminateProcess(hProcess, 0))
{
GetLastErrorText(strErrorText, 260);
LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTemp, 256);
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK|MB_ICONSTOP);
LoadStringW(hInst, IDS_MSG_UNABLETERMINATEPRO, szTitle, 256);
MessageBoxW(hMainWnd, strErrorText, szTitle, MB_OK|MB_ICONSTOP);
}
CloseHandle(hProcess);

View file

@ -413,7 +413,6 @@ void ProcessPageShowContextMenu(DWORD dwProcessId)
WCHAR strDebugger[260];
DWORD dwDebuggerSize;
HKEY hKey;
UINT Idx;
memset(&si, 0, sizeof(SYSTEM_INFO));
@ -460,9 +459,7 @@ void ProcessPageShowContextMenu(DWORD dwProcessId)
dwDebuggerSize = 260;
if (RegQueryValueExW(hKey, L"Debugger", NULL, NULL, (LPBYTE)strDebugger, &dwDebuggerSize) == ERROR_SUCCESS)
{
for (Idx=0; Idx<wcslen(strDebugger); Idx++)
strDebugger[Idx] = toupper(strDebugger[Idx]);
CharUpper(strDebugger);
if (wcsstr(strDebugger, L"DRWTSN32"))
EnableMenuItem(hSubMenu, ID_PROCESS_PAGE_DEBUG, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
}

View file

@ -137,13 +137,9 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
TaskManager_OnRestoreMainWindow();
break;
case ID_VIEW_LARGE:
ApplicationPage_OnViewLargeIcons();
break;
case ID_VIEW_SMALL:
ApplicationPage_OnViewSmallIcons();
break;
case ID_VIEW_DETAILS:
ApplicationPage_OnViewDetails();
ApplicationPage_OnView(LOWORD(wParam));
break;
case ID_VIEW_SHOWKERNELTIMES:
PerformancePage_OnViewShowKernelTimes();
@ -155,16 +151,10 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
PerformancePage_OnViewCPUHistoryOneGraphPerCPU();
break;
case ID_VIEW_UPDATESPEED_HIGH:
TaskManager_OnViewUpdateSpeedHigh();
break;
case ID_VIEW_UPDATESPEED_NORMAL:
TaskManager_OnViewUpdateSpeedNormal();
break;
case ID_VIEW_UPDATESPEED_LOW:
TaskManager_OnViewUpdateSpeedLow();
break;
case ID_VIEW_UPDATESPEED_PAUSED:
TaskManager_OnViewUpdateSpeedPaused();
TaskManager_OnViewUpdateSpeed(LOWORD(wParam));
break;
case ID_VIEW_SELECTCOLUMNS:
ProcessPage_OnViewSelectColumns();
@ -173,10 +163,10 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
PostMessageW(hDlg, WM_TIMER, 0, 0);
break;
case ID_WINDOWS_TILEHORIZONTALLY:
ApplicationPage_OnWindowsTileHorizontally();
ApplicationPage_OnWindowsTile(MDITILE_HORIZONTAL);
break;
case ID_WINDOWS_TILEVERTICALLY:
ApplicationPage_OnWindowsTileVertically();
ApplicationPage_OnWindowsTile(MDITILE_VERTICAL);
break;
case ID_WINDOWS_MINIMIZE:
ApplicationPage_OnWindowsMinimize();
@ -413,6 +403,22 @@ void Draw3dRect2(HDC hDC, LPRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottom
lpRect->bottom - lpRect->top, clrTopLeft, clrBottomRight);
}
static void SetUpdateSpeed(HWND hWnd)
{
/* Setup update speed (pause=fall down) */
switch (TaskManagerSettings.UpdateSpeed) {
case ID_VIEW_UPDATESPEED_HIGH:
SetTimer(hWnd, 1, 1000, NULL);
break;
case ID_VIEW_UPDATESPEED_NORMAL:
SetTimer(hWnd, 1, 2000, NULL);
break;
case ID_VIEW_UPDATESPEED_LOW:
SetTimer(hWnd, 1, 4000, NULL);
break;
}
}
BOOL OnCreate(HWND hWnd)
{
HMENU hMenu;
@ -537,26 +543,15 @@ BOOL OnCreate(HWND hWnd)
else
CheckMenuItem(hEditMenu, ID_OPTIONS_SHOW16BITTASKS, MF_BYCOMMAND|MF_UNCHECKED);
if (TaskManagerSettings.View_LargeIcons)
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_LARGE, MF_BYCOMMAND);
else if (TaskManagerSettings.View_SmallIcons)
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_SMALL, MF_BYCOMMAND);
else
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_DETAILS, MF_BYCOMMAND);
/* Set the view mode */
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, TaskManagerSettings.ViewMode, MF_BYCOMMAND);
if (TaskManagerSettings.ShowKernelTimes)
CheckMenuItem(hViewMenu, ID_VIEW_SHOWKERNELTIMES, MF_BYCOMMAND|MF_CHECKED);
else
CheckMenuItem(hViewMenu, ID_VIEW_SHOWKERNELTIMES, MF_BYCOMMAND|MF_UNCHECKED);
if (TaskManagerSettings.UpdateSpeed == 1)
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, ID_VIEW_UPDATESPEED_HIGH, MF_BYCOMMAND);
else if (TaskManagerSettings.UpdateSpeed == 2)
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, ID_VIEW_UPDATESPEED_NORMAL, MF_BYCOMMAND);
else if (TaskManagerSettings.UpdateSpeed == 4)
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, ID_VIEW_UPDATESPEED_LOW, MF_BYCOMMAND);
else
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, ID_VIEW_UPDATESPEED_PAUSED, MF_BYCOMMAND);
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, TaskManagerSettings.UpdateSpeed, MF_BYCOMMAND);
if (TaskManagerSettings.CPUHistory_OneGraphPerCPU)
CheckMenuRadioItem(hCPUHistoryMenu, ID_VIEW_CPUHISTORY_ONEGRAPHALL, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, MF_BYCOMMAND);
@ -569,12 +564,8 @@ BOOL OnCreate(HWND hWnd)
TabCtrl_SetCurFocus/*Sel*/(hTabWnd, 2);
TabCtrl_SetCurFocus/*Sel*/(hTabWnd, nActivePage);
if (TaskManagerSettings.UpdateSpeed == 1)
SetTimer(hWnd, 1, 1000, NULL);
else if (TaskManagerSettings.UpdateSpeed == 2)
SetTimer(hWnd, 1, 2000, NULL);
else if (TaskManagerSettings.UpdateSpeed == 4)
SetTimer(hWnd, 1, 4000, NULL);
/* Setup update speed */
SetUpdateSpeed(hWnd);
/*
* Refresh the performance data
@ -669,7 +660,7 @@ void OnSize( WPARAM nType, int cx, int cy )
void LoadSettings(void)
{
HKEY hKey;
WCHAR szSubKey[] = L"Software\\ReactWare\\TaskManager";
WCHAR szSubKey[] = L"Software\\ReactOS\\TaskManager";
int i;
DWORD dwSize;
@ -690,12 +681,10 @@ void LoadSettings(void)
TaskManagerSettings.Show16BitTasks = TRUE;
/* Update speed settings */
TaskManagerSettings.UpdateSpeed = 2;
TaskManagerSettings.UpdateSpeed = ID_VIEW_UPDATESPEED_NORMAL;
/* Applications page settings */
TaskManagerSettings.View_LargeIcons = FALSE;
TaskManagerSettings.View_SmallIcons = FALSE;
TaskManagerSettings.View_Details = TRUE;
TaskManagerSettings.ViewMode = ID_VIEW_DETAILS;
/* Processes page settings */
TaskManagerSettings.ShowProcessesFromAllUsers = FALSE; /* Server-only? */
@ -735,8 +724,8 @@ void SaveSettings(void)
{
HKEY hKey;
WCHAR szSubKey1[] = L"Software";
WCHAR szSubKey2[] = L"Software\\ReactWare";
WCHAR szSubKey3[] = L"Software\\ReactWare\\TaskManager";
WCHAR szSubKey2[] = L"Software\\ReactOS";
WCHAR szSubKey3[] = L"Software\\ReactOS\\TaskManager";
/* Open (or create) the key */
hKey = NULL;
@ -819,7 +808,7 @@ void TaskManager_OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMe
SendMessageW(hStatusWnd, SB_SETTEXT, 0, (LPARAM)str);
}
void TaskManager_OnViewUpdateSpeedHigh(void)
void TaskManager_OnViewUpdateSpeed(DWORD dwSpeed)
{
HMENU hMenu;
HMENU hViewMenu;
@ -829,45 +818,12 @@ void TaskManager_OnViewUpdateSpeedHigh(void)
hViewMenu = GetSubMenu(hMenu, 2);
hUpdateSpeedMenu = GetSubMenu(hViewMenu, 1);
TaskManagerSettings.UpdateSpeed = 1;
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, ID_VIEW_UPDATESPEED_HIGH, MF_BYCOMMAND);
TaskManagerSettings.UpdateSpeed = dwSpeed;
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, dwSpeed, MF_BYCOMMAND);
KillTimer(hMainWnd, 1);
SetTimer(hMainWnd, 1, 500, NULL);
}
void TaskManager_OnViewUpdateSpeedNormal(void)
{
HMENU hMenu;
HMENU hViewMenu;
HMENU hUpdateSpeedMenu;
hMenu = GetMenu(hMainWnd);
hViewMenu = GetSubMenu(hMenu, 2);
hUpdateSpeedMenu = GetSubMenu(hViewMenu, 1);
TaskManagerSettings.UpdateSpeed = 2;
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, ID_VIEW_UPDATESPEED_NORMAL, MF_BYCOMMAND);
KillTimer(hMainWnd, 1);
SetTimer(hMainWnd, 1, 2000, NULL);
}
void TaskManager_OnViewUpdateSpeedLow(void)
{
HMENU hMenu;
HMENU hViewMenu;
HMENU hUpdateSpeedMenu;
hMenu = GetMenu(hMainWnd);
hViewMenu = GetSubMenu(hMenu, 2);
hUpdateSpeedMenu = GetSubMenu(hViewMenu, 1);
TaskManagerSettings.UpdateSpeed = 4;
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, ID_VIEW_UPDATESPEED_LOW, MF_BYCOMMAND);
KillTimer(hMainWnd, 1);
SetTimer(hMainWnd, 1, 4000, NULL);
SetUpdateSpeed(hMainWnd);
}
void TaskManager_OnViewRefresh(void)
@ -875,20 +831,6 @@ void TaskManager_OnViewRefresh(void)
PostMessageW(hMainWnd, WM_TIMER, 0, 0);
}
void TaskManager_OnViewUpdateSpeedPaused(void)
{
HMENU hMenu;
HMENU hViewMenu;
HMENU hUpdateSpeedMenu;
hMenu = GetMenu(hMainWnd);
hViewMenu = GetSubMenu(hMenu, 2);
hUpdateSpeedMenu = GetSubMenu(hViewMenu, 1);
TaskManagerSettings.UpdateSpeed = 0;
CheckMenuRadioItem(hUpdateSpeedMenu, ID_VIEW_UPDATESPEED_HIGH, ID_VIEW_UPDATESPEED_PAUSED, ID_VIEW_UPDATESPEED_PAUSED, MF_BYCOMMAND);
KillTimer(hMainWnd, 1);
}
void TaskManager_OnTabWndSelChange(void)
{
int i;
@ -933,12 +875,8 @@ void TaskManager_OnTabWndSelChange(void)
DrawMenuBar(hMainWnd);
}
if (TaskManagerSettings.View_LargeIcons)
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_LARGE, MF_BYCOMMAND);
else if (TaskManagerSettings.View_SmallIcons)
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_SMALL, MF_BYCOMMAND);
else
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_DETAILS, MF_BYCOMMAND);
CheckMenuRadioItem(hViewMenu, ID_VIEW_LARGE, ID_VIEW_DETAILS, TaskManagerSettings.ViewMode, MF_BYCOMMAND);
/*
* Give the application list control focus
*/

View file

@ -68,12 +68,10 @@ typedef struct
/* Update speed settings */
/* How many half-seconds in between updates (i.e. 0 - Paused, 1 - High, 2 - Normal, 4 - Low) */
int UpdateSpeed;
DWORD UpdateSpeed;
/* Applications page settings */
BOOL View_LargeIcons;
BOOL View_SmallIcons;
BOOL View_Details;
DWORD ViewMode;
/* Processes page settings */
BOOL ShowProcessesFromAllUsers; /* Server-only? */
@ -115,10 +113,7 @@ void TaskManager_OnRestoreMainWindow(void);
void TaskManager_OnEnterMenuLoop(HWND hWnd);
void TaskManager_OnExitMenuLoop(HWND hWnd);
void TaskManager_OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu);
void TaskManager_OnViewUpdateSpeedHigh(void);
void TaskManager_OnViewUpdateSpeedNormal(void);
void TaskManager_OnViewUpdateSpeedLow(void);
void TaskManager_OnViewUpdateSpeedPaused(void);
void TaskManager_OnViewUpdateSpeed(DWORD);
void TaskManager_OnViewRefresh(void);
void TaskManager_OnTabWndSelChange(void);
LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize );