si a lo que te refieres es a lo que yo entendí, entonces te diré que puedes obtener los nombres de los procesos de la siguiente manera,
colocas primeramente un Listview con dos columnas, ID y Name del proceso:
implementas esta función para obtener los procesos, y sus dos descripciones anterior:
Código Delphi
[-]
procedure GetMemoryProcess();
var
foto: Cardinal;
datos: tagPROCESSENTRY32;
r: Integer;
begin
r := 1;
datos.dwSize := sizeOF(tagPROCESSENTRY32);
foto := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
while Process32Next(foto, datos) do
begin
Form1.ListView1.Items.Add.Caption := IntToStr(datos.th32ProcessID);
Form1.ListView1.Items[r -1].SubItems.Add('EXE: ' + datos.szExeFile);
inc(r);
end;
CloseHandle(foto);
end;
ahora, para la parte de obtener los subprocesos o los modulos cargados por un proceso, puedes implementar esta otra función:
Código Delphi
[-]
procedure GetModulesProcess(idProcess, tData: Integer);
var
foto: Cardinal;
datos: tagMODULEENTRY32;
r: Integer;
begin
foto := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, idProcess);
r := 1;
datos.dwSize := sizeOf(tagMODULEENTRY32);
while Module32Next(foto, datos) do
begin
case tData of
1: ShowMessage(IntToStr(datos.hModule));
2: ShowMessage(datos.szModule);
3: ShowMessage(datos.szExePath);
end;
inc(r);
end;
CloseHandle(foto);
end;
el primer parámetro de esta última funcion es para obtener los subprocesos del proceso que tenga el ID especificado, por ejemplo el 456, winlogon.exe...
y el segundo parámetro de esta función es para mostrar en un mensajito la descripción del subproceso:
1 => Handle
2 => Nombre
3 => Path + name
espero que te funcione...