ReactOS 0.4.15-dev-5863-g1fe3ab7
taskmgr.c File Reference
#include "precomp.h"
#include "perfpage.h"
#include "about.h"
#include "affinity.h"
#include "debug.h"
#include "priority.h"
Include dependency graph for taskmgr.c:

Go to the source code of this file.

Macros

#define STATUS_WINDOW   2001
 
#define ETDT_DISABLE   0x00000001
 
#define ETDT_ENABLE   0x00000002
 
#define ETDT_USETABTEXTURE   0x00000004
 
#define ETDT_ENABLETAB   (ETDT_ENABLE | ETDT_USETABTEXTURE)
 
#define PAGE_OFFSET_LEFT   17
 
#define PAGE_OFFSET_TOP   72
 
#define PAGE_OFFSET_WIDTH   (PAGE_OFFSET_LEFT*2)
 
#define PAGE_OFFSET_HEIGHT   (PAGE_OFFSET_TOP+32)
 

Typedefs

typedef HRESULT(WINAPIETDTProc) (HWND, DWORD)
 

Functions

BOOL EnableDialogTheme (HWND hwnd)
 
int APIENTRY wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
 
INT_PTR CALLBACK TaskManagerWndProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
 
void FillSolidRect (HDC hDC, LPCRECT lpRect, COLORREF clr)
 
void FillSolidRect2 (HDC hDC, int x, int y, int cx, int cy, COLORREF clr)
 
void Draw3dRect (HDC hDC, int x, int y, int cx, int cy, COLORREF clrTopLeft, COLORREF clrBottomRight)
 
void Draw3dRect2 (HDC hDC, LPRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight)
 
static void SetUpdateSpeed (HWND hWnd)
 
BOOL OnCreate (HWND hWnd)
 
void OnMove (WPARAM nType, int cx, int cy)
 
void OnSize (WPARAM nType, int cx, int cy)
 
void LoadSettings (void)
 
void SaveSettings (void)
 
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_OnViewUpdateSpeed (DWORD dwSpeed)
 
void TaskManager_OnTabWndSelChange (void)
 
VOID ShowWin32Error (DWORD dwError)
 
LPWSTR GetLastErrorText (LPWSTR lpszBuf, DWORD dwSize)
 
DWORD EndLocalThread (HANDLE *hThread, DWORD dwThread)
 

Variables

HINSTANCE hInst
 
HWND hMainWnd
 
HWND hStatusWnd
 
HWND hTabWnd
 
HMENU hWindowMenu = NULL
 
int nMinimumWidth
 
int nMinimumHeight
 
int nOldWidth
 
int nOldHeight
 
BOOL bInMenuLoop = FALSE
 
BOOL bWasKeyboardInput = FALSE
 
TASKMANAGER_SETTINGS TaskManagerSettings
 

Macro Definition Documentation

◆ ETDT_DISABLE

#define ETDT_DISABLE   0x00000001

Definition at line 65 of file taskmgr.c.

◆ ETDT_ENABLE

#define ETDT_ENABLE   0x00000002

Definition at line 66 of file taskmgr.c.

◆ ETDT_ENABLETAB

#define ETDT_ENABLETAB   (ETDT_ENABLE | ETDT_USETABTEXTURE)

Definition at line 68 of file taskmgr.c.

◆ ETDT_USETABTEXTURE

#define ETDT_USETABTEXTURE   0x00000004

Definition at line 67 of file taskmgr.c.

◆ PAGE_OFFSET_HEIGHT

#define PAGE_OFFSET_HEIGHT   (PAGE_OFFSET_TOP+32)

◆ PAGE_OFFSET_LEFT

#define PAGE_OFFSET_LEFT   17

◆ PAGE_OFFSET_TOP

#define PAGE_OFFSET_TOP   72

◆ PAGE_OFFSET_WIDTH

#define PAGE_OFFSET_WIDTH   (PAGE_OFFSET_LEFT*2)

◆ STATUS_WINDOW

#define STATUS_WINDOW   2001

Definition at line 32 of file taskmgr.c.

Typedef Documentation

◆ ETDTProc

typedef HRESULT(WINAPI * ETDTProc) (HWND, DWORD)

Definition at line 71 of file taskmgr.c.

Function Documentation

◆ Draw3dRect()

void Draw3dRect ( HDC  hDC,
int  x,
int  y,
int  cx,
int  cy,
COLORREF  clrTopLeft,
COLORREF  clrBottomRight 
)

Definition at line 552 of file taskmgr.c.

553{
554 FillSolidRect2(hDC, x, y, cx - 1, 1, clrTopLeft);
555 FillSolidRect2(hDC, x, y, 1, cy - 1, clrTopLeft);
556 FillSolidRect2(hDC, x + cx, y, -1, cy, clrBottomRight);
557 FillSolidRect2(hDC, x, y + cy, cx, -1, clrBottomRight);
558}
static HDC hDC
Definition: 3dtext.c:33
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:586
_Out_opt_ int * cx
Definition: commctrl.h:585
void FillSolidRect2(HDC hDC, int x, int y, int cx, int cy, COLORREF clr)
Definition: taskmgr.c:540

Referenced by Draw3dRect2(), PerformancePageWndProc(), and TaskManagerWndProc().

◆ Draw3dRect2()

void Draw3dRect2 ( HDC  hDC,
LPRECT  lpRect,
COLORREF  clrTopLeft,
COLORREF  clrBottomRight 
)

Definition at line 560 of file taskmgr.c.

561{
562 Draw3dRect(hDC, lpRect->left, lpRect->top, lpRect->right - lpRect->left,
563 lpRect->bottom - lpRect->top, clrTopLeft, clrBottomRight);
564}
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
void Draw3dRect(HDC hDC, int x, int y, int cx, int cy, COLORREF clrTopLeft, COLORREF clrBottomRight)
Definition: taskmgr.c:552

◆ EnableDialogTheme()

BOOL EnableDialogTheme ( HWND  hwnd)

Definition at line 76 of file taskmgr.c.

77{
78 HMODULE hUXTheme;
80
81 hUXTheme = LoadLibraryA("uxtheme.dll");
82
83 if(hUXTheme)
84 {
86 (ETDTProc)GetProcAddress(hUXTheme, "EnableThemeDialogTexture");
87
89 {
91
92 FreeLibrary(hUXTheme);
93 return TRUE;
94 }
95 else
96 {
97 // Failed to locate API!
98 FreeLibrary(hUXTheme);
99 return FALSE;
100 }
101 }
102 else
103 {
104 // Not running under XP? Just fail gracefully
105 return FALSE;
106 }
107}
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define GetProcAddress(x, y)
Definition: compat.h:753
#define FreeLibrary(x)
Definition: compat.h:748
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
HRESULT(WINAPI * ETDTProc)(HWND, DWORD)
Definition: taskmgr.c:71
#define ETDT_ENABLETAB
Definition: taskmgr.c:68
static ETDTProc fnEnableThemeDialogTexture
Definition: uxthemesupp.c:15
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

Referenced by OnCreate().

◆ EndLocalThread()

DWORD EndLocalThread ( HANDLE hThread,
DWORD  dwThread 
)

Definition at line 1181 of file taskmgr.c.

