function GetMFEx(inmod: THandle): string;
var
  hProcess: THandle;
  ModuleName: array [0..MAX_PATH] of Char;
  GetModuleFileNameEx:   function (inProcess: THandle; inModule: THandle; Filename: PChar; size: DWord): DWord; stdcall;
begin
   @GetModuleFileNameEx:=GetProcAddress(LoadLibrary('psapi.dll'),'GetModuleFileNameExA');
   hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False, inmod);
   if (hProcess <> 0) then
   begin
          GetModuleFilenameEx(hProcess, 0, ModuleName, SizeOf(ModuleName));
          CloseHandle(hProcess);
          Result := ModuleName;
   end;
end;


Procedure AddToList(var Data : String);
Begin
  if windows.lstrlenA(PAnsiChar(Data))>0 then
  Begin
   if ((data[1]='C') or (data[1]='D') or (data[1]='E') ) then form1.lst1.Items.Add(data);
  End;
  data:='';
end;
procedure TForm1.btn1Click(Sender: TObject);
var
 MyHandle: THandle;
 Struct: TProcessEntry32;
 pathstr: string;
 SL: TStringList;
begin
   lst1.Items.Clear;
    try
      MyHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPProcess, 0);
      ZeroMemory(@Struct,SizeOf(TProcessEntry32));
      Struct.dwSize:=Sizeof(TProcessEntry32);
      if Process32First(MyHandle, Struct) then
      begin
           pathstr := GetMFEx(Struct.Th32ProcessID);
           AddToList(pathstr);
      end;
      while Process32Next(MyHandle, Struct) do
      begin
           pathstr := GetMFEx(Struct.Th32ProcessID);
           AddToList(pathstr);
      end;
    except on e : exception do
      Windows.OutputDebugStringA(PAnsiChar(e.Message));
    end;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin
btn1Click(sender);
end;


--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 00:22:35 -->-> Daha önceki mesaj 00:19:13 --

merhaba,
timer in intervalini 10 yaptim ve test ettim. yukaridaki ekledigim kod overflow vs vermeyecektir.
iyi calismalar...