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...
Çook teşekkür ederim sorun falan kalmadı çok stabil çalışıyor.