1182{
1183 DWORD dwExitCodeThread = 0;
1184
1185 if (*hThread != NULL) {
1186 PostThreadMessage(dwThread,WM_QUIT,0,0);
1187 for (;;) {
1188 MSG msg;
1189
1191 break;
1192 while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
1195 }
1196 }
1197 GetExitCodeThread(*hThread, &dwExitCodeThread);
1199 *hThread = NULL;
1200 }
1201 return dwExitCodeThread;
1202}
#define msg(x)
Definition: auth_time.c:54
#define NULL
Definition: types.h:112
#define CloseHandle
Definition: compat.h:739
BOOL WINAPI GetExitCodeThread(IN HANDLE hThread, OUT LPDWORD lpExitCode)
Definition: thread.c:541
unsigned long DWORD
Definition: ntddk_ex.h:95
HANDLE hThread
Definition: wizard.c:28
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
#define WAIT_OBJECT_0
Definition: winbase.h:406
#define WM_QUIT
Definition: winuser.h:1613
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define PostThreadMessage
Definition: winuser.h:5823
#define PM_REMOVE
Definition: winuser.h:1186
#define PeekMessage
Definition: winuser.h:5820
#define DispatchMessage
Definition: winuser.h:5755

Referenced by ApplicationPageWndProc(), PerformancePageWndProc(), and ProcessPageWndProc().

◆ FillSolidRect()

void FillSolidRect ( HDC  hDC,
LPCRECT  lpRect,
COLORREF  clr 
)

Definition at line 534 of file taskmgr.c.

535{
536 SetBkColor(hDC, clr);
537 ExtTextOutW(hDC, 0, 0, ETO_OPAQUE, lpRect, NULL, 0, NULL);
538}
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
BOOL WINAPI ExtTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCWSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
#define ETO_OPAQUE
Definition: wingdi.h:647

Referenced by Graph_DrawCpuUsageGraph(), Graph_DrawMemUsageGraph(), Graph_DrawMemUsageHistoryGraph(), and CBrandBand::OnPaint().

◆ FillSolidRect2()

void FillSolidRect2 ( HDC  hDC,
int  x,
int  y,
int  cx,
int  cy,
COLORREF  clr 
)

Definition at line 540 of file taskmgr.c.

541{
542 RECT rect;
543
544 SetBkColor(hDC, clr);
545 rect.left = x;
546 rect.top = y;
547 rect.right = x + cx;
548 rect.bottom = y + cy;
549 ExtTextOutW(hDC, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
550}
& rect
Definition: startmenu.cpp:1413

Referenced by Draw3dRect().

◆ GetLastErrorText()

LPWSTR GetLastErrorText ( LPWSTR  lpszBuf,
DWORD  dwSize 
)

Definition at line 1155 of file taskmgr.c.

1156{
1157 DWORD dwRet;
1158 LPWSTR lpszTemp = NULL;
1159
1161 NULL,
1162 GetLastError(),
1164 (LPWSTR)&lpszTemp,
1165 0,
1166 NULL );
1167
1168 /* supplied buffer is not long enough */
1169 if (!dwRet || ( (long)dwSize < (long)dwRet+14)) {
1170 lpszBuf[0] = L'\0';
1171 } else {
1172 lpszTemp[lstrlenW(lpszTemp)-2] = L'\0'; /*remove cr and newline character */
1173 wsprintfW(lpszBuf, L"%s (0x%x)", lpszTemp, (int)GetLastError());
1174 }
1175 if (lpszTemp) {
1176 LocalFree((HLOCAL)lpszTemp);
1177 }
1178 return lpszBuf;
1179}
#define lstrlenW
Definition: compat.h:750
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define L(x)
Definition: ntvdm.h:50
#define LANG_NEUTRAL
Definition: nls.h:22
DWORD WINAPI GetLastError(void)
Definition: except.c:1040
#define FORMAT_MESSAGE_FROM_SYSTEM
Definition: winbase.h:423
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:419
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
Definition: winbase.h:424
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by AffinityDialogWndProc(), DoSetPriority(), ProcessPage_OnDebug(), ProcessPage_OnEndProcess(), ProcessPage_OnEndProcessTree(), and ProcessPage_OnSetAffinity().

◆ LoadSettings()

void LoadSettings ( void  )

Definition at line 854 of file taskmgr.c.

855{
856 HKEY hKey;
857 WCHAR szSubKey[] = L"Software\\ReactOS\\TaskManager";
858 int i;
860
861 /* Window size & position settings */
867
868 /* Tab settings */
870
871 /* Options menu settings */
876
877 /* Update speed settings */
879
880 /* Applications page settings */
882
883 /* Processes page settings */
884 TaskManagerSettings.ShowProcessesFromAllUsers = FALSE; /* It's the default */
885
886 for (i = 0; i < COLUMN_NMAX; i++) {
890 }
891
894
895 /* Performance page settings */
898
899 /* Open the key */
901 return;
902 /* Read the settings */
905
906 /*
907 * ATM, the 'ImageName' column is always visible
908 * (and grayed in configuration dialog)
909 * This will avoid troubles if the registry gets corrupted.
910 */
911 TaskManagerSettings.Column_ImageName = TRUE;
912
913 /* Close the key */
915}
#define ID_VIEW_DETAILS
Definition: resource.h:36
#define ID_VIEW_UPDATESPEED_NORMAL
Definition: resource.h:146
#define RegCloseKey(hKey)
Definition: registry.h:47
const PresetColumnEntry ColumnPresets[COLUMN_NMAX]
Definition: column.c:31
#define COLUMN_IMAGENAME
Definition: column.h:25
#define COLUMN_NMAX
Definition: column.h:51
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3356
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4121
FxAutoRegKey hKey
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define KEY_READ
Definition: nt_native.h:1023
BOOL bDefaults
Definition: column.h:76
int ColumnSizeArray[COLUMN_NMAX]
Definition: taskmgr.h:82
BOOL HideWhenMinimized
Definition: taskmgr.h:68
BOOL ShowProcessesFromAllUsers
Definition: taskmgr.h:79
int ColumnOrderArray[COLUMN_NMAX]
Definition: taskmgr.h:81
BOOL CPUHistory_OneGraphPerCPU
Definition: taskmgr.h:87
BOOL Columns[COLUMN_NMAX]
Definition: taskmgr.h:80
TASKMANAGER_SETTINGS TaskManagerSettings
Definition: taskmgr.c:52
unsigned char * LPBYTE
Definition: typedefs.h:53
#define HKEY_CURRENT_USER
Definition: winreg.h:11
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by wWinMain().

◆ OnCreate()

BOOL OnCreate ( HWND  hWnd)

Definition at line 582 of file taskmgr.c.

