Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

Как по хендлу окна получить путь к екзешнику   Найти похожие ветки 

 
Reanimator   (2003-11-30 23:28) [0]

Народ, помогите! Имеем хендл окна, надо получить путь к exe файлу которому это окно пренадлежит.
Порылся тут в поиске и нашол такой код

uses tlHelp32;
function GetFilePath(const WinH: THandle): String;
var
SnapshotH: THandle;
PE32: TProcessEntry32;
PrId: Cardinal;
begin
Result := "";
SnapshotH := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if SnapshotH = -1 then Exit;
PE32.dwSize := SizeOf(PE32);
GetWindowThreadProcessID(WinH, PrId);
if Process32First(SnapshotH, PE32) then
repeat
if PE32.th32ProcessID = PrId then
begin
Result := PE32.szExeFile;
Break;
end;
until not Process32Next(SnapshotH, PE32);
CloseHandle(SnapshotH)
end;

Но он возвращает только имя екзешника, а мне надо полный путь.
Также наткнулся на такой код

function GetWinPath(wnd:hwnd):String;
var s: array[0..MAX_PATH]of char;
begin
fillchar(s, sizeof(s), #0);
GetWindowModuleFileName(wnd, s, sizeof(s));
GetWinPath:=s;
end;

Но он возвращает путь только к окну моей програмы, к любому другому возвращает пустую строку.

Дайте дельный совет плиз. Подскажите как решить траблу.


 
fuf ©   (2003-11-30 23:46) [1]

Такой вопрос есть в орешнике...


 
Reanimator   (2003-11-30 23:58) [2]

2 fuf
Да, я его уже читал.
А что нибуть более толковое сказать можеш?


 
Dimaxx ©   (2003-12-01 01:37) [3]

GetModuleFilename


 
Reanimator   (2003-12-01 11:33) [4]

Dimaxx © (01.12.03 01:37)
//GetModuleFilename
с ним таже трабла что и GetWindowModuleFileName


 
ZrenBy ©   (2003-12-01 11:36) [5]

http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=34446


 
Reanimator   (2003-12-01 11:47) [6]

Спасибо все работает.


 
имя   (2003-12-01 12:08) [7]

Удалено модератором


 
Xtz ©   (2003-12-03 00:25) [8]

Сори за то что пропагандирую свою модулю, но всетаки смори в кладовке модуль ExApi а если в лом качать то вот те код оттуда работает стопудова показывает полный путь И имя файла вот:

<Code/>
Function ExGetFileName(Handle:Thandle):String;
var dPID: dWord;
hHandle: THandle;
begin
GetWindowThreadProcessId(Handle,@dPID);
SetLength (Result, MAX_PATH);
hHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, True, dPID);
if GetModuleFileNameEx(hHandle, 0, pchar (Result), MAX_PATH) > 0
then SetLength (Result, StrLen (PChar (Result)));
closehandle(hHandle);
end;

кстати в орешнике мой вопрос :))



Страницы: 1 вся ветка

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-16249
SniZ
2004-01-24 00:22
2004.02.06
сжатие данных


3-16046
Talla2k
2004-01-13 01:25
2004.02.06
Alter table(в Oracle)


1-16331
oleg_SYS
2004-01-24 21:27
2004.02.06
Где находятся в реестре пункты контекстных меню?


1-16272
MakNik
2004-01-26 11:09
2004.02.06
ASCII коды кнопок управления курсором


1-16379
Olphi
2004-01-23 18:13
2004.02.06
Как выровнять текст по ширине в TMemo или TRichEdit?