[TASKMGR]

- Show programs command line in taskmgr.
  Patch by Ismael Ferreras Morezuelas with minor modifications by me.
- int nMaxCount --> ULONG nMaxCount (that makes everything clearer and removes MSVC warnings).
CORE-5467 #resolve #comment Feature committed in revision 65469, cheers ;)

svn path=/trunk/; revision=65469
This commit is contained in:
Hermès Bélusca-Maïto 2014-11-23 20:10:15 +00:00
parent 4a61f5ee5b
commit f43bb8d7df
34 changed files with 232 additions and 21 deletions

View file

@ -54,6 +54,7 @@ const PresetColumnEntry ColumnPresets[COLUMN_NMAX] = {
DECLARE_COLUMN_PRESET(IOREADBYTES, 70, FALSE)
DECLARE_COLUMN_PRESET(IOWRITEBYTES, 70, FALSE)
DECLARE_COLUMN_PRESET(IOOTHERBYTES, 70, FALSE)
DECLARE_COLUMN_PRESET(COMMANDLINE, 450, FALSE)
};
static int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem);

View file

@ -47,7 +47,8 @@
#define COLUMN_IOREADBYTES 22
#define COLUMN_IOWRITEBYTES 23
#define COLUMN_IOOTHERBYTES 24
#define COLUMN_NMAX 25
#define COLUMN_COMMANDLINE 25
#define COLUMN_NMAX 26
/*
* temporary fix:
@ -104,6 +105,7 @@ extern const PresetColumnEntry ColumnPresets[COLUMN_NMAX];
#define Column_IOWriteBytes Columns[COLUMN_IOWRITEBYTES]
#define Column_IOOther Columns[COLUMN_IOOTHER]
#define Column_IOOtherBytes Columns[COLUMN_IOOTHERBYTES]
#define Column_CommandLine Columns[COLUMN_COMMANDLINE]
void ProcessPage_OnViewSelectColumns(void);
void AddColumns(void);

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "В/И байтове за писане", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 127, 65, 10
CONTROL "Други В/И", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 138, 115, 10
CONTROL "Други В/И байтове", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 149, 115, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 160, 65, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "В/И прочетени байтове"
IDS_TAB_IOWRITESBYTES "В/И записани байтове"
IDS_TAB_IOOTHERBYTES "В/И други байтове"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Избор на стълбове..."
IDS_MENU_16BITTASK "&Показване на 16битови задачи"
IDS_MENU_WINDOWS "&Прозорци"

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "I/O zapsané bajty", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 72, 10
CONTROL "I/O ostatní", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 48, 10
CONTROL "I/O ostatní bajty", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O přečtené bajty"
IDS_TAB_IOWRITESBYTES "I/O zapsané bajty"
IDS_TAB_IOOTHERBYTES "I/O ostatní bajty"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Vybrat sloupce..."
IDS_MENU_16BITTASK "&Zobrazit 16-bitové úlohy"
IDS_MENU_WINDOWS "&Okna"

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "I/O Skrevet Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O Andet", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Andre Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"

View file

@ -317,6 +317,7 @@ BEGIN
CONTROL "E/A-Bytes (Schreiben)", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10 // 107
CONTROL "E/A (Andere)", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 105, 10 // 107
CONTROL "E/A-Bytes (Andere)", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 110, 10 // 107
CONTROL "Befeh&lszeile", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 65, 10 // 107
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "E/A-Bytes (Lesen)"
IDS_TAB_IOWRITESBYTES "E/A-Bytes (Schreiben)"
IDS_TAB_IOOTHERBYTES "E/A-Bytes (Andere)"
IDS_TAB_COMMANDLINE "Befehlszeile"
IDS_MENU_SELECTCOLUMNS "&Spalten auswählen..."
IDS_MENU_16BITTASK "&16-Bit-Tasks anzeigen"
IDS_MENU_WINDOWS "&Fenster"

View file

@ -317,6 +317,7 @@ BEGIN
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
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"

View file

@ -313,6 +313,7 @@ BEGIN
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
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -408,6 +409,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"

View file

@ -292,7 +292,7 @@ BEGIN
DEFPUSHBUTTON "Aceptar", IDOK, 126, 178, 50, 14 // 84
PUSHBUTTON "Cancelar", IDCANCEL, 180, 178, 50, 14 // 138
LTEXT "Seleccione las columnas que aparecerán en la página de Procesos del Administrador de tareas.", IDC_STATIC, 7, 7, 221, 17 // 181
CONTROL "Nombre de ruta de la &imagen", IDC_IMAGENAME, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 7, 28, 88, 10 // 56
CONTROL "Nombre de ruta de la &imagen", IDC_IMAGENAME, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 7, 28, 105, 10 // 56
CONTROL "Identificador de proceso (&PID)", IDC_PID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 39, 120, 10 // 88
CONTROL "Uso de &CPU", IDC_CPUUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 50, 53, 10
CONTROL "Ti&empo de CPU", IDC_CPUTIME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 61, 65, 10 // 48
@ -301,8 +301,8 @@ BEGIN
CONTROL "Uso má&ximo de la memoria", IDC_PEAKMEMORYUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 94, 120, 10 // 82
CONTROL "Err&ores de página", IDC_PAGEFAULTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 105, 80, 10 // 53
CONTROL "O&bjetos de USUARIO", IDC_USEROBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 116, 80, 10 // 62
CONTROL "Lecturas de E/S", IDC_IOREADS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 127, 60, 10 // 49
CONTROL "Bytes de lectura de E/S", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 65, 10
CONTROL "Lecturas de E/S", IDC_IOREADS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 127, 70, 10 // 49
CONTROL "Bytes de lectura de E/S", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 85, 10
CONTROL "I&d. de sesión", IDC_SESSIONID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 149, 65, 10 // 50
CONTROL "&Nombre de usuario", IDC_USERNAME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 160, 75, 10 // 51
CONTROL "Diferencia de erro&res de página", IDC_PAGEFAULTSDELTA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 28, 120, 10 // 107, 60
@ -310,13 +310,14 @@ BEGIN
CONTROL "B&loque paginado", IDC_PAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 50, 67, 10 // 107, 53
CONTROL "Blo&que no paginado", IDC_NONPAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 61, 115, 10 // 107
CONTROL "P&rioridad base", IDC_BASEPRIORITY, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 72, 80, 10 // 107
CONTROL "&Recuento de identificadores", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 59, 10 // 107
CONTROL "Nú&mero de subprocesos", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 59, 10 // 107
CONTROL "&Recuento de identificadores", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 105, 10 // 107
CONTROL "Nú&mero de subprocesos", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 85, 10 // 107
CONTROL "Objetos &GDI", IDC_GDIOBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 105, 55, 10 // 107
CONTROL "Escrituras de E/S", IDC_IOWRITES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 116, 90, 10 // 107
CONTROL "Bytes de escritura de E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10 // 107
CONTROL "Otros de E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 60, 10
CONTROL "Otros bytes de E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 75, 10
CONTROL "&Línea de comandos", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 75, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "Bytes de lectura de E/S"
IDS_TAB_IOWRITESBYTES "Bytes de escritura de E/S"
IDS_TAB_IOOTHERBYTES "Otros bytes de E/S"
IDS_TAB_COMMANDLINE "Línea de comandos"
IDS_MENU_SELECTCOLUMNS "&Seleccionar columnas..."
IDS_MENU_16BITTASK "Mos&trar tareas de 16-bit"
IDS_MENU_WINDOWS "&Ventanas"

View file

@ -317,6 +317,7 @@ BEGIN
CONTROL "Octets d'écriture E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 127, 108, 10
CONTROL "Autres E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 138, 108, 10
CONTROL "Octets d'autres E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 149, 108, 10
CONTROL "&Ligne de commande", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 160, 95, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "Octets de lecture E/S"
IDS_TAB_IOWRITESBYTES "Octets d'écriture E/S"
IDS_TAB_IOOTHERBYTES "Octets d'autres E/S"
IDS_TAB_COMMANDLINE "Ligne de commande"
IDS_MENU_SELECTCOLUMNS "&Sélectionner les colonnes..."
IDS_MENU_16BITTASK "&Afficher les tâches 16 bits"
IDS_MENU_WINDOWS "&Fenêtres"

View file

@ -317,6 +317,7 @@ BEGIN
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
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"

View file

@ -317,6 +317,7 @@ BEGIN
CONTROL "I/O Írott bájtok", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "Egyéb I/O mûveletek", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "Egyéb I/O mûveletek bájtjai", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Olvasott bájtok"
IDS_TAB_IOWRITESBYTES "I/O Írott bájtok"
IDS_TAB_IOOTHERBYTES "Egyéb I/O bájtok"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Oszlopok kiválasztása..."
IDS_MENU_16BITTASK "&16bites feladatok megjelenítése"
IDS_MENU_WINDOWS "&Ablak"

View file

@ -317,6 +317,7 @@ BEGIN
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
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Select Columns..."
IDS_MENU_16BITTASK "&Show 16-bit tasks"
IDS_MENU_WINDOWS "&Windows"

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "Scritture I/O Byte", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 69, 10
CONTROL "Altro I/O", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "Altro I/O Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "&Linea di comando", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Letture Bytes"
IDS_TAB_IOWRITESBYTES "I/O Scritture Bytes"
IDS_TAB_IOOTHERBYTES "I/O Altro Bytes"
IDS_TAB_COMMANDLINE "Linea di comando"
IDS_MENU_SELECTCOLUMNS "&Selezione Colonne..."
IDS_MENU_16BITTASK "&Mostra task 16-bit"
IDS_MENU_WINDOWS "&Finestre"

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "I/O 書き込みバイト数", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O その他", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O その他のバイト数", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O 読み取りバイト数"
IDS_TAB_IOWRITESBYTES "I/O 書き込みバイト数"
IDS_TAB_IOOTHERBYTES "I/O その他のバイト数"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "列の選択(&S)..."
IDS_MENU_16BITTASK "16 ビット タスクの表示(&S)"
IDS_MENU_WINDOWS "ウィンドウ(&W)"

View file

@ -317,6 +317,7 @@ BEGIN
CONTROL "I/O 쓰기 바이트", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O 기타", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O 기타 바이트", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O 읽기 바이트"
IDS_TAB_IOWRITESBYTES "I/O 쓰기 바이트"
IDS_TAB_IOOTHERBYTES "I/O 기타 바이트"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "열 선택(&S)"
IDS_MENU_16BITTASK "16비트 작업 보이기(&S)"
IDS_MENU_WINDOWS "창(&W)"

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "I/O: geschreven bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 127, 100, 10
CONTROL "I/O: overig", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 138, 100, 10
CONTROL "I/O: overige bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 149, 100, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 160, 65, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O: gelezen bytes"
IDS_TAB_IOWRITESBYTES "I/O: geschreven bytes"
IDS_TAB_IOOTHERBYTES "I/O: overige bytes"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Kolommen selecteren..."
IDS_MENU_16BITTASK "16-&bits taken weergeven"
IDS_MENU_WINDOWS "&Vensters"

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "I/O skrevne byte", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 70, 10
CONTROL "I/O Annet", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Andre byte", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Leser Byte"
IDS_TAB_IOWRITESBYTES "I/O Skriver Byte"
IDS_TAB_IOOTHERBYTES "I/O Annet Byte"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Velg kolonner..."
IDS_MENU_16BITTASK "&Vis 16-biter oppgave"
IDS_MENU_WINDOWS "&Vinduer"

View file

@ -323,6 +323,7 @@ BEGIN
CONTROL "Zapisy We/Wy w bajtach", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "Inne We/Wy", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "Inne We/Wy w bajtach", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Linia poleceń", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -418,6 +419,7 @@ BEGIN
IDS_TAB_IOREADBYTES "Odczyty We/Wy w bajtach"
IDS_TAB_IOWRITESBYTES "Zapisy We/Wy w bajtach"
IDS_TAB_IOOTHERBYTES "Inne We/Wy w bajtach"
IDS_TAB_COMMANDLINE "Linia poleceń"
IDS_MENU_SELECTCOLUMNS "Wybierz &kolumny..."
IDS_MENU_16BITTASK "Pokaż 16-&bitowe zadania"
IDS_MENU_WINDOWS "O&kna"

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "Bytes de gravação de E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 127, 97, 10
CONTROL "Outras E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 138, 47, 10
CONTROL "Outros bytes de E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 149, 77, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 160, 95, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "Bytes de leitura de E/S"
IDS_TAB_IOWRITESBYTES "Bytes de gravação de E/S"
IDS_TAB_IOOTHERBYTES "Outros Bytes de E/S"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Selecionar colunas..."
IDS_MENU_16BITTASK "&Exibir tarefas de 16 bits"
IDS_MENU_WINDOWS "&Janelas"

View file

@ -321,6 +321,7 @@ BEGIN
CONTROL "In/Ex octeți scriși", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 127, 110, 10
CONTROL "In/Ex altceva", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 138, 110, 10
CONTROL "In/Ex octeți din altceva", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 149, 110, 10
CONTROL "&Linia de comandă", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 160, 65, 10
END
/* String Tables */
@ -416,6 +417,7 @@ BEGIN
IDS_TAB_IOREADBYTES "In/Ex octeți citiți"
IDS_TAB_IOWRITESBYTES "In/Ex octeți scriși"
IDS_TAB_IOOTHERBYTES "In/Ex octeți din altceva"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Selectare coloane…"
IDS_MENU_16BITTASK "Afișează activități pe 16 &biți"
IDS_MENU_WINDOWS "F&erestre"