583{
584 HMENU hMenu;
585 HMENU hEditMenu;
586 HMENU hViewMenu;
587 HMENU hShutMenu;
588 HMENU hUpdateSpeedMenu;
589 HMENU hCPUHistoryMenu;
590 int nActivePage;
591 int nParts[3];
592 RECT rc;
593 WCHAR szTemp[256];
594 WCHAR szLogOffItem[MAX_PATH];
595 LPWSTR lpUserName;
596 TCITEM item;
597 DWORD len = 0;
598
600
601 /* Initialize the Windows Common Controls DLL */
603
604 /* Get the minimum window sizes */
605 GetWindowRect(hWnd, &rc);
606 nMinimumWidth = (rc.right - rc.left);
607 nMinimumHeight = (rc.bottom - rc.top);
608
609 /* Create the status bar */
611 if(!hStatusWnd)
612 return FALSE;
613
614 /* Create the status bar panes */
615 nParts[0] = STATUS_SIZE1;
616 nParts[1] = STATUS_SIZE2;
617 nParts[2] = STATUS_SIZE3;
619
620 /* Create tab pages */
622#if 1
626#else
630#endif
631
632 /* Insert tabs */
633 LoadStringW(hInst, IDS_TAB_APPS, szTemp, 256);
634 memset(&item, 0, sizeof(TCITEM));
635 item.mask = TCIF_TEXT;
636 item.pszText = szTemp;
638 LoadStringW(hInst, IDS_TAB_PROCESSES, szTemp, 256);
639 memset(&item, 0, sizeof(TCITEM));
640 item.mask = TCIF_TEXT;
641 item.pszText = szTemp;
644 memset(&item, 0, sizeof(TCITEM));
645 item.mask = TCIF_TEXT;
646 item.pszText = szTemp;
648
649 /* Size everything correctly */
650 GetClientRect(hWnd, &rc);
651 nOldWidth = rc.right;
652 nOldHeight = rc.bottom;
653 /* nOldStartX = rc.left; */
654 /*nOldStartY = rc.top; */
655
656#define PAGE_OFFSET_LEFT 17
657#define PAGE_OFFSET_TOP 72
658#define PAGE_OFFSET_WIDTH (PAGE_OFFSET_LEFT*2)
659#define PAGE_OFFSET_HEIGHT (PAGE_OFFSET_TOP+32)
660
661 if ((TaskManagerSettings.Left != 0) ||
662 (TaskManagerSettings.Top != 0) ||
663 (TaskManagerSettings.Right != 0) ||
665 {
667#ifdef __GNUC__TEST__
671#endif
672 }
675
676 /* Set the always on top style */
677 hMenu = GetMenu(hWnd);
678 hEditMenu = GetSubMenu(hMenu, 1);
679 hViewMenu = GetSubMenu(hMenu, 2);
680 hShutMenu = GetSubMenu(hMenu, 4);
681 hUpdateSpeedMenu = GetSubMenu(hViewMenu, 1);
682 hCPUHistoryMenu = GetSubMenu(hViewMenu, 7);
683
684 /* Check or uncheck the always on top menu item */
688 } else {
691 }
692
693 /* Check or uncheck the minimize on use menu item */
696 else
698
699 /* Check or uncheck the hide when minimized menu item */
702 else
704
705 /* Check or uncheck the show 16-bit tasks menu item */
708 else
710
711 /* Set the view mode */
713
716 else
718
720
723 else
725
727 TabCtrl_SetCurFocus/*Sel*/(hTabWnd, 0);
728 TabCtrl_SetCurFocus/*Sel*/(hTabWnd, 1);
729 TabCtrl_SetCurFocus/*Sel*/(hTabWnd, 2);
730 TabCtrl_SetCurFocus/*Sel*/(hTabWnd, nActivePage);
731
732 /* Set the username in the "Log Off %s" item of the Shutdown menu */
733
734 /* 1- Get the menu item text and store it temporarily */
735 GetMenuStringW(hShutMenu, ID_SHUTDOWN_LOGOFF, szTemp, 256, MF_BYCOMMAND);
736
737 /* 2- Retrieve the username length first, then allocate a buffer for it and call it again */
739 {
740 lpUserName = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len * sizeof(WCHAR));
741 if (lpUserName && GetUserNameW(lpUserName, &len))
742 {
743 _snwprintf(szLogOffItem, sizeof(szLogOffItem)/sizeof(szLogOffItem[0]), szTemp, lpUserName);
744 szLogOffItem[sizeof(szLogOffItem)/sizeof(szLogOffItem[0]) - 1] = UNICODE_NULL;
745 }
746 else
747 {
748 _snwprintf(szLogOffItem, sizeof(szLogOffItem)/sizeof(szLogOffItem[0]), szTemp, L"n/a");
749 }
750
751 if (lpUserName) HeapFree(GetProcessHeap(), 0, lpUserName);
752 }
753 else
754 {
755 _snwprintf(szLogOffItem, sizeof(szLogOffItem)/sizeof(szLogOffItem[0]), szTemp, L"n/a");
756 }
757
758 /* 3- Set the menu item text to its formatted counterpart */
760
761 /* Setup update speed */
763
764 /*
765 * Refresh the performance data
766 * Sample it twice so we can establish
767 * the delta values & cpu usage
768 */
771
775
777
778 return TRUE;
779}
void RefreshApplicationPage(void)
Definition: applpage.c:241
HWND hApplicationPage
Definition: applpage.c:35
INT_PTR CALLBACK ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: applpage.c:104
HWND hWnd
Definition: settings.c:17
#define IDC_TAB
Definition: resource.h:12
#define ID_VIEW_LARGE
Definition: resource.h:33
#define IDD_APPLICATION_PAGE
Definition: resource.h:8
#define IDD_PERFORMANCE_PAGE
Definition: resource.h:15
#define IDS_TAB_APPS
Definition: resource.h:197
#define ID_VIEW_SHOWKERNELTIMES
Definition: resource.h:161
#define ID_OPTIONS_ALWAYSONTOP
Definition: resource.h:138
#define ID_VIEW_UPDATESPEED_PAUSED
Definition: resource.h:148
#define ID_OPTIONS_MINIMIZEONUSE
Definition: resource.h:139
#define IDS_TAB_PERFORMANCE
Definition: resource.h:199
#define ID_OPTIONS_SHOW16BITTASKS
Definition: resource.h:158
#define IDS_TAB_PROCESSES
Definition: resource.h:198
#define ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU
Definition: resource.h:163
#define IDD_PROCESS_PAGE
Definition: resource.h:14
#define ID_VIEW_UPDATESPEED_HIGH
Definition: resource.h:145
#define ID_SHUTDOWN_LOGOFF
Definition: resource.h:189
#define ID_OPTIONS_HIDEWHENMINIMIZED
Definition: resource.h:140
#define IDI_TASKMANAGER
Definition: resource.h:17
#define ID_VIEW_CPUHISTORY_ONEGRAPHALL
Definition: resource.h:162
VOID WINAPI InitCommonControls(void)
Definition: commctrl.c:863
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
BOOL WINAPI GetUserNameW(LPWSTR lpszName, LPDWORD lpSize)
Definition: misc.c:291
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define MAX_PATH
Definition: compat.h:34
#define HeapFree(x, y, z)
Definition: compat.h:735
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
GLenum GLsizei len
Definition: glext.h:6722
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
static ATOM item
Definition: dde.c:856
#define UNICODE_NULL
#define WS_CHILD
Definition: pedump.c:617
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
void PerfDataRefresh(void)
Definition: perfdata.c:175
INT_PTR CALLBACK PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: perfpage.c:113
void RefreshPerformancePage(void)
Definition: perfpage.c:310
HWND hPerformancePage
Definition: perfpage.c:31
INT_PTR CALLBACK ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: procpage.c:136
HWND hProcessPage
Definition: procpage.c:41
void RefreshProcessPage(void)
Definition: procpage.c:463
#define CreateStatusWindow
Definition: commctrl.h:1933
#define SBT_NOBORDERS
Definition: commctrl.h:1971
#define TCITEM
Definition: commctrl.h:4029
#define TabCtrl_InsertItem(hwnd, iItem, pitem)
Definition: commctrl.h:4051
#define SB_SETPARTS
Definition: commctrl.h:1954
#define TCIF_TEXT
Definition: commctrl.h:3971
#define TabCtrl_SetCurFocus(hwnd, i)
Definition: commctrl.h:4102
#define memset(x, y, z)
Definition: compat.h:39
int nOldWidth
Definition: taskmgr.c:46
int nOldHeight
Definition: taskmgr.c:47
int nMinimumWidth
Definition: taskmgr.c:43
HWND hStatusWnd
Definition: taskmgr.c:38
#define PAGE_OFFSET_LEFT
HINSTANCE hInst
Definition: taskmgr.c:35
BOOL EnableDialogTheme(HWND hwnd)
Definition: taskmgr.c:76
#define PAGE_OFFSET_WIDTH
HWND hMainWnd
Definition: taskmgr.c:37
int nMinimumHeight
Definition: taskmgr.c:44
#define PAGE_OFFSET_TOP
#define PAGE_OFFSET_HEIGHT
static void SetUpdateSpeed(HWND hWnd)
Definition: taskmgr.c:566
#define STATUS_WINDOW
Definition: taskmgr.c:32
HWND hTabWnd
Definition: taskmgr.c:39
#define STATUS_SIZE2
Definition: taskmgr.h:50
#define STATUS_SIZE1
Definition: taskmgr.h:49
#define STATUS_SIZE3
Definition: taskmgr.h:51
#define ICON_BIG
Definition: tnclass.cpp:51
BOOL TrayIcon_ShellAddTrayIcon(void)
Definition: trayicon.c:129
LONG_PTR LPARAM
Definition: windef.h:208
int * LPINT
Definition: windef.h:178
#define MF_BYCOMMAND
Definition: winuser.h:202
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define HWND_TOPMOST
Definition: winuser.h:1198
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPI GetMenuStringW(_In_ HMENU hMenu, _In_ UINT uIDItem, _Out_writes_opt_(cchMax) LPWSTR lpString, _In_ int cchMax, _In_ UINT flags)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define SWP_NOMOVE
Definition: winuser.h:1234
#define MF_STRING
Definition: winuser.h:138
#define MF_CHECKED
Definition: winuser.h:132
#define SWP_NOSIZE
Definition: winuser.h:1235
#define MF_UNCHECKED
Definition: winuser.h:204
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
#define CreateDialogW(h, n, w, f)
Definition: winuser.h:4271
BOOL WINAPI CheckMenuRadioItem(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT, _In_ UINT)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
BOOL WINAPI ModifyMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define SW_MAXIMIZE
Definition: winuser.h:766
#define HWND_NOTOPMOST
Definition: winuser.h:1196
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HMENU WINAPI GetMenu(_In_ HWND)

