mirror of
https://github.com/reactos/reactos.git
synced 2025-05-07 02:41:22 +00:00
Patch by Michael Fritscher <michael@fritscher.net>
- support for more/less lines - support page up/down and pos1/end keys - added numeration - added german translation svn path=/trunk/; revision=19407
This commit is contained in:
parent
d631c67e57
commit
44d01ccfdb
6 changed files with 202 additions and 108 deletions
32
rosapps/sysutils/ctm/De.rc
Normal file
32
rosapps/sysutils/ctm/De.rc
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
// German (Germany) resources
|
||||||
|
|
||||||
|
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
|
||||||
|
|
||||||
|
STRINGTABLE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_APP_TITLE "Console TaskManager v0.1 von Aleksey Bragin <aleksey@studiocerebral.com>"
|
||||||
|
|
||||||
|
IDS_COLUMN_NUMBER "# "
|
||||||
|
IDS_COLUMN_IMAGENAME "Dateiname "
|
||||||
|
IDS_COLUMN_PID "PID "
|
||||||
|
IDS_COLUMN_CPU "CPU"
|
||||||
|
IDS_COLUMN_MEM "Speicher"
|
||||||
|
IDS_COLUMN_MEM_UNIT "KB"
|
||||||
|
IDS_COLUMN_PF "Seitenfehler"
|
||||||
|
|
||||||
|
IDS_IDLE_PROCESS "Leerlaufprozess"
|
||||||
|
IDS_YES "J"
|
||||||
|
IDS_NO "N"
|
||||||
|
|
||||||
|
IDS_MENU "Tasten: q - beenden, k - Prozess beenden"
|
||||||
|
IDS_MENU_QUIT "Q"
|
||||||
|
IDS_MENU_KILL_PROCESS "K"
|
||||||
|
|
||||||
|
IDS_KILL_PROCESS "Sind Sie sicher diesen prozess beendenzu wollen (j/n)"
|
||||||
|
IDS_KILL_PROCESS_ERR1 "Fehler beim Beenden des Prozesses aufgetreten..."
|
||||||
|
IDS_KILL_PROCESS_ERR2 "Fehler beim Beenden des Prozesses %d aufgetreten (OpenProcess unmöglich)"
|
||||||
|
|
||||||
|
IDS_CTM_GENERAL_ERR1 "ctm: Kann die Konsole nicht verwenden."
|
||||||
|
IDS_CTM_GENERAL_ERR2 "ctm: Kann GetConsoleMode() für die Eingabekonsole nicht verwenden."
|
||||||
|
IDS_CTM_GENERAL_ERR3 "ctm: Kann GetConsoleMode() für die Ausgabekonsole nicht verwenden."
|
||||||
|
END
|
|
@ -6,11 +6,12 @@ STRINGTABLE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APP_TITLE "Console TaskManager v0.1 by Aleksey Bragin <aleksey@studiocerebral.com>"
|
IDS_APP_TITLE "Console TaskManager v0.1 by Aleksey Bragin <aleksey@studiocerebral.com>"
|
||||||
|
|
||||||
|
IDS_COLUMN_NUMBER "# "
|
||||||
IDS_COLUMN_IMAGENAME "Image name "
|
IDS_COLUMN_IMAGENAME "Image name "
|
||||||
IDS_COLUMN_PID "PID "
|
IDS_COLUMN_PID "PID "
|
||||||
IDS_COLUMN_CPU "CPU"
|
IDS_COLUMN_CPU "CPU"
|
||||||
IDS_COLUMN_MEM "Mem Usage"
|
IDS_COLUMN_MEM "Mem Usage"
|
||||||
IDS_COLUMN_MEM_UNIT "Kb"
|
IDS_COLUMN_MEM_UNIT "KB"
|
||||||
IDS_COLUMN_PF "Page Faults"
|
IDS_COLUMN_PF "Page Faults"
|
||||||
|
|
||||||
IDS_IDLE_PROCESS "System Idle Process"
|
IDS_IDLE_PROCESS "System Idle Process"
|
||||||
|
@ -23,7 +24,7 @@ BEGIN
|
||||||
|
|
||||||
IDS_KILL_PROCESS "Are you sure you want to kill this process? (y/n)"
|
IDS_KILL_PROCESS "Are you sure you want to kill this process? (y/n)"
|
||||||
IDS_KILL_PROCESS_ERR1 "Unable to terminate this process..."
|
IDS_KILL_PROCESS_ERR1 "Unable to terminate this process..."
|
||||||
IDS_KILL_PROCESS_ERR2 "Unable to terminate process %3d (unable to OpenProcess)"
|
IDS_KILL_PROCESS_ERR2 "Unable to terminate process %d (unable to OpenProcess)"
|
||||||
|
|
||||||
IDS_CTM_GENERAL_ERR1 "ctm: can't use console."
|
IDS_CTM_GENERAL_ERR1 "ctm: can't use console."
|
||||||
IDS_CTM_GENERAL_ERR2 "ctm: can't GetConsoleMode() for input console."
|
IDS_CTM_GENERAL_ERR2 "ctm: can't GetConsoleMode() for input console."
|
||||||
|
|
|
@ -6,11 +6,12 @@ STRINGTABLE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APP_TITLE "Console TaskManager v0.1 par Aleksey Bragin <aleksey@studiocerebral.com>"
|
IDS_APP_TITLE "Console TaskManager v0.1 par Aleksey Bragin <aleksey@studiocerebral.com>"
|
||||||
|
|
||||||
IDS_COLUMN_IMAGENAME "Processus "
|
IDS_COLUMN_NUMBER "# "
|
||||||
|
IDS_COLUMN_IMAGENAME "Image name "
|
||||||
IDS_COLUMN_PID "PID "
|
IDS_COLUMN_PID "PID "
|
||||||
IDS_COLUMN_CPU "CPU"
|
IDS_COLUMN_CPU "CPU"
|
||||||
IDS_COLUMN_MEM "Util. mém"
|
IDS_COLUMN_MEM "Util. mém"
|
||||||
IDS_COLUMN_MEM_UNIT "Ko"
|
IDS_COLUMN_MEM_UNIT "KO"
|
||||||
IDS_COLUMN_PF "Défauts de page"
|
IDS_COLUMN_PF "Défauts de page"
|
||||||
|
|
||||||
IDS_IDLE_PROCESS "Processus inactif du système"
|
IDS_IDLE_PROCESS "Processus inactif du système"
|
||||||
|
@ -23,7 +24,7 @@ BEGIN
|
||||||
|
|
||||||
IDS_KILL_PROCESS "Etes-vous sûr de vouloir tuer ce processus (o/n) ?"
|
IDS_KILL_PROCESS "Etes-vous sûr de vouloir tuer ce processus (o/n) ?"
|
||||||
IDS_KILL_PROCESS_ERR1 "Impossible de terminer ce processus..."
|
IDS_KILL_PROCESS_ERR1 "Impossible de terminer ce processus..."
|
||||||
IDS_KILL_PROCESS_ERR2 "Impossible de terminer le processus %3d (erreur lors de OpenProcess)"
|
IDS_KILL_PROCESS_ERR2 "Impossible de terminer le processus %d (erreur lors de OpenProcess)"
|
||||||
|
|
||||||
IDS_CTM_GENERAL_ERR1 "ctm: impossible d'utiliser la console."
|
IDS_CTM_GENERAL_ERR1 "ctm: impossible d'utiliser la console."
|
||||||
IDS_CTM_GENERAL_ERR2 "ctm: impossible de récupérer les paramètres de la console d'entrée."
|
IDS_CTM_GENERAL_ERR2 "ctm: impossible de récupérer les paramètres de la console d'entrée."
|
||||||
|
|
|
@ -50,7 +50,6 @@
|
||||||
#include "ctm.h"
|
#include "ctm.h"
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
#define MAX_PROC 17
|
|
||||||
#define TIMES
|
#define TIMES
|
||||||
|
|
||||||
HANDLE hStdin;
|
HANDLE hStdin;
|
||||||
|
@ -73,7 +72,8 @@ TCHAR lpEmpty[80];
|
||||||
TCHAR KEY_QUIT, KEY_KILL;
|
TCHAR KEY_QUIT, KEY_KILL;
|
||||||
TCHAR KEY_YES, KEY_NO;
|
TCHAR KEY_YES, KEY_NO;
|
||||||
|
|
||||||
const int ProcPerScreen = 17; // 17 processess are displayed on one page
|
int ProcPerScreen = 17; // 17 processess are displayed on one page
|
||||||
|
int ScreenLines=25;
|
||||||
ULONG ProcessCountOld = 0;
|
ULONG ProcessCountOld = 0;
|
||||||
ULONG ProcessCount = 0;
|
ULONG ProcessCount = 0;
|
||||||
|
|
||||||
|
@ -92,6 +92,7 @@ int scrolled=0; // offset from which process start showing
|
||||||
int first = 0; // first time in DisplayScreen
|
int first = 0; // first time in DisplayScreen
|
||||||
SYSTEM_BASIC_INFORMATION SystemBasicInfo;
|
SYSTEM_BASIC_INFORMATION SystemBasicInfo;
|
||||||
|
|
||||||
|
CONSOLE_SCREEN_BUFFER_INFO screenBufferInfo;
|
||||||
#define NEW_CONSOLE
|
#define NEW_CONSOLE
|
||||||
|
|
||||||
// Functions that are needed by epsapi
|
// Functions that are needed by epsapi
|
||||||
|
@ -138,32 +139,36 @@ void RestoreConsole()
|
||||||
void DisplayScreen()
|
void DisplayScreen()
|
||||||
{
|
{
|
||||||
COORD pos;
|
COORD pos;
|
||||||
|
COORD size;
|
||||||
TCHAR lpStr[80];
|
TCHAR lpStr[80];
|
||||||
DWORD numChars;
|
DWORD numChars;
|
||||||
int lines;
|
int lines;
|
||||||
int idx;
|
int idx;
|
||||||
|
GetConsoleScreenBufferInfo(hStdout,&screenBufferInfo);
|
||||||
|
size=screenBufferInfo.dwSize;
|
||||||
|
ScreenLines=size.Y;
|
||||||
|
ProcPerScreen = ScreenLines-7;
|
||||||
if (first == 0)
|
if (first == 0)
|
||||||
{
|
{
|
||||||
// Header
|
// Header
|
||||||
pos.X = 2; pos.Y = 2;
|
pos.X = 1; pos.Y = 1;
|
||||||
WriteConsoleOutputCharacter(hStdout, lpTitle, _tcslen(lpTitle), pos, &numChars);
|
WriteConsoleOutputCharacter(hStdout, lpTitle, _tcslen(lpTitle), pos, &numChars);
|
||||||
|
|
||||||
pos.X = 2; pos.Y = 3;
|
pos.X = 1; pos.Y = 2;
|
||||||
WriteConsoleOutputCharacter(hStdout, lpSeparator, _tcslen(lpSeparator), pos, &numChars);
|
WriteConsoleOutputCharacter(hStdout, lpSeparator, _tcslen(lpSeparator), pos, &numChars);
|
||||||
|
|
||||||
pos.X = 2; pos.Y = 4;
|
pos.X = 1; pos.Y = 3;
|
||||||
WriteConsoleOutputCharacter(hStdout, lpHeader, _tcslen(lpHeader), pos, &numChars);
|
WriteConsoleOutputCharacter(hStdout, lpHeader, _tcslen(lpHeader), pos, &numChars);
|
||||||
|
|
||||||
pos.X = 2; pos.Y = 5;
|
pos.X = 1; pos.Y = 4;
|
||||||
WriteConsoleOutputCharacter(hStdout, lpSeparator, _tcslen(lpSeparator), pos, &numChars);
|
WriteConsoleOutputCharacter(hStdout, lpSeparator, _tcslen(lpSeparator), pos, &numChars);
|
||||||
|
|
||||||
// Footer
|
// Footer
|
||||||
pos.X = 2; pos.Y = ProcPerScreen+6;
|
pos.X = 1; pos.Y = ScreenLines-2;
|
||||||
WriteConsoleOutputCharacter(hStdout, lpSeparator, _tcslen(lpSeparator), pos, &numChars);
|
WriteConsoleOutputCharacter(hStdout, lpSeparator, _tcslen(lpSeparator), pos, &numChars);
|
||||||
|
|
||||||
// Menu
|
// Menu
|
||||||
pos.X = 2; pos.Y = ProcPerScreen+7;
|
pos.X = 1; pos.Y = ScreenLines-1;
|
||||||
WriteConsoleOutputCharacter(hStdout, lpEmpty, _tcslen(lpEmpty), pos, &numChars);
|
WriteConsoleOutputCharacter(hStdout, lpEmpty, _tcslen(lpEmpty), pos, &numChars);
|
||||||
WriteConsoleOutputCharacter(hStdout, lpMenu, _tcslen(lpMenu), pos, &numChars);
|
WriteConsoleOutputCharacter(hStdout, lpMenu, _tcslen(lpMenu), pos, &numChars);
|
||||||
|
|
||||||
|
@ -172,11 +177,12 @@ void DisplayScreen()
|
||||||
|
|
||||||
// Processess
|
// Processess
|
||||||
lines = ProcessCount;
|
lines = ProcessCount;
|
||||||
if (lines > MAX_PROC)
|
if (lines > ProcPerScreen)
|
||||||
lines = MAX_PROC;
|
lines = ProcPerScreen;
|
||||||
for (idx=0; idx<MAX_PROC; idx++)
|
for (idx=0; idx<ProcPerScreen; idx++)
|
||||||
{
|
{
|
||||||
int len, i;
|
int len, i;
|
||||||
|
TCHAR lpNumber[5];
|
||||||
TCHAR lpPid[8];
|
TCHAR lpPid[8];
|
||||||
TCHAR lpCpu[6];
|
TCHAR lpCpu[6];
|
||||||
TCHAR lpMemUsg[12];
|
TCHAR lpMemUsg[12];
|
||||||
|
@ -189,6 +195,11 @@ void DisplayScreen()
|
||||||
// data
|
// data
|
||||||
if (idx < lines && scrolled + idx < ProcessCount)
|
if (idx < lines && scrolled + idx < ProcessCount)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// number
|
||||||
|
_stprintf(lpNumber, _T("%3d"), idx+scrolled);
|
||||||
|
_tcsncpy(&lpStr[2], lpNumber, 3);
|
||||||
|
|
||||||
// image name
|
// image name
|
||||||
#ifdef _UNICODE
|
#ifdef _UNICODE
|
||||||
len = wcslen(pPerfData[scrolled+idx].ImageName);
|
len = wcslen(pPerfData[scrolled+idx].ImageName);
|
||||||
|
@ -197,45 +208,45 @@ void DisplayScreen()
|
||||||
imgName, MAX_PATH, NULL, NULL);
|
imgName, MAX_PATH, NULL, NULL);
|
||||||
len = strlen(imgName);
|
len = strlen(imgName);
|
||||||
#endif
|
#endif
|
||||||
if (len > columnRightPositions[0])
|
if (len > columnRightPositions[1])
|
||||||
{
|
{
|
||||||
len = columnRightPositions[0];
|
len = columnRightPositions[1];
|
||||||
}
|
}
|
||||||
#ifdef _UNICODE
|
#ifdef _UNICODE
|
||||||
wcsncpy(&lpStr[2], pPerfData[scrolled+idx].ImageName, len);
|
wcsncpy(&lpStr[columnRightPositions[0]+3], pPerfData[scrolled+idx].ImageName, len);
|
||||||
#else
|
#else
|
||||||
strncpy(&lpStr[2], imgName, len);
|
strncpy(&lpStr[columnRightPositions[0]+3], imgName, len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// PID
|
// PID
|
||||||
_stprintf(lpPid, _T("%6ld"), pPerfData[scrolled+idx].ProcessId);
|
_stprintf(lpPid, _T("%6ld"), pPerfData[scrolled+idx].ProcessId);
|
||||||
_tcsncpy(&lpStr[columnRightPositions[1] - 6], lpPid, 6);
|
_tcsncpy(&lpStr[columnRightPositions[2] - 6], lpPid, 6);
|
||||||
|
|
||||||
#ifdef TIMES
|
#ifdef TIMES
|
||||||
// CPU
|
// CPU
|
||||||
_stprintf(lpCpu, _T("%3d%%"), pPerfData[scrolled+idx].CPUUsage);
|
_stprintf(lpCpu, _T("%3d%%"), pPerfData[scrolled+idx].CPUUsage);
|
||||||
_tcsncpy(&lpStr[columnRightPositions[2] - 4], lpCpu, 4);
|
_tcsncpy(&lpStr[columnRightPositions[3] - 4], lpCpu, 4);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Mem usage
|
// Mem usage
|
||||||
_stprintf(lpMemUsg, _T("%6ld %s"), pPerfData[scrolled+idx].WorkingSetSizeBytes / 1024, lpMemUnit);
|
_stprintf(lpMemUsg, _T("%6ld %s"), pPerfData[scrolled+idx].WorkingSetSizeBytes / 1024, lpMemUnit);
|
||||||
_tcsncpy(&lpStr[columnRightPositions[3] - 9], lpMemUsg, 9);
|
_tcsncpy(&lpStr[columnRightPositions[4] - 9], lpMemUsg, 9);
|
||||||
|
|
||||||
// Page Fault
|
// Page Fault
|
||||||
_stprintf(lpPageFaults, _T("%12ld"), pPerfData[scrolled+idx].PageFaultCount);
|
_stprintf(lpPageFaults, _T("%12ld"), pPerfData[scrolled+idx].PageFaultCount);
|
||||||
_tcsncpy(&lpStr[columnRightPositions[4] - 12], lpPageFaults, 12);
|
_tcsncpy(&lpStr[columnRightPositions[5] - 12], lpPageFaults, 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
// columns
|
// columns
|
||||||
lpStr[0] = _T(' ');
|
lpStr[0] = _T(' ');
|
||||||
lpStr[1] = _T('|');
|
lpStr[1] = _T('|');
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 6; i++)
|
||||||
lpStr[columnRightPositions[i] + 1] = _T('|');
|
lpStr[columnRightPositions[i] + 1] = _T('|');
|
||||||
pos.X = 1; pos.Y = 6+idx;
|
pos.X = 0; pos.Y = 5+idx;
|
||||||
WriteConsoleOutputCharacter(hStdout, lpStr, 74, pos, &numChars);
|
WriteConsoleOutputCharacter(hStdout, lpStr, 80, pos, &numChars);
|
||||||
|
|
||||||
// Attributes now...
|
// Attributes now...
|
||||||
pos.X = 3; pos.Y = 6+idx;
|
pos.X = columnRightPositions[0] + 1; pos.Y = 5+idx;
|
||||||
if (selection == idx)
|
if (selection == idx)
|
||||||
{
|
{
|
||||||
wColor = BACKGROUND_GREEN |
|
wColor = BACKGROUND_GREEN |
|
||||||
|
@ -254,7 +265,7 @@ void DisplayScreen()
|
||||||
FillConsoleOutputAttribute(
|
FillConsoleOutputAttribute(
|
||||||
hStdout, // screen buffer handle
|
hStdout, // screen buffer handle
|
||||||
wColor, // color to fill with
|
wColor, // color to fill with
|
||||||
columnRightPositions[0] - 1, // number of cells to fill
|
columnRightPositions[1] - 4, // number of cells to fill
|
||||||
pos, // first cell to write to
|
pos, // first cell to write to
|
||||||
&numChars); // actual number written
|
&numChars); // actual number written
|
||||||
}
|
}
|
||||||
|
@ -279,7 +290,7 @@ int ProcessKeys(int numEvents)
|
||||||
COORD pos;
|
COORD pos;
|
||||||
TCHAR lpStr[100];
|
TCHAR lpStr[100];
|
||||||
|
|
||||||
pos.X = 2; pos.Y = 24;
|
pos.X = 1; pos.Y =ScreenLines-1;
|
||||||
if (LoadString(hInst, IDS_KILL_PROCESS, lpStr, 100))
|
if (LoadString(hInst, IDS_KILL_PROCESS, lpStr, 100))
|
||||||
WriteConsoleOutputCharacter(hStdout, lpStr, _tcslen(lpStr), pos, &numChars);
|
WriteConsoleOutputCharacter(hStdout, lpStr, _tcslen(lpStr), pos, &numChars);
|
||||||
|
|
||||||
|
@ -331,12 +342,53 @@ int ProcessKeys(int numEvents)
|
||||||
}
|
}
|
||||||
else if (key == VK_DOWN)
|
else if (key == VK_DOWN)
|
||||||
{
|
{
|
||||||
if ((selection < MAX_PROC-1) && (selection < ProcessCount-1))
|
if ((selection < ProcPerScreen-1) && (selection < ProcessCount-1))
|
||||||
selection++;
|
selection++;
|
||||||
else if ((selection == MAX_PROC-1) && (selection+scrolled < ProcessCount-1))
|
else if ((selection == ProcPerScreen-1) && (selection+scrolled < ProcessCount-1))
|
||||||
scrolled++;
|
scrolled++;
|
||||||
}
|
}
|
||||||
|
else if (key == VK_PRIOR)
|
||||||
|
{
|
||||||
|
if (scrolled>ProcPerScreen-1)
|
||||||
|
scrolled-=ProcPerScreen-1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scrolled=0; //First
|
||||||
|
selection=0;
|
||||||
|
}
|
||||||
|
//selection=0;
|
||||||
|
}
|
||||||
|
else if (key == VK_NEXT)
|
||||||
|
{
|
||||||
|
scrolled+=ProcPerScreen-1;
|
||||||
|
if (scrolled>ProcessCount-ProcPerScreen)
|
||||||
|
{
|
||||||
|
scrolled=ProcessCount-ProcPerScreen; //End
|
||||||
|
selection=ProcPerScreen-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//selection=ProcPerScreen-1;
|
||||||
|
if (ProcessCount<=ProcPerScreen) //If there are less process than fits on the screen
|
||||||
|
{
|
||||||
|
scrolled=0;
|
||||||
|
selection=(ProcessCount%ProcPerScreen)-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (key == VK_HOME)
|
||||||
|
{
|
||||||
|
selection=0;
|
||||||
|
scrolled=0;
|
||||||
|
}
|
||||||
|
else if (key == VK_END)
|
||||||
|
{
|
||||||
|
selection=ProcPerScreen-1;
|
||||||
|
scrolled=ProcessCount-ProcPerScreen;
|
||||||
|
if (ProcessCount<=ProcPerScreen) //If there are less process than fits on the screen
|
||||||
|
{
|
||||||
|
scrolled=0;
|
||||||
|
selection=(ProcessCount%ProcPerScreen)-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -561,43 +613,49 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
/* Initialize global variables */
|
/* Initialize global variables */
|
||||||
hInst = 0 /* FIXME: which value? [used with LoadString(hInst, ..., ..., ...)] */;
|
hInst = 0 /* FIXME: which value? [used with LoadString(hInst, ..., ..., ...)] */;
|
||||||
if (LoadString(hInst, IDS_COLUMN_IMAGENAME, lpStr, 80))
|
|
||||||
|
if (LoadString(hInst, IDS_COLUMN_NUMBER, lpStr, 80))
|
||||||
{
|
{
|
||||||
columnRightPositions[0] = _tcslen(lpStr);
|
columnRightPositions[0] = _tcslen(lpStr) + 3;
|
||||||
_tcsncpy(&lpHeader[2], lpStr, _tcslen(lpStr));
|
_tcsncpy(&lpHeader[2], lpStr, _tcslen(lpStr));
|
||||||
}
|
}
|
||||||
if (LoadString(hInst, IDS_COLUMN_PID, lpStr, 80))
|
if (LoadString(hInst, IDS_COLUMN_IMAGENAME, lpStr, 80))
|
||||||
{
|
{
|
||||||
columnRightPositions[1] = columnRightPositions[0] + _tcslen(lpStr) + 3;
|
columnRightPositions[1] = columnRightPositions[0] + _tcslen(lpStr) + 3;
|
||||||
_tcsncpy(&lpHeader[columnRightPositions[0] + 2], lpStr, _tcslen(lpStr));
|
_tcsncpy(&lpHeader[columnRightPositions[0] + 2], lpStr, _tcslen(lpStr));
|
||||||
}
|
}
|
||||||
if (LoadString(hInst, IDS_COLUMN_CPU, lpStr, 80))
|
if (LoadString(hInst, IDS_COLUMN_PID, lpStr, 80))
|
||||||
{
|
{
|
||||||
columnRightPositions[2] = columnRightPositions[1] + _tcslen(lpStr) + 3;
|
columnRightPositions[2] = columnRightPositions[1] + _tcslen(lpStr) + 3;
|
||||||
_tcsncpy(&lpHeader[columnRightPositions[1] + 2], lpStr, _tcslen(lpStr));
|
_tcsncpy(&lpHeader[columnRightPositions[1] + 2], lpStr, _tcslen(lpStr));
|
||||||
}
|
}
|
||||||
if (LoadString(hInst, IDS_COLUMN_MEM, lpStr, 80))
|
if (LoadString(hInst, IDS_COLUMN_CPU, lpStr, 80))
|
||||||
{
|
{
|
||||||
columnRightPositions[3] = columnRightPositions[2] + _tcslen(lpStr) + 3;
|
columnRightPositions[3] = columnRightPositions[2] + _tcslen(lpStr) + 3;
|
||||||
_tcsncpy(&lpHeader[columnRightPositions[2] + 2], lpStr, _tcslen(lpStr));
|
_tcsncpy(&lpHeader[columnRightPositions[2] + 2], lpStr, _tcslen(lpStr));
|
||||||
}
|
}
|
||||||
if (LoadString(hInst, IDS_COLUMN_PF, lpStr, 80))
|
if (LoadString(hInst, IDS_COLUMN_MEM, lpStr, 80))
|
||||||
{
|
{
|
||||||
columnRightPositions[4] = columnRightPositions[3] + _tcslen(lpStr) + 3;
|
columnRightPositions[4] = columnRightPositions[3] + _tcslen(lpStr) + 3;
|
||||||
_tcsncpy(&lpHeader[columnRightPositions[3] + 2], lpStr, _tcslen(lpStr));
|
_tcsncpy(&lpHeader[columnRightPositions[3] + 2], lpStr, _tcslen(lpStr));
|
||||||
}
|
}
|
||||||
|
if (LoadString(hInst, IDS_COLUMN_PF, lpStr, 80))
|
||||||
|
{
|
||||||
|
columnRightPositions[5] = columnRightPositions[4] + _tcslen(lpStr) + 3;
|
||||||
|
_tcsncpy(&lpHeader[columnRightPositions[4] + 2], lpStr, _tcslen(lpStr));
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < columnRightPositions[4]; i++)
|
for (i = 0; i < columnRightPositions[5]; i++)
|
||||||
lpSeparator[i] = _T('-');
|
lpSeparator[i] = _T('-');
|
||||||
lpHeader[0] = _T('|');
|
lpHeader[0] = _T('|');
|
||||||
lpSeparator[0] = _T('+');
|
lpSeparator[0] = _T('+');
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
lpHeader[columnRightPositions[i]] = _T('|');
|
lpHeader[columnRightPositions[i]] = _T('|');
|
||||||
lpSeparator[columnRightPositions[i]] = _T('+');
|
lpSeparator[columnRightPositions[i]] = _T('+');
|
||||||
}
|
}
|
||||||
lpSeparator[columnRightPositions[4] + 1] = _T('\0');
|
lpSeparator[columnRightPositions[5] + 1] = _T('\0');
|
||||||
lpHeader[columnRightPositions[4] + 1] = _T('\0');
|
lpHeader[columnRightPositions[5] + 1] = _T('\0');
|
||||||
|
|
||||||
|
|
||||||
if (!LoadString(hInst, IDS_APP_TITLE, lpTitle, 80))
|
if (!LoadString(hInst, IDS_APP_TITLE, lpTitle, 80))
|
||||||
|
|
|
@ -11,3 +11,4 @@
|
||||||
|
|
||||||
#include "En.rc"
|
#include "En.rc"
|
||||||
#include "Fr.rc"
|
#include "Fr.rc"
|
||||||
|
#include "De.rc"
|
||||||
|
|
|
@ -20,12 +20,13 @@
|
||||||
|
|
||||||
#define IDS_APP_TITLE 0
|
#define IDS_APP_TITLE 0
|
||||||
|
|
||||||
#define IDS_COLUMN_IMAGENAME 10
|
#define IDS_COLUMN_NUMBER 10
|
||||||
#define IDS_COLUMN_PID 11
|
#define IDS_COLUMN_IMAGENAME 11
|
||||||
#define IDS_COLUMN_CPU 12
|
#define IDS_COLUMN_PID 12
|
||||||
#define IDS_COLUMN_MEM 13
|
#define IDS_COLUMN_CPU 13
|
||||||
#define IDS_COLUMN_MEM_UNIT 14
|
#define IDS_COLUMN_MEM 14
|
||||||
#define IDS_COLUMN_PF 15
|
#define IDS_COLUMN_MEM_UNIT 15
|
||||||
|
#define IDS_COLUMN_PF 16
|
||||||
|
|
||||||
#define IDS_IDLE_PROCESS 100
|
#define IDS_IDLE_PROCESS 100
|
||||||
#define IDS_YES 101
|
#define IDS_YES 101
|
||||||
|
|
Loading…
Reference in a new issue