View file

@ -317,6 +317,7 @@ BEGIN
CONTROL "Записано байт", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "Прочий ввод-вывод", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 90, 10
CONTROL "Прочих байт при вводе-выводе", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 122, 10
CONTROL "Коммандная строка", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 90, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "Прочитано байт"
IDS_TAB_IOWRITESBYTES "Записано байт"
IDS_TAB_IOOTHERBYTES "Прочих байт при вводе-выводе"
IDS_TAB_COMMANDLINE "Коммандная строка"
IDS_MENU_SELECTCOLUMNS "В&ыбрать столбцы..."
IDS_MENU_16BITTASK "&Отображать 16-разрядные задачи"
IDS_MENU_WINDOWS "&Окна"

View file

@ -317,6 +317,7 @@ BEGIN
CONTROL "Vstup a výstup - zapísané bajty", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 127, 112, 10
CONTROL "Vstup a výstup - iné", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 138, 77, 10
CONTROL "Vstup a výstup - iné bajty", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 149, 97, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 160, 95, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "Vstup a výstup - prečítané bajty"
IDS_TAB_IOWRITESBYTES "Vstup a výstup - zapísané bajty"
IDS_TAB_IOOTHERBYTES "Vstup a výstup - iné bajty"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Vybrať stĺpce..."
IDS_MENU_16BITTASK "&Zobraziť 16-bitové úlohy"
IDS_MENU_WINDOWS "&Okna"

