Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: CL | DM;

Вниз

По процессу определить путь к файлу   Найти похожие ветки 

 
Alex81   (2006-08-18 18:02) [0]

Подскажите как по запущенному процессу получить путь к файлу создавшему его ????


 
Чапаев ©   (2006-08-18 18:44) [1]

Что есть "запущенный процесс"?


 
Alex81   (2006-08-18 19:20) [2]


> Что есть "запущенный процесс"?

Запускаем программу. Она появляется в процессах. Как по этому процессу определить путь.


 
Чапаев ©   (2006-08-18 21:46) [3]

Эх и формулировочки у тебя... %-)

Смотри модуль PSAPI, функцию EnumProcessModules().


 
begin...end ©   (2006-08-18 21:49) [4]

GetModuleFileNameEx


 
Alex81   (2006-08-19 10:25) [5]

Спасибо за ответ, еще бы сказали в каком модуле это функция лежит и в какой DLL. Лучше если б еще маленький примерчик, заранее благодарен.


 
Handle ©   (2006-08-19 10:26) [6]

uses
 TLHelp32, PsAPI;

procedure TForm1.Button1Click(Sender: TObject);
var
 bContinue:       BOOL;
 aSnapshotHandle: THandle;
 aProcessEntry32: TProcessEntry32;
 PrHandle:        THandle;
 ExePath:       array[0..MAX_PATH] of Char;
begin
 aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
 bContinue := Process32First(aSnapshotHandle, aProcessEntry32);
 while Integer(bContinue) <> 0 do
 begin
   if aProcessEntry32.szExeFile = "notepad.exe" then
   begin
     PrHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, aProcessEntry32.th32ProcessID);
     GetModuleFileNameEx(PrHandle, 0, ExePath, SizeOf(ExePath));
     Caption := ExePath;
   end;
   bContinue := Process32Next(aSnapshotHandle, aProcessEntry32);
 end;
 CloseHandle(aSnapshotHandle);
end;


 
Alex81   (2006-08-19 13:47) [7]

Большое спасибо Handle ©. :-)))


 
n0name   (2006-08-22 11:01) [8]


function NtQueryInformationProcess(hProcess: THandle; ProcessInfoClass: Integer; ProcessInfoBuffer: Pointer;
ProcessInfoBufferLength: Cardinal; BytesReturned: PCardinal): integer; stdcall; external "ntdll.dll";

function GetEXEName(pID: DWORD): PWChar;
label err;
var
pbi: array [0..5] of DWORD;
hProc: THandle;
pProcParams: DWORD;
wCmdLen: WORD;
pCmdLine: DWORD;
br: DWORD;
begin
result := nil;
hProc := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, pID);
if NtQueryInformationProcess(hProc, 0, @pbi, $18, nil) <> 0 then goto err;
if not ReadProcessMemory(hProc, Pointer(pbi[1] + $10), @pProcParams, 4, br) then goto err;
if not ReadProcessMemory(hProc, Pointer(pProcParams + $38), @wCmdLen, 2, br) then goto err;
if not ReadProcessMemory(hProc, Pointer(pProcParams + $3C), @pCmdLine, 4, br) then goto err;
result := GetMemory(wCmdLen);
if result = nil then goto err;
if not ReadProcessMemory(hProc, Pointer(pCmdLine), result, wCmdLen, br) then
 begin
  FreeMemory(result);
  result := nil;
 end;
err:
CloseHandle(hProc);
end;



Страницы: 1 вся ветка

Текущий архив: 2006.12.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.04 c
2-1165740046
Ильдар
2006-12-10 11:40
2006.12.31
DBLookupComboBox


2-1165673458
Pa5ha
2006-12-09 17:10
2006.12.31
Генератор управлялки к бд


4-1156283062
Андрей555
2006-08-23 01:44
2006.12.31
КАК определеить на сколько переместилась мышка?


2-1165523356
ProgRAMmer Dimonych
2006-12-07 23:29
2006.12.31
Тормоз TMediaPlayer а


15-1165496533
Фёдр_иваныч
2006-12-07 16:02
2006.12.31
Готика 3