Главная страница
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.48 MB
Время: 0.07 c
15-1165499290
XProger
2006-12-07 16:48
2006.12.31
Opera Mini


2-1165536388
TImageList
2006-12-08 03:06
2006.12.31
Как узнать цвет фона у картинок в TImageList


15-1165939077
Cyrax
2006-12-12 18:57
2006.12.31
Как можно заюзать хидер, не пользуясь директивой #include ?


2-1165930015
oleglu
2006-12-12 16:26
2006.12.31
DBGrid


3-1161186750
Shopot
2006-10-18 19:52
2006.12.31
InterBase. Не могу найти WISQL!!!