View file

@ -317,6 +317,7 @@ BEGIN
CONTROL "Shkruan I/O Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O te tjere", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O Byte te tjere", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Lexo Bytes"
IDS_TAB_IOWRITESBYTES "I/O Shkruaj Bytes"
IDS_TAB_IOOTHERBYTES "I/O te tjere Bytes"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "Zgjidh kolonat..."
IDS_MENU_16BITTASK "&Shfaq 16-bit tasks"
IDS_MENU_WINDOWS "Dritare"

View file

@ -317,6 +317,7 @@ BEGIN
CONTROL "I/O, &antal tecken skrivna", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 127, 113, 10
CONTROL "And&ra I/O åtgärder", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 138, 89, 10
CONTROL "Antal tecken, andra I/O åtgärder", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 149, 141, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 160, 95, 10
END
/* String Tables */
@ -412,6 +413,7 @@ BEGIN
IDS_TAB_IOREADBYTES "Antal tecken lästa, andra I/O-åtgärder"
IDS_TAB_IOWRITESBYTES "Antal tecken skrivna, andra I/O-åtgärder"
IDS_TAB_IOOTHERBYTES "I/O, antal tecken"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Välj kolumner..."
IDS_MENU_16BITTASK "&Visa 16-bitsprocesser"
IDS_MENU_WINDOWS "&Fönster"

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "G/Ç Yazma Çokluları", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "G/Ç Başka", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "G/Ç Başka Çoklular", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "G/Ç Okuma Çokluları"
IDS_TAB_IOWRITESBYTES "G/Ç Yazma Çokluları"
IDS_TAB_IOOTHERBYTES "G/Ç Başka Çoklular"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "&Dikeçleri Seç..."
IDS_MENU_16BITTASK "&16 Bitlik Görevleri Göster"
IDS_MENU_WINDOWS "&Pencereler"

