diff --git a/rosapps/taskmgr/applpage.c b/rosapps/taskmgr/applpage.c index d57967aa3af..12dd69cd9d2 100644 --- a/rosapps/taskmgr/applpage.c +++ b/rosapps/taskmgr/applpage.c @@ -29,7 +29,7 @@ #include #include #include - + #include "taskmgr.h" #include "applpage.h" #include "procpage.h" @@ -374,7 +374,7 @@ void AddOrUpdateHwnd(HWND hWnd, TCHAR *szTitle, HICON hIcon, BOOL bHung) else { //pAPLI = new APPLICATION_PAGE_LIST_ITEM; - pAPLI = malloc(sizeof(APPLICATION_PAGE_LIST_ITEM)); + pAPLI = (LPAPPLICATION_PAGE_LIST_ITEM)malloc(sizeof(APPLICATION_PAGE_LIST_ITEM)); pAPLI->hWnd = hWnd; pAPLI->hIcon = hIcon; @@ -709,7 +709,7 @@ void ApplicationPage_OnWindowsTileHorizontally(void) HWND* hWndArray; int nWndCount; - hWndArray = malloc(sizeof(HWND) * ListView_GetItemCount(hApplicationPageListCtrl)); + hWndArray = (HWND*)malloc(sizeof(HWND) * ListView_GetItemCount(hApplicationPageListCtrl)); nWndCount = 0; for (i=0; i nBars) nBarsUsed = nBars; @@ -429,7 +429,7 @@ void Graph_DrawMemUsageHistoryGraph(HDC hDC, HWND hWnd) // Fill it with blackness // FillSolidRect(hDC, &rcClient, RGB(0, 0, 0)); - + // // Get the memory usage // @@ -444,7 +444,7 @@ void Graph_DrawMemUsageHistoryGraph(HDC hDC, HWND hWnd) { if ((i % 11) == 0) { - FillSolidRect2(hDC, 0, i, rcClient.right, 1, DARK_GREEN); + // FillSolidRect2(hDC, 0, i, rcClient.right, 1, DARK_GREEN); } } // @@ -454,7 +454,7 @@ void Graph_DrawMemUsageHistoryGraph(HDC hDC, HWND hWnd) { if ((i % 11) == 0) { - FillSolidRect2(hDC, i - offset, 0, 1, rcClient.bottom, DARK_GREEN); + // FillSolidRect2(hDC, i - offset, 0, 1, rcClient.bottom, DARK_GREEN); } } diff --git a/rosapps/taskmgr/makefile b/rosapps/taskmgr/makefile new file mode 100644 index 00000000000..01fe8fc49d1 --- /dev/null +++ b/rosapps/taskmgr/makefile @@ -0,0 +1,95 @@ +# +# ReactOS Task Manager +# +# Makefile +# +# Copyright (C) 1999 - 2001 Brian Palmer +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# + + +#export CPP = g++ +#export LD = ld +#export AR = ar +#export RM = cmd /C del +#export CP = cmd /C copy + +FLAGS = -D_WIN32_IE=0x0400 -g + +OBJS = about.o affinity.o applpage.o column.o debug.o endproc.o font.o \ + graph.o optnmenu.o perfdata.o perfpage.o priority.o procpage.o \ + proclist.o run.o trayicon.o taskmgr.o +LIBS = -lgdi32 -luser32 -lkernel32 -lcomctl32 + +all: taskmgr.exe + +taskmgr.exe: $(OBJS) + $(CPP) -g -o taskmgr.exe $(OBJS) $(LIBS) + +about.o: about.c about.h + $(CPP) $(FLAGS) -o about.o -c about.c + +affinity.o: affinity.c affinity.h + $(CPP) $(FLAGS) -o affinity.o -c affinity.c + +applpage.o: applpage.c applpage.h + $(CPP) $(FLAGS) -o applpage.o -c applpage.c + +column.o: column.c column.h + $(CPP) $(FLAGS) -o column.o -c column.c + +debug.o: debug.c debug.h + $(CPP) $(FLAGS) -o debug.o -c debug.c + +endproc.o: endproc.c endproc.h + $(CPP) $(FLAGS) -o endproc.o -c endproc.c + +font.o: font.c font.h + $(CPP) $(FLAGS) -o font.o -c font.c + +graph.o: graph.c graph.h + $(CPP) $(FLAGS) -o graph.o -c graph.c + +optnmenu.o: optnmenu.c optnmenu.h + $(CPP) $(FLAGS) -o optnmenu.o -c optnmenu.c + +perfdata.o: perfdata.c perfdata.h + $(CPP) $(FLAGS) -o perfdata.o -c perfdata.c + +perfpage.o: perfpage.cpp perfpage.h + $(CPP) $(FLAGS) -o perfpage.o -c perfpage.cpp + +priority.o: priority.c priority.h + $(CPP) $(FLAGS) -o priority.o -c priority.c + +procpage.o: procpage.c procpage.h + $(CPP) $(FLAGS) -o procpage.o -c procpage.c + +proclist.o: proclist.c proclist.h + $(CPP) $(FLAGS) -o proclist.o -c proclist.c + +run.o: run.c run.h + $(CPP) $(FLAGS) -o run.o -c run.c + +trayicon.o: trayicon.c trayicon.h + $(CPP) $(FLAGS) -o trayicon.o -c trayicon.c + +taskmgr.o: taskmgr.c taskmgr.h + $(CPP) $(FLAGS) -o taskmgr.o -c taskmgr.c + +clean: + - $(RM) $(OBJS) + - $(RM) taskmgr.exe diff --git a/rosapps/taskmgr/perfdata.c b/rosapps/taskmgr/perfdata.c index c7e21df654c..e5688967b88 100644 --- a/rosapps/taskmgr/perfdata.c +++ b/rosapps/taskmgr/perfdata.c @@ -102,7 +102,7 @@ void PerfDataRefresh(void) LPBYTE SysHandleInfoData; PSYSTEM_PROCESSORTIME_INFO SysProcessorTimeInfo; double CurrentKernelTime; - + if (!NtQuerySystemInformation) return; @@ -121,14 +121,14 @@ void PerfDataRefresh(void) status = NtQuerySystemInformation(SystemCacheInformation, &SysCacheInfo, sizeof(SysCacheInfo), NULL); if (status != NO_ERROR) return; - + // Get processor time information //SysProcessorTimeInfo = new SYSTEM_PROCESSORTIME_INFO[SystemBasicInfo.bKeNumberProcessors]; - SysProcessorTimeInfo = malloc(sizeof(SYSTEM_PROCESSORTIME_INFO) * SystemBasicInfo.bKeNumberProcessors); + SysProcessorTimeInfo = (PSYSTEM_PROCESSORTIME_INFO)malloc(sizeof(SYSTEM_PROCESSORTIME_INFO) * SystemBasicInfo.bKeNumberProcessors); status = NtQuerySystemInformation(SystemProcessorTimeInformation, SysProcessorTimeInfo, sizeof(SYSTEM_PROCESSORTIME_INFO) * SystemBasicInfo.bKeNumberProcessors, &ulSize); if (status != NO_ERROR) return; - + // Get handle information // We don't know how much data there is so just keep // increasing the buffer size until the call succeeds @@ -137,15 +137,15 @@ void PerfDataRefresh(void) { BufferSize += 0x10000; //SysHandleInfoData = new BYTE[BufferSize]; - SysHandleInfoData = malloc(BufferSize); - + SysHandleInfoData = (LPBYTE)malloc(BufferSize); + status = NtQuerySystemInformation(SystemHandleInformation, SysHandleInfoData, BufferSize, &ulSize); - + if (status == 0xC0000004 /*STATUS_INFO_LENGTH_MISMATCH*/) { //delete[] SysHandleInfoData; free(SysHandleInfoData); } - + } while (status == 0xC0000004 /*STATUS_INFO_LENGTH_MISMATCH*/); // Get process information @@ -156,7 +156,7 @@ void PerfDataRefresh(void) { BufferSize += 0x10000; //pBuffer = new BYTE[BufferSize]; - pBuffer = malloc(BufferSize); + pBuffer = (LPBYTE)malloc(BufferSize); status = NtQuerySystemInformation(SystemProcessInformation, pBuffer, BufferSize, &ulSize); @@ -242,7 +242,7 @@ void PerfDataRefresh(void) } pPerfDataOld = pPerfData; //pPerfData = new PERFDATA[ProcessCount]; - pPerfData = malloc(sizeof(PERFDATA) * ProcessCount); + pPerfData = (PPERFDATA)malloc(sizeof(PERFDATA) * ProcessCount); pSPI = (PSYSTEM_PROCESS_INFORMATION)pBuffer; for (Idx=0; Idx + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#if !defined(AFX_TASKMGR_H__392F6393_0279_11D3_9C02_004005E27102__INCLUDED_) +#define AFX_TASKMGR_H__392F6393_0279_11D3_9C02_004005E27102__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "resource.h" + + +#define STATUS_WINDOW 2001 + +typedef struct +{ + // Window size & position settings + BOOL Maximized; + int Left; + int Top; + int Right; + int Bottom; + + // Tab settings + int ActiveTabPage; + + // Options menu settings + BOOL AlwaysOnTop; + BOOL MinimizeOnUse; + BOOL HideWhenMinimized; + BOOL Show16BitTasks; + + // Update speed settings + int UpdateSpeed; // How many half-seconds in between updates (i.e. 0 - Paused, 1 - High, 2 - Normal, 4 - Low) + + // Applications page settings + BOOL View_LargeIcons; + BOOL View_SmallIcons; + BOOL View_Details; + + // Processes page settings + BOOL ShowProcessesFromAllUsers; // Server-only? + BOOL Column_ImageName; + BOOL Column_PID; + BOOL Column_CPUUsage; + BOOL Column_CPUTime; + BOOL Column_MemoryUsage; + BOOL Column_MemoryUsageDelta; + BOOL Column_PeakMemoryUsage; + BOOL Column_PageFaults; + BOOL Column_USERObjects; + BOOL Column_IOReads; + BOOL Column_IOReadBytes; + BOOL Column_SessionID; // Server-only? + BOOL Column_UserName; // Server-only? + BOOL Column_PageFaultsDelta; + BOOL Column_VirtualMemorySize; + BOOL Column_PagedPool; + BOOL Column_NonPagedPool; + BOOL Column_BasePriority; + BOOL Column_HandleCount; + BOOL Column_ThreadCount; + BOOL Column_GDIObjects; + BOOL Column_IOWrites; + BOOL Column_IOWriteBytes; + BOOL Column_IOOther; + BOOL Column_IOOtherBytes; + int ColumnOrderArray[25]; + int ColumnSizeArray[25]; + int SortColumn; + BOOL SortAscending; + + // Performance page settings + BOOL CPUHistory_OneGraphPerCPU; + BOOL ShowKernelTimes; + +} TASKMANAGER_SETTINGS, *LPTASKMANAGER_SETTINGS; + +// Global Variables: +extern HINSTANCE hInst; // current instance +extern HWND hMainWnd; // Main Window +extern HWND hStatusWnd; // Status Bar Window +extern HWND hTabWnd; // Tab Control Window + +extern int nMinimumWidth; // Minimum width of the dialog (OnSize()'s cx) +extern int nMinimumHeight; // Minimum height of the dialog (OnSize()'s cy) +extern int nOldWidth; // Holds the previous client area width +extern int nOldHeight; // Holds the previous client area height + +extern TASKMANAGER_SETTINGS TaskManagerSettings; + +// Foward declarations of functions included in this code module: +LRESULT CALLBACK TaskManagerWndProc(HWND, UINT, WPARAM, LPARAM); + +BOOL OnCreate(HWND hWnd); +void OnSize( UINT nType, int cx, int cy ); + +void FillSolidRect(HDC hDC, LPCRECT lpRect, COLORREF clr); +void FillSolidRect(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 Draw3dRect(HDC hDC, LPRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight); + +void LoadSettings(void); +void SaveSettings(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_OnTabWndSelChange(void); + +LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize ); + +#endif // !defined(AFX_TASKMGR_H__392F6393_0279_11D3_9C02_004005E27102__INCLUDED_) diff --git a/rosapps/taskmgr/taskmgr.rc b/rosapps/taskmgr/taskmgr.rc new file mode 100644 index 00000000000..98ca15eb2ea --- /dev/null +++ b/rosapps/taskmgr/taskmgr.rc @@ -0,0 +1,687 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_TASKMANAGER MENU DISCARDABLE +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&New Task (Run...)", ID_FILE_NEW + MENUITEM SEPARATOR + MENUITEM "E&xit Task Manager", ID_FILE_EXIT + END + POPUP "&Options" + BEGIN + MENUITEM "&Always On Top", ID_OPTIONS_ALWAYSONTOP + , CHECKED + MENUITEM "&Minimize On Use", ID_OPTIONS_MINIMIZEONUSE + , CHECKED + MENUITEM "&Hide When Minimized", ID_OPTIONS_HIDEWHENMINIMIZED + , CHECKED + MENUITEM "&Show 16-bit tasks", ID_OPTIONS_SHOW16BITTASKS + , CHECKED + END + POPUP "&View" + BEGIN + MENUITEM "&Refresh Now", ID_VIEW_REFRESH + POPUP "&Update Speed" + BEGIN + MENUITEM "&High", ID_VIEW_UPDATESPEED_HIGH + MENUITEM "&Normal", ID_VIEW_UPDATESPEED_NORMAL + , CHECKED + MENUITEM "&Low", ID_VIEW_UPDATESPEED_LOW + MENUITEM "&Paused", ID_VIEW_UPDATESPEED_PAUSED + + END + MENUITEM SEPARATOR + MENUITEM "Lar&ge Icons", ID_VIEW_LARGE + MENUITEM "S&mall Icons", ID_VIEW_SMALL + MENUITEM "&Details", ID_VIEW_DETAILS, CHECKED + MENUITEM "&Select Columns...", ID_VIEW_SELECTCOLUMNS + POPUP "&CPU History" + BEGIN + MENUITEM "&One Graph, All CPUs", ID_VIEW_CPUHISTORY_ONEGRAPHALL + + MENUITEM "One Graph &Per CPU", ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU + , CHECKED + END + MENUITEM "&Show Kernel Times", ID_VIEW_SHOWKERNELTIMES + END + POPUP "&Windows" + BEGIN + MENUITEM "Tile &Horizontally", ID_WINDOWS_TILEHORIZONTALLY + MENUITEM "Tile &Vertically", ID_WINDOWS_TILEVERTICALLY + MENUITEM "&Minimize", ID_WINDOWS_MINIMIZE + MENUITEM "Ma&ximize", ID_WINDOWS_MAXIMIZE + MENUITEM "&Cascade", ID_WINDOWS_CASCADE + MENUITEM "&Bring To Front", ID_WINDOWS_BRINGTOFRONT + END + POPUP "&Help" + BEGIN + MENUITEM "Task Manager &Help Topics", ID_HELP_TOPICS + MENUITEM SEPARATOR + MENUITEM "&About Task Manager", ID_HELP_ABOUT + END +END + +IDR_WINDOWSMENU MENU DISCARDABLE +BEGIN + MENUITEM "Tile &Horizontally", ID_WINDOWS_TILEHORIZONTALLY + MENUITEM "Tile &Vertically", ID_WINDOWS_TILEVERTICALLY + MENUITEM "&Minimize", ID_WINDOWS_MINIMIZE + MENUITEM "Ma&ximize", ID_WINDOWS_MAXIMIZE + MENUITEM "&Cascade", ID_WINDOWS_CASCADE + MENUITEM "&Bring To Front", ID_WINDOWS_BRINGTOFRONT +END + +IDR_APPLICATION_PAGE_CONTEXT1 MENU DISCARDABLE +BEGIN + POPUP "DUMMY" + BEGIN + MENUITEM "&New Task (Run...)", ID_FILE_NEW + MENUITEM SEPARATOR + MENUITEM "Lar&ge Icons", ID_VIEW_LARGE + MENUITEM "S&mall Icons", ID_VIEW_SMALL + MENUITEM "&Details", ID_VIEW_DETAILS, CHECKED + END +END + +IDR_APPLICATION_PAGE_CONTEXT2 MENU DISCARDABLE +BEGIN + POPUP "DUMMY" + BEGIN + MENUITEM "&Switch To", ID_APPLICATION_PAGE_SWITCHTO + MENUITEM "&Bring To Front", ID_WINDOWS_BRINGTOFRONT + MENUITEM SEPARATOR + MENUITEM "Tile &Horizontally", ID_WINDOWS_TILEHORIZONTALLY + MENUITEM "Tile &Vertically", ID_WINDOWS_TILEVERTICALLY + MENUITEM "&Minimize", ID_WINDOWS_MINIMIZE + MENUITEM "Ma&ximize", ID_WINDOWS_MAXIMIZE + MENUITEM "&Cascade", ID_WINDOWS_CASCADE + MENUITEM SEPARATOR + MENUITEM "&End Task", ID_APPLICATION_PAGE_ENDTASK + MENUITEM "&Go To Process", ID_APPLICATION_PAGE_GOTOPROCESS + + END +END + +IDR_TRAY_POPUP MENU DISCARDABLE +BEGIN + MENUITEM "&Restore", ID_RESTORE + MENUITEM "&Close", ID_FILE_EXIT + MENUITEM SEPARATOR + MENUITEM "&Always On Top", ID_OPTIONS_ALWAYSONTOP, CHECKED +END + +IDR_PROCESS_PAGE_CONTEXT MENU DISCARDABLE +BEGIN + POPUP "DUMMY" + BEGIN + MENUITEM "&End Process", ID_PROCESS_PAGE_ENDPROCESS + MENUITEM "End Process &Tree", ID_PROCESS_PAGE_ENDPROCESSTREE + + MENUITEM "&Debug", ID_PROCESS_PAGE_DEBUG + MENUITEM SEPARATOR + POPUP "Set &Priority" + BEGIN + MENUITEM "&Realtime", ID_PROCESS_PAGE_SETPRIORITY_REALTIME + + MENUITEM "&High", ID_PROCESS_PAGE_SETPRIORITY_HIGH + + MENUITEM "&AboveNormal", ID_PROCESS_PAGE_SETPRIORITY_ABOVENORMAL + + MENUITEM "&Normal", ID_PROCESS_PAGE_SETPRIORITY_NORMAL + + MENUITEM "&BelowNormal", ID_PROCESS_PAGE_SETPRIORITY_BELOWNORMAL + + MENUITEM "&Low", ID_PROCESS_PAGE_SETPRIORITY_LOW + + END + MENUITEM "Set &Affinity...", ID_PROCESS_PAGE_SETAFFINITY + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 259, 210 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +CAPTION "About Task Manager" +FONT 8, "Tahoma" +BEGIN + CONTROL "Task Manager v1.0\nCopyright (C) 1999 - 2001\nby Brian Palmer (brianp@reactos.org)", + IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,53,28, + 122,26 + DEFPUSHBUTTON "OK",IDOK,183,189,44,14,WS_GROUP + ICON IDI_TASKMANAGER,IDC_STATIC,19,30,20,20 + EDITTEXT IDC_LICENSE_EDIT,53,63,174,107,ES_MULTILINE | + ES_READONLY | WS_VSCROLL +END + +IDD_TASKMGR_DIALOG DIALOG DISCARDABLE 0, 0, 264, 246 +STYLE DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | + WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | + WS_THICKFRAME +CAPTION "Task Manager" +MENU IDR_TASKMANAGER +FONT 8, "Tahoma" +BEGIN + CONTROL "Tab1",IDC_TAB,"SysTabControl32",WS_TABSTOP,3,3,257,228 +END + +IDD_APPLICATION_PAGE DIALOG DISCARDABLE 0, 0, 247, 210 +STYLE DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN +FONT 8, "Tahoma" +BEGIN + CONTROL "List2",IDC_APPLIST,"SysListView32",LVS_REPORT | + LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,7,7,233,177 + PUSHBUTTON "&New Task...",IDC_NEWTASK,187,189,53,14 + PUSHBUTTON "&Switch To",IDC_SWITCHTO,131,189,53,14,WS_DISABLED + PUSHBUTTON "&End Task",IDC_ENDTASK,75,189,53,14,WS_DISABLED +END + +IDD_PROCESS_PAGE DIALOG DISCARDABLE 0, 0, 247, 210 +STYLE DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN +FONT 8, "Tahoma" +BEGIN + CONTROL "List2",IDC_PROCESSLIST,"SysListView32",LVS_REPORT | + LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_OWNERDATA | + WS_BORDER | WS_TABSTOP,7,7,233,177 + PUSHBUTTON "&End Process",IDC_ENDPROCESS,171,189,69,14 + CONTROL "&Show processes from all users",IDC_SHOWALLPROCESSES, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,191,111,10 +END + +IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 +STYLE DS_CONTROL | WS_CHILD +FONT 8, "Tahoma" +BEGIN + GROUPBOX "CPU Usage",IDC_CPU_USAGE_FRAME,5,5,60,54,WS_TABSTOP + GROUPBOX "MEM Usage",IDC_MEM_USAGE_FRAME,5,63,60,54 + GROUPBOX "Totals",IDC_TOTALS_FRAME,5,122,111,39 + GROUPBOX "Commit Charge (K)",IDC_COMMIT_CHARGE_FRAME,5,166,111,39 + GROUPBOX "Physical Memory (K)",IDC_PHYSICAL_MEMORY_FRAME,131,122, + 111,39 + GROUPBOX "Kernel Memory (K)",IDC_KERNEL_MEMORY_FRAME,131,166,111, + 39 + LTEXT "Handles",IDC_STATIC,12,131,27,8 + LTEXT "Threads",IDC_STATIC,12,140,27,8 + LTEXT "Processes",IDC_STATIC,12,149,34,8 + EDITTEXT IDC_TOTALS_HANDLE_COUNT,65,131,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_TOTALS_THREAD_COUNT,65,140,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_TOTALS_PROCESS_COUNT,65,149,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + LTEXT "Total",IDC_STATIC,12,175,27,8 + LTEXT "Limit",IDC_STATIC,12,184,15,8 + LTEXT "Peak",IDC_STATIC,12,193,34,8 + EDITTEXT IDC_COMMIT_CHARGE_TOTAL,65,174,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_COMMIT_CHARGE_LIMIT,65,184,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_COMMIT_CHARGE_PEAK,65,193,45,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + LTEXT "Total",IDC_STATIC,137,131,27,8 + LTEXT "Available",IDC_STATIC,137,140,30,8 + LTEXT "System Cache",IDC_STATIC,137,149,46,8 + EDITTEXT IDC_PHYSICAL_MEMORY_TOTAL,185,131,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_PHYSICAL_MEMORY_AVAILABLE,185,140,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_PHYSICAL_MEMORY_SYSTEM_CACHE,185,149,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + LTEXT "Total",IDC_STATIC,137,174,27,8 + LTEXT "Paged",IDC_STATIC,137,184,21,8 + LTEXT "Nonpaged",IDC_STATIC,137,193,34,8 + EDITTEXT IDC_KERNEL_MEMORY_TOTAL,185,174,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_KERNEL_MEMORY_PAGED,185,184,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + EDITTEXT IDC_KERNEL_MEMORY_NONPAGED,185,193,48,8,ES_RIGHT | + ES_READONLY | ES_NUMBER | NOT WS_BORDER + GROUPBOX "CPU Usage History",IDC_CPU_USAGE_HISTORY_FRAME,74,5,168, + 54 + GROUPBOX "Memory Usage History",IDC_MEMORY_USAGE_HISTORY_FRAME,74, + 63,168,54 + PUSHBUTTON "CPU Usage Display",IDC_CPU_USAGE_GRAPH,12,17,47,37,0, + WS_EX_CLIENTEDGE + PUSHBUTTON "MEM Usage Display",IDC_MEM_USAGE_GRAPH,12,75,47,37,0, + WS_EX_CLIENTEDGE + PUSHBUTTON "MEM Usage History",IDC_MEM_USAGE_HISTORY_GRAPH,81,75, + 153,37,0,WS_EX_CLIENTEDGE +END + +IDD_AFFINITY_DIALOG DIALOG DISCARDABLE 0, 0, 231, 154 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Processor Affinity" +FONT 8, "Tahoma" +BEGIN + DEFPUSHBUTTON "OK",IDOK,120,133,50,14 + PUSHBUTTON "Cancel",IDCANCEL,174,133,50,14 + LTEXT "The Processor Affinity setting controls which CPUs the process will be allowed to execute on.", + IDC_STATIC,5,5,220,16 + CONTROL "CPU 0",IDC_CPU0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 11,28,37,10 + CONTROL "CPU 1",IDC_CPU1,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,41,37,10 + CONTROL "CPU 2",IDC_CPU2,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,54,37,10 + CONTROL "CPU 3",IDC_CPU3,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,67,37,10 + CONTROL "CPU 4",IDC_CPU4,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,80,37,10 + CONTROL "CPU 5",IDC_CPU5,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,93,37,10 + CONTROL "CPU 6",IDC_CPU6,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,106,37,10 + CONTROL "CPU 7",IDC_CPU7,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,11,119,37,10 + CONTROL "CPU 8",IDC_CPU8,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,61,28,37,10 + CONTROL "CPU 9",IDC_CPU9,"Button",BS_AUTOCHECKBOX | WS_DISABLED | + WS_TABSTOP,61,41,37,10 + CONTROL "CPU 10",IDC_CPU10,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,54,41,10 + CONTROL "CPU 11",IDC_CPU11,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,67,41,10 + CONTROL "CPU 12",IDC_CPU12,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,80,41,10 + CONTROL "CPU 13",IDC_CPU13,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,93,41,10 + CONTROL "CPU 14",IDC_CPU14,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,106,41,10 + CONTROL "CPU 15",IDC_CPU15,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,61,119,41,10 + CONTROL "CPU 16",IDC_CPU16,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,28,41,10 + CONTROL "CPU 17",IDC_CPU17,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,41,41,10 + CONTROL "CPU 18",IDC_CPU18,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,54,41,10 + CONTROL "CPU 19",IDC_CPU19,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,67,41,10 + CONTROL "CPU 20",IDC_CPU20,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,80,41,10 + CONTROL "CPU 21",IDC_CPU21,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,93,41,10 + CONTROL "CPU 22",IDC_CPU22,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,106,41,10 + CONTROL "CPU 23",IDC_CPU23,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,116,119,41,10 + CONTROL "CPU 24",IDC_CPU24,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,28,41,10 + CONTROL "CPU 25",IDC_CPU25,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,41,41,10 + CONTROL "CPU 26",IDC_CPU26,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,54,41,10 + CONTROL "CPU 27",IDC_CPU27,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,67,41,10 + CONTROL "CPU 28",IDC_CPU28,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,80,41,10 + CONTROL "CPU 29",IDC_CPU29,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,93,41,10 + CONTROL "CPU 30",IDC_CPU30,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,106,41,10 + CONTROL "CPU 31",IDC_CPU31,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,175,119,41,10 +END + +IDD_COLUMNS_DIALOG DIALOG DISCARDABLE 0, 0, 195, 199 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Select Columns" +FONT 8, "Tahoma" +BEGIN + DEFPUSHBUTTON "OK",IDOK,84,178,50,14 + PUSHBUTTON "Cancel",IDCANCEL,138,178,50,14 + LTEXT "Select the columns that will appear on the Process page of the Task Manager.", + IDC_STATIC,7,7,181,17 + CONTROL "&Image Name",IDC_IMAGENAME,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,7,28,56,10 + CONTROL "&PID (Process Identifier)",IDC_PID,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,39,88,10 + CONTROL "&CPU Usage",IDC_CPUUSAGE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,50,53,10 + CONTROL "CPU Tim&e",IDC_CPUTIME,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,61,48,10 + CONTROL "&Memory Usage",IDC_MEMORYUSAGE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,72,63,10 + CONTROL "Memory Usage &Delta",IDC_MEMORYUSAGEDELTA,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,83,82,10 + CONTROL "Pea&k Memory Usage",IDC_PEAKMEMORYUSAGE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,94,82,10 + CONTROL "Page &Faults",IDC_PAGEFAULTS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,105,53,10 + CONTROL "&USER Objects",IDC_USEROBJECTS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,116,62,10 + CONTROL "I/O Reads",IDC_IOREADS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,127,49,10 + CONTROL "I/O Read Bytes",IDC_IOREADBYTES,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,7,138,65,10 + CONTROL "&Session ID",IDC_SESSIONID,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,149,50,10 + CONTROL "User &Name",IDC_USERNAME,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,7,160,51,10 + CONTROL "Page F&aults Delta",IDC_PAGEFAULTSDELTA,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,28,72,10 + CONTROL "&Virtual Memory Size",IDC_VIRTUALMEMORYSIZE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,39,77,10 + CONTROL "Pa&ged Pool",IDC_PAGEDPOOL,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,50,53,10 + CONTROL "N&on-paged Pool",IDC_NONPAGEDPOOL,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,61,67,10 + CONTROL "Base P&riority",IDC_BASEPRIORITY,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,72,55,10 + CONTROL "&Handle Count",IDC_HANDLECOUNT,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,83,59,10 + CONTROL "&Thread Count",IDC_THREADCOUNT,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,94,59,10 + CONTROL "GDI Objects",IDC_GDIOBJECTS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,105,55,10 + CONTROL "I/O Writes",IDC_IOWRITES,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,116,49,10 + CONTROL "I/O Write Bytes",IDC_IOWRITEBYTES,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,127,65,10 + CONTROL "I/O Other",IDC_IOOTHER,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,107,138,46,10 + CONTROL "I/O Other Bytes",IDC_IOOTHERBYTES,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,149,65,10 +END + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""resource.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_ABOUTBOX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 252 + TOPMARGIN, 7 + BOTTOMMARGIN, 203 + END + + IDD_TASKMGR_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 3 + RIGHTMARGIN, 260 + TOPMARGIN, 3 + BOTTOMMARGIN, 231 + END + + IDD_APPLICATION_PAGE, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 240 + TOPMARGIN, 7 + BOTTOMMARGIN, 203 + END + + IDD_PROCESS_PAGE, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 240 + TOPMARGIN, 7 + BOTTOMMARGIN, 203 + END + + IDD_PERFORMANCE_PAGE, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 242 + VERTGUIDE, 12 + VERTGUIDE, 65 + VERTGUIDE, 110 + TOPMARGIN, 5 + BOTTOMMARGIN, 205 + END + + IDD_AFFINITY_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 224 + VERTGUIDE, 11 + VERTGUIDE, 61 + VERTGUIDE, 116 + VERTGUIDE, 175 + TOPMARGIN, 7 + BOTTOMMARGIN, 147 + HORZGUIDE, 28 + HORZGUIDE, 38 + HORZGUIDE, 51 + HORZGUIDE, 64 + HORZGUIDE, 77 + HORZGUIDE, 90 + HORZGUIDE, 103 + HORZGUIDE, 116 + HORZGUIDE, 129 + END + + IDD_COLUMNS_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 188 + VERTGUIDE, 107 + TOPMARGIN, 7 + BOTTOMMARGIN, 192 + HORZGUIDE, 28 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_TASKMANAGER ICON DISCARDABLE "taskmgr.ico" +IDI_WINDOW ICON DISCARDABLE "window.ico" +IDI_WINDOWSM ICON DISCARDABLE "windowsm.ico" + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Brian Palmer\0" + VALUE "FileDescription", "ReactOS Task Manager by Brian Palmer\0" + VALUE "FileVersion", "1.0.0.1\0" + VALUE "InternalName", "taskmgr\0" + VALUE "LegalCopyright", "Copyright © Brian Palmer 2000\0" + VALUE "OriginalFilename", "taskmgr.exe\0" + VALUE "ProductName", "ReactOS Task Manager by Brian Palmer\0" + VALUE "ProductVersion", "1.0.0.1\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_TRAYMASK BITMAP DISCARDABLE "traymask.bmp" +IDB_TRAYICON BITMAP DISCARDABLE "trayicon.bmp" +IDB_FONT BITMAP DISCARDABLE "font.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_APP_TITLE "Task Manager" + IDC_TASKMGR "Task Manager" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_FILE_NEW "Runs a new program" + ID_OPTIONS_ALWAYSONTOP "Task Manager remains in front of all other windows unless minimized" + ID_OPTIONS_MINIMIZEONUSE + "Task Manager is minimized when a SwitchTo operation is performed" + ID_OPTIONS_HIDEWHENMINIMIZED "Hide the Task Manager when it is minimized" + ID_VIEW_REFRESH "Force Task Manager to update now, regardless of Update Speed setting" + ID_VIEW_LARGE "Displays tasks by using large icons" + ID_VIEW_SMALL "Displays tasks by using small icons" + ID_VIEW_DETAILS "Displays information about each task" + ID_VIEW_UPDATESPEED_HIGH "Updates the display twice per second" + ID_VIEW_UPDATESPEED_NORMAL "Updates the display every two seconds" + ID_VIEW_UPDATESPEED_LOW "Updates the display every four seconds" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_VIEW_UPDATESPEED_PAUSED "Does not automatically update" + ID_WINDOWS_TILEHORIZONTALLY + "Tiles the windows horizontally on the desktop" + ID_WINDOWS_TILEVERTICALLY "Tiles the windows vertically on the desktop" + ID_WINDOWS_MINIMIZE "Minimizes the windows" + ID_WINDOWS_MAXIMIZE "Maximizes the windows" + ID_WINDOWS_CASCADE "Cascades the windows diagonally on the desktop" + ID_WINDOWS_BRINGTOFRONT "Brings the window front, but does not switch to it" + ID_HELP_TOPICS "Displays Task Manager help topics" + ID_HELP_ABOUT "Displays program information, version number, and copyright" + ID_FILE_EXIT "Exits the Task Manager application" + ID_OPTIONS_SHOW16BITTASKS + "Shows 16-bit tasks under the associated ntvdm.exe" + ID_VIEW_SELECTCOLUMNS "Select which columns will be visible on the Process page" + ID_VIEW_SHOWKERNELTIMES "Displays kernel time in the performance graphs" + ID_VIEW_CPUHISTORY_ONEGRAPHALL + "A single history graph shows total CPU usage" + ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU "Each CPU has its own history graph" + ID_APPLICATION_PAGE_SWITCHTO + "Brings a task to the foreground, switch focus to that task" +END + +STRINGTABLE DISCARDABLE +BEGIN + ID_ENDTASK "Tells the selected tasks to close" + ID_GOTOPROCESS "Switches the focus to the process of the selected task" + ID_RESTORE "Restores the Task Manager from its hidden state" + ID_PROCESS_PAGE_ENDPROCESS "Removes the process from the system" + ID_PROCESS_PAGE_ENDPROCESSTREE + "Removes this process and all descendants from the system" + ID_PROCESS_PAGE_DEBUG "Attaches the debugger to this process" + ID_PROCESS_PAGE_SETAFFINITY + "Controls which processors the process will be allowed to run on" + ID_PROCESS_PAGE_SETPRIORITY_REALTIME + "Sets process to the REALTIME priority class" + ID_PROCESS_PAGE_SETPRIORITY_HIGH "Sets process to the HIGH priority class" + ID_PROCESS_PAGE_SETPRIORITY_ABOVENORMAL + "Sets process to the ABOVE NORMAL priority class" + ID_PROCESS_PAGE_SETPRIORITY_NORMAL + "Sets process to the NORMAL priority class" + ID_PROCESS_PAGE_SETPRIORITY_BELOWNORMAL + "Sets process to the BELOW NORMAL priority class" + ID_PROCESS_PAGE_SETPRIORITY_LOW "Sets process to the LOW priority class" + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA." +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED +