Supongo que ese código lo obtuviste de
aquí, y si te fijas lo que esta haciendo, es enumerando todas las ventanas indicando a que proceso pertenece cada una.
A la pregunta de cómo obtener proceso de una ventana, la respuesta es utilizando GetWindowThreadProcessId. Si quieres saber el nombre del ejecutable de un proceso, sin buscar si existe alguna función que lo resuelva, se me ocurre algo tan sencillo como:
Código Delphi
[-]
function GetExeNameByProcessId(dwProcessId: DWORD): string;
var
snp: THandle;
lppe: TProcessEntry32;
begin
Result := '';
snp := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
lppe.dwSize:=SizeOf(lppe);
if Process32First(snp, lppe) then
repeat
if lppe.th32ProcessID = dwProcessId then
begin
Result := StrPas(lppe.szExeFile);
Break;
end;
until not(Process32Next(snp, lppe));
finally
CloseHandle(snp);
end;
end;
Tendrías que reemplazar GetWindowModuleFileName por esta función.
Saludos!