View file

@ -315,6 +315,7 @@ BEGIN
CONTROL "Записано байтів", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 67, 10
CONTROL "Інший ввід-вивід", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 71, 10
CONTROL "Інших байтів при вводі-виводі", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 114, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -410,6 +411,7 @@ BEGIN
IDS_TAB_IOREADBYTES "Прочитано байтів"
IDS_TAB_IOWRITESBYTES "Записано байтів"
IDS_TAB_IOOTHERBYTES "Інших байтів під час вводу-виводу"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "В&ибрати стовпці..."
IDS_MENU_16BITTASK "&Відображати 16-розрядні завдання"
IDS_MENU_WINDOWS "В&ікна"

View file

@ -321,6 +321,7 @@ BEGIN
CONTROL "I/O 写入字节", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "I/O 其他", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "I/O 其他字节", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -416,6 +417,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O Read Bytes"
IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "选择列(&S)..."
IDS_MENU_16BITTASK "显示 16 位任务(&S)"
IDS_MENU_WINDOWS "窗口(&W)"

View file

@ -323,6 +323,7 @@ BEGIN
CONTROL "I/O 寫入位元組", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
CONTROL "其他 I/O", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
CONTROL "其他 I/O 位元組", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
END
/* String Tables */
@ -418,6 +419,7 @@ BEGIN
IDS_TAB_IOREADBYTES "I/O 讀取位元組"
IDS_TAB_IOWRITESBYTES "I/O 寫入位元組"
IDS_TAB_IOOTHERBYTES "其他 I/O 位元組"
IDS_TAB_COMMANDLINE "Command Line"
IDS_MENU_SELECTCOLUMNS "選擇列(&S)..."
IDS_MENU_16BITTASK "顯示 16 位工作(&S)"
IDS_MENU_WINDOWS "窗口(&W)"

