Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо