jak pobrac sciezke do programu znajac jej uchwyt??

0

zrobilem sobie taka funkcje

function Path(Uchwyt : THandle): String;
var
_HWND,h : THandle;
Proc : TProcessEntry32;
Next : Boolean;
begin
_HWND := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);

Proc.dwSize:=SizeOf(Proc);
Next := Process32First(_HWND, Proc);

while Next do
begin
H := OpenProcess(PROCESS_TERMINATE, True,Proc.th32ProcessID);
if H = Uchwyt then result := Proc.szExeFile;
Next := Process32Next(_HWND, Proc);
end;

CloseHandle(_HWND);
end;

mialem nadzieje ze bedzie ona podawala sciezke do podanego uchwytum ale niestety funkcja OpenProcess nie sluzy dokladnie do tego wie ktos jak to zrobic??
Z gory dzieki za odpowiedz!!!

0

Niezbyt rozumiem pytanie. Chcesz pobierać ścieżki do procesów zwracanych przez Process32First i Process32Next?
Jeśli tak, to jest ona dostępna tu: Proc.szExeFile, a uchwyt do danego procesu tu: PE32.th32ProcessID.
A po co używasz funkcji OpenProcess?? Nie wiem.

0

Uzywa openproces, bo to żywcem skopiowane... odpowiedź jest prosta: Jeżeli do zamknięcia procesu do którego znamy ścieszką dostępu potrzebny jest handle, to znajac handle można bez najmniejszego problemu dowiedziec się nazwy programu (i ścieżki)

0

O tym juz bylo w FAQ czy gdzies tam ;-)

0

to moze inaczej...

function TForm1.Path(Uchwyt : THandle): String;
var
_HWND,h : THandle;
Proc : TProcessEntry32;
Next : Boolean;
begin
_HWND := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);

Proc.dwSize:=SizeOf(Proc);
Next := Process32First(_HWND, Proc);

while Next do
begin
{
co tu bedzie??
}
Next := Process32Next(_HWND, Proc);
end;

CloseHandle(_HWND);
end;

procedure ButtonClick;
var
Handler : THandle;

begin
Handler := FindWindow(nil, 'jakas nazwa okna');
Caption := Path(Handler);
end;

gdy tylko sie przyjzysz to sie dowiesz ze th32ProcessID to nie to samo co handler :]

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0