View file

@ -3,7 +3,8 @@
*
* perfdata.c
*
* Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
* Copyright (C) 1999 - 2001 Brian Palmer <brianp@reactos.org>
* Copyright (C) 2014 Ismael Ferreras Morezuelas <swyterzone+ros@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -26,11 +27,12 @@
#include <aclapi.h>
#define NTOS_MODE_USER
#include <ndk/psfuncs.h>
#include <ndk/exfuncs.h>
CRITICAL_SECTION PerfDataCriticalSection;
PPERFDATA pPerfDataOld = NULL; /* Older perf data (saved to establish delta values) */
PPERFDATA pPerfData = NULL; /* Most recent copy of perf data */
PPERFDATA pPerfData = NULL; /* Most recent copy of perf data */
ULONG ProcessCountOld = 0;
ULONG ProcessCount = 0;
double dbIdleTime;
@ -46,6 +48,10 @@ SYSTEM_HANDLE_INFORMATION SystemHandleInfo;
PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION SystemProcessorTimeInfo = NULL;
PSID SystemUserSid = NULL;
PCMD_LINE_CACHE global_cache = NULL;
#define CMD_LINE_MIN(a, b) (a < b ? a - sizeof(WCHAR) : b)
typedef struct _SIDTOUSERNAME
{
LIST_ENTRY List;
@ -371,7 +377,7 @@ void PerfDataRefresh(void)
pPerfData[Idx].HandleCount = pSPI->HandleCount;
pPerfData[Idx].ThreadCount = pSPI->NumberOfThreads;
pPerfData[Idx].SessionId = pSPI->SessionId;
pPerfData[Idx].UserName[0] = L'\0';
pPerfData[Idx].UserName[0] = UNICODE_NULL;
pPerfData[Idx].USERObjectCount = 0;
pPerfData[Idx].GDIObjectCount = 0;
ProcessUser = SystemUserSid;
@ -472,7 +478,7 @@ ULONG PerfDataGetProcessorSystemUsage(void)
return (ULONG)dbKernelTime;
}
BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, int nMaxCount)
BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount)
{
BOOL bSuccessful;
@ -504,7 +510,7 @@ ULONG PerfDataGetProcessId(ULONG Index)
return ProcessId;
}
BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, int nMaxCount)
BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount)
{
BOOL bSuccessful;
@ -522,6 +528,130 @@ BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, int nMaxCount)
return bSuccessful;
}
BOOL PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount)
{
static const LPWSTR ellipsis = L"...";
PROCESS_BASIC_INFORMATION pbi = {0};
UNICODE_STRING CommandLineStr = {0};
PVOID ProcessParams = NULL;
HANDLE hProcess;
ULONG ProcessId;
NTSTATUS Status;
BOOL result;
PCMD_LINE_CACHE new_entry;
LPWSTR new_string;
PCMD_LINE_CACHE cache = global_cache;
/* [A] Search for a string already in cache? If so, use it */
while (cache && cache->pnext != NULL)
{
if (cache->idx == Index && cache->str != NULL)
{
/* Found it. Use it, and add some ellipsis at the very end to make it cute */
wcsncpy(lpCommandLine, cache->str, CMD_LINE_MIN(nMaxCount, cache->len));
wcscpy(lpCommandLine + CMD_LINE_MIN(nMaxCount, cache->len) - sizeof(ellipsis)/sizeof(WCHAR), ellipsis);
return TRUE;
}
cache = cache->pnext;
}
/* [B] We don't; let's allocate and load a value from the process mem... and cache it */
ProcessId = PerfDataGetProcessId(Index);
/* Default blank command line in case things don't work out */
wcsncpy(lpCommandLine, L"", nMaxCount);
/* Ask for a handle to the target process so that we can read its memory and query stuff */
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessId);
if (!hProcess)
goto cleanup;
/* First off, get the ProcessEnvironmentBlock location in that process' address space */
Status = NtQueryInformationProcess(hProcess, 0, &pbi, sizeof(pbi), NULL);
if (!NT_SUCCESS(Status))
goto cleanup;
/* Then get the PEB.ProcessParameters member pointer */
result = ReadProcessMemory(hProcess,
(PVOID)((ULONG_PTR)pbi.PebBaseAddress + FIELD_OFFSET(PEB, ProcessParameters)),
&ProcessParams,
sizeof(ProcessParams),
NULL);
if (!result)
goto cleanup;
/* Then copy the PEB->ProcessParameters.CommandLine member
to get the pointer to the string buffer and its size */
result = ReadProcessMemory(hProcess,
(PVOID)((ULONG_PTR)ProcessParams + FIELD_OFFSET(RTL_USER_PROCESS_PARAMETERS, CommandLine)),
&CommandLineStr,
sizeof(CommandLineStr),
NULL);
if (!result)
goto cleanup;
/* Allocate the next cache entry and its accompanying string in one go */
new_entry = HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY,
sizeof(CMD_LINE_CACHE) + CommandLineStr.Length + sizeof(UNICODE_NULL));
if (!new_entry)
goto cleanup;
new_string = (LPWSTR)((ULONG_PTR)new_entry + sizeof(CMD_LINE_CACHE));
/* Bingo, the command line should be stored there,
copy the string from the other process */
result = ReadProcessMemory(hProcess,
CommandLineStr.Buffer,
new_string,
CommandLineStr.Length,
NULL);
if (!result)
{
/* Weird, after sucessfully reading the mem of that process
various times it fails now, forget it and bail out */
HeapFree(GetProcessHeap(), 0, new_entry);
goto cleanup;
}
/* Add our pointer to the cache... */
new_entry->idx = Index;
new_entry->str = new_string;
new_entry->len = CommandLineStr.Length;
if (!global_cache)
global_cache = new_entry;
else
cache->pnext = new_entry;
/* ... and print the buffer for the first time */
wcsncpy(lpCommandLine, new_string, CMD_LINE_MIN(nMaxCount, CommandLineStr.Length));
cleanup:
if (hProcess) CloseHandle(hProcess);
return TRUE;
}
void PerfDataDeallocCommandLineCache()
{
PCMD_LINE_CACHE cache = global_cache;
PCMD_LINE_CACHE cache_old;
while (cache && cache->pnext != NULL)
{
cache_old = cache;
cache = cache->pnext;
HeapFree(GetProcessHeap(), 0, cache_old);
}
}
ULONG PerfDataGetSessionId(ULONG Index)
{
ULONG SessionId;

View file

@ -55,19 +55,31 @@ typedef struct _PERFDATA
LARGE_INTEGER KernelTime;
} PERFDATA, *PPERFDATA;
typedef struct _CMD_LINE_CACHE
{
DWORD idx;
LPWSTR str;
ULONG len;
struct _CMD_LINE_CACHE* pnext;
} CMD_LINE_CACHE, *PCMD_LINE_CACHE;
BOOL PerfDataInitialize(void);
void PerfDataUninitialize(void);
void PerfDataRefresh(void);
BOOL PerfDataGet(ULONG Index, PPERFDATA *lppData);
ULONG PerfDataGetProcessIndex(ULONG pid);
BOOL PerfDataGet(ULONG Index, PPERFDATA *lppData);
ULONG PerfDataGetProcessIndex(ULONG pid);
ULONG PerfDataGetProcessCount(void);
ULONG PerfDataGetProcessorUsage(void);
ULONG PerfDataGetProcessorSystemUsage(void);
BOOL PerfDataGetImageName(ULONG Index, LPTSTR lpImageName, int nMaxCount);
BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount);
ULONG PerfDataGetProcessId(ULONG Index);
BOOL PerfDataGetUserName(ULONG Index, LPTSTR lpUserName, int nMaxCount);
BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount);
BOOL PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount);
void PerfDataDeallocCommandLineCache();
ULONG PerfDataGetSessionId(ULONG Index);
ULONG PerfDataGetCPUUsage(ULONG Index);
LARGE_INTEGER PerfDataGetCPUTime(ULONG Index);