Referenced by TaskManagerWndProc().

◆ OnMove()

◆ OnSize()

void OnSize ( WPARAM  nType,
int  cx,
int  cy 
)

Definition at line 798 of file taskmgr.c.

799{
800 int nParts[3];
801 int nXDifference;
802 int nYDifference;
803 RECT rc;
804
805 if (nType == SIZE_MINIMIZED)
806 {
808 {
810 }
811 return;
812 }
813
814 nXDifference = cx - nOldWidth;
815 nYDifference = cy - nOldHeight;
816 nOldWidth = cx;
817 nOldHeight = cy;
818
819 /* Update the status bar size */
822
823 /* Update the status bar pane sizes */
824 nParts[0] = bInMenuLoop ? -1 : STATUS_SIZE1;
825 nParts[1] = STATUS_SIZE2;
826 nParts[2] = cx;
828
829 /* Resize the tab control */
831 cx = (rc.right - rc.left) + nXDifference;
832 cy = (rc.bottom - rc.top) + nYDifference;
834
835 /* Resize the application page */
837 cx = (rc.right - rc.left) + nXDifference;
838 cy = (rc.bottom - rc.top) + nYDifference;
840
841 /* Resize the process page */
843 cx = (rc.right - rc.left) + nXDifference;
844 cy = (rc.bottom - rc.top) + nYDifference;
846
847 /* Resize the performance page */
849 cx = (rc.right - rc.left) + nXDifference;
850 cy = (rc.bottom - rc.top) + nYDifference;
852}
BOOL bInMenuLoop
Definition: taskmgr.c:49
#define SW_HIDE
Definition: winuser.h:762
#define SWP_NOACTIVATE
Definition: winuser.h:1232
#define MAKELPARAM(l, h)
Definition: winuser.h:3998
#define WM_SIZE
Definition: winuser.h:1601
#define SIZE_MINIMIZED
Definition: winuser.h:2496
#define SWP_NOOWNERZORDER
Definition: winuser.h:1239
#define SWP_NOZORDER
Definition: winuser.h:1237

Referenced by TaskManagerWndProc().

◆ SaveSettings()

void SaveSettings ( void  )

Definition at line 917 of file taskmgr.c.

918{
919 HKEY hKey;
920 WCHAR szSubKey[] = L"Software\\ReactOS\\TaskManager";
921
922 /* Open (or create) the key */
924 return;
925 /* Save the settings */
927 /* Close the key */
929}
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1091
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4900
#define REG_BINARY
Definition: nt_native.h:1496
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
#define KEY_WRITE
Definition: nt_native.h:1031

Referenced by wWinMain().

◆ SetUpdateSpeed()

static void SetUpdateSpeed ( HWND  hWnd)
static

Definition at line 566 of file taskmgr.c.

567{
568 /* Setup update speed (pause=fall down) */
571 SetTimer(hWnd, 1, 1000, NULL);
572 break;
574 SetTimer(hWnd, 1, 2000, NULL);
575 break;
577 SetTimer(hWnd, 1, 4000, NULL);
578 break;
579 }
580}
#define ID_VIEW_UPDATESPEED_LOW
Definition: resource.h:147
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)

Referenced by OnCreate(), and TaskManager_OnViewUpdateSpeed().

◆ ShowWin32Error()

VOID ShowWin32Error ( DWORD  dwError)

Definition at line 1139 of file taskmgr.c.

1140{
1141 LPWSTR lpMessageBuffer;
1142
1144 NULL,
1145 dwError,
1147 (LPWSTR)&lpMessageBuffer,
1148 0, NULL) != 0)
1149 {
1150 MessageBoxW(hMainWnd, lpMessageBuffer, NULL, MB_OK | MB_ICONERROR);
1151 if (lpMessageBuffer) LocalFree(lpMessageBuffer);
1152 }
1153}
#define MAKELANGID(p, s)
Definition: nls.h:15
#define SUBLANG_DEFAULT
Definition: nls.h:168
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_ICONERROR
Definition: winuser.h:781
#define MB_OK
Definition: winuser.h:784

◆ TaskManager_OnEnterMenuLoop()

void TaskManager_OnEnterMenuLoop ( HWND  hWnd)

Definition at line 945 of file taskmgr.c.

946{
947 int nParts;
948
949 /* Update the status bar pane sizes */
950 nParts = -1;
954}
#define SB_SETTEXT
Definition: commctrl.h:1949
UINT_PTR WPARAM
Definition: windef.h:207

Referenced by TaskManagerWndProc().

◆ TaskManager_OnExitMenuLoop()

void TaskManager_OnExitMenuLoop ( HWND  hWnd)

Definition at line 956 of file taskmgr.c.

957{
958 RECT rc;
959 int nParts[3];
960
962
963 /* Update the status bar pane sizes */
964 GetClientRect(hWnd, &rc);
965 nParts[0] = STATUS_SIZE1;
966 nParts[1] = STATUS_SIZE2;
967 nParts[2] = rc.right;
969
970 /* trigger update of status bar columns and performance page asynchronously */
972}

Referenced by TaskManagerWndProc().

◆ TaskManager_OnMenuSelect()

void TaskManager_OnMenuSelect ( HWND  hWnd,
UINT  nItemID,
UINT  nFlags,
HMENU  hSysMenu 
)

Definition at line 974 of file taskmgr.c.

975{
976 WCHAR str[100];
977
978 wcscpy(str, L"");
979 if (LoadStringW(hInst, nItemID, str, 100)) {
980 /* load appropriate string */
981 LPWSTR lpsz = str;
982 /* first newline terminates actual string */
983 lpsz = wcschr(lpsz, '\n');
984 if (lpsz != NULL)
985 *lpsz = '\0';
986 }
988}
#define wcschr
Definition: compat.h:17
const WCHAR * str
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)

