blob: ed220beebd20e95202387c263d2c742c66d57c8a [file] [log] [blame]
Eric Pouechd6b348f2004-03-23 01:19:54 +00001/*
2 * ReactOS Task Manager
3 *
4 * taskmgr.h
5 *
6 * Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
Jonathan Ernst360a3f92006-05-18 14:49:52 +020020 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Eric Pouechd6b348f2004-03-23 01:19:54 +000021 */
22
23#ifndef __TASKMGR_H__
24#define __TASKMGR_H__
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30#ifdef _MSC_VER
31/*MF
32typedef struct _IO_COUNTERS {
33 ULONGLONG ReadOperationCount;
34 ULONGLONG WriteOperationCount;
35 ULONGLONG OtherOperationCount;
36 ULONGLONG ReadTransferCount;
37 ULONGLONG WriteTransferCount;
38 ULONGLONG OtherTransferCount;
39} IO_COUNTERS, *PIO_COUNTERS;
40*/
41#endif /* _MSC_VER */
42
43#include "resource.h"
44
45#define RUN_APPS_PAGE
46#define RUN_PROC_PAGE
47#define RUN_PERF_PAGE
48
49#define STATUS_WINDOW 2001
50
51typedef struct
52{
53 /* Window size & position settings */
54 BOOL Maximized;
55 int Left;
56 int Top;
57 int Right;
58 int Bottom;
59
60 /* Tab settings */
61 int ActiveTabPage;
62
63 /* Options menu settings */
64 BOOL AlwaysOnTop;
65 BOOL MinimizeOnUse;
66 BOOL HideWhenMinimized;
67 BOOL Show16BitTasks;
68
69 /* Update speed settings */
70 /* How many half-seconds in between updates (i.e. 0 - Paused, 1 - High, 2 - Normal, 4 - Low) */
71 int UpdateSpeed;
72
73 /* Applications page settings */
74 BOOL View_LargeIcons;
75 BOOL View_SmallIcons;
76 BOOL View_Details;
77
78 /* Processes page settings */
79 BOOL ShowProcessesFromAllUsers; /* Server-only? */
80 BOOL Column_ImageName;
81 BOOL Column_PID;
82 BOOL Column_CPUUsage;
83 BOOL Column_CPUTime;
84 BOOL Column_MemoryUsage;
85 BOOL Column_MemoryUsageDelta;
86 BOOL Column_PeakMemoryUsage;
87 BOOL Column_PageFaults;
88 BOOL Column_USERObjects;
89 BOOL Column_IOReads;
90 BOOL Column_IOReadBytes;
91 BOOL Column_SessionID; /* Server-only? */
92 BOOL Column_UserName; /* Server-only? */
93 BOOL Column_PageFaultsDelta;
94 BOOL Column_VirtualMemorySize;
95 BOOL Column_PagedPool;
96 BOOL Column_NonPagedPool;
97 BOOL Column_BasePriority;
98 BOOL Column_HandleCount;
99 BOOL Column_ThreadCount;
100 BOOL Column_GDIObjects;
101 BOOL Column_IOWrites;
102 BOOL Column_IOWriteBytes;
103 BOOL Column_IOOther;
104 BOOL Column_IOOtherBytes;
105 int ColumnOrderArray[25];
106 int ColumnSizeArray[25];
107 int SortColumn;
108 BOOL SortAscending;
109
110 /* Performance page settings */
111 BOOL CPUHistory_OneGraphPerCPU;
112 BOOL ShowKernelTimes;
113
114} TASKMANAGER_SETTINGS, *LPTASKMANAGER_SETTINGS;
115
116/* Global Variables: */
117extern HINSTANCE hInst; /* current instance */
118extern HWND hMainWnd; /* Main Window */
119extern HWND hStatusWnd; /* Status Bar Window */
120extern HWND hTabWnd; /* Tab Control Window */
121extern int nMinimumWidth; /* Minimum width of the dialog (OnSize()'s cx) */
122extern int nMinimumHeight; /* Minimum height of the dialog (OnSize()'s cy) */
123extern int nOldWidth; /* Holds the previous client area width */
124extern int nOldHeight; /* Holds the previous client area height */
125extern TASKMANAGER_SETTINGS TaskManagerSettings;
126
Alexandre Julliard23152a62005-09-13 14:31:51 +0000127extern WNDPROC OldProcessListWndProc;
128extern WNDPROC OldGraphWndProc;
Eric Pouechd6b348f2004-03-23 01:19:54 +0000129
130extern HWND hProcessPage; /* Process List Property Page */
131extern HWND hProcessPageListCtrl; /* Process ListCtrl Window */
132extern HWND hProcessPageHeaderCtrl; /* Process Header Control */
133extern HWND hProcessPageEndProcessButton; /* Process End Process button */
134extern HWND hProcessPageShowAllProcessesButton; /* Process Show All Processes checkbox */
135extern HWND hPerformancePage; /* Performance Property Page */
136
137extern HWND hApplicationPage; /* Application List Property Page */
138extern HWND hApplicationPageListCtrl; /* Application ListCtrl Window */
139extern HWND hApplicationPageEndTaskButton; /* Application End Task button */
140extern HWND hApplicationPageSwitchToButton; /* Application Switch To button */
141extern HWND hApplicationPageNewTaskButton; /* Application New Task button */
142
143
Francois Gouget8a18e0e2008-04-07 13:01:02 +0200144/* Forward declarations of functions included in this code module: */
Eric Pouechd6b348f2004-03-23 01:19:54 +0000145void FillSolidRect(HDC hDC, LPCRECT lpRect, COLORREF clr);
Vladimir Pankratovb28a6c12008-08-20 08:32:24 +0000146void Font_DrawText(HDC hDC, LPWSTR lpwszText, int x, int y);
Thomas Weidenmuellerec9024c2005-09-14 19:17:12 +0000147
148#define OPTIONS_MENU_INDEX 1
149
Eric Pouechd6b348f2004-03-23 01:19:54 +0000150void TaskManager_OnOptionsAlwaysOnTop(void);
151void TaskManager_OnOptionsMinimizeOnUse(void);
152void TaskManager_OnOptionsHideWhenMinimized(void);
153void TaskManager_OnOptionsShow16BitTasks(void);
154void TaskManager_OnFileNew(void);
155
Vladimir Pankratovb28a6c12008-08-20 08:32:24 +0000156LPWSTR GetLastErrorText( LPWSTR lpwszBuf, DWORD dwSize );
Eric Pouechd6b348f2004-03-23 01:19:54 +0000157
158void OnAbout(void);
159
160BOOL AreDebugChannelsSupported(void);
161
162void ProcessPage_OnSetAffinity(void);
163void ProcessPage_OnDebug(void);
164void ProcessPage_OnEndProcess(void);
165void ProcessPage_OnEndProcessTree(void);
166void ProcessPage_OnSetPriorityRealTime(void);
167void ProcessPage_OnSetPriorityHigh(void);
168void ProcessPage_OnSetPriorityAboveNormal(void);
169void ProcessPage_OnSetPriorityNormal(void);
170void ProcessPage_OnSetPriorityBelowNormal(void);
171void ProcessPage_OnSetPriorityLow(void);
172void ProcessPage_OnDebugChannels(void);
173
Thomas Weidenmuellerec9024c2005-09-14 19:17:12 +0000174#define WM_ONTRAYICON WM_USER + 5
175
Eric Pouechd6b348f2004-03-23 01:19:54 +0000176BOOL TrayIcon_ShellAddTrayIcon(void);
177BOOL TrayIcon_ShellRemoveTrayIcon(void);
178BOOL TrayIcon_ShellUpdateTrayIcon(void);
179
180void PerformancePage_OnViewShowKernelTimes(void);
181void PerformancePage_OnViewCPUHistoryOneGraphAll(void);
182void PerformancePage_OnViewCPUHistoryOneGraphPerCPU(void);
183
184void ApplicationPage_OnViewLargeIcons(void);
185void ApplicationPage_OnViewSmallIcons(void);
186void ApplicationPage_OnViewDetails(void);
187void ApplicationPage_OnWindowsTileHorizontally(void);
188void ApplicationPage_OnWindowsTileVertically(void);
189void ApplicationPage_OnWindowsMinimize(void);
190void ApplicationPage_OnWindowsMaximize(void);
191void ApplicationPage_OnWindowsCascade(void);
192void ApplicationPage_OnWindowsBringToFront(void);
193void ApplicationPage_OnSwitchTo(void);
194void ApplicationPage_OnEndTask(void);
195void ApplicationPage_OnGotoProcess(void);
196
197void RefreshApplicationPage(void);
Eric Pouechd6b348f2004-03-23 01:19:54 +0000198void RefreshPerformancePage(void);
199void RefreshProcessPage(void);
200
Alexandre Julliard86663762005-09-14 10:06:09 +0000201INT_PTR CALLBACK ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
202INT_PTR CALLBACK Graph_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
Eric Pouechd6b348f2004-03-23 01:19:54 +0000203LRESULT CALLBACK ProcessListWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
Alexandre Julliard86663762005-09-14 10:06:09 +0000204INT_PTR CALLBACK ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
205INT_PTR CALLBACK PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
Eric Pouechd6b348f2004-03-23 01:19:54 +0000206
207#ifdef __cplusplus
208}
209#endif
210
211#endif /* __TASKMGR_H__ */