Also ich gehe Ja alle Prozesse durch... Aber via TProcessEntry32.szExeName bekomme ich ja nur den Dateinemen ohne Pfad. Daher lasse ich nun via GetToolHelpSnapshot(TH32CS_SNAPMODULE,ProzessID) alle Module des Prozesses zurückliefern. Und jetzt Vergleiche ich jede TModuleEntry32.th32ModuleID mit der th32ModuleID des Prozesses. Wenn die ID gleich ist, dass ist es das primär Modul (die Exe-Datei) und von diesem kann ich dann den Kompletten ExePath bekommen.
So ist es auch in der MSDN Library beschrieben!
Aber Komischerweise haben alle ModuleEntrys die Gleiche th32ModuleID nämlich "1"! Und Alle ProcessEntrys haben die thModuleID = 0!
Deher ist diese Bedungung niemals Erfüllt:
Quelltext
1: 2: 3: 4: 5: 6:
| if (ModuleEntry.th32ModuleID = dwModuleID) then begin CopyMemory (LPMODULEENTRY32, @ModuleEntry, cbMe32); bFound := true; break; end; |
(dwModuleID ist die th32ModuleID des ProcessEntrys!)
Also kutzum: die th32ModuleIDs sind falsch

Warum Nur?
Gruss Frederik