Referenced by TaskManagerWndProc().

◆ TaskManager_OnRestoreMainWindow()

void TaskManager_OnRestoreMainWindow ( void  )

Definition at line 931 of file taskmgr.c.

932{
933 //HMENU hMenu, hOptionsMenu;
934 BOOL OnTop;
935
936 //hMenu = GetMenu(hMainWnd);
937 //hOptionsMenu = GetSubMenu(hMenu, OPTIONS_MENU_INDEX);
939
943}
unsigned int BOOL
Definition: ntddk_ex.h:94
#define WS_EX_TOPMOST
Definition: pedump.c:647
#define GetWindowLongPtrW
Definition: winuser.h:4819
BOOL WINAPI SetForegroundWindow(_In_ HWND)
BOOL WINAPI OpenIcon(_In_ HWND)
#define HWND_TOP
Definition: winuser.h:1197
#define SWP_SHOWWINDOW
Definition: winuser.h:1238
#define GWL_EXSTYLE
Definition: winuser.h:845

Referenced by TaskManagerWndProc().

◆ TaskManager_OnTabWndSelChange()

void TaskManager_OnTabWndSelChange ( void  )

Definition at line 1008 of file taskmgr.c.

1009{
1010 int i;
1011 HMENU hMenu;
1012 HMENU hOptionsMenu;
1013 HMENU hViewMenu;
1014 HMENU hSubMenu;
1015 WCHAR szTemp[256];
1016 SYSTEM_INFO sysInfo;
1017
1018 hMenu = GetMenu(hMainWnd);
1019 hViewMenu = GetSubMenu(hMenu, 2);
1020 hOptionsMenu = GetSubMenu(hMenu, 1);
1022 for (i = GetMenuItemCount(hViewMenu) - 1; i > 2; i--) {
1023 hSubMenu = GetSubMenu(hViewMenu, i);
1024 if (hSubMenu)
1025 DestroyMenu(hSubMenu);
1026 RemoveMenu(hViewMenu, i, MF_BYPOSITION);
1027 }
1028 RemoveMenu(hOptionsMenu, 3, MF_BYPOSITION);
1029 if (hWindowMenu)
1032 case 0:
1037
1038 LoadStringW(hInst, IDS_MENU_LARGEICONS, szTemp, 256);
1039 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_LARGE, szTemp);
1040
1041 LoadStringW(hInst, IDS_MENU_SMALLICONS, szTemp, 256);
1042 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_SMALL, szTemp);
1043
1044 LoadStringW(hInst, IDS_MENU_DETAILS, szTemp, 256);
1045 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_DETAILS, szTemp);
1046
1047 if (GetMenuItemCount(hMenu) <= 5) {
1049
1050 LoadStringW(hInst, IDS_MENU_WINDOWS, szTemp, 256);
1052
1054 }
1056
1057 /*
1058 * Give the application list control focus
1059 */
1060 if (!bWasKeyboardInput)
1062 break;
1063
1064 case 1:
1069
1071 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_SELECTCOLUMNS, szTemp);
1072
1073 LoadStringW(hInst, IDS_MENU_16BITTASK, szTemp, 256);
1074 AppendMenuW(hOptionsMenu, MF_STRING, ID_OPTIONS_SHOW16BITTASKS, szTemp);
1075
1078 if (GetMenuItemCount(hMenu) > 5)
1079 {
1080 DeleteMenu(hMenu, 3, MF_BYPOSITION);
1082 }
1083 /*
1084 * Give the process list control focus
1085 */
1086 if (!bWasKeyboardInput)
1088 break;
1089
1090 case 2:
1095 if (GetMenuItemCount(hMenu) > 5) {
1096 DeleteMenu(hMenu, 3, MF_BYPOSITION);
1098 }
1099
1100 GetSystemInfo(&sysInfo);
1101
1102 /* Hide CPU graph options on single CPU systems */
1103 if (sysInfo.dwNumberOfProcessors > 1)
1104 {
1105 hSubMenu = CreatePopupMenu();
1106
1109
1112
1113 LoadStringW(hInst, IDS_MENU_CPUHISTORY, szTemp, 256);
1114 AppendMenuW(hViewMenu, MF_STRING|MF_POPUP, (UINT_PTR) hSubMenu, szTemp);
1115
1118 else
1120 }
1121
1123 AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_SHOWKERNELTIMES, szTemp);
1124
1127 else
1129
1130 /*
1131 * Give the tab control focus
1132 */
1133 if (!bWasKeyboardInput)
1135 break;
1136 }
1137}
HWND hApplicationPageListCtrl
Definition: applpage.c:36
#define ID_VIEW_SMALL
Definition: resource.h:34
#define IDS_MENU_SELECTCOLUMNS
Definition: resource.h:229
#define IDS_MENU_SHOWKERNELTIMES
Definition: resource.h:238
#define IDS_MENU_DETAILS
Definition: resource.h:234
#define IDR_WINDOWSMENU
Definition: resource.h:16
#define IDS_MENU_CPUHISTORY
Definition: resource.h:237
#define IDS_MENU_SMALLICONS
Definition: resource.h:233
#define IDS_MENU_ONEGRAPHPERCPU
Definition: resource.h:236
#define IDS_MENU_ONEGRAPHALLCPUS
Definition: resource.h:235
#define IDS_MENU_WINDOWS
Definition: resource.h:231
#define IDS_MENU_16BITTASK
Definition: resource.h:230
#define ID_VIEW_SELECTCOLUMNS
Definition: resource.h:160
#define IDS_MENU_LARGEICONS
Definition: resource.h:232
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
Definition: sysinfo.c:142
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
HWND hProcessPageListCtrl
Definition: procpage.c:43
#define TabCtrl_GetCurSel(hwnd)
Definition: commctrl.h:4063
DWORD dwNumberOfProcessors
Definition: winbase.h:1165
BOOL bWasKeyboardInput
Definition: taskmgr.c:50
HMENU hWindowMenu
Definition: taskmgr.c:41
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:846
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
BOOL WINAPI InsertMenuW(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
#define MF_POPUP
Definition: winuser.h:136
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI DrawMenuBar(_In_ HWND)
#define MF_BYPOSITION
Definition: winuser.h:203
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define SW_SHOW
Definition: winuser.h:769
HMENU WINAPI LoadMenuW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
BOOL WINAPI BringWindowToTop(_In_ HWND)
BOOL WINAPI AppendMenuW(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)

Referenced by TaskManagerWndProc().

◆ TaskManager_OnViewUpdateSpeed()

void TaskManager_OnViewUpdateSpeed ( DWORD  dwSpeed)

Definition at line 990 of file taskmgr.c.

991{
992 HMENU hMenu;
993 HMENU hViewMenu;
994 HMENU hUpdateSpeedMenu;
995
996 hMenu = GetMenu(hMainWnd);
997 hViewMenu = GetSubMenu(hMenu, 2);
998 hUpdateSpeedMenu = GetSubMenu(hViewMenu, 1);
999
1002
1003 KillTimer(hMainWnd, 1);
1004
1006}
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)

Referenced by TaskManagerWndProc().

◆ TaskManagerWndProc()

