Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Внизpath in 9x Найти похожие ветки
← →
rimd © (2004-04-07 14:12) [0]написал наконец-то ф-ию которая выдергивает путь, зная только окно. проблемма в том что это дело работает только на 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;
← →
BiN © (2004-04-07 14:46) [1]и что? работает?!!!
вот держи для 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;
← →
Рамиль © (2004-04-07 14:49) [2]
> rimd © (07.04.04 14:12)
Тебе срочно в эту ветку
http://delphimaster.net/view/15-1081319370/
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c