Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

231 lines
5.7 KiB

//+-------------------------------------------------------------------------
//
// TaskMan - NT TaskManager
// Copyright (C) Microsoft
//
// File: TaskMan.H
//
// History: Nov-10-95 DavePl Created
//
//--------------------------------------------------------------------------
#define WM_FINDPROC (WM_USER + 1)
#define PM_NOTIFYWAITING (WM_USER + 2)
#define PM_QUITTRAYTHREAD (WM_USER + 3)
extern CRITICAL_SECTION g_CSTrayThread;
extern DWORD g_idTrayThread;
extern LONG g_minWidth;
extern LONG g_minHeight;
DWORD TrayThreadMessageLoop(LPVOID);
#define TASK_PAGE 0
#define PROC_PAGE 1
#define PERF_PAGE 2
#define NUM_PAGES 3
#define MIN_DLG_SIZE_X 203
#define MIN_DLG_SIZE_Y 224
#define DLG_SCALE_X 4
#define DLG_SCALE_Y 8
//
// Process Page Column ID enumeration
//
typedef enum COLUMNID
{
COL_IMAGENAME = 0,
COL_PID = 1,
COL_CPU = 2,
COL_CPUTIME = 3,
COL_MEMUSAGE = 4,
COL_MEMUSAGEDIFF = 5,
COL_PAGEFAULTS = 6,
COL_PAGEFAULTSDIFF = 7,
COL_COMMITCHARGE = 8,
COL_PAGEDPOOL = 9,
COL_NONPAGEDPOOL = 10,
COL_BASEPRIORITY = 11,
COL_HANDLECOUNT = 12,
COL_THREADCOUNT = 13
};
#define MAX_COLUMN 13
#define NUM_COLUMN (MAX_COLUMN + 1)
#define IDS_FIRSTCOL 20001 // 20000 is first column name ID in rc file
// GetLastHRESULT
//
// Little wrapper func that returns the GetLastError value as an HRESULT
inline HRESULT GetLastHRESULT()
{
return HRESULT_FROM_WIN32(GetLastError());
}
// Possible values for the viewmode
typedef enum
{
VM_LARGEICON,
VM_SMALLICON,
VM_DETAILS
} VIEWMODE;
#define VM_FIRST IDM_LARGEICONS
#define VM_LAST IDM_DETAILS
// Possible values for the cpu history mode
typedef enum
{
CM_SUM,
CM_PANES
} CPUHISTMODE;
#define CM_FIRST IDM_ALLCPUS
#define CM_LAST IDM_MULTIGRAPH
// Possible values for the update speed option
typedef enum
{
US_HIGH,
US_NORMAL,
US_LOW,
US_PAUSED
} UPDATESPEED;
#define US_FIRST IDM_HIGH
#define US_LAST IDM_PAUSED
// COptions
//
// App's persistent state across sessions, saved in the registry
class COptions
{
public:
DWORD m_cbSize;
DWORD m_dwTimerInterval;
VIEWMODE m_vmViewMode;
CPUHISTMODE m_cmHistMode;
UPDATESPEED m_usUpdateSpeed;
RECT m_rcWindow;
INT m_iCurrentPage;
COLUMNID m_ActiveProcCol[NUM_COLUMN + 1];
INT m_ColumnWidths[NUM_COLUMN + 1];
BOOL m_fMinimizeOnUse : 1;
BOOL m_fConfirmations : 1;
BOOL m_fAlwaysOnTop : 1;
BOOL m_fKernelTimes : 1;
BOOL m_fNoTitle : 1;
BOOL m_fHideWhenMin : 1;
BOOL m_fShow16Bit : 1;
BOOL bUnused;
BOOL bUnused2;
HRESULT Load();
HRESULT Save();
// SetDefaultValues
//
// Uses to init the options to a default state when the saved copy
// cannot be found, is damaged, or is not the correct version
void SetDefaultValues()
{
ZeroMemory(this, sizeof(COptions));
m_cbSize = sizeof(COptions);
BOOL bScreenReader = FALSE;
if (SystemParametersInfo(SPI_GETSCREENREADER, 0, (PVOID) &bScreenReader, 0) && bScreenReader)
{
// No automatic updates for machines with screen readers
m_dwTimerInterval = 0;
}
else
{
m_dwTimerInterval = 1000;
}
m_vmViewMode = VM_DETAILS;
m_cmHistMode = CM_PANES;
m_usUpdateSpeed = US_NORMAL;
m_fMinimizeOnUse = TRUE;
m_fConfirmations = TRUE;
m_fAlwaysOnTop = TRUE;
m_fShow16Bit = TRUE;
m_iCurrentPage = -1;
m_rcWindow.top = (GetSystemMetrics(SM_CYMAXIMIZED) - g_minHeight) / 2;
m_rcWindow.left = (GetSystemMetrics(SM_CXMAXIMIZED) - g_minWidth) / 2;
m_rcWindow.bottom = m_rcWindow.top + g_minHeight;
m_rcWindow.right = m_rcWindow.left + g_minWidth;
// Columns which are visible, by default, in the process view
m_ActiveProcCol[0] = COL_IMAGENAME;
m_ActiveProcCol[1] = COL_PID;
m_ActiveProcCol[2] = COL_CPU;
m_ActiveProcCol[3] = COL_CPUTIME;
m_ActiveProcCol[4] = COL_MEMUSAGE;
m_ActiveProcCol[5] = (COLUMNID) -1;
// Set all of the columns widths to -1
FillMemory(m_ColumnWidths, sizeof(m_ColumnWidths), 0xFF);
}
COptions()
{
SetDefaultValues();
}
};
// CTrayNotification
//
// Class to encapsulate all of the info needed to do a tray notification
class CTrayNotification
{
public:
CTrayNotification()
{
ASSERT(0 && "Some bozo is using the default constuctor for CTrayNotification");
ZeroMemory(this, sizeof(*this));
}
CTrayNotification(HWND hWnd,
UINT uCallbackMessage,
DWORD Message,
HICON hIcon,
LPTSTR pszTip)
{
m_hWnd = hWnd;
m_uCallbackMessage = uCallbackMessage;
m_Message = Message;
m_hIcon = hIcon;
if (pszTip)
lstrcpyn(m_szTip, pszTip, ARRAYSIZE(m_szTip));
else
m_szTip[0] = TEXT('\0');
}
HWND m_hWnd;
UINT m_uCallbackMessage;
DWORD m_Message;
HICON m_hIcon;
TCHAR m_szTip[MAX_PATH];
};
BOOL DeliverTrayNotification(CTrayNotification * pNot);