INT_PTR CALLBACK TaskManagerWndProc ( HWND  hDlg,
UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 200 of file taskmgr.c.

201{
202#if 0
203 HDC hdc;
204 PAINTSTRUCT ps;
205 RECT rc;
206#endif
207 LPRECT pRC;
208 LPNMHDR pnmh;
210
211 switch (message) {
212 case WM_INITDIALOG:
213 // For now, the Help dialog menu item is disabled because of lacking of HTML Help support
215 hMainWnd = hDlg;
216 return OnCreate(hDlg);
217
218 case WM_COMMAND:
219 if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
220 EndDialog(hDlg, LOWORD(wParam));
221 return TRUE;
222 }
223 /* Process menu commands */
224 switch (LOWORD(wParam))
225 {
226 case ID_FILE_NEW:
228 break;
231 break;
234 break;
237 break;
240 break;
241 case ID_RESTORE:
243 break;
244 case ID_VIEW_LARGE:
245 case ID_VIEW_SMALL:
246 case ID_VIEW_DETAILS:
248 break;
251 break;
254 break;
257 break;
263 break;
266 break;
267 case ID_VIEW_REFRESH:
268 PostMessageW(hDlg, WM_TIMER, 0, 0);
269 break;
272 break;
275 break;
278 break;
281 break;
284 break;
287 break;
290 break;
293 break;
296 break;
299 break;
302 break;
305 break;
308 break;
311 break;
314 break;
317 break;
320 break;
323 break;
326 break;
329 break;
332 break;
333
334/* ShutDown items */
337 break;
340 break;
343 break;
346 break;
349 break;
352 break;
355 break;
358 break;
361 break;
362
363 case ID_HELP_ABOUT:
364 OnAbout();
365 break;
366 case ID_FILE_EXIT:
367 EndDialog(hDlg, IDOK);
368 break;
369 }
370 break;
371
372 case WM_ONTRAYICON:
373 switch(lParam)
374 {
375 case WM_RBUTTONDOWN:
376 {
377 POINT pt;
378 BOOL OnTop;
379 HMENU hMenu, hPopupMenu;
380
382
384
386 hPopupMenu = GetSubMenu(hMenu, 0);
387
389 {
390 DeleteMenu(hPopupMenu, ID_RESTORE, MF_BYCOMMAND);
391 }
392 else
393 {
394 SetMenuDefaultItem(hPopupMenu, ID_RESTORE, FALSE);
395 }
396
397 if(OnTop)
398 {
400 } else
401 {
403 }
404
406 TrackPopupMenuEx(hPopupMenu, 0, pt.x, pt.y, hMainWnd, NULL);
407
408 DestroyMenu(hMenu);
409 break;
410 }
411 case WM_LBUTTONDBLCLK:
413 break;
414 }
415 break;
416
417 case WM_NOTIFY:
418 pnmh = (LPNMHDR)lParam;
419 if ((pnmh->hwndFrom == hTabWnd) &&
420 (pnmh->idFrom == IDC_TAB))
421 {
422 switch (pnmh->code)
423 {
424 case TCN_SELCHANGE:
426 break;
427 case TCN_KEYDOWN:
429 break;
430 case NM_CLICK:
432 break;
433 }
434 }
435 break;
436#if 0
437 case WM_NCPAINT:
438 hdc = GetDC(hDlg);
439 GetClientRect(hDlg, &rc);
441 ReleaseDC(hDlg, hdc);
442 break;
443
444 case WM_PAINT:
445 hdc = BeginPaint(hDlg, &ps);
446 GetClientRect(hDlg, &rc);
448 EndPaint(hDlg, &ps);
449 break;
450#endif
451 case WM_SIZING:
452 /* Make sure the user is sizing the dialog */
453 /* in an acceptable range */
454 pRC = (LPRECT)lParam;
455 if ((wParam == WMSZ_LEFT) || (wParam == WMSZ_TOPLEFT) || (wParam == WMSZ_BOTTOMLEFT)) {
456 /* If the width is too small enlarge it to the minimum */
457 if (nMinimumWidth > (pRC->right - pRC->left))
458 pRC->left = pRC->right - nMinimumWidth;
459 } else {
460 /* If the width is too small enlarge it to the minimum */
461 if (nMinimumWidth > (pRC->right - pRC->left))
462 pRC->right = pRC->left + nMinimumWidth;
463 }
464 if ((wParam == WMSZ_TOP) || (wParam == WMSZ_TOPLEFT) || (wParam == WMSZ_TOPRIGHT)) {
465 /* If the height is too small enlarge it to the minimum */
466 if (nMinimumHeight > (pRC->bottom - pRC->top))
467 pRC->top = pRC->bottom - nMinimumHeight;
468 } else {
469 /* If the height is too small enlarge it to the minimum */
470 if (nMinimumHeight > (pRC->bottom - pRC->top))
471 pRC->bottom = pRC->top + nMinimumHeight;
472 }
473 return TRUE;
474 break;
475
476 case WM_SIZE:
477 /* Handle the window sizing in it's own function */
479 break;
480
481 case WM_MOVE:
482 /* Handle the window moving in it's own function */
484 break;
485
486 case WM_DESTROY:
487 ShowWindow(hDlg, SW_HIDE);
489 wp.length = sizeof(WINDOWPLACEMENT);
490 GetWindowPlacement(hDlg, &wp);
495 if (IsZoomed(hDlg) || (wp.flags & WPF_RESTORETOMAXIMIZED))
497 else
499 /* Get rid of the allocated command line cache, if any */
501 if (hWindowMenu)
503 return DefWindowProcW(hDlg, message, wParam, lParam);
504
505 case WM_TIMER:
506 /* Refresh the performance data */
512 break;
513
514 case WM_ENTERMENULOOP:
516 break;
517 case WM_EXITMENULOOP:
519 break;
520 case WM_MENUSELECT:
522 break;
524 /* Forward WM_SYSCOLORCHANGE to common controls */
528 break;
529 }
530
531 return 0;
532}
void ProcessPage_OnSetAffinity(void)
Definition: affinity.c:41
void ApplicationPage_OnEndTask(void)
Definition: applpage.c:888
void ApplicationPage_OnWindowsCascade(void)
Definition: applpage.c:812
void ApplicationPage_OnWindowsBringToFront(void)
Definition: applpage.c:841
void ApplicationPage_OnWindowsMinimize(void)
Definition: applpage.c:770
void ApplicationPage_OnView(DWORD dwMode)
Definition: applpage.c:725
void ApplicationPage_OnWindowsTile(DWORD dwMode)
Definition: applpage.c:739
void ApplicationPage_OnGotoProcess(void)
Definition: applpage.c:912
void ApplicationPage_OnSwitchTo(void)
Definition: applpage.c:863
void ApplicationPage_OnWindowsMaximize(void)
Definition: applpage.c:791
#define ID_VIEW_REFRESH
Definition: resource.h:56
#define ID_HELP_ABOUT
Definition: resource.h:75
#define ID_FILE_EXIT
Definition: resource.h:46
#define ID_FILE_NEW
Definition: resource.h:40
void OnAbout(void)
Definition: about.c:25
void ProcessPage_OnDebug(void)
Definition: debug.c:26
#define ID_APPLICATION_PAGE_SWITCHTO
Definition: resource.h:165
#define ID_PROCESS_PAGE_SETPRIORITY_NORMAL
Definition: resource.h:179
#define ID_PROCESS_PAGE_PROPERTIES
Definition: resource.h:182
#define ID_SHUTDOWN_REBOOT
Definition: resource.h:188
#define ID_SHUTDOWN_EJECT_COMPUTER
Definition: resource.h:193
#define ID_WINDOWS_MINIMIZE
Definition: resource.h:151
#define ID_SHUTDOWN_SWITCHUSER
Definition: resource.h:190
#define ID_PROCESS_PAGE_SETPRIORITY_REALTIME
Definition: resource.h:176
#define ID_RESTORE
Definition: resource.h:168
#define ID_WINDOWS_MAXIMIZE
Definition: resource.h:152
#define ID_PROCESS_PAGE_ENDPROCESS
Definition: resource.h:172
#define ID_WINDOWS_BRINGTOFRONT
Definition: resource.h:154
#define ID_WINDOWS_TILEHORIZONTALLY
Definition: resource.h:149
#define ID_APPLICATION_PAGE_ENDTASK
Definition: resource.h:169
#define ID_PROCESS_PAGE_SETPRIORITY_BELOWNORMAL
Definition: resource.h:180
#define IDR_TRAY_POPUP
Definition: resource.h:22
#define ID_SHUTDOWN_LOCKCOMPUTER
Definition: resource.h:191
#define ID_SHUTDOWN_DISCONNECT
Definition: resource.h:192
#define ID_SHUTDOWN_STANDBY
Definition: resource.h:185
#define ID_PROCESS_PAGE_DEBUG
Definition: resource.h:174
#define ID_WINDOWS_TILEVERTICALLY
Definition: resource.h:150
#define ID_PROCESS_PAGE_OPENFILELOCATION
Definition: resource.h:183
#define ID_PROCESS_PAGE_ENDPROCESSTREE
Definition: resource.h:173
#define ID_PROCESS_PAGE_SETAFFINITY
Definition: resource.h:175
#define ID_SHUTDOWN_POWEROFF
Definition: resource.h:187
#define ID_APPLICATION_PAGE_GOTOPROCESS
Definition: resource.h:170
#define ID_PROCESS_PAGE_SETPRIORITY_LOW
Definition: resource.h:181
#define ID_SHUTDOWN_HIBERNATE
Definition: resource.h:186
#define ID_PROCESS_PAGE_SETPRIORITY_HIGH
Definition: resource.h:177
#define ID_WINDOWS_CASCADE
Definition: resource.h:153
#define ID_HELP_TOPICS
Definition: resource.h:155
#define ID_PROCESS_PAGE_SETPRIORITY_ABOVENORMAL
Definition: resource.h:178
void TaskManager_OnFileNew(void)
Definition: run.c:26
VOID ShutDown_Reboot(VOID)
Definition: shutdown.c:143
VOID ShutDown_StandBy(VOID)
Definition: shutdown.c:61
VOID ShutDown_SwitchUser(VOID)
Definition: shutdown.c:177
VOID ShutDown_EjectComputer(VOID)
Definition: shutdown.c:194
VOID ShutDown_Hibernate(VOID)
Definition: shutdown.c:88
VOID ShutDown_PowerOff(VOID)
Definition: shutdown.c:115
VOID ShutDown_LogOffUser(VOID)
Definition: shutdown.c:170
VOID ShutDown_Disconnect(VOID)
Definition: shutdown.c:189
VOID ShutDown_LockComputer(VOID)
Definition: shutdown.c:182
void ProcessPage_OnViewSelectColumns(void)
Definition: column.c:145
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define pt(x, y)
Definition: drawing.c:79
void ProcessPage_OnEndProcessTree(void)
Definition: endproc.c:161
void ProcessPage_OnEndProcess(void)
Definition: endproc.c:30
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:92
void TaskManager_OnOptionsAlwaysOnTop(void)
Definition: optnmenu.c:31
void TaskManager_OnOptionsHideWhenMinimized(void)
Definition: optnmenu.c:80
void TaskManager_OnOptionsShow16BitTasks(void)
Definition: optnmenu.c:103
void TaskManager_OnOptionsMinimizeOnUse(void)
Definition: optnmenu.c:57
#define LOWORD(l)
Definition: pedump.c:82
void PerfDataDeallocCommandLineCache()
Definition: perfdata.c:650
void PerformancePage_OnViewShowKernelTimes(void)
Definition: perfpage.c:480
void PerformancePage_OnViewCPUHistoryOneGraphPerCPU(void)
Definition: perfpage.c:520
void PerformancePage_OnViewCPUHistoryOneGraphAll(void)
Definition: perfpage.c:506
void DoSetPriority(DWORD priority)
Definition: priority.c:26
void ProcessPage_OnOpenFileLocation(void)
Definition: procpage.c:1235
HWND hProcessPageHeaderCtrl
Definition: procpage.c:44
void ProcessPage_OnProperties(void)
Definition: procpage.c:1196
#define TCN_KEYDOWN
Definition: commctrl.h:4118
#define NM_CLICK
Definition: commctrl.h:130
#define TCN_SELCHANGE
Definition: commctrl.h:4132
#define WM_NOTIFY
Definition: richedit.h:61
RECT rcNormalPosition
Definition: winuser.h:3285
Definition: tftpd.h:60
UINT_PTR idFrom
Definition: winuser.h:3148
UINT code
Definition: winuser.h:3149
HWND hwndFrom
Definition: winuser.h:3147
void TaskManager_OnRestoreMainWindow(void)
Definition: taskmgr.c:931
BOOL OnCreate(HWND hWnd)
Definition: taskmgr.c:582
void TaskManager_OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
Definition: taskmgr.c:974
void TaskManager_OnEnterMenuLoop(HWND hWnd)
Definition: taskmgr.c:945
void TaskManager_OnViewUpdateSpeed(DWORD dwSpeed)
Definition: taskmgr.c:990
void OnMove(WPARAM nType, int cx, int cy)
Definition: taskmgr.c:785
void OnSize(WPARAM nType, int cx, int cy)
Definition: taskmgr.c:798
void TaskManager_OnExitMenuLoop(HWND hWnd)
Definition: taskmgr.c:956
void TaskManager_OnTabWndSelChange(void)
Definition: taskmgr.c:1008
BOOL TrayIcon_ShellRemoveTrayIcon(void)
Definition: trayicon.c:159
BOOL TrayIcon_ShellUpdateTrayIcon(void)
Definition: trayicon.c:177
#define WM_ONTRAYICON
Definition: trayicon.h:25
#define HIWORD(l)
Definition: typedefs.h:247
#define LPRECT
Definition: precomp.h:28
#define NORMAL_PRIORITY_CLASS
Definition: winbase.h:181
#define REALTIME_PRIORITY_CLASS
Definition: winbase.h:184
#define BELOW_NORMAL_PRIORITY_CLASS
Definition: winbase.h:190
#define HIGH_PRIORITY_CLASS
Definition: winbase.h:183
#define IDLE_PRIORITY_CLASS
Definition: winbase.h:182
#define ABOVE_NORMAL_PRIORITY_CLASS
Definition: winbase.h:191
#define WM_PAINT
Definition: winuser.h:1610
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI SetMenuDefaultItem(_In_ HMENU, _In_ UINT, _In_ UINT)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WMSZ_BOTTOMLEFT
Definition: winuser.h:2460
#define IDCANCEL
Definition: winuser.h:825
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetWindowPlacement(_In_ HWND, _Inout_ WINDOWPLACEMENT *)
#define WM_LBUTTONDBLCLK
Definition: winuser.h:1768
#define WM_COMMAND
Definition: winuser.h:1730
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
Definition: cursoricon.c:2639
#define WMSZ_TOP
Definition: winuser.h:2456
#define COLOR_3DSHADOW
Definition: winuser.h:925
#define WM_INITDIALOG
Definition: winuser.h:1729
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1616
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
#define WMSZ_LEFT
Definition: winuser.h:2454
#define IDOK
Definition: winuser.h:824
#define WM_RBUTTONDOWN
Definition: winuser.h:1769
BOOL WINAPI IsZoomed(_In_ HWND)
#define WMSZ_TOPLEFT
Definition: winuser.h:2457
#define WM_ENTERMENULOOP
Definition: winuser.h:1794
#define WM_TIMER
Definition: winuser.h:1732
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#define WMSZ_TOPRIGHT
Definition: winuser.h:2458
struct tagNMHDR * LPNMHDR
#define SendMessage
Definition: winuser.h:5833
#define WM_EXITMENULOOP
Definition: winuser.h:1795
HDC WINAPI GetDC(_In_opt_ HWND)
#define WM_MOVE
Definition: winuser.h:1600
#define WM_SIZING
Definition: winuser.h:1797
#define WPF_RESTORETOMAXIMIZED
Definition: winuser.h:2522
#define COLOR_3DHILIGHT
Definition: winuser.h:931
#define MDITILE_HORIZONTAL
Definition: winuser.h:2178
#define WM_DESTROY
Definition: winuser.h:1599
#define MDITILE_VERTICAL
Definition: winuser.h:2179
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
struct _WINDOWPLACEMENT WINDOWPLACEMENT
#define WM_MENUSELECT
Definition: winuser.h:1737
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define WM_NCPAINT
Definition: winuser.h:1677
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
#define MF_GRAYED
Definition: winuser.h:129

