@OldGrumpy ja schande über mich... ich mach das nebenher, daher editiere ich meine Beiträge im Laufe der Zeit auch ein paarmal, siehe oben.
Um meine Verpeiltheit wieder gut zu machen hier nun ein Vorschlag, um das ausgängliche Problem des Threadstellers zu illustrieren:
Delphi-Quellcode:
procedure EnumModulesOf(pid : Cardinal);
var
hProcess: Cardinal;
Modules: Array[0..65535] of hModule;
cbNeeded:Cardinal;
i: integer;
begin
hProcess := OpenProcess(PROCESS_ALL_ACCESS,false,pid);
if hProcess <> 0 then
begin
EnumProcessModules(hProcess,@Modules,65536,cbNeeded);
if 65536 < cbNeeded div SizeOf(HModule) then writeln('Too many modules loaded. Not all modules will be displayed.');
for i := 1 to cbNeeded div SizeOf(HModule)-1 do
begin
if _GetModuleFileName(Modules[i]) <> '' then
writeln(' ',inttohex(Modules[i],8),' : ',_GetModuleFileName(Modules[i]))
else
writeln(' ',inttohex(Modules[i],8),' : unknown');
end;
CloseHandle(hProcess);
end
else
writeln('could not open process #',pid);
readln;
end;
in der Tat gibt es viele Module, die keinen Dateinamen haben, obwohl sie aufgelistet wurden