![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
path in 9x
rimd © (2004-04-07 14:12:00)написал наконец-то ф-ию которая выдергивает путь, зная только окно. проблемма в том что это дело работает только на w2k, а как в остальных? имеется в виду 98/me
function GetAppFilePath(WndHWND:Cardinal):string;
var
HProc,PID,HSnap:Cardinal;
pe32:tagPROCESSENTRY32;
ModName:array[0..MAX_PATH] of Char;
begin
if not IsWindow(WndHWND) then
begin
Result:='';
Exit;
end;
HProc:=GetWindowThreadProcessId(Form1.Handle,PID);
if HProc=0 then
begin
Result:='';
Exit;
end;
HSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,PID);
if HSnap=1 then
begin
Result:='';
Exit;
end;
if not Process32First(HSnap,pe32) then
begin
Result:='';
Exit;
end;
if GetModuleFileName(pe32.th32ModuleID,ModName,MAX_PATH)=0 then
begin
Result:='';
Exit;
end;
Result:=String(ModName);
end;
Рамиль (2004-04-07 14:49:00) [1]
> rimd © (07.04.04 14:12)
Тебе срочно в эту ветку
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1081319370&n=3
BiN (2004-04-07 14:46:00) [2]и что? работает?!!!
вот держи для 9х
function GetWindowExeName(WindowHandle:HWND):string;
var
ProcessEntry: TProcessEntry32;
ProcessId: DWORD;
hSnap: THandle;
begin
Result:='';
if GetWindowThreadProcessId(WindowHandle, @ProcessId)=0 then exit;
ProcessEntry.dwSize:=sizeof(TProcessEntry32);
hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if hSnap=INVALID_HANDLE_VALUE then exit;
if Process32First(hSnap,ProcessEntry) and (ProcessId=ProcessEntry.th32ProcessID) then
begin
Result:=ProcessEntry.szExeFile;
CloseHandle(hSnap);
exit;
end;
while (Process32Next(hSnap, ProcessEntry))
and (ProcessId<>ProcessEntry.th32ProcessID) do;
if ProcessId=ProcessEntry.th32ProcessID
then Result:=ProcessEntry.szExeFile;
CloseHandle(hSnap);
end;