Referenced by wWinMain().

◆ wWinMain()

int APIENTRY wWinMain ( HINSTANCE  hInstance,
HINSTANCE  hPrevInstance,
LPWSTR  lpCmdLine,
int  nShowCmd 
)

This file has no copyright assigned and is placed in the Public Domain. This file is part of the w64 mingw-runtime package. No warranty is given; refer to the file DISCLAIMER.PD within this package.

Definition at line 109 of file taskmgr.c.

113{
115 HANDLE hToken;
118
119 /* check wether we're already running or not */
120 hMutex = CreateMutexW(NULL, TRUE, L"taskmgrros");
122 {
123 /* Restore existing taskmanager and bring window to front */
124 /* Relies on the fact that the application title string and window title are the same */
125 HWND hTaskMgr;
126 TCHAR szTaskmgr[128];
127
128 LoadString(hInst, IDS_APP_TITLE, szTaskmgr, sizeof(szTaskmgr)/sizeof(TCHAR));
129 hTaskMgr = FindWindow(NULL, szTaskmgr);
130
131 if (hTaskMgr != NULL)
132 {
133 SendMessage(hTaskMgr, WM_SYSCOMMAND, SC_RESTORE, 0);
134 SetForegroundWindow(hTaskMgr);
135 }
136
138 return 0;
139 }
140 else if (!hMutex)
141 {
142 return 1;
143 }
144
145 /* Initialize global variables */
147
148 /* Change our priority class to HIGH */
152
153 /* Now lets get the SE_DEBUG_NAME privilege
154 * so that we can debug processes
155 */
156
157 /* Get a token for this process. */
159 {
160 /* Get the LUID for the debug privilege. */
162 {
163 tkp.PrivilegeCount = 1; /* one privilege to set */
165
166 /* Get the debug privilege for this process. */
167 AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
168 }
169 CloseHandle(hToken);
170 }
171
172 /* Load our settings from the registry */
173 LoadSettings();
174
175 /* Initialize perf data */
176 if (!PerfDataInitialize())
177 {
178 return -1;
179 }
180
181 /*
182 * Set our shutdown parameters: we want to shutdown the very last,
183 * without displaying any end task dialog if needed.
184 */
186
188
189 /* Save our settings to the registry */
190 SaveSettings();
193 if (hWindowMenu)
195 return 0;
196}
#define IDS_APP_TITLE
Definition: resource.h:10
#define IDD_TASKMGR_DIALOG
Definition: resource.h:4
HINSTANCE hInstance
Definition: charmap.c:19
BOOL WINAPI LookupPrivilegeValueW(LPCWSTR lpSystemName, LPCWSTR lpPrivilegeName, PLUID lpLuid)
Definition: misc.c:782
BOOL WINAPI AdjustTokenPrivileges(HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength)
Definition: security.c:376
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
Definition: security.c:296
#define GetCurrentProcess()
Definition: compat.h:759
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
Definition: proc.c:1227
BOOL WINAPI SetProcessShutdownParameters(IN DWORD dwLevel, IN DWORD dwFlags)
Definition: proc.c:949
BOOL WINAPI SetPriorityClass(IN HANDLE hProcess, IN DWORD dwPriorityClass)
Definition: proc.c:1692
_In_ BOOL _In_ HANDLE hProcess
Definition: mapping.h:71
#define ERROR_ALREADY_EXISTS
Definition: disk.h:80
HANDLE hMutex
Definition: mutex.c:11
#define PROCESS_ALL_ACCESS
Definition: nt_native.h:1324
BOOL PerfDataInitialize(void)
Definition: perfdata.c:64
void PerfDataUninitialize(void)
Definition: perfdata.c:85
$ULONG PrivilegeCount
Definition: setypes.h:1019
LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]
Definition: setypes.h:1020
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL, IN BOOL bInitialOwner, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:576
INT_PTR CALLBACK TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
Definition: taskmgr.c:200
void SaveSettings(void)
Definition: taskmgr.c:917
void LoadSettings(void)
Definition: taskmgr.c:854
#define SHUTDOWN_NORETRY
Definition: winbase.h:448
DWORD WINAPI GetCurrentProcessId(void)
Definition: proc.c:1158
#define SE_DEBUG_NAME
Definition: winnt_old.h:385
#define WM_SYSCOMMAND
Definition: winuser.h:1731
#define FindWindow
Definition: winuser.h:5767
#define DialogBoxW(i, t, p, f)
Definition: winuser.h:4389
#define LoadString
Definition: winuser.h:5809
#define SC_RESTORE
Definition: winuser.h:2588
#define TOKEN_ADJUST_PRIVILEGES
Definition: setypes.h:926
#define TOKEN_QUERY
Definition: setypes.h:924
#define SE_PRIVILEGE_ENABLED
Definition: setypes.h:63
char TCHAR
Definition: xmlstorage.h:189
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

