Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизПолучение .exe файла по дескриптору окна. Найти похожие ветки
← →
x3{neon} (2004-05-11 14:29) [0]Здраствуйте Мастера! Подскажите пожалуйста, как из HWND окна получить путь к .exe файлу программы? Заранее благодарен.
← →
Dimich1978 © (2004-05-11 19:40) [1]function pip(id:Cardinal; var s:string):THandle ;
var
snap,h : THandle;
me32 : TMODULEENTRY32;
begin
snap := 0;
try
snap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,id);
if snap <> 0 then begin
me32.dwSize := SizeOf(TMODULEENTRY32);
if Module32First(snap, me32) then begin
s:=(me32.szExePath);
h:=ExtractIcon(hInstance,me32.szExePath,0);
if h=0 then h:=LoadImage(0, IDI_WINLOGO, IMAGE_ICON, LR_DEFAULTSIZE,
LR_DEFAULTSIZE, LR_DEFAULTSIZE or LR_DEFAULTCOLOR or LR_SHARED); Result:=h;
while Module32Next(snap, me32) do
end;
end;
finally
CloseHandle(snap);
end;
end;
← →
Игорь Шевченко © (2004-05-11 19:52) [2]Для WinXP (Win2k, WinNT) - http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip
← →
DVM © (2004-05-12 00:46) [3]function _GetProcessFileNameByWindowHandle(Wnd: HWND): string;
var
hProcess: THandle;
PID: Cardinal;
FileName: array [1..MAX_PATH] of char;
PE: TProcessEntry32;
Snap: Cardinal;
OsVerInfo: TOSVersionInfo;
begin
Result := "";
GetWindowThreadProcessId(Wnd, @PID);
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PID);
OsVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(osVerInfo) then
begin
if OsVerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
begin
ZeroMemory(@Filename[1], SizeOf(Filename));
GetModuleFileNameEx(hProcess, 0, @Filename[1], SizeOf(Filename));
Result := FileName;
end
else
begin
Snap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
if Snap <> -1 then
begin
PE.dwSize:=SizeOf(PE);
if Process32First(Snap, PE) then
repeat
if PE.th32ProcessID = PID then Result := PE.szExeFile;
until not Process32Next(Snap, PE);
end;
end;
end;
CloseHandle(hProcess);
end;
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.044 c