View file

@ -52,9 +52,9 @@ void AddProcess(ULONG Index);
void UpdateProcesses();
void gethmsfromlargeint(LARGE_INTEGER largeint, DWORD *dwHours, DWORD *dwMinutes, DWORD *dwSeconds);
void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam);
void CommaSeparateNumberString(LPWSTR strNumber, int nMaxCount);
void CommaSeparateNumberString(LPWSTR strNumber, ULONG nMaxCount);
void ProcessPageShowContextMenu(DWORD dwProcessId);
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount);
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCount);
DWORD WINAPI ProcessPageRefreshThread(void *lpParameter);
int ProcessRunning(ULONG ProcessId);
@ -245,7 +245,7 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
Index = PerfDataGetProcessIndex(pData->ProcessId);
ColumnIndex = pnmdi->item.iSubItem;
PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, pnmdi->item.cchTextMax);
PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, (ULONG)pnmdi->item.cchTextMax);
break;
@ -290,7 +290,7 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
}
}
void CommaSeparateNumberString(LPWSTR strNumber, int nMaxCount)
void CommaSeparateNumberString(LPWSTR strNumber, ULONG nMaxCount)
{
WCHAR temp[260];
UINT i, j, k;
@ -530,7 +530,7 @@ void AddProcess(ULONG Index)
}
}
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount)
BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCount)
{
IO_COUNTERS iocounters;
LARGE_INTEGER time;
@ -541,6 +541,8 @@ BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCoun
wsprintfW(lpText, L"%lu", PerfDataGetProcessId(Index));
if (ColumnDataHints[ColumnIndex] == COLUMN_USERNAME)
PerfDataGetUserName(Index, lpText, nMaxCount);
if (ColumnDataHints[ColumnIndex] == COLUMN_COMMANDLINE)
PerfDataGetCommandLine(Index, lpText, nMaxCount);
if (ColumnDataHints[ColumnIndex] == COLUMN_SESSIONID)
wsprintfW(lpText, L"%lu", PerfDataGetSessionId(Index));
if (ColumnDataHints[ColumnIndex] == COLUMN_CPUUSAGE)
@ -753,6 +755,12 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
PerfDataGetUserName(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
ret = _wcsicmp(text1, text2);
}
else if (TaskManagerSettings.SortColumn == COLUMN_COMMANDLINE)
{
PerfDataGetCommandLine(IndexParam1, text1, sizeof (text1) / sizeof (*text1));
PerfDataGetCommandLine(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
ret = _wcsicmp(text1, text2);
}
else if (TaskManagerSettings.SortColumn == COLUMN_SESSIONID)
{
l1 = PerfDataGetSessionId(IndexParam1);

View file

@ -113,6 +113,7 @@
#define IDC_IOOTHERBYTES 1047
#define IDC_CPU_USAGE_GRAPH 1047
#define IDC_CPU29 1048
#define IDC_COMMANDLINE 1048
#define IDC_MEM_USAGE_GRAPH2 1048
#define IDC_MEM_USAGE_GRAPH 1048
#define IDC_CPU30 1049
@ -222,6 +223,7 @@
#define IDS_TAB_IOREADBYTES 337
#define IDS_TAB_IOWRITESBYTES 338
#define IDS_TAB_IOOTHERBYTES 339
#define IDS_TAB_COMMANDLINE 368
#define IDS_MENU_SELECTCOLUMNS 340
#define IDS_MENU_16BITTASK 341

View file

@ -480,6 +480,8 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
TaskManagerSettings.Maximized = TRUE;
else
TaskManagerSettings.Maximized = FALSE;
/* Get rid of the allocated command line cache, if any */
PerfDataDeallocCommandLineCache();
return DefWindowProcW(hDlg, message, wParam, lParam);
case WM_TIMER:
@ -1140,7 +1142,7 @@ LPWSTR GetLastErrorText(LPWSTR lpszBuf, DWORD dwSize)
DWORD dwRet;
LPWSTR lpszTemp = NULL;
dwRet = FormatMessageW( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ARGUMENT_ARRAY,
dwRet = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
NULL,
GetLastError(),
LANG_NEUTRAL,