Variable Documentation

◆ bInMenuLoop

BOOL bInMenuLoop = FALSE

Definition at line 49 of file taskmgr.c.

Referenced by OnSize(), TaskManager_OnEnterMenuLoop(), and TaskManager_OnExitMenuLoop().

◆ bWasKeyboardInput

BOOL bWasKeyboardInput = FALSE

Definition at line 50 of file taskmgr.c.

Referenced by TaskManager_OnTabWndSelChange(), and TaskManagerWndProc().

◆ hInst

◆ hMainWnd

◆ hStatusWnd

◆ hTabWnd

HWND hTabWnd

Definition at line 39 of file taskmgr.c.

Referenced by OnCreate(), OnSize(), TaskManager_OnTabWndSelChange(), and TaskManagerWndProc().

◆ hWindowMenu

◆ nMinimumHeight

int nMinimumHeight

Definition at line 44 of file taskmgr.c.

Referenced by OnCreate(), and TaskManagerWndProc().

◆ nMinimumWidth

int nMinimumWidth

Definition at line 43 of file taskmgr.c.

Referenced by OnCreate(), and TaskManagerWndProc().

◆ nOldHeight

int nOldHeight

Definition at line 47 of file taskmgr.c.

Referenced by OnCreate(), and OnSize().

◆ nOldWidth

int nOldWidth

Definition at line 46 of file taskmgr.c.

Referenced by HEADER_MouseMove(), OnCreate(), and OnSize().

◆